Jobs
GET /v1/jobs
| Query | Type | Notes |
|---|---|---|
status | enum | queued|running|succeeded|failed|timed_out|aborted |
type | enum | search|batch_detail|chained_search_detail|building_units |
since | ISO timestamp | created_at >= since |
limit | int | default 50, max 500 |
offset | int | default 0 |
200 response
{ "data": [ { "id": "8c2a...", "type": "batch_detail", "status": "succeeded", "result_count": 213, "error": null, "chain_stage": null, "created_at": "...", "started_at": "...", "completed_at": "..." } ], "meta": { "limit": 50, "offset": 0 }, "request_id": "..."}GET /v1/jobs/{id}
{ "data": { "id": "8c2a...", "type": "chained_search_detail", "status": "running", "result_count": null, "chain_stage": "detail", "error": null, "created_at": "...", "started_at": "...", "completed_at": null }, "request_id": "..."}chain_stage is search or detail for chained jobs, null otherwise.
For chained_search_detail, status: succeeded means BOTH stages finished.
GET /v1/jobs/{id}/results
Returns paginated rows once status: succeeded.
| Query | Type | Notes |
|---|---|---|
limit | int | default 100, max 1000 |
offset | int | default 0 |
format | enum | json (default), csv, ndjson |
200 response (JSON)
{ "data": [{ "zpid": "...", "...": "..." }, ...], "meta": { "count": 200, "total": 8541, "limit": 200, "offset": 400, "has_more": true }, "request_id": "..."}Errors
| Status | Code | Cause |
|---|---|---|
| 404 | job_not_found | Wrong UUID, or not your account |
| 409 | job_not_ready | status is not succeeded |
| 502/504 | upstream_error/upstream_timeout | Result fetch failed |