Wandy3D API
Generate 3D models from your code, engine or AI agent
Send a photo, a few views or a sentence and get back a textured 3D model — then export it, print it, remesh it into quads, rig it or pack it for your game engine. The same pipeline as the studio, over plain HTTPS.
- Pay per call from a prepaid balance
- Bearer key authentication
- 60 requests per minute per key
- REST and JSON over HTTPS
# 1. Start a generation from a photo (Wandy 2)curl -s -X POST "https://api.wandy3d.com/generate/cloud/ultra" \ -H "Authorization: Bearer $WANDY3D_API_KEY" \ -F "file=@photo.jpg"# → {"task_id": "<task_id>", "status": "queued", "billing": {"cost_usd": "<price>", "balance_usd": "<balance>"}, …}Quickstart
Four steps from a photo to a GLB file.
- 1
Create a key
In the API platform, under API keys, then top up your API balance. The key is shown once — keep it in an environment variable such as
WANDY3D_API_KEY. - 2
Start a generation
POST
/generate/cloud/ultraSend one photo as the multipart field
file. The answer carries atask_id. - 3
Poll the task
GET
/task/{task_id}/statusEvery few seconds, until
statusisdone; the answer then carries themodel_id. - 4
Download
GET
/model/{model_id}/export?format=glbGLB answers at once with a short-lived link. Other formats convert first — poll the same URL until it is ready.
# 1. Start a generation from a photo (Wandy 2)curl -s -X POST "https://api.wandy3d.com/generate/cloud/ultra" \ -H "Authorization: Bearer $WANDY3D_API_KEY" \ -F "file=@photo.jpg"# → {"task_id": "<task_id>", "status": "queued", "billing": {"cost_usd": "<price>", "balance_usd": "<balance>"}, …}# 2. Poll until "status" is "done"curl -s "https://api.wandy3d.com/task/<task_id>/status" \ -H "Authorization: Bearer $WANDY3D_API_KEY"# → {"status": "done", "model_id": "<model_id>", …}# 3. Get a download link, then download the GLBcurl -s "https://api.wandy3d.com/model/<model_id>/export?format=glb" \ -H "Authorization: Bearer $WANDY3D_API_KEY"# → {"status": "ready", "url": "<download_url>", "filename": "<name>.glb", …}curl -L -o model.glb "<download_url>"Keys and limits
Every request carries your key in the Authorization header.
Authorization: Bearer hg_live_…Keep keys secret
A key acts as you and spends your API balance. Use it from your server, scripts or CI — never in a web page or a mobile app. Revoke a leaked key in the API platform: it stops working at once.
Rate limit
60 requests per minute per key. Over the limit the answer is 429 with retry_after — the seconds to wait.
Up to 10 keys
Use one per app or machine, so you can revoke one without touching the others.
Errors
Errors are JSON. Most carry a stable code in detail.error:
{"detail": {"error": "rate_limited", "retry_after": <seconds>, "message": "…"}}| Status | detail.error | Meaning |
|---|---|---|
| 401 | invalid_api_key | The key is missing, wrong or revoked. |
| 402 | insufficient_balancemonthly_limit_reachedkey_limit_reached | Not enough API balance, or a monthly limit (account or key) is reached. |
| 403 | subscription_requiredsession_required | Needs a signed-in session on the website, or a plan to download a model made on the website. |
| 404 | feature_off | Not found, or not available to you yet. |
| 409 | file_not_ready | The model file isn't ready yet. |
| 429 | rate_limitedtoo_many_jobs | Rate limit reached, or too many generations are running at once. |
Pricing
Every paid call is charged in US dollars from your prepaid API balance. Top up by card from $5 — the balance never expires, and failed jobs are refunded automatically.
Models you generate through the API are yours to download in every format, free.
Endpoints
The public API in one table. Every route takes the same Bearer key.
Generate
| Method | Path | What it does |
|---|---|---|
| POST | /generate/cloud/ultra | Model from one photo, Wandy 2Paid |
| POST | /generate/cloud | Model from one photo, Wandy 1.1Paid |
| POST | /generate/cloud/fast | Model from one photo, Wandy 1Paid |
| POST | /generate/cloud/multi/ultra | Model from 2–4 views, Wandy 2Paid |
| POST | /generate/cloud/multi | Model from 2–4 views of one object, Wandy 1.1Paid |
| POST | /generate/cloud/multi/fast | Model from 2–4 views, Wandy 1Paid |
| POST | /generate/text/imagine | Text prompt → concept picturePaid |
| POST | /generate/text | Concept picture → 3D modelPaid |
| POST | /generate/retexture | New texture for a model from a photoPaid |
Tasks
| Method | Path | What it does |
|---|---|---|
| GET | /task/{task_id}/status | Progress of a generation |
Library
| Method | Path | What it does |
|---|---|---|
| GET | /library | Your models, newest first |
| GET | /model/{model_id} | One model and its GLB link |
Downloads and post-processing
| Method | Path | What it does |
|---|---|---|
| GET | /model/{model_id}/export | Download as GLB, FBX, OBJ, USDZ, STL or Draco GLBDownload |
| GET | /model/{model_id}/print | Print-ready STL or 3MFDownload |
| GET | /model/{model_id}/retopo | Quad remesh with baked texturesPaidDownload |
| GET | /model/{model_id}/rig | Auto-rig with animation clipsPaid |
| GET | /model/{model_id}/parts | Split a model into partsPaid |
| GET | /model/{model_id}/gamepack | Game-ready pack with LODs and collidersPaidDownload |
| GET | /model/{model_id}/make/{kind} | Craft makers, for example papercraftPaid |
Account
| Method | Path | What it does |
|---|---|---|
| GET | /api/platform/balance | Your API balance |
| GET | /api/platform/prices | The live price list |
Make your first API call
Create a key and top up in the API platform — it takes a minute.
