Suzanne
Browse docs

POST /v1/generations/text-to-3d

Submit a text prompt and get back a job_id you can poll until the mesh is ready.

Submit a text → 3D job.

Request

{
  "model": "sculptor",
  "prompt": "a low-poly forest dragon, game-ready, mossy bark texture",
  "params": { "faces": 100000, "pbr": true },
  "outputs": ["glb"]
}
  • model: use sculptor. See Models.
  • prompt: 1–4000 characters describing the mesh you want.
  • params: see Generation Parameters.
  • outputs: any subset of ["glb", "obj", "stl"] (default ["glb"]).

Response: 202 Accepted

{
  "job_id": "job_<uuid>",
  "status": "queued",
  "created_at": "2026-06-01T07:09:15.595749Z",
  "billable_amount_cents": 0
}

Then poll GET /v1/jobs/{job_id} until status is done, failed, or cancelled.

Curl

KEY="sk_test_xxx"
BASE="https://api.suzanne3d.com"
 
curl -sS -X POST "$BASE/v1/generations/text-to-3d" \
  -H "Authorization: Bearer $KEY" \
  -H "content-type: application/json" \
  -d '{
    "model": "sculptor",
    "prompt": "a low-poly forest dragon, game-ready, mossy bark texture",
    "params": { "faces": 100000, "pbr": true },
    "outputs": ["glb"]
  }'

Idempotency

Pass Idempotency-Key: <uuid> to make the call safe to retry. See Idempotency.

Errors

HTTPcodeMeaning
400validation_errorRequest body doesn't match the schema.
400missing_bodyPOST without a JSON body.
400invalid_paramfaces value not in the allowed enum.
401unauthorizedMissing / bad API key.
409idempotency_key_conflictSame Idempotency-Key with a different body.
409concurrent_limit_reachedAccount is at the concurrent-jobs ceiling.

See the full Error Reference.