> ## Documentation Index
> Fetch the complete documentation index at: https://docs.gizmo.antimlabs.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Submit a Team asset batch



## OpenAPI

````yaml /openapi.json post /v1/batches
openapi: 3.1.0
info:
  title: Gizmo Asset API
  description: >-
    Generate and export individual 3D assets from text and reference images.


    Export assets to USD / USDZ, MJCF, SDF, and GLB. Available formats depend on
    the asset and its accepted release. A successful export is not simulator
    certification.


    ## Authentication


    All endpoints require an API key passed via the `Authorization` header:


    ```

    Authorization: Bearer gzm_k1_<your-key>

    ```


    Select Personal or your Team in Gizmo, then create a key in API Access. Both
    use https://api.gizmo.antimlabs.com; the key selects the library and billing
    account. A Team may be called workspace in response fields and error codes.


    ## Rate Limiting


    Rate limits are per-key. Rate-limited API-key responses include:

    - `X-RateLimit-Limit` — requests allowed per minute

    - `X-RateLimit-Remaining` — requests remaining in current window

    - `X-RateLimit-Reset` — Unix timestamp when the window resets


    ## Async Generation


    Asset generation is asynchronous. `POST /v1/assets` returns `202 Accepted`
    with a `job_id`. Use `GET /v1/jobs/{id}` to poll. Personal keys also support
    `GET /v1/jobs/{id}/events` for SSE streaming. Team keys currently do not
    support SSE, GET /v1/usage or DELETE /v1/assets/{asset_id}; those operations
    return 403 workspace_route_unavailable. Use polling for progress and Team
    Billing for the current balance. Batch generation, saved-file links and
    export-only retries require Team access. One shared API reference describes
    both key types; it does not imply every operation is available to both. Team
    generation requires Idempotency-Key.


    ## Errors


    Errors on public endpoints use `detail.error` with code, message, and
    status. Validation errors also include fields. Responses include
    X-Request-ID for support.

    ```json

    {"detail": {"error": {"code": "asset_not_found", "message": "Asset not
    found", "status": 404}}}

    ```
  version: 1.0.0
servers:
  - url: https://api.gizmo.antimlabs.com
    description: Production
security:
  - ApiKeyAuth: []
tags:
  - name: Batches
    description: >-
      Team-only, asynchronous generation of up to 1,000 assets, with durable
      progress and partial results.
  - name: Images
    description: Upload and retrieve private original reference images.
  - name: Assets
    description: >-
      Manage individual 3D assets (articulated objects, furniture, equipment).
      Generate from a prompt and optional reference images, then retrieve or
      export the result.
  - name: Jobs
    description: >-
      Monitor and control async generation jobs. Poll with `GET /v1/jobs/{id}`,
      stream Personal job progress via `GET /v1/jobs/{id}/events` (SSE), or
      cancel with `POST /v1/jobs/{id}/cancel`.
  - name: Account
    description: View your identity and API usage statistics.
paths:
  /v1/batches:
    post:
      tags:
        - Batches
      summary: Submit a Team asset batch
      operationId: create_batch_v1_batches_post
      parameters:
        - name: idempotency-key
          in: header
          required: true
          schema:
            type: string
            minLength: 1
            maxLength: 128
            pattern: ^[A-Za-z0-9._:-]+$
            title: Idempotency-Key
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateBatch'
      responses:
        '202':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BatchAccepted'
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
          description: Unprocessable Entity
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
          description: Too Many Requests
        '503':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
          description: Service Unavailable
