GET /v1/jobs/{job_id}
Poll job status. Returns the current state plus download URLs once the mesh is ready.
Poll job status.
Response: 200 OK
{
"job_id": "job_<uuid>",
"status": "queued | running | done | failed | cancelled",
"model": "sculptor",
"created_at": "2026-06-01T07:09:15.595749Z",
"updated_at": "2026-06-01T07:11:30.111073Z",
"completed_at": "2026-06-01T07:11:30.111073Z",
"outputs": [
{ "format": "glb", "download_url": "https://api.suzanne3d.com/v1/models/job_.../download?format=glb" }
],
"error": null
}When status == "failed", error is { "code": "...", "message": "..." }. When status == "done", each requested output appears in outputs with a stable download URL (call it to get a fresh 15-minute presigned S3 URL).
Polling guidance
Typical job latency is 30 s – 2 min for single-image, 1 – 4 min for multi-view. Poll every 5–10 s; give up after 20 min and assume the job is stuck (open a support ticket).
Curl
curl -sS "$BASE/v1/jobs/job_<uuid>" \
-H "Authorization: Bearer $KEY"Errors
| HTTP | code | Meaning |
|---|---|---|
| 401 | unauthorized | Missing / bad API key. |
| 404 | not_found | No such job, or it belongs to a different account. |
When the job itself fails (status: "failed"), error.code is one of: vendor_model_error, vendor_http_error, vendor_timeout, tripo_not_configured, missing_image, insufficient_views, job_cancelled, sqs_enqueue_failed. See the full Error Reference.