Base URL
Authentication
All requests require a Bearer token:Endpoints
Create Generation
Start a new mesh generation from an image. Request Body:
Response:
generation_id for all subsequent API calls (status polling and downloads).
key_monthly_used and key_monthly_limit only appear if your API key has a monthly limit configured.Check Status
Poll the status of a generation. Response (Queued):expires_in is the number of seconds until glb_url expires. Download and save to your own storage immediately. queue_position indicates your place in line (1 means actively processing).Download GLB
Download the GLB file directly. Response: Binary GLB file with headers:Content-Type: model/gltf-binaryContent-Disposition: attachment; filename="asset_name.glb"
Code Examples
Best Practices
- Download & Store Immediately — You MUST download and save GLB files to your own storage immediately. Files are NOT retained on our servers.
- Poll Every 5 Seconds — Check status every 5 seconds. Handle
queue_positionin the response to show users their place in line. - Reproducible Results — Use the same
seedvalue to regenerate identical meshes from the same input image. - Resize Images Client-Side — Resize to max 1024x1024 before encoding to reduce payload size and improve performance.
- Exponential Backoff — For production, implement exponential backoff with jitter when polling and retrying.
- Handle Rate Limits — Check for
retry_after_secondsin 429 responses and wait accordingly. - Store Generation IDs — Persist generation IDs so you can recover from crashes and resume polling later.
- Tune Output Quality — Adjust
decimation_target(triangle count) andtexture_sizeto balance quality vs file size.
Generation Modes
Image Requirements
Rate Limits
Only generation creation (POST) counts against rate limits. Status polling (GET) and downloads are NOT rate-limited, so you can poll as frequently as needed.
Error Codes
HTTP Status Codes
Error Response Codes
On 503 errors, credits are automatically refunded. Check for
credits_refunded: true in the response.