Suzanne
Browse docs

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

HTTPcodeMeaning
401unauthorizedMissing / bad API key.
404not_foundNo 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.