Delete OCR Job
Delete a job and remove all its associated data
Delete OCR Job
Delete a job and remove all its associated data. Jobs are automatically deleted after 7 days, but you can delete them immediately to remove sensitive data or free up resources.
Endpoint
DELETE /ocr/delete/{job_id}Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
job_id | string | Yes | OCR job ID to delete |
Important: Deletion is irreversible. Once deleted, the job content is permanently redacted and cannot be recovered.
SDK Examples
# Delete a job
curl -X DELETE https://api.leapocr.com/api/v1/ocr/delete/job_abc123 \
-H "X-API-Key: your-api-key"
# Response:
# {
# "message": "Job deleted successfully"
# }import { LeapOCR } from "leapocr";
const client = new LeapOCR({
apiKey: process.env.LEAPOCR_API_KEY,
});
// Process document
const job = await client.ocr.processURL("https://example.com/invoice.pdf", {
format: "structured",
});
// Wait for completion and get results
const result = await client.ocr.waitUntilDone(job.jobId);
const fullResult = await client.ocr.getJobResult(job.jobId);
// Use the extracted data
console.log("Extracted data:", fullResult.pages);
// Delete the job immediately after use
await client.ocr.deleteJob(job.jobId);
console.log("Job deleted successfully");import asyncio
import os
from leapocr import LeapOCR, ProcessOptions, Format
async def main():
async with LeapOCR(os.getenv("LEAPOCR_API_KEY")) as client:
# Process document
job = await client.ocr.process_url(
"https://example.com/invoice.pdf",
options=ProcessOptions(format=Format.STRUCTURED),
)
# Wait for completion and get results
result = await client.ocr.wait_until_done(job.job_id)
# Use the extracted data
print(f"Extracted data: {result.pages[0].result}")
# Delete the job immediately after use
await client.ocr.delete_job(job.job_id)
print("Job deleted successfully")
asyncio.run(main())package main
import (
"context"
"fmt"
"log"
"os"
"github.com/leapocr/leapocr-go"
)
func main() {
client, err := ocr.New(os.Getenv("LEAPOCR_API_KEY"))
if err != nil {
log.Fatal(err)
}
ctx := context.Background()
// Process document
job, err := client.ProcessURL(ctx,
"https://example.com/invoice.pdf",
ocr.WithFormat(ocr.FormatStructured),
)
if err != nil {
log.Fatal(err)
}
// Wait for completion and get results
result, err := client.WaitUntilDone(ctx, job.ID)
if err != nil {
log.Fatal(err)
}
// Use the extracted data
fmt.Printf("Extracted data: %+v\n", result.Data)
// Delete the job immediately after use
err = client.DeleteJob(ctx, job.ID)
if err != nil {
log.Printf("Failed to delete job: %v", err)
} else {
fmt.Println("Job deleted successfully")
}
}Response
{
"message": "Job deleted successfully"
}Error Responses
| Status Code | Description |
|---|---|
200 | Job deleted successfully |
400 | Bad request - invalid job ID |
401 | Unauthorized - authentication required |
404 | Not found - job does not exist or already deleted |
500 | Internal server error |
Automatic Deletion
Automatic Cleanup: All jobs and their associated files are automatically deleted after 7 days for security and storage management.
Jobs are automatically cleaned up after 7 days, but you can delete jobs immediately if needed.
Best Practices
1. Delete Sensitive Data Immediately
// Process and delete immediately
const job = await client.ocr.processFile("./medical-record.pdf");
const result = await client.ocr.waitUntilDone(job.jobId);
// Extract and save data locally
const extractedData = await client.ocr.getJobResult(job.jobId);
saveToDatabase(extractedData);
// Delete job immediately
await client.ocr.deleteJob(job.jobId);2. Error Handling
try {
await client.ocr.deleteJob(jobId);
console.log("Job deleted successfully");
} catch (error) {
if (error.status === 404) {
console.log("Job already deleted or doesn't exist");
} else {
console.error("Failed to delete job:", error.message);
}
}What Gets Deleted
When you delete a job:
- ✅ All extracted text and structured data
- ✅ Original uploaded files
- ✅ Processing metadata
- ✅ Page-level results
- ❌ Job record (marked as deleted but retained for audit)
The job record remains for audit purposes but all content is permanently redacted and cannot be recovered.
Next Steps
- Remote URL Upload - Process documents from URLs
- Direct Upload - Upload local files
- Get Job Result - Retrieve extracted data