Download
Unified download endpoint and async format conversion.
GLB is produced when a submission completes. Other formats are converted on-demand:
either inline via the unified /download endpoint (which waits for the result), or
asynchronously via the /convert job API.
Download a submission asset
GET /api/v1/{submission_id}/download
Public.
Unified endpoint for all downloadable artifacts. GLB is always ready; FBX/OBJ/STL/USDZ trigger an on-demand conversion if not yet cached.
Path Parameters
| Name | Type | Description |
|---|---|---|
submission_id | string (required) | UUID of the submission. |
Query Parameters
| Name | Type | Description |
|---|---|---|
format | string | Asset format. Values: glb, fbx, obj, stl, usdz, py, thumbnail, reference_image. Default: glb. |
index | integer | Index for reference_image format (0–5). Default: 0. |
Example Request
# GLB (instant)
curl -L -o model.glb \
"https://api.thrixel.com/api/v1/a1b2c3d4-.../download?format=glb"
# FBX (triggers conversion, may take a few seconds)
curl -L -o model.fbx \
"https://api.thrixel.com/api/v1/a1b2c3d4-.../download?format=fbx"Queue a conversion job
POST /api/v1/convert
Public.
Async alternative to /download for non-GLB formats. Returns immediately with a job_id
to poll. Re-requesting the same (submission, format) returns the existing ready job
unless force=true.
Request Body
| Name | Type | Description |
|---|---|---|
submission_id | string (required) | UUID of the submission to convert. |
format | string (required) | Target format. Values: fbx, obj, stl, usdz. |
force | boolean | Re-run the conversion even if a ready job exists. Default: false. |
Example Request
curl -X POST https://api.thrixel.com/api/v1/convert \
-H "Content-Type: application/json" \
-d '{"submission_id": "a1b2c3d4-...", "format": "usdz"}'Example Response
{
"job_id": "f7a8b9c0-...",
"submission_id": "a1b2c3d4-...",
"format": "usdz",
"status": "queued",
"error": null,
"download_url": null,
"status_url": "https://api.thrixel.com/api/v1/convert/f7a8b9c0-..."
}
Check conversion status
GET /api/v1/convert/{job_id}
Public.
Returns the current status of a conversion job. Poll until status becomes ready or
failed.
Path Parameters
| Name | Type | Description |
|---|---|---|
job_id | string (required) | UUID returned by POST /convert. |
Example Request
curl https://api.thrixel.com/api/v1/convert/f7a8b9c0-...Example Response
{
"job_id": "f7a8b9c0-...",
"submission_id": "a1b2c3d4-...",
"format": "usdz",
"status": "ready",
"error": null,
"download_url": "https://api.thrixel.com/api/v1/convert/f7a8b9c0-.../download",
"status_url": "https://api.thrixel.com/api/v1/convert/f7a8b9c0-..."
}
Download a converted file
GET /api/v1/convert/{job_id}/download
Public.
Returns the converted file once ready. 409 if still queued/running, 410 if the job failed.
Path Parameters
| Name | Type | Description |
|---|---|---|
job_id | string (required) | UUID of a ready conversion job. |
Example Request
curl -L -o model.usdz \
https://api.thrixel.com/api/v1/convert/f7a8b9c0-.../download