A 3D model generation API: from a text prompt to a GLB in four requests
Make finished 3D models from code with the Sleipner 3D API: an API key, one POST, polling, and a download in six formats. With curl examples, prices and limits.

Sometimes a 3D model is one step in a bigger job: a build script that fills a game level with props, a tool that makes a model for every product in a catalogue, an agent that needs an object it can't find. For that, Sleipner 3D has an HTTP API. It makes the same finished models as the website, on the same credits and at the same prices. This guide walks through it with curl; the full reference is on the developers page.
From a key to a GLB
- Sign in and create an API key under Settings → API keys. It starts with
slp_and is shown once, so keep it in an environment variable. - Make an object:
POST /api/objectswith a description, a tier and arequest_id. - Follow it: poll
GET /api/objects/<id>every 10 to 15 seconds until the status isready. - Download it:
GET /api/objects/<id>/download?format=glb&detail=standardanswers with a redirect to the file.
1. The key
export SLEIPNER_API_KEY=slp_...A key acts as you: it spends your credits and sees your objects. It can't buy credits, manage keys or change your account, and revoking it works from the next request.
2. Make an object
curl -X POST https://3d.sleipner.ai/api/objects \
-H "Authorization: Bearer $SLEIPNER_API_KEY" \
-H "Content-Type: application/json" \
-d '{"kind":"generate","prompt":"A wooden hand cart with two spoked wheels",
"tier":"quick","request_id":"cart-1"}'The answer is 201 Created with the object_id, the status (queued), the price and your new balance.
request_id matters. If your script times out and sends the same request again, the same request_id returns the first object with 200 and charges nothing. Without it, every retry makes, and pays for, a new object.
3. Follow it
curl -H "Authorization: Bearer $SLEIPNER_API_KEY" \
https://3d.sleipner.ai/api/objects/<object_id>status goes queued → running → ready, or failed with the credits refunded. job.fraction and job.stepLabel say how far it is. A Quick object usually takes under 10 minutes, Standard 10–20.
4. Download
curl -L -o cart.glb -H "Authorization: Bearer $SLEIPNER_API_KEY" \
"https://3d.sleipner.ai/api/objects/<object_id>/download?format=glb&detail=standard"Formats are glb, gltf, fbx, usdz, blend and obj; detail is standard or low. The answer is a redirect to a link that works for five minutes, so follow it (-L) and save the file; don't store the link.

Changes and products
A change is another POST /api/objects, with "kind":"edit", an object_id (yours) or a library_slug (a free library model), and one instruction:
curl -X POST https://3d.sleipner.ai/api/objects \
-H "Authorization: Bearer $SLEIPNER_API_KEY" \
-H "Content-Type: application/json" \
-d '{"kind":"edit","library_slug":"medieval-hand-cart","instruction":"paint it dark red",
"tier":"quick","request_id":"cart-red"}'You get a new object and the source stays as it was. A colour, material or wear change keeps the shape and costs 50 credits: the tier's price is held at the start and the rest comes back when it finishes (job.creditBack). Anything that changes the shape pays the tier's price. More in changing a 3D model with words.
A product from its photos is a multipart request with one to eight photos and the real size, on the accurate tier (5,000 credits). It is in beta; the developers page has the example.
The endpoints
| Request | What it does |
|---|---|
POST /api/objects | Make an object or a change (JSON), or a product from photos (multipart). 201 new, 200 the same request_id again. |
GET /api/objects | Your objects, newest first (?status=ready&limit=20). |
GET /api/objects/<id> | One object: status, progress, the price charged and, when ready, its renders and formats. |
GET /api/objects/<id>/download | A redirect to the file (?format=glb&detail=standard). |
POST /api/objects/<id>/cancel | Stop a build; its credits come back. |
GET /api/credits | Your balance, the prices and your latest credit entries. |
Errors and limits
| Status | Meaning | What to do |
|---|---|---|
| 400 | A bad request | Read error; fix the body |
| 401 | A missing or revoked key | Check Authorization: Bearer slp_… |
| 402 | Not enough credits | The answer has your balance and what is needed |
| 422 | Outside what V1 makes (a scene, a building, a forest) | Use one of the suggestions, or send make_anyway: true if it can be overridden |
| 429 | Over a rate limit | Wait for Retry-After |
| 503 | Making is paused for a while | Retry later |
Per account, at most two builds are in the works at once, and new builds are rate-limited per key. Plan a batch as a queue: submit two, wait for one to finish, submit the next.
API or MCP?
If the caller is a script you wrote, use the API with a key. If the caller is an AI assistant (Claude, ChatGPT, Cursor, VS Code), connect it over MCP instead: it signs in through the browser, needs no key, and the server tells it to ask you before spending. The MCP guide shows how.
Questions
What does the API cost?
The same as the website: Quick 350 credits, Standard 1,000, a surface change 50, an accurate product 5,000. At launch, until 2026-12-31, Quick is 200 and Standard 600; a job keeps the price it was submitted at, and the response shows list_price next to the price charged. 1,000 credits cost $10 in the smallest pack and never expire. There is no separate API fee or subscription.
Is there a free tier for the API?
New accounts get free credits once (600 during the launch, until 2026-12-31, enough for three Quick objects at the launch price; 400 after), and the API can spend them. There is no monthly free allowance.
Can I download free library models through the API?
Library models are downloaded from their pages or through the MCP tools, which give a five-minute link. The public catalogue is also at library.json with every model's formats, sizes and renders.
Is there an SDK?
Not yet. The API is plain JSON over HTTPS, so any HTTP client works. Agents can use the MCP server instead.
How fast is it?
Usually under 10 minutes for Quick, 10–20 for Standard. It is not a real-time API: design your code to submit, poll and download.