components:
  schemas:
    CreateBatch:
      properties:
        items:
          items:
            $ref: '#/components/schemas/BatchItem'
          type: array
          maxItems: 1000
          minItems: 1
          title: Items
        max_concurrency:
          anyOf:
            - type: integer
              maximum: 50
              minimum: 1
            - type: 'null'
          title: Max Concurrency
          description: >-
            Optional batch concurrency ceiling; workspace, release, lane and
            available-credit checks still apply
        max_cost_cents:
          anyOf:
            - type: integer
              minimum: 1
            - type: 'null'
          title: Max Cost Cents
          description: >-
            Optional ceiling for the sum of per-item generation safety limits;
            no credits are held at submission or admission
      additionalProperties: false
      type: object
      required:
        - items
      title: CreateBatch
    BatchAccepted:
      properties:
        ok:
          type: boolean
          title: Ok
        batch_id:
          type: string
          title: Batch Id
      type: object
      required:
        - ok
        - batch_id
      title: BatchAccepted
    ApiErrorResponse:
      properties:
        detail:
          $ref: '#/components/schemas/ApiErrorPayload'
      type: object
      required:
        - detail
      title: ApiErrorResponse
    BatchItem:
      properties:
        custom_id:
          type: string
          maxLength: 128
          minLength: 1
          title: Custom Id
          description: Your unique identifier for this item, returned with its status
        input:
          $ref: '#/components/schemas/GenerateAssetBody'
      additionalProperties: false
      type: object
      required:
        - custom_id
        - input
      title: BatchItem
    ApiErrorPayload:
      properties:
        error:
          $ref: '#/components/schemas/ApiErrorDetail'
      type: object
      required:
        - error
      title: ApiErrorPayload
    GenerateAssetBody:
      properties:
        prompt:
          type: string
          minLength: 1
          title: Prompt
          description: Natural language description of the asset
          examples:
            - A 6-DOF robotic arm with gripper end-effector
        reference_intent:
          anyOf:
            - $ref: '#/components/schemas/ReferenceIntent'
            - type: 'null'
        reference_image_urls:
          items:
            type: string
          type: array
          maxItems: 8
          title: Reference Image Urls
          description: Up to 8 http(s) image URLs grounding the asset's geometry/texture
        reference_images:
          items:
            $ref: '#/components/schemas/ImageReference'
          type: array
          maxItems: 8
          title: Reference Images
          description: >-
            Uploaded image IDs or HTTP(S) URLs, optionally labeled with a view.
            Combined maximum: 8 images.
        persist:
          type: boolean
          title: Persist
          description: >-
            Save the asset to your library for later retrieval and export
            (default true)
          default: true
      additionalProperties: false
      type: object
      required:
        - prompt
      title: GenerateAssetBody
      description: Request body for asset generation.
    ApiErrorDetail:
      properties:
        code:
          type: string
          title: Code
          description: Machine-readable error code
          examples:
            - asset_not_found
        message:
          type: string
          title: Message
          description: Human-readable description
          examples:
            - Asset ast_abc123 not found
        fields:
          anyOf:
            - items:
                additionalProperties: true
                type: object
              type: array
            - type: 'null'
          title: Fields
        status:
          type: integer
          title: Status
          description: HTTP status code
          examples:
            - 404
      type: object
      required:
        - code
        - message
        - status
      title: ApiErrorDetail
    ReferenceIntent:
      properties:
        mode:
          type: string
          enum:
            - auto
            - reconstruct
            - extract
            - modify
            - design
          title: Mode
          default: auto
        role:
          type: string
          enum:
            - subject
            - scene_context
            - style
          title: Role
          default: subject
        target:
          anyOf:
            - type: string
            - type: 'null'
          title: Target
        user_instructions:
          anyOf:
            - type: string
            - type: 'null'
          title: User Instructions
        regions:
          items:
            $ref: '#/components/schemas/ReferenceRegion'
          type: array
          maxItems: 8
          title: Regions
        input_views:
          items:
            $ref: '#/components/schemas/InputView'
          type: array
          maxItems: 8
          title: Input Views
        requested_views:
          items:
            type: string
            enum:
              - front
              - back
              - left
              - right
              - top
          type: array
          maxItems: 5
          title: Requested Views
      additionalProperties: false
      type: object
      title: ReferenceIntent
    ImageReference:
      properties:
        image_id:
          anyOf:
            - type: string
              pattern: ^img_[0-9a-f]{64}$
            - type: 'null'
          title: Image Id
        url:
          anyOf:
            - type: string
              minLength: 1
            - type: 'null'
          title: Url
        view:
          anyOf:
            - type: string
              enum:
                - front
                - back
                - left
                - right
                - top
                - bottom
                - perspective
                - detail
            - type: 'null'
          title: View
      additionalProperties: false
      type: object
      title: ImageReference
    ReferenceRegion:
      properties:
        image_index:
          type: integer
          minimum: 0
          title: Image Index
        bounds:
          prefixItems:
            - type: number
            - type: number
            - type: number
            - type: number
          type: array
          maxItems: 4
          minItems: 4
          title: Bounds
      additionalProperties: false
      type: object
      required:
        - image_index
        - bounds
      title: ReferenceRegion
      description: >-
        A selector, not a measurement: coordinates in the displayed original.


        Plan indices name the plan's upload list; dispatch remaps them to the
        job's

        originals (direct images followed by scene images), before
        deduplication.
    InputView:
      properties:
        image_index:
          type: integer
          minimum: 0
          title: Image Index
        view:
          type: string
          enum:
            - front
            - back
            - left
            - right
            - top
            - bottom
            - perspective
            - detail
          title: View
      additionalProperties: false
      type: object
      required:
        - image_index
        - view
      title: InputView
  securitySchemes:
    ApiKeyAuth:
      type: http
      scheme: bearer
      bearerFormat: gzm_k1_<hex>
      description: API key created in Gizmo Settings → API Keys

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.