Endpoints

GET /convert/jobs/:id

Async job status

Use GET /convert/jobs/:id to check job status.

GET /convert/jobs/:id

Poll this endpoint after creating a job with POST /convert/jobs.

Path parameters

Examples

curl

curl https://api.convert3d.org/convert/jobs/job_123 \
  -H "Authorization: Bearer YOUR_API_TOKEN"

JavaScript

const token = process.env.CONVERT3D_API_TOKEN;
const jobId = "job_123";

const response = await fetch(`https://api.convert3d.org/convert/jobs/${jobId}`, {
  headers: {
    Authorization: `Bearer ${token}`,
  },
});

if (!response.ok) {
  throw new Error(await response.text());
}

console.log(await response.json());

Python

import os
import requests

job_id = "job_123"

response = requests.get(
    f"https://api.convert3d.org/convert/jobs/{job_id}",
    headers={"Authorization": f"Bearer {os.environ['CONVERT3D_API_TOKEN']}"},
    timeout=30,
)
response.raise_for_status()
print(response.json())

Response fields

Response examples

Queued:

{
  "id": "job_123",
  "status": "queued",
  "progress": 0
}

In progress:

{
  "id": "job_123",
  "status": "in_progress",
  "progress": 45,
  "message": "Converting model..."
}

Success:

{
  "id": "job_123",
  "status": "success",
  "progress": 100,
  "message": "Completed",
  "signedUrl": "https://storage.convert3d.org/converted/model.glb?signature=..."
}

Failed:

{
  "id": "job_123",
  "status": "failed",
  "progress": 0,
  "message": "Unsupported file format",
  "error": "Unsupported file format"
}

Polling

Poll every 2-5 seconds. Stop when:

  • status is success, then download the result.
  • status is failed, then show or log the error.