REST API reference
C3D-DOCS-03 · REV AThe Creations3D REST API lets a script create, read, list and delete 3D models and read its credits, with a personal API key (sent as Authorization: Bearer c3d_sk_...). The base URL is https://creations3d.com, requests and responses are JSON, and models build in the background: create returns 202, then you poll until the status is ready. To export STL, 3MF, OBJ or FBX, use the MCP server or the website; the REST model response links the GLB.
Authentication
- Sign in on the website and open Account, API keys.
- Create a key. It starts with c3d_sk_ and is shown once, so store it as a secret.
- Send it on every request:
Authorization: Bearer c3d_sk_...
Keys act as your account and use its credits. They can only be created, listed and revoked on the website: the key endpoints refuse API keys. A request with no valid key gets 401 with { "error": "Sign in to continue." }.
Endpoints
| Method and path | What it does |
|---|---|
POST /api/generations | Create a model. 202 with the model. |
GET /api/generations/{id} | Read one model. 200 with the model. |
GET /api/generations?limit=50 | List your models, newest first. limit 1 to 100, default 50. |
DELETE /api/generations/{id} | Delete a finished model and its files. 204. |
GET /api/account | Credits, plan and the credit cost of each kind of model. |
POST /api/generations
Send JSON, or multipart/form-data with an image file. Credits are taken when the request is accepted and go back automatically if the build fails.
| Field | Type | Notes |
|---|---|---|
prompt | string | What to build, up to 1,000 characters. Send a prompt, an image, or both. |
imageUrl | string | JSON only: a public HTTPS image URL or a data URL (PNG, JPEG or WebP, under 10 MB). |
image | file | Multipart only: the photo to build from. |
use_for | web | game | print | render | Default web. |
style | string | Optional, up to 200 characters. |
target_size | number | Size of the largest side, in units. Positive, at most 1,000,000. |
units | mm | cm | m | Default m. |
max_triangles | integer | 1,000 to 500,000. Defaults depend on use_for (see the MCP reference). |
texture_size | 512 | 1024 | 2048 | Texture size in pixels. |
quad | boolean | Ask for a quad mesh. Over REST it takes effect only with use_for game; then sourceUrl links the original quad FBX. Other use_for values ignore it. |
preview_only | boolean | Make a preview first and stop: 1 credit for a description, free for a photo (up to 5 photo drafts at a time). A photo preview still needs the full photo model cost (6 credits) in your balance, or it returns 402. |
continue_id | string | Build the 3D model from a preview made with preview_only. Charges only the rest of the full cost. |
JSON request:
curl -X POST https://creations3d.com/api/generations \
-H "Authorization: Bearer $CREATIONS3D_API_KEY" \
-H "Content-Type: application/json" \
-d '{"prompt":"bronze lantern","use_for":"render","target_size":320,"units":"mm"}'Photo upload:
curl -X POST https://creations3d.com/api/generations \
-H "Authorization: Bearer $CREATIONS3D_API_KEY" \
-F image=@shoe.jpg \
-F use_for=web -F target_size=0.3 -F units=mResponse (shortened):
HTTP/1.1 202 Accepted
{
"id": "aBc123...",
"status": "queued",
"mode": "text",
"useFor": "render",
"title": "Bronze Lantern",
"prompt": "bronze lantern",
"format": "glb",
"modelUrl": null,
"previewUrl": null,
"pageUrl": "https://creations3d.com/models/aBc123...",
"creditsUsed": 8,
"error": null,
"retryable": true,
"retryAfterSeconds": 5,
...
}Costs: 8 credits for a standard model (web, print or render), 4 for use_for game, 6 for a model from a photo.
GET /api/generations/{id}
Poll every 5 seconds or so until status is ready or failed. A model usually takes about 1.5 minutes once it starts, and at most two per account are built at once. When it is ready, modelUrl is a signed GLB link that expires after 15 minutes; read the model again for a fresh one.
curl https://creations3d.com/api/generations/aBc123... \
-H "Authorization: Bearer $CREATIONS3D_API_KEY"The model has the same fields as in the MCP reference: id, status (queued, processing, preview, ready or failed), mode, useFor, title, prompt, format, modelUrl, previewUrl, pageUrl, sourceUrl, sourceFormat, dimensions, triangles, fileSizeBytes, creditsUsed, error, retryable, retryAfterSeconds, createdAt and completedAt. The status is preview only for models made with preview_only.
GET /api/generations
Returns { models: [...] }, newest first. There is no cursor in REST; the list_models MCP tool pages through a longer library.
DELETE /api/generations/{id}
Deletes the model and every file made from it, then returns 204. A model that is still queued or being built returns 409: wait for it to finish first.
GET /api/account
Returns credits, plan, subscriptionStatus, periodEnd, creditPools, trialEligible, pendingCheckout and costs (credits per kind of model). Plans are started on the pricing page, never through the API.
Errors
Errors are JSON with an error sentence. Some also carry extra fields, such as retryable and retryAfterSeconds, so read them when present and do not rely on them. A 402 for too few credits looks like this:
HTTP/1.1 402 Payment Required
{ "error": "This needs 8 credits; you have 3." }| Status | Meaning |
|---|---|
| 400 | Invalid input, for example "Invalid generation options." or "Provide a prompt or reference image." |
| 401 | Missing or invalid API key. |
| 402 | Not enough credits. A free photo preview (preview_only) also needs the full photo model cost (6 credits) in your balance. |
| 404 | "Model not found." The id is wrong or belongs to another account. |
| 409 | The model is still being built (delete), or a preview is not ready to continue. |
| 413 | The request is over 16 MB. |
| 500 | "Something went wrong. Try again in a moment." |
New to the API? The quickstart makes a first model with these calls, and the three.js GLB guide loads the result in a scene.