Skip to main content
The Gizmo API lets you generate articulated assets and complete scenes from text prompts, manage your library, browse the premade catalog, and export to USD, MJCF, or SDF — all without the editor UI. Base URL: https://api.gizmo.antimlabs.com/v1

Authentication

All endpoints require an API key via the Authorization header:
Authorization: Bearer gzm_k1_YOUR_KEY
Create API keys in Settings → API Keys. Each key has configurable rate limits and scopes.

Quick Start

1. Verify your key

curl "https://api.gizmo.antimlabs.com/v1/whoami" \
  -H "Authorization: Bearer gzm_k1_YOUR_KEY"

2. 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"}'
This returns 202 Accepted with a job_id — poll with GET /v1/jobs/{job_id} or stream real-time progress via SSE at GET /v1/jobs/{job_id}/events.

3. Export to a simulator

curl -X POST "https://api.gizmo.antimlabs.com/v1/scenes/{scene_id}/export" \
  -H "Authorization: Bearer gzm_k1_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{"format": "mjcf"}' \
  -o scene.zip

Endpoint Groups

Scenes

MethodPathDescription
GET/v1/scenesList all scenes
GET/v1/scenes/{id}Get scene detail (optionally with full scene graph)
POST/v1/scenesGenerate a new scene from a prompt
PATCH/v1/scenes/{id}Update scene metadata (name, description)
DELETE/v1/scenes/{id}Delete a scene
POST/v1/scenes/{id}/editApply a natural language edit to a scene
GET/v1/scenes/{id}/statusGet pipeline execution status
POST/v1/scenes/{id}/exportExport to MJCF, USD, or SDF (returns ZIP)

Assets

MethodPathDescription
GET/v1/assetsList all assets (filter by scene)
GET/v1/assets/{id}Get asset detail (optionally with full record)
POST/v1/assetsGenerate a single asset from a prompt
DELETE/v1/assets/{id}Delete an asset
POST /v1/assets requires a scene_id in the body — generated assets are attached to a scene. Omitting it returns 400 no_scene. Create or pick a scene first (POST /v1/scenes or GET /v1/scenes), then pass its id. To generate a standalone environment instead, use POST /v1/scenes.

Jobs

MethodPathDescription
GET/v1/jobs/{id}Poll job status
GET/v1/jobs/{id}/eventsStream real-time progress (SSE)
POST/v1/jobs/{id}/cancelCancel a running job

Catalog

MethodPathDescription
GET/v1/catalogSearch and browse premade assets
GET/v1/catalog/categoriesList all catalog categories
GET/v1/catalog/{slug}Get catalog item detail with download paths

Account

MethodPathDescription
GET/v1/whoamiVerify API key and check scopes
GET/v1/usageGet usage stats for all your keys

Async Generation

Scene and asset generation is asynchronous. POST endpoints return 202 Accepted with a job_id. Use the Jobs endpoints to track progress:
  • Polling: GET /v1/jobs/{id} returns status (queued → running → succeeded | failed | cancelled)
  • Streaming: GET /v1/jobs/{id}/events provides real-time Server-Sent Events with stage transitions, asset completions, and errors

SSE Event Types

EventDescription
stage_startA pipeline stage has begun
stage_completeA pipeline stage has finished
asset_readyAn individual asset is complete
errorAn error occurred
pingKeep-alive (every 15s)
doneJob reached terminal state

Rate Limiting

Every response includes rate limit headers:
  • X-RateLimit-Limit — requests allowed per minute
  • X-RateLimit-Remaining — requests remaining in current window
  • X-RateLimit-Reset — Unix timestamp when the window resets

Error Format

All errors follow a consistent structure:
{
  "error": {
    "code": "scene_not_found",
    "message": "Scene sc_abc123 not found",
    "status": 404
  }
}
Common error codes: authentication_required (401), insufficient_credits (402), scene_not_found (404), rate_limit_exceeded (429).

OpenAPI Specification

The full OpenAPI 3.1 spec is available at:
GET https://api.gizmo.antimlabs.com/v1/openapi.json
Use it to generate client SDKs or import into tools like Postman.