Gizmo API Reference
Programmatic access to AI-powered 3D simulation authoring. Generate physics-ready scenes and articulated assets from natural language — export to USD (Isaac Sim) and MJCF (MuJoCo).
https://api.gizmo.antimlabs.comQuickstart5 min
Generate your first 3D scene in four steps — from API key to physics-ready geometry.
Create an API key
Go to Settings → API Keys and create a key. Copy the gzm_k1_... token.
Generate a scene
curl -X POST "https://api.gizmo.antimlabs.com/v1/scenes" \
-H "Authorization: Bearer gzm_k1_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"prompt": "A modern robotics lab with two workbenches"}'Returns 202 with a job_id — generation runs asynchronously (2-5 min).
Poll for completion
curl "https://api.gizmo.antimlabs.com/v1/jobs/job_a1b2c3d4" \
-H "Authorization: Bearer gzm_k1_YOUR_KEY"
# → {"ok": true, "job": {"status": "succeeded", ...}}Or stream real-time progress via GET /v1/jobs/{id}/events (SSE).
Retrieve the result
curl "https://api.gizmo.antimlabs.com/v1/scenes/jh72k3m4n5p6q7r8?include_graph=true" \
-H "Authorization: Bearer gzm_k1_YOUR_KEY"
# → Full scene with 3D geometry, joints, materials, physicsThe scene graph contains everything needed for USD/MJCF export.
Single asset generation
Need just one 3D asset instead of a full scene? Use the asset endpoint (30-90s):
curl -X POST "https://api.gizmo.antimlabs.com/v1/assets" \
-H "Authorization: Bearer gzm_k1_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"prompt": "A 6-DOF robotic arm with gripper end-effector", "asset_pipeline": "cad"}'Authentication
All API requests require a Bearer token. Create keys in Settings → API Keys.
Authorization: Bearer gzm_k1_a1b2c3d4e5f6...Rate Limiting
Per-key sliding window. Headers on every response:
X-RateLimit-LimitRequests/min allowed
X-RateLimit-RemainingRequests left
X-RateLimit-ResetWindow reset (unix)
Errors
All errors return a consistent JSON structure:
{"error": {"code": "scene_not_found", "message": "Scene not found", "status": 404}}401invalid_api_key404*_not_found429rate_limit_exceeded503*_not_configuredAsync Generation
POST endpoints return 202 with a job_id. Then:
Scenes(7 endpoints)
/v1/scenesList scenes
Retrieve all scenes belonging to the authenticated user, ordered by creation date (newest first).
{
"ok": true,
"scenes": [
{
"id": "jh72k3m4n5p6q7r8",
"name": "Robot Kitchen Environment",
"pipeline_status": "completed",
"pipeline_prompt": "A modern kitchen with island",
"created_at": 1717800000000,
"updated_at": 1717800060000
}
]
}/v1/scenes/{scene_id}Get scene detail
Retrieve a single scene by ID, optionally including the full scene graph (3D geometry, joints, materials) from S3.
Query Parameters
include_graphbooleanInclude the full scene graph JSON from S3{
"ok": true,
"scene": {
"id": "jh72k3m4n5p6q7r8",
"name": "Robot Kitchen",
"pipeline_status": "completed",
"pipeline_stages": [...],
"duration_ms": 145000,
"scene_graph": { ... }
}
}/v1/scenes202Generate a scene
Start async scene generation from a text prompt. Returns immediately with a job_id. Poll progress via GET /v1/jobs/{job_id} or stream real-time events via GET /v1/jobs/{job_id}/events. Typical generation: 2-5 minutes.
Request Body
promptstringrequiredNatural language description of the scenemodelstringOverride the default LLM modelasset_pipeline"auto" | "gizmo" | "cad"Geometry pipeline (default: auto)reference_image_urlsstring[]Up to 3 http(s) image URLs — a room photo grounds the structure buildpersistbooleanSave to library (default: true){
"ok": true,
"scene_id": "jh72k3m4n5p6q7r8",
"job_id": "job_a1b2c3d4",
"status": "queued"
}/v1/scenes/{scene_id}Update scene metadata
Update a scene's name or description. Does not trigger regeneration.
Request Body
namestringNew scene namedescriptionstringNew description{ "ok": true, "scene_id": "jh72k3m4n5p6q7r8" }/v1/scenes/{scene_id}Delete scene
Permanently delete a scene and its associated data.
{ "ok": true, "deleted": "jh72k3m4n5p6q7r8" }/v1/scenes/{scene_id}/edit202Edit a scene
Apply a natural language edit to an existing scene. Returns a job_id — poll or stream for progress.
Request Body
promptstringrequiredEdit instructionmodelstringOverride the default LLM model{
"ok": true,
"scene_id": "jh72k3m4n5p6q7r8",
"job_id": "job_e5f6g7h8",
"status": "queued"
}/v1/scenes/{scene_id}/statusScene pipeline status
Get detailed pipeline execution status — stages completed, errors, timing.
{
"ok": true,
"scene_id": "jh72k3m4n5p6q7r8",
"pipeline_status": "running",
"pipeline_stages": [
{ "name": "asset_generation", "status": "complete" },
{ "name": "floorplan", "status": "running" }
],
"duration_ms": 45000
}Assets(4 endpoints)
/v1/assetsList assets
Retrieve all assets belonging to the authenticated user. Optionally filter by scene.
Query Parameters
scene_idstringFilter by scene ID{
"ok": true,
"assets": [
{
"id": "ast_x9y8z7w6",
"name": "Articulated Drawer Unit",
"status": "completed",
"scene_id": "jh72k3m4n5p6q7r8",
"prompt": "A wooden 3-drawer filing cabinet"
}
]
}/v1/assets/{asset_id}Get asset detail
Retrieve a single asset by ID. Use include_record=true to get geometry, joints, and materials.
Query Parameters
include_recordbooleanInclude the full asset record from S3{
"ok": true,
"asset": {
"id": "ast_x9y8z7w6",
"name": "Articulated Drawer Unit",
"status": "completed",
"record": { "primitives": [...], "joints": [...] }
}
}/v1/assets202Generate an asset
Generate a single 3D asset from a text prompt. Includes geometry, joints, materials, and physics. Returns a job_id. Typical: 30-90 seconds.
Request Body
promptstringrequiredNatural language descriptionscene_idstringTarget scene (auto-created if omitted)asset_pipeline"auto" | "gizmo" | "cad"Geometry pipelinereference_image_urlsstring[]Up to 3 http(s) image URLs grounding geometry/texture. Build method (prim-based ~20 min vs mesh scan ~3 min) is picked automatically per prompt{
"ok": true,
"scene_id": "jh72k3m4n5p6q7r8",
"job_id": "job_x9y8z7w6",
"status": "queued"
}/v1/assets/{asset_id}Delete asset
Permanently delete an asset.
{ "ok": true, "deleted": "ast_x9y8z7w6" }Jobs(3 endpoints)
/v1/jobs/{job_id}Get job status
Poll the current status of a generation job. Status values: queued → running → succeeded | failed | cancelled.
Query Parameters
include_resultbooleanInclude the full result payload once complete{
"ok": true,
"job": {
"id": "job_a1b2c3d4",
"status": "running",
"mode": "scene",
"scene_id": "jh72k3m4n5p6q7r8",
"created_at": 1717800000,
"started_at": 1717800001,
"completed_at": null
},
"result": null
}/v1/jobs/{job_id}/eventsJob event stream (SSE)
Real-time Server-Sent Events stream. Events include stage transitions, asset completion, errors. Closes when job completes. Use 'after' param to resume.
Query Parameters
afterintegerResume from sequence number (for reconnection)event: stage_start
data: {"stage": "asset_generation", "sequence": 1}
event: stage_complete
data: {"stage": "asset_generation", "sequence": 5}
event: done
data: {"ok": true, "status": "succeeded", "job_id": "job_a1b2c3d4"}/v1/jobs/{job_id}/cancelCancel a job
Request cancellation of a running job. No-op if already completed.
{ "ok": true, "cancelled": true, "job_id": "job_a1b2c3d4" }Catalog(3 endpoints)
/v1/catalogBrowse premade catalog
Search and browse the premade asset library. Supports full-text search, category filtering, and pagination.
Query Parameters
searchstringSearch termcategorystringFilter by categorylimitintegerResults per page (1-200, default 50)offsetintegerPagination offset{
"ok": true,
"items": [
{
"slug": "modern-office-chair",
"name": "Modern Office Chair",
"category": "furniture",
"tags": ["chair", "office", "swivel"],
"mesh_count": 12,
"extent_m": 0.85
}
],
"total": 3071,
"offset": 0,
"limit": 50
}/v1/catalog/categoriesCatalog categories
Get all available categories in the premade catalog.
{
"ok": true,
"categories": ["appliances", "electronics", "furniture", "industrial", "lighting", "storage"]
}/v1/catalog/{slug}Catalog item detail
Get full details including GLB/USDZ download paths.
{
"ok": true,
"item": {
"slug": "modern-office-chair",
"name": "Modern Office Chair",
"category": "furniture",
"tags": ["chair", "office", "swivel"],
"mesh_count": 12,
"extent_m": 0.85,
"glb_path": "premade/furniture/modern-office-chair.glb",
"usdz_path": "premade/furniture/modern-office-chair.usdz"
}
}Account(2 endpoints)
/v1/whoamiCurrent user info
Verify your API key and check scopes.
{
"ok": true,
"user": {
"kind": "api_key",
"storage_user_id": "user_abc123",
"convex_user_id": "jh72k3m4n5p6q7r8",
"email": "dev@example.com",
"name": "Jane Developer",
"scopes": ["generate:asset", "generate:scene", "read:scenes"]
}
}/v1/usageAPI key usage stats
Request counts, last used timestamps, and rate limit info for all your keys.
{
"ok": true,
"total_requests": 1847,
"keys": [
{
"id": "key_abc123",
"name": "Production Key",
"status": "active",
"request_count": 1502,
"last_used_at": 1717800000000,
"rate_limit_rpm": 100
}
]
}