All Vision API operations run asynchronously. When you start an operation, you receive a job ID. Poll the job or subscribe to webhooks for results.
What are Jobs?
Many operations in Bedrock take time to complete—processing a large drawing PDF, comparing hundreds of sheets, or running AI analysis. These operations create Jobs that you can monitor.
Job Lifecycle
Job Created (Queued)
│
├─→ Started (processing)
│
├─→ Completed (success)
│ └─→ Results available
│
└─→ Failed (error)
└─→ Error details in response
Job Object
| Field | Type | Description |
|---|
job_id | string | Unique identifier (e.g., job_01JABCD123) |
organization_id | string | Parent Organization |
project_id | string | Parent Project |
type | string | Job type (e.g., overlay.change.detect). See Job Types. |
status | string | Current status |
target | object | { type, id } of the resource being processed |
parent_id | string | Parent job ID (for child jobs) |
results | object | Job output data (when completed) |
error | object | Error details (when failed) |
events | array | Status change history |
created_at | datetime | Creation timestamp |
completed_at | datetime | Completion timestamp (when completed) |
Job Statuses
| Status | Description |
|---|
Queued | Job is waiting to be processed |
Started | Job is currently running |
Completed | Job finished successfully |
Failed | Job encountered an error |
Canceled | Job was canceled |
Job Hierarchy
Some jobs create child jobs for parallel processing:
drawing.preprocess (parent)
├─→ sheet.preprocess (child 1)
├─→ sheet.preprocess (child 2)
└─→ sheet.preprocess (child 3)
The parent job completes when all child jobs finish.
Jobs are created automatically by other operations (uploading files, comparing drawings, etc.). You cannot create jobs directly.