GET
/
jobs
/
{job_id}
curl -X GET "https://prod.visionapi.unsiloed.ai/jobs/b2094b38-e432-44b6-a5d0-67bed07d5de1" \
  -H "X-API-Key: your-api-key"
{
  "id": "b2094b38-e432-44b6-a5d0-67bed07d5de1",
  "status": "queued",
  "type": "extraction",
  "created_at": "2024-01-15T10:30:00.000Z",
  "updated_at": "2024-01-15T10:30:00.000Z",
  "pdf_name": "financial_report.pdf",
  "pdf_hash": "sha256:abc123...",
  "user_id": "user_123"
}

Overview

The Get Job Status endpoint allows you to check the current status of any asynchronous processing job. This is essential for monitoring long-running operations like document extraction, parsing, and batch processing.
Jobs are stored in Supabase and updated in real-time. Status checks are lightweight and can be polled frequently.

Response

id
string
Unique identifier for the job
status
string
Current job status: “queued”, “PROCESSING”, “COMPLETED”, or “FAILED”
type
string
The operation type for this job (e.g., “extraction”, “chunking”, “classification”)
created_at
string
Timestamp when the job was created
updated_at
string
Timestamp when the job was last updated
pdf_name
string
Original filename of the processed document
pdf_hash
string
Hash of the PDF file for identification
error
string
Error message (if job failed)
curl -X GET "https://prod.visionapi.unsiloed.ai/jobs/b2094b38-e432-44b6-a5d0-67bed07d5de1" \
  -H "X-API-Key: your-api-key"
{
  "id": "b2094b38-e432-44b6-a5d0-67bed07d5de1",
  "status": "queued",
  "type": "extraction",
  "created_at": "2024-01-15T10:30:00.000Z",
  "updated_at": "2024-01-15T10:30:00.000Z",
  "pdf_name": "financial_report.pdf",
  "pdf_hash": "sha256:abc123...",
  "user_id": "user_123"
}

Job Status Values

Polling for Completion

For long-running jobs, implement polling to check status periodically:
import time
import requests

def wait_for_job_completion(job_id, api_key, poll_interval=5, max_wait=300):
    """Wait for job to complete with polling"""
    
    start_time = time.time()
    headers = {"X-API-Key": api_key}
    
    while time.time() - start_time < max_wait:
        response = requests.get(f"https://prod.visionapi.unsiloed.ai/jobs/{job_id}", headers=headers)
        
        if response.status_code == 200:
            job = response.json()
            status = job['status']
            
            print(f"Job status: {status}")
            
            if status == 'COMPLETED':
                return job, True
            elif status == 'FAILED':
                return job, False
                
        time.sleep(poll_interval)
    
    raise TimeoutError(f"Job {job_id} did not complete within {max_wait} seconds")

# Usage
job_id = "your-job-id"
job, success = wait_for_job_completion(job_id, "your-api-key")

if success:
    print("Job completed successfully!")
else:
    print(f"Job failed: {job.get('error', 'Unknown error')}")

Authorizations

api-key
string
header
required

Path Parameters

job_id
string
required

The unique identifier of the job to check

Response

200 - application/json

Job status retrieved successfully

The response is of type object.