# Get Job Status Check the status and results of a document extraction job. ## Authentication - `X-API-Key: $FREDDY_API_KEY` [Get your API key](https://freddy-hub.aitronos.com/freddy/api) ## Path Parameters **`job_id`** string required Job identifier returned from the extract endpoint (format: `job_{uuid}`). ## Returns Returns the job object with current status and extracted data if completed. Basic Request ```bash curl -X GET "https://api.aitronos.com/v1/documents/jobs/job_abc123def456" \ -H "X-API-Key: $FREDDY_API_KEY" ``` ```python import os import requests api_key = os.environ["FREDDY_API_KEY"] job_id = "job_abc123def456" response = requests.get( f"https://api.aitronos.com/v1/documents/jobs/{job_id}", headers={"X-API-Key": api_key} ) result = response.json() print(f"Status: {result['status']}") if result['status'] == 'completed': print(f"Data: {result['extracted_data']}") ``` ```javascript const jobId = 'job_abc123def456'; const response = await fetch( `https://api.aitronos.com/v1/documents/jobs/${jobId}`, { headers: { 'Authorization': `Bearer ${process.env.FREDDY_API_KEY}` } } ); const result = await response.json(); console.log(`Status: ${result.status}`); if (result.status === 'completed') { console.log('Data:', result.extracted_data); } ``` Poll Until Complete ```bash # Poll every 2 seconds until complete while true; do RESPONSE=$(curl -s -X GET "https://api.aitronos.com/v1/documents/jobs/job_abc123" \ -H "X-API-Key: $FREDDY_API_KEY") STATUS=$(echo $RESPONSE | jq -r '.status') echo "Status: $STATUS" if [ "$STATUS" = "completed" ] || [ "$STATUS" = "failed" ]; then echo $RESPONSE | jq '.' break fi sleep 2 done ``` ```python import os import requests import time api_key = os.environ["FREDDY_API_KEY"] job_id = "job_abc123def456" while True: response = requests.get( f"https://api.aitronos.com/v1/documents/jobs/{job_id}", headers={"X-API-Key": api_key} ) result = response.json() status = result['status'] print(f"Status: {status}") if status in ['completed', 'failed']: if status == 'completed': print("Extraction complete!") print(f"Data: {result['extracted_data']}") else: print(f"Extraction failed: {result['error_message']}") break time.sleep(2) ``` ```javascript const jobId = 'job_abc123def456'; async function pollJobStatus() { while (true) { const response = await fetch( `https://api.aitronos.com/v1/documents/jobs/${jobId}`, { headers: { 'Authorization': `Bearer ${process.env.FREDDY_API_KEY}` } } ); const result = await response.json(); console.log(`Status: ${result.status}`); if (result.status === 'completed' || result.status === 'failed') { if (result.status === 'completed') { console.log('Extraction complete!'); console.log('Data:', result.extracted_data); } else { console.error('Extraction failed:', result.error_message); } break; } await new Promise(resolve => setTimeout(resolve, 2000)); } } pollJobStatus(); ``` **Response:** 200 OK - Completed ```json { "success": true, "job_id": "job_abc123def456", "status": "completed", "extracted_data": { "invoice_number": "INV-2024-001", "date": "2024-12-16", "total_amount": 1250.00, "vendor_name": "Acme Corporation", "line_items": [ { "description": "Widget A", "quantity": 10, "price": 50.00 } ] }, "confidence": 0.95, "processing_time": 2.3, "cost_chf": 0.015, "model_used": "gpt-4o", "created_at": "2024-12-16T10:30:00Z", "completed_at": "2024-12-16T10:30:02Z" } ``` 200 OK - Pending ```json { "success": true, "job_id": "job_abc123def456", "status": "pending", "extracted_data": null, "confidence": null, "processing_time": null, "cost_chf": null, "model_used": null, "created_at": "2024-12-16T10:30:00Z", "completed_at": null } ``` 200 OK - Processing ```json { "success": true, "job_id": "job_abc123def456", "status": "processing", "extracted_data": null, "confidence": null, "processing_time": null, "cost_chf": null, "model_used": "gpt-4o", "created_at": "2024-12-16T10:30:00Z", "completed_at": null } ``` 200 OK - Failed ```json { "success": true, "job_id": "job_abc123def456", "status": "failed", "extracted_data": null, "confidence": null, "processing_time": 1.5, "cost_chf": 0.0, "model_used": null, "error_message": "Document is corrupted or unreadable", "created_at": "2024-12-16T10:30:00Z", "completed_at": "2024-12-16T10:30:01Z" } ``` 404 Not Found ```json { "success": false, "error": { "code": "JOB_NOT_FOUND", "message": "The requested job was not found.", "system_message": "Job ID does not exist: job_invalid123", "type": "not_found_error", "status": 404, "details": { "job_id": "job_invalid123" }, "trace_id": "trace_xyz789", "timestamp": "2024-12-16T10:30:00Z" } } ``` 401 Unauthorized ```json { "success": false, "error": { "code": "UNAUTHORIZED", "message": "Authentication required. Please provide a valid API key.", "system_message": "Missing or invalid authorization header", "type": "authentication_error", "status": 401, "trace_id": "trace_abc123", "timestamp": "2024-12-16T10:30:00Z" } } ``` ## Related resources - [Extract Document Data](/docs/api-reference/documents/extract) - [Batch Document Extraction](/docs/api-reference/documents/extract-batch) - [Document Extraction Overview](/docs/api-reference/documents/introduction)