Get a job's result
Retrieve a job's result: the same envelope the assess call returns. Poll until the status leaves processing, or pass wait to long-poll.
GET /v1/jobs/:jobId
Request
GET /v1/jobs/:jobId
Authorization: Bearer {api_key}Path parameters
| Parameter | Type | Description | Required |
|---|---|---|---|
| jobId | string (uuid) | Identifier of the job to fetch, as returned by POST /v1/assess. | Yes |
Query parameters
| Parameter | Type | Description | Required |
|---|---|---|---|
| wait | boolean | Block until the job completes. true (the default) waits up to 30 s before falling back to the polling response; false returns immediately. Changes response timing and HTTP status only — never the result shape. | No |
Example request
curl -X GET "https://api.pixelsystems.com/v1/jobs/550e8400-e29b-41d4-a716-446655440000?wait=true" \
-H "Authorization: Bearer {api_key}"Response (200)
Result for the job (poll or long-poll)
| Field | Type | Description |
|---|---|---|
| jobId | string (uuid) | Single job identity, shared by every path that references this job. |
| status | JobStatus | Lifecycle status of a job. verdict is present only when completed. rejected is reserved for future use and is not currently produced. |
| verdict | Verdict | Overall verdict for a completed job, with per-dimension breakdown. Present only when status is completed. |
| expertReview | ExpertReview | Present when a verification specialist has reviewed this job. Single-file jobs only. |
| error | JobResultError | Why a job ended in error or rejected status; present only for those statuses. Uses the same code vocabulary as endpoint errors. |
| metadata | object | Caller-supplied metadata, echoed back verbatim. |
| createdAt | string (date-time) | When the job was created (ISO 8601). |
| completedAt | string (date-time) | When processing finished (ISO 8601). |
Example response
{
"jobId": "550e8400-e29b-41d4-a716-446655440000",
"status": "completed",
"verdict": {
"assessment": "ai_generated",
"confidence": "high",
"display": {
"label": "AI Generated",
"title": "AI Generated",
"description": "AI Generated image detected"
},
"dimensions": [
{
"key": "ai_detection",
"label": "AI generation",
"assessment": "likely_ai",
"score": 0.82,
"confidence": "high"
}
]
},
"expertReview": {
"verdict": {
"assessment": "authentic",
"display": {
"label": "Authentic",
"title": "Authentic",
"description": "Authentic image detected"
}
},
"dimensions": [
{
"key": "ai_detection",
"label": "AI generation",
"assessment": "authentic"
}
],
"confidence": "high",
"notes": "Our specialist found no signs of AI generation.",
"reviewedAt": "2024-06-02T09:30:00Z"
},
"metadata": { "customer_case_id": "case-123" },
"createdAt": "2024-06-01T12:00:00Z",
"completedAt": "2024-06-01T12:05:00Z"
}Notes
When a verification specialist has reviewed a single-file job, the response includes an expertReview field — see ExpertReview for its fields. The verdict field keeps returning the automated result either way, so integrations that read it are unaffected; read expertReview to apply the specialist's correction. The field is present while the job's status is completed: during a re-analysis the job reads as processing without it, and the review returns when the new run finishes. Multi-file jobs omit the field.