Skip to content

Jobs

Every generation endpoint in this API returns a jobId immediately and keeps working in the background. This page covers the one endpoint you'll call repeatedly: checking a job's status and getting its result.

Get a job

GET /jobs/{jobId}
bash
curl https://api.sloyd.ai/api/jobs/01JZQY4YJ7KV1GQZ9G6H6H2X25 \
  -H "x-client-id: $SLOYD_CLIENT_ID" \
  -H "x-client-secret: $SLOYD_CLIENT_SECRET"

Response

json
{
  "id": "01JZQY4YJ7KV1GQZ9G6H6H2X25",
  "status": "success",
  "title": "a medieval knight helmet",
  "prompt": "a medieval knight helmet",
  "createdAt": "2026-08-11T10:15:00.000Z",
  "genParams": { "targetFaceCount": 20000, "textureResolution": "auto", "topology": "auto" },
  "fragments": [{ "name": "i23d_queue", "displayName": "Waiting in Queue" }],
  "isSuccess": true,
  "libraryEligible": true
}
FieldTypeNotes
idstringSame as the jobId you requested.
status"pending" | "running" | "success" | "error"Poll until this is success or error. Older jobs may show legacy values (created, completed, failed) with the same meaning.
titlestring
promptstringThe prompt used, where applicable.
genParamsobjectThe generation parameters that were applied, including defaults you didn't explicitly set.
fragmentsarrayNamed processing stages with progress metadata — useful for a progress indicator, not required for correctness.
errorMessagestringPresent when status is error.
isSuccessbooleanMirrors status === "success".
createdAtdate-time

Fields not relevant to API integration (author display info, library/moderation metadata) are included in the response but can be ignored.

Downloading the result

Once status is success, the finished asset is available from a public, unauthenticated URL derived from the job id — there's no separate "download" endpoint to call:

https://storage.googleapis.com/ai-services-quality/jobs/{jobId}.glb
bash
curl -o model.glb https://storage.googleapis.com/ai-services-quality/jobs/01JZQY4YJ7KV1GQZ9G6H6H2X25.glb

This applies to every 3D generation endpoint — each publishes its finished GLB at this same jobs/{jobId}.glb path, keyed on the jobId that endpoint returned.

TIP

Because the URL is public and predictable, you can start fetching it optimistically once you expect status to flip to success, or treat a 404/incomplete file as "not ready yet" instead of polling the JSON endpoint. Polling GET /jobs/{jobId} is still the reliable way to detect error.

No list endpoint (yet)

There is currently no supported endpoint to list every job created by your API key — track the jobIds you receive from each create call on your own side, and poll each one individually.