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

# Generate a 3D model (async)

> Text-to-3D and image-to-3D via TRELLIS, Hunyuan 3D and Rodin. Output is a GLB mesh URL. Some models (Rodin) produce rigged characters.



## OpenAPI

````yaml /api-reference/openapi.json post /v1/three-d
openapi: 3.1.0
info:
  title: Rimp API
  version: 1.0.0
  description: >-
    AI generation API across 8 modalities — image, video, voice, music, avatar,
    chat, 3D and upscale. Multi-model side-by-side comparisons, unified billing,
    one API key.
servers:
  - url: https://api.rimp.io
    description: Production
security:
  - bearerAuth: []
paths:
  /v1/three-d:
    post:
      summary: Generate a 3D model (async)
      description: >-
        Text-to-3D and image-to-3D via TRELLIS, Hunyuan 3D and Rodin. Output is
        a GLB mesh URL. Some models (Rodin) produce rigged characters.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - model
                - prompt
              properties:
                model:
                  type: string
                prompt:
                  type: string
                  maxLength: 4000
                image_url:
                  type: string
                  format: uri
                texture_size:
                  type: string
                  enum:
                    - '1024'
                    - '2048'
                    - '4096'
                mesh_complexity:
                  type: string
                  enum:
                    - low
                    - medium
                    - high
                rigged:
                  type: boolean
                seed:
                  type: integer
      responses:
        '202':
          description: >-
            3D generation queued. Poll /v1/generations/{id} or subscribe via
            webhook.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Generation'
components:
  schemas:
    Generation:
      type: object
      properties:
        id:
          type: string
        object:
          type: string
          enum:
            - generation
        status:
          type: string
          enum:
            - queued
            - running
            - succeeded
            - failed
            - canceled
        modality:
          type: string
          enum:
            - image
            - video
            - voice
            - music
            - avatar
            - chat
            - 3d
            - upscale
        prompt:
          type: string
        params:
          type: object
          additionalProperties: true
        reserved_credits:
          type: integer
        charged_credits:
          type: integer
        refunded_credits:
          type: integer
        cache_hit:
          type: boolean
        outputs:
          type: array
          items:
            $ref: '#/components/schemas/GenerationOutput'
    GenerationOutput:
      type: object
      properties:
        id:
          type: string
        type:
          type: string
          enum:
            - image
            - video
            - audio
            - thumbnail
        mime:
          type: string
        width:
          type: integer
          nullable: true
        height:
          type: integer
          nullable: true
        duration_s:
          type: string
          nullable: true
        url:
          type: string
          format: uri
        moderation_status:
          type: string
          enum:
            - pending
            - approved
            - flagged
            - blocked
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: API key

````