Skip to main content
An asset is a single AI-generated 3D object — a robot arm, gripper, sensor housing, or any other physical part described in natural language. The Assets API lets you trigger generation, track its progress, and download the finished asset in your target simulator format.
Early Access: The Assets API is in alpha. Endpoint behaviour and response shapes may change. You will be notified of breaking changes at the email address associated with your API key.
Asset generation is asynchronous. After calling POST /assets, poll GET /assets/{id} until the status field returns "ready" before exporting.

Generate an Asset

prompt
string
required
A natural-language description of the 3D asset to generate. Be specific about shape, joints, and intended function for best results. Example: "A 6-DOF industrial robotic arm with a parallel jaw gripper".
name
string
A human-readable label for the asset. Used for display in the Gizmo dashboard and returned in list responses. Defaults to a truncated version of the prompt if omitted.
tags
array
An array of string tags for organizing assets. Example: ["gripper", "v2", "warehouse"].
curl --request POST \
  --url https://api.gizmo.antimlabs.com/v1/assets \
  --header "Authorization: Bearer YOUR_API_KEY" \
  --header "Content-Type: application/json" \
  --data '{
    "prompt": "A 6-DOF industrial robotic arm with a parallel jaw gripper",
    "name": "Industrial Arm v1",
    "tags": ["arm", "6dof", "gripper"]
  }'
POST /assets — Response
id
string
Unique identifier for the asset. Use this to poll status and trigger exports.
status
string
Current generation status. One of: pending, processing, ready, failed.
name
string
Human-readable name assigned to the asset.
prompt
string
The original prompt submitted for generation.
created_at
string
ISO 8601 timestamp of when the generation job was created.
Example Response
{
  "id": "ast_01hx9z3k2n8f7q",
  "status": "pending",
  "name": "Industrial Arm v1",
  "prompt": "A 6-DOF industrial robotic arm with a parallel jaw gripper",
  "created_at": "2024-11-12T09:41:00Z"
}

Get Asset Status

Retrieve the current status and metadata for a single asset. Poll this endpoint after POST /assets to determine when generation is complete.

Path Parameters

id
string
required
The unique identifier of the asset returned by POST /assets.
curl --request GET \
  --url https://api.gizmo.antimlabs.com/v1/assets/ast_01hx9z3k2n8f7q \
  --header "Authorization: Bearer YOUR_API_KEY"
GET /assets/{id} — Response
id
string
Unique identifier for the asset.
status
string
Current generation status: pending, processing, ready, or failed.
name
string
Human-readable name.
prompt
string
The prompt used to generate this asset.
created_at
string
ISO 8601 creation timestamp.
formats_available
array
List of export format strings available for this asset once status is ready. Values may include isaac_sim_usd, isaac_sim_urdf, and mujoco_mjcf.
Example Response (ready)
{
  "id": "ast_01hx9z3k2n8f7q",
  "status": "ready",
  "name": "Industrial Arm v1",
  "prompt": "A 6-DOF industrial robotic arm with a parallel jaw gripper",
  "created_at": "2024-11-12T09:41:00Z",
  "formats_available": ["isaac_sim_usd", "isaac_sim_urdf", "mujoco_mjcf"]
}
Use a polling interval of at least 5 seconds. Most assets reach ready status within 1–3 minutes depending on complexity.

List Assets

Return a paginated list of all assets associated with your API key.

Query Parameters

limit
integer
Maximum number of assets to return. Defaults to 20. Maximum is 100.
offset
integer
Number of assets to skip before returning results. Use with limit to paginate. Defaults to 0.
curl --request GET \
  --url "https://api.gizmo.antimlabs.com/v1/assets?limit=10&offset=0" \
  --header "Authorization: Bearer YOUR_API_KEY"
GET /assets — Response
assets
array
Array of asset objects, each with id, status, name, prompt, and created_at.
total
integer
Total number of assets in your account, regardless of pagination.
limit
integer
The limit value applied to this response.
offset
integer
The offset value applied to this response.
Example Response
{
  "assets": [
    {
      "id": "ast_01hx9z3k2n8f7q",
      "status": "ready",
      "name": "Industrial Arm v1",
      "prompt": "A 6-DOF industrial robotic arm with a parallel jaw gripper",
      "created_at": "2024-11-12T09:41:00Z"
    },
    {
      "id": "ast_02jy0a4l3p9g8r",
      "status": "processing",
      "name": "Differential Drive Base",
      "prompt": "A compact differential drive mobile robot base with two wheels",
      "created_at": "2024-11-12T10:05:30Z"
    }
  ],
  "total": 2,
  "limit": 20,
  "offset": 0
}

Export an Asset

Request a download URL for an asset in a specific simulator format. The asset must have status: "ready" before export.

Path Parameters

id
string
required
The unique identifier of the asset to export.

Body Parameters

format
string
required
The export format. Must be one of:
ValueDescription
isaac_sim_usdUniversal Scene Description (USD) for NVIDIA Isaac Sim
isaac_sim_urdfURDF for use in Isaac Sim’s URDF importer
mujoco_mjcfMuJoCo XML (MJCF) for direct use in MuJoCo simulations
curl --request POST \
  --url https://api.gizmo.antimlabs.com/v1/assets/ast_01hx9z3k2n8f7q/export \
  --header "Authorization: Bearer YOUR_API_KEY" \
  --header "Content-Type: application/json" \
  --data '{
    "format": "mujoco_mjcf"
  }'
POST /assets/{id}/export — Response
download_url
string
A pre-signed URL to download the exported asset file. This URL is time-limited.
expires_at
string
ISO 8601 timestamp indicating when the download_url expires. Download the file before this time; re-request the export if the URL has expired.
Example Response
{
  "download_url": "https://cdn.gizmo.antimlabs.com/exports/ast_01hx9z3k2n8f7q/mujoco_mjcf/arm_v1.xml?token=eyJhbGc...",
  "expires_at": "2024-11-12T11:41:00Z"
}
Export URLs expire after a short window (typically 1 hour). Store the downloaded file locally rather than relying on the URL remaining valid.