AI3D Studio

Generate 3D models from images or text with AI, then retexture or convert them to STL, 3MF or OBJ.

사용해야 할까요

품질 및 안전성

A
설명 품질
100%
스키마 완전성
89%
이름 품질
97%
오염 위험
100%
권한 일치
100%
프로토콜 준수
100%

도구 정의와 프로토콜 준수에 대한 자동 분석을 기반으로 합니다.

컨텍스트 비용

~11,285토큰 (도구 정의)
~8.0 KB일반적인 응답 크기
상당한 주의 영향 (128k 컨텍스트의 8.82%)

이는 서버의 도구가 모델의 컨텍스트에 로드될 때마다 소비되는 대략적인 토큰 수입니다. 수치가 높을수록 다른 작업에 사용할 수 있는 주의가 줄어듭니다.

설치

원클릭 설치

`claude_desktop_config.json` 파일에 다음을 추가하세요:

{
  "mcpServers": {
    "ai3d-studio": {
      "url": "https://ai3d.studio/mcp"
    }
  }
}

원격 엔드포인트

https://ai3d.studio/mcpstreamable-http

할 수 있는 일

도구 목록

도구 (14)

🟢 읽기 전용🟡 쓰기🔴 삭제⚪ 알 수 없음
🟢list_models(media_type, available_only, include_inputs)

List the models this account can generate with, grouped by what they make (3D, image, …): each with its id, the scenes (input modes such as text-to-3d or image-to-3d) it supports, and the credits it costs at default options. Call this first to choose a model id, then estimate_cost for an exact price. Set include_inputs to also get the option fields of each scene (names, allowed values, ranges). An account whose app has an Image Studio also gets presets: ready-made picture conversions (figurine, style, pose, …) to run with generate by passing options.preset. batches lists the scenes start_batch can run over several Library pictures at once, with the models each may use.

입력 스키마

{
  "type": "object",
  "properties": {
    "media_type": {
      "description": "Only models of this kind, e.g. '3d' or 'image'.",
      "type": "string",
      "enum": [
        "music",
        "image",
        "video",
        "text",
        "speech",
        "3d"
      ]
    },
    "available_only": {
      "default": true,
      "description": "Leave out models that are listed but cannot be started.",
      "type": "boolean"
    },
    "include_inputs": {
      "default": false,
      "description": "Include the option fields of every scene (larger result).",
      "type": "boolean"
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

출력 스키마

{
  "type": "object",
  "properties": {
    "app_id": {
      "type": "string"
    },
    "count": {
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    },
    "models": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Pass as model to estimate_cost and the generate tools."
          },
          "label": {
            "type": "string"
          },
          "media_type": {
            "type": "string"
          },
          "recommended": {
            "type": "boolean"
          },
          "available": {
            "type": "boolean",
            "description": "False for a model that is listed but cannot be started yet."
          },
          "requires_subscription": {
            "type": "boolean"
          },
          "required_right": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "credits_from": {
            "type": "number",
            "description": "The cheapest scene at default options; options can raise it — use estimate_cost for the real figure."
          },
          "family": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "The product line this model is a release of, e.g. 'meshy'; null for a model with no sibling releases. Every release is a model id you can pass to generate."
          },
          "version": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "This release's label within its family, e.g. 'v7.1'; null with family."
          },
          "latest": {
            "type": "boolean",
            "description": "True for a family's newest release (and for a model with no family). False marks an older release that a newer one replaced: pin it only to reproduce earlier work."
          },
          "retires_at": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "The UTC day (YYYY-MM-DD) the provider retires this model, when one is announced; null otherwise. After it, generate refuses the model."
          },
          "scenes": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "description": "Pass as scene, e.g. 'text-to-3d'."
                },
                "input_mode": {
                  "type": "string",
                  "description": "What the scene takes: 'text', 'image', 'multiview', …"
                },
                "credits": {
                  "type": "number",
                  "description": "Credits at default options."
                }
              },
              "required": [
                "id",
                "input_mode",
                "credits"
              ],
              "additionalProperties": false
            }
          },
          "inputs": {
            "anyOf": [
              {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "scene": {
                      "type": "string"
                    },
                    "controls": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string",
                            "description": "The key to use in options; the scene's prompt field goes in prompt."
                          },
                          "kind": {
                            "type": "string",
                            "description": "text, long-text, choice, number, toggle, count, seed, media (upload URLs), song, library, timeline, elements or hidden."
                          },
                          "value_type": {
                            "type": "string",
                            "description": "The JSON shape to send: string, number, boolean, string[], object or object[]."
                          },
                          "label": {
                            "type": "string"
                          },
                          "help": {
                            "anyOf": [
                              {
                                "type": "string"
                              },
                              {
                                "type": "null"
                              }
                            ]
                          },
                          "required": {
                            "type": "boolean"
                          },
                          "default": {
                            "anyOf": [
                              {
                                "anyOf": [
                                  {
                                    "type": "string"
                                  },
                                  {
                                    "type": "number"
                                  },
                                  {
                                    "type": "boolean"
                                  },
                                  {
                                    "type": "array",
                                    "items": {
                                      "anyOf": [
                                        {
                                          "type": "string"
                                        },
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "boolean"
                                        }
                                      ]
                                    }
                                  }
                                ]
                              },
                              {
                                "type": "null"
                              }
                            ]
                          },
                          "options": {
                            "anyOf": [
                              {
                                "type": "array",
                                "items": {
                                  "type": "object",
                                  "properties": {
                                    "value": {
                                      "type": "string"
                                    },
                                    "label": {
                                      "type": "string"
                                    }
                                  },
                                  "required": [
                                    "value",
                                    "label"
                                  ],
                                  "additionalProperties": false
                                }
                              },
                              {
                                "type": "null"
                              }
                            ],
                            "description": "The allowed values of a choice; null for other kinds."
                          },
                          "min": {
                            "anyOf": [
                              {
                                "type": "number"
                              },
                              {
                                "type": "null"
                              }
                            ]
                          },
                          "max": {
                            "anyOf": [
                              {
                                "type": "number"
                              },
                              {
                                "type": "null"
                              }
                            ]
                          },
                          "max_length": {
                            "anyOf": [
                              {
                                "type": "number"
                              },
                              {
                                "type": "null"
                              }
                            ]
                          }
                        },
                        "required": [
                          "id",
                          "kind",
                          "value_type",
                          "label",
                          "help",
                          "required",
                          "default",
                          "options",
                          "min",
                          "max",
                          "max_length"
                        ],
                        "additionalProperties": false
                      }
                    }
                  },
                  "required": [
                    "scene",
                    "controls"
                  ],
                  "additionalProperties": false
                }
              },
              {
                "type": "null"
              }
            ],
            "description": "Option fields per scene; null unless include_inputs is true."
          }
        },
        "required": [
          "id",
          "label",
          "media_type",
          "recommended",
          "available",
          "requires_subscription",
          "required_right",
          "credits_from",
          "family",
          "version",
          "latest",
          "retires_at",
          "scenes",
          "inputs"
        ],
        "additionalProperties": false
      }
    },
    "presets": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Pass as options.preset to generate (mediaType 'image', scene 'image-to-image')."
          },
          "family": {
            "type": "string",
            "description": "figurine, style, pose or convert: the kind of conversion."
          },
          "label": {
            "type": "string"
          },
          "group": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "images": {
            "type": "object",
            "properties": {
              "min": {
                "type": "integer",
                "minimum": -9007199254740991,
                "maximum": 9007199254740991
              },
              "max": {
                "type": "integer",
                "minimum": -9007199254740991,
                "maximum": 9007199254740991
              }
            },
            "required": [
              "min",
              "max"
            ],
            "additionalProperties": false,
            "description": "How many pictures a run takes in options.image: the subject first, then an optional reference."
          },
          "addons": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string"
                },
                "label": {
                  "type": "string"
                }
              },
              "required": [
                "id",
                "label"
              ],
              "additionalProperties": false
            },
            "description": "Ids for options.preset_addons; empty when the preset has none."
          },
          "background": {
            "type": "string",
            "enum": [
              "fixed",
              "choice"
            ],
            "description": "'choice': options.preset_background may be 'plain' (default) or 'keep'."
          },
          "instructions_required": {
            "type": "boolean"
          },
          "instructions_max_length": {
            "type": "integer",
            "minimum": -9007199254740991,
            "maximum": 9007199254740991,
            "description": "prompt on a preset run is only your additional instructions, at most this long."
          },
          "aspect_ratio": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "The frame the preset is tuned for; options.aspect_ratio overrides."
          },
          "models": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Image models it can run on in this account’s app."
          }
        },
        "required": [
          "id",
          "family",
          "label",
          "group",
          "images",
          "addons",
          "background",
          "instructions_required",
          "instructions_max_length",
          "aspect_ratio",
          "models"
        ],
        "additionalProperties": false
      },
      "description": "Image presets this app offers; empty when it has none or media_type is not image."
    },
    "batches": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "scene": {
            "type": "string"
          },
          "media_type": {
            "type": "string"
          },
          "models": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "max_items": {
            "type": "integer",
            "minimum": -9007199254740991,
            "maximum": 9007199254740991,
            "description": "Most pictures any plan may batch; list_batches gives the account’s own allowance."
          }
        },
        "required": [
          "scene",
          "media_type",
          "models",
          "max_items"
        ],
        "additionalProperties": false
      },
      "description": "Scenes start_batch can run over several pictures; empty when the app offers none."
    }
  },
  "required": [
    "app_id",
    "count",
    "models",
    "presets",
    "batches"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
🟢estimate_cost(model, scene, prompt, options)

Price a generation before starting it: the credits this model would charge for these options, and whether the current balance covers it. Uses the same validation and price calculation as generate_3d and generate, so for a valid request the figure is exactly what is charged. Omit scene to price every scene of the model. Nothing is charged and nothing is started.

입력 스키마

{
  "type": "object",
  "properties": {
    "model": {
      "type": "string",
      "minLength": 1,
      "description": "A model id from list_models."
    },
    "scene": {
      "description": "A scene id from list_models, e.g. 'image-to-3d'.",
      "type": "string"
    },
    "prompt": {
      "type": "string"
    },
    "options": {
      "description": "The options you intend to pass; they change the price.",
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": true
    }
  },
  "required": [
    "model"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

출력 스키마

{
  "type": "object",
  "properties": {
    "model": {
      "type": "string"
    },
    "media_type": {
      "type": "string"
    },
    "available": {
      "type": "boolean"
    },
    "quotes": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "scene": {
            "type": "string"
          },
          "credits": {
            "type": "number",
            "description": "The total this request would be charged: per output × outputs."
          },
          "credits_per_output": {
            "type": "number"
          },
          "outputs": {
            "type": "integer",
            "minimum": -9007199254740991,
            "maximum": 9007199254740991
          },
          "exact": {
            "type": "boolean",
            "description": "True when the request is valid as sent, so generate would charge exactly this. False when it would be refused (input_issue says why); the figure is then what it costs once fixed."
          },
          "input_issue": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "affordable": {
            "type": "boolean",
            "description": "Whether the current balance covers it."
          }
        },
        "required": [
          "scene",
          "credits",
          "credits_per_output",
          "outputs",
          "exact",
          "input_issue",
          "affordable"
        ],
        "additionalProperties": false
      }
    },
    "balance": {
      "type": "number",
      "description": "Credits the account holds now."
    }
  },
  "required": [
    "model",
    "media_type",
    "available",
    "quotes",
    "balance"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
🟢get_balance

Get the credits this account can spend now (and how many of them come from the subscription or are permanent), the plan name when there is one, and — when you are connected with an API key that has a monthly credit limit — that limit, what the key has used this month, and when it resets. Read-only.

입력 스키마

{
  "type": "object",
  "properties": {},
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

출력 스키마

{
  "type": "object",
  "properties": {
    "account": {
      "type": "object",
      "properties": {
        "app_id": {
          "type": "string"
        },
        "user_id": {
          "type": "string"
        },
        "organization_id": {
          "type": "string",
          "description": "The billing account: credits are spent from this one."
        }
      },
      "required": [
        "app_id",
        "user_id",
        "organization_id"
      ],
      "additionalProperties": false
    },
    "credits": {
      "type": "object",
      "properties": {
        "remaining": {
          "type": "number",
          "description": "What can be spent now."
        },
        "from_subscription": {
          "type": "number"
        },
        "permanent": {
          "type": "number"
        },
        "subscription_expires_at": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ]
        },
        "permanent_expires_at": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ]
        }
      },
      "required": [
        "remaining",
        "from_subscription",
        "permanent",
        "subscription_expires_at",
        "permanent_expires_at"
      ],
      "additionalProperties": false
    },
    "plan": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "description": "The active subscription plan; null on pay-as-you-go."
    },
    "api_key_limit": {
      "anyOf": [
        {
          "type": "object",
          "properties": {
            "monthly_limit": {
              "type": "number"
            },
            "used_this_month": {
              "type": "number"
            },
            "remaining": {
              "type": "number"
            },
            "resets_at": {
              "type": "string"
            }
          },
          "required": [
            "monthly_limit",
            "used_this_month",
            "remaining",
            "resets_at"
          ],
          "additionalProperties": false
        },
        {
          "type": "null"
        }
      ],
      "description": "Only for an API key with a monthly credit limit."
    }
  },
  "required": [
    "account",
    "credits",
    "plan",
    "api_key_limit"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
🟢generate_3d(mode, model, prompt, options, idempotency_key)

Start a 3D generation and return its job id at once. mode picks the input: text (prompt), image (options with the image URL), multiview (several view images), sketch, or model (edit an existing 3D model). Take the model id and its option names from list_models, and check the price with estimate_cost first: this spends credits. Pass a stable idempotency_key when retrying so a retry replays the same job instead of billing twice. Then call get_job to follow it.

입력 스키마

{
  "type": "object",
  "properties": {
    "mode": {
      "type": "string",
      "enum": [
        "image",
        "text",
        "multiview",
        "sketch",
        "model"
      ],
      "description": "Which input the model is given."
    },
    "model": {
      "type": "string",
      "minLength": 1,
      "description": "A 3D model id from list_models."
    },
    "prompt": {
      "type": "string"
    },
    "options": {
      "description": "Model-specific options; take the field names from list_models with include_inputs, and price them with estimate_cost first.",
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": true
    },
    "idempotency_key": {
      "description": "Reuse the same value when retrying this exact request.",
      "type": "string",
      "maxLength": 191
    }
  },
  "required": [
    "mode",
    "model"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

출력 스키마

{
  "type": "object",
  "properties": {
    "job_id": {
      "type": "string",
      "description": "Pass to get_job to follow progress."
    },
    "status": {
      "type": "string",
      "enum": [
        "pending",
        "processing",
        "success",
        "partial",
        "failed",
        "canceled"
      ],
      "description": "pending and processing are running; success, partial, failed and canceled are final. 'partial' means some outputs finished and the rest were refunded."
    },
    "media_type": {
      "type": "string"
    },
    "model": {
      "type": "string"
    },
    "scene": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ]
    },
    "outputs": {
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991,
      "description": "How many results this job makes."
    },
    "credits_charged": {
      "type": "number",
      "description": "Credits taken from the balance."
    },
    "deduped": {
      "type": "boolean",
      "description": "True when an earlier call with the same idempotency key already started this job: nothing was charged again."
    }
  },
  "required": [
    "job_id",
    "status",
    "media_type",
    "model",
    "scene",
    "outputs",
    "credits_charged",
    "deduped"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
🟡generate(mediaType, model, prompt, options, scene, ...)

Start an async AI generation of any media type and return its job id. The input shape depends on the model (see list_models); for 3D prefer generate_3d. To run an image preset (list_models returns them: figurine, style, pose, convert), send mediaType "image", scene "image-to-image", options.image (the picture, or the subject then a reference), options.preset (its id) and optionally options.preset_addons and options.preset_background; the server composes the prompt, and prompt is then only your extra instructions. Bills credits: check the price with estimate_cost first. Pass a stable idempotencyKey when retrying — a retry with the same key replays the original job instead of billing twice. Then call get_job.

입력 스키마

{
  "type": "object",
  "properties": {
    "mediaType": {
      "type": "string",
      "minLength": 1,
      "description": "Generation family, e.g. 'image' | 'video' | '3d' | 'music' — see list_models."
    },
    "model": {
      "type": "string",
      "minLength": 1
    },
    "prompt": {
      "description": "The prompt; with options.preset, only your additional instructions.",
      "type": "string"
    },
    "options": {
      "description": "Model-specific options; derive from list_models (include_inputs). For an image preset: preset (its id), preset_addons, preset_background.",
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": true
    },
    "scene": {
      "type": "string"
    },
    "workflowType": {
      "type": "string"
    },
    "idempotencyKey": {
      "type": "string"
    }
  },
  "required": [
    "mediaType",
    "model"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": true
}

출력 스키마

{
  "type": "object",
  "properties": {
    "job_id": {
      "type": "string",
      "description": "Pass to get_job to follow progress."
    },
    "status": {
      "type": "string",
      "enum": [
        "pending",
        "processing",
        "success",
        "partial",
        "failed",
        "canceled"
      ],
      "description": "pending and processing are running; success, partial, failed and canceled are final. 'partial' means some outputs finished and the rest were refunded."
    },
    "media_type": {
      "type": "string"
    },
    "model": {
      "type": "string"
    },
    "scene": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ]
    },
    "outputs": {
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991,
      "description": "How many results this job makes."
    },
    "credits_charged": {
      "type": "number",
      "description": "Credits taken from the balance."
    },
    "deduped": {
      "type": "boolean",
      "description": "True when an earlier call with the same idempotency key already started this job: nothing was charged again."
    }
  },
  "required": [
    "job_id",
    "status",
    "media_type",
    "model",
    "scene",
    "outputs",
    "credits_charged",
    "deduped"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
🟢get_job(job_id)

Get a job started by generate_3d or generate: its status, progress, credits charged and refunded, and — when it has finished — the result files with their public download URLs, including other formats where the model returned them. Poll about every 5–10 seconds while status is pending or processing; stop when is_terminal is true.

입력 스키마

{
  "type": "object",
  "properties": {
    "job_id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 191,
      "description": "The job id returned by generate_3d or generate."
    }
  },
  "required": [
    "job_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

출력 스키마

{
  "type": "object",
  "properties": {
    "job_id": {
      "type": "string"
    },
    "status": {
      "type": "string",
      "enum": [
        "pending",
        "processing",
        "success",
        "partial",
        "failed",
        "canceled"
      ],
      "description": "pending and processing are running; success, partial, failed and canceled are final. 'partial' means some outputs finished and the rest were refunded."
    },
    "is_terminal": {
      "type": "boolean",
      "description": "True once the job is final and will not change again."
    },
    "progress": {
      "type": "number",
      "description": "0 to 1: finished outputs over expected outputs."
    },
    "media_type": {
      "type": "string"
    },
    "model": {
      "type": "string"
    },
    "scene": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ]
    },
    "outputs": {
      "type": "object",
      "properties": {
        "expected": {
          "type": "integer",
          "minimum": -9007199254740991,
          "maximum": 9007199254740991
        },
        "finished": {
          "type": "integer",
          "minimum": -9007199254740991,
          "maximum": 9007199254740991
        }
      },
      "required": [
        "expected",
        "finished"
      ],
      "additionalProperties": false
    },
    "credits": {
      "type": "object",
      "properties": {
        "charged": {
          "type": "number"
        },
        "refunded": {
          "type": "number",
          "description": "Returned to the balance for outputs that failed."
        }
      },
      "required": [
        "charged",
        "refunded"
      ],
      "additionalProperties": false
    },
    "error": {
      "anyOf": [
        {
          "type": "object",
          "properties": {
            "code": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ]
            },
            "message": {
              "type": "string"
            }
          },
          "required": [
            "code",
            "message"
          ],
          "additionalProperties": false
        },
        {
          "type": "null"
        }
      ]
    },
    "created_at": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ]
    },
    "completed_at": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ]
    },
    "files": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "asset_id": {
            "type": "string",
            "description": "The output file id inside the job."
          },
          "media_type": {
            "type": "string",
            "description": "What the file is: '3d', 'image', 'video' or 'music'."
          },
          "format": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "File format, e.g. 'glb', 'fbx', 'png'; null if unknown."
          },
          "url": {
            "type": "string",
            "description": "Public https download URL."
          },
          "thumbnail_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "content_type": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "size_bytes": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ]
          },
          "width": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ]
          },
          "height": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ]
          },
          "duration_seconds": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ]
          },
          "role": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "What the output is within its job, e.g. 'normal' for a map."
          },
          "alternates": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "format": {
                  "type": "string"
                },
                "url": {
                  "type": "string",
                  "description": "Public https download URL."
                },
                "source": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ]
                }
              },
              "required": [
                "format",
                "url",
                "source"
              ],
              "additionalProperties": false
            },
            "description": "The same model in other formats the provider returned."
          }
        },
        "required": [
          "asset_id",
          "media_type",
          "format",
          "url",
          "thumbnail_url",
          "content_type",
          "size_bytes",
          "width",
          "height",
          "duration_seconds",
          "role",
          "alternates"
        ],
        "additionalProperties": false
      },
      "description": "Result files with public download URLs; empty until ready."
    }
  },
  "required": [
    "job_id",
    "status",
    "is_terminal",
    "progress",
    "media_type",
    "model",
    "scene",
    "outputs",
    "credits",
    "error",
    "created_at",
    "completed_at",
    "files"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
🟢list_job_files(job_id, format)

List the files a finished job already has, one per format: the main result plus any alternate formats the model returned (for 3D models, for example glb with fbx or usdz), each with a public download URL. Pass format to find one format. This does not convert: if the format asked for is not there, available_formats says what is, and a model can be exported to other formats from the web app model viewer.

입력 스키마

{
  "type": "object",
  "properties": {
    "job_id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 191,
      "description": "The job id returned by generate_3d or generate."
    },
    "format": {
      "description": "A file format to look for, e.g. 'glb' or 'stl'.",
      "type": "string",
      "maxLength": 16
    }
  },
  "required": [
    "job_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

출력 스키마

{
  "type": "object",
  "properties": {
    "job_id": {
      "type": "string"
    },
    "status": {
      "type": "string",
      "enum": [
        "pending",
        "processing",
        "success",
        "partial",
        "failed",
        "canceled"
      ],
      "description": "pending and processing are running; success, partial, failed and canceled are final. 'partial' means some outputs finished and the rest were refunded."
    },
    "requested_format": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ]
    },
    "available_formats": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "files": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "asset_id": {
            "type": "string"
          },
          "kind": {
            "type": "string",
            "enum": [
              "primary",
              "alternate"
            ],
            "description": "primary is the main result; alternate is the same model in another format."
          },
          "format": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "url": {
            "type": "string",
            "description": "Public https download URL."
          },
          "content_type": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "size_bytes": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ]
          },
          "source": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "asset_id",
          "kind",
          "format",
          "url",
          "content_type",
          "size_bytes",
          "source"
        ],
        "additionalProperties": false
      }
    },
    "note": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ]
    }
  },
  "required": [
    "job_id",
    "status",
    "requested_format",
    "available_formats",
    "files",
    "note"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
🟢start_batch(model, scene, options, prompt, items, ...)

Run the same model, scene and options once for each of several pictures in the account’s Library — for example image to 3D for twelve product photos. Take the scenes and models from list_models (`batches`), and each picture’s asset_id from get_job or search_library on a finished image job. Nothing is charged now: each run is charged as it starts and refunded if it fails, but the balance must cover the whole quote, and for a key or connection with a monthly limit the whole quote is held against it until each picture runs (then its real cost counts) or is cancelled, refused or refunded (then nothing does). Returns a batch id at once; follow it with get_batch. Pass idempotency_key on retries so a repeat returns the same batch instead of queueing another.

입력 스키마

{
  "type": "object",
  "properties": {
    "model": {
      "type": "string",
      "minLength": 1,
      "maxLength": 191
    },
    "scene": {
      "type": "string",
      "minLength": 1,
      "maxLength": 64
    },
    "options": {
      "description": "Options every run shares, as for generate; the picture field is filled per item.",
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": true
    },
    "prompt": {
      "type": "string",
      "maxLength": 8000
    },
    "items": {
      "minItems": 1,
      "maxItems": 100,
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "asset_id": {
            "type": "string",
            "minLength": 1,
            "maxLength": 191
          },
          "name": {
            "type": "string",
            "maxLength": 400
          }
        },
        "required": [
          "asset_id"
        ]
      },
      "description": "One entry per picture: a Library image’s asset_id."
    },
    "project_id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 191
    },
    "notify_by_email": {
      "type": "boolean"
    },
    "expected_credits": {
      "description": "The quote you showed the person; a different price queues nothing.",
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991
    },
    "idempotency_key": {
      "type": "string",
      "minLength": 8,
      "maxLength": 128
    }
  },
  "required": [
    "model",
    "scene",
    "items"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

출력 스키마

{
  "type": "object",
  "properties": {
    "batch_id": {
      "type": "string"
    },
    "model": {
      "type": "string"
    },
    "scene": {
      "type": "string"
    },
    "status": {
      "type": "string",
      "enum": [
        "running",
        "done",
        "cancelled"
      ]
    },
    "item_count": {
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    },
    "counts": {
      "type": "object",
      "properties": {
        "queued": {
          "type": "integer",
          "minimum": -9007199254740991,
          "maximum": 9007199254740991
        },
        "running": {
          "type": "integer",
          "minimum": -9007199254740991,
          "maximum": 9007199254740991
        },
        "done": {
          "type": "integer",
          "minimum": -9007199254740991,
          "maximum": 9007199254740991
        },
        "failed": {
          "type": "integer",
          "minimum": -9007199254740991,
          "maximum": 9007199254740991
        },
        "cancelled": {
          "type": "integer",
          "minimum": -9007199254740991,
          "maximum": 9007199254740991
        }
      },
      "required": [
        "queued",
        "running",
        "done",
        "failed",
        "cancelled"
      ],
      "additionalProperties": false
    },
    "per_item_credits": {
      "type": "number"
    },
    "quoted_credits": {
      "type": "number",
      "description": "What the batch costs if every picture runs."
    },
    "charged_credits": {
      "type": "number",
      "description": "What its runs were charged so far."
    },
    "created_at": {
      "type": "string"
    },
    "settled_at": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ]
    },
    "items": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "item_id": {
            "type": "string"
          },
          "position": {
            "type": "integer",
            "minimum": -9007199254740991,
            "maximum": 9007199254740991,
            "description": "The picture’s place in the batch."
          },
          "name": {
            "type": "string"
          },
          "state": {
            "type": "string",
            "enum": [
              "queued",
              "running",
              "done",
              "failed",
              "cancelled"
            ]
          },
          "job_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Its run once started: pass to get_job for the files."
          },
          "credits": {
            "type": "number",
            "description": "What its run was charged."
          },
          "error_code": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "retryable": {
            "type": "boolean",
            "description": "retry_batch would run it again."
          }
        },
        "required": [
          "item_id",
          "position",
          "name",
          "state",
          "job_id",
          "credits",
          "error_code",
          "retryable"
        ],
        "additionalProperties": false
      }
    },
    "reused": {
      "type": "boolean",
      "description": "An earlier call with this idempotency_key started it."
    },
    "balance": {
      "type": "number",
      "description": "Credits available when it was accepted."
    }
  },
  "required": [
    "batch_id",
    "model",
    "scene",
    "status",
    "item_count",
    "counts",
    "per_item_credits",
    "quoted_credits",
    "charged_credits",
    "created_at",
    "settled_at",
    "items",
    "reused",
    "balance"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
🟢list_batches(scene, limit)

The account’s batches of one scene from the last 24 hours, newest first, with each picture’s progress — and how many pictures its plan lets one batch hold (allowance; 0 means the plan includes no batches).

입력 스키마

{
  "type": "object",
  "properties": {
    "scene": {
      "type": "string",
      "minLength": 1,
      "maxLength": 64
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 10
    }
  },
  "required": [
    "scene"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

출력 스키마

{
  "type": "object",
  "properties": {
    "batches": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "batch_id": {
            "type": "string"
          },
          "model": {
            "type": "string"
          },
          "scene": {
            "type": "string"
          },
          "status": {
            "type": "string",
            "enum": [
              "running",
              "done",
              "cancelled"
            ]
          },
          "item_count": {
            "type": "integer",
            "minimum": -9007199254740991,
            "maximum": 9007199254740991
          },
          "counts": {
            "type": "object",
            "properties": {
              "queued": {
                "type": "integer",
                "minimum": -9007199254740991,
                "maximum": 9007199254740991
              },
              "running": {
                "type": "integer",
                "minimum": -9007199254740991,
                "maximum": 9007199254740991
              },
              "done": {
                "type": "integer",
                "minimum": -9007199254740991,
                "maximum": 9007199254740991
              },
              "failed": {
                "type": "integer",
                "minimum": -9007199254740991,
                "maximum": 9007199254740991
              },
              "cancelled": {
                "type": "integer",
                "minimum": -9007199254740991,
                "maximum": 9007199254740991
              }
            },
            "required": [
              "queued",
              "running",
              "done",
              "failed",
              "cancelled"
            ],
            "additionalProperties": false
          },
          "per_item_credits": {
            "type": "number"
          },
          "quoted_credits": {
            "type": "number",
            "description": "What the batch costs if every picture runs."
          },
          "charged_credits": {
            "type": "number",
            "description": "What its runs were charged so far."
          },
          "created_at": {
            "type": "string"
          },
          "settled_at": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "items": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "item_id": {
                  "type": "string"
                },
                "position": {
                  "type": "integer",
                  "minimum": -9007199254740991,
                  "maximum": 9007199254740991,
                  "description": "The picture’s place in the batch."
                },
                "name": {
                  "type": "string"
                },
                "state": {
                  "type": "string",
                  "enum": [
                    "queued",
                    "running",
                    "done",
                    "failed",
                    "cancelled"
                  ]
                },
                "job_id": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "description": "Its run once started: pass to get_job for the files."
                },
                "credits": {
                  "type": "number",
                  "description": "What its run was charged."
                },
                "error_code": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "retryable": {
                  "type": "boolean",
                  "description": "retry_batch would run it again."
                }
              },
              "required": [
                "item_id",
                "position",
                "name",
                "state",
                "job_id",
                "credits",
                "error_code",
                "retryable"
              ],
              "additionalProperties": false
            }
          }
        },
        "required": [
          "batch_id",
          "model",
          "scene",
          "status",
          "item_count",
          "counts",
          "per_item_credits",
          "quoted_credits",
          "charged_credits",
          "created_at",
          "settled_at",
          "items"
        ],
        "additionalProperties": false
      }
    },
    "allowance": {
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    }
  },
  "required": [
    "batches",
    "allowance"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
🟢get_batch(batch_id)

The state of a batch and of each picture in it: queued, running, done, failed or cancelled, the job_id of its run once started (get_job gives the files), credits charged, and whether retry_batch can run it again.

입력 스키마

{
  "type": "object",
  "properties": {
    "batch_id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 191,
      "description": "The batch id start_batch returned."
    }
  },
  "required": [
    "batch_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

출력 스키마

{
  "type": "object",
  "properties": {
    "batch_id": {
      "type": "string"
    },
    "model": {
      "type": "string"
    },
    "scene": {
      "type": "string"
    },
    "status": {
      "type": "string",
      "enum": [
        "running",
        "done",
        "cancelled"
      ]
    },
    "item_count": {
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    },
    "counts": {
      "type": "object",
      "properties": {
        "queued": {
          "type": "integer",
          "minimum": -9007199254740991,
          "maximum": 9007199254740991
        },
        "running": {
          "type": "integer",
          "minimum": -9007199254740991,
          "maximum": 9007199254740991
        },
        "done": {
          "type": "integer",
          "minimum": -9007199254740991,
          "maximum": 9007199254740991
        },
        "failed": {
          "type": "integer",
          "minimum": -9007199254740991,
          "maximum": 9007199254740991
        },
        "cancelled": {
          "type": "integer",
          "minimum": -9007199254740991,
          "maximum": 9007199254740991
        }
      },
      "required": [
        "queued",
        "running",
        "done",
        "failed",
        "cancelled"
      ],
      "additionalProperties": false
    },
    "per_item_credits": {
      "type": "number"
    },
    "quoted_credits": {
      "type": "number",
      "description": "What the batch costs if every picture runs."
    },
    "charged_credits": {
      "type": "number",
      "description": "What its runs were charged so far."
    },
    "created_at": {
      "type": "string"
    },
    "settled_at": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ]
    },
    "items": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "item_id": {
            "type": "string"
          },
          "position": {
            "type": "integer",
            "minimum": -9007199254740991,
            "maximum": 9007199254740991,
            "description": "The picture’s place in the batch."
          },
          "name": {
            "type": "string"
          },
          "state": {
            "type": "string",
            "enum": [
              "queued",
              "running",
              "done",
              "failed",
              "cancelled"
            ]
          },
          "job_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Its run once started: pass to get_job for the files."
          },
          "credits": {
            "type": "number",
            "description": "What its run was charged."
          },
          "error_code": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "retryable": {
            "type": "boolean",
            "description": "retry_batch would run it again."
          }
        },
        "required": [
          "item_id",
          "position",
          "name",
          "state",
          "job_id",
          "credits",
          "error_code",
          "retryable"
        ],
        "additionalProperties": false
      }
    }
  },
  "required": [
    "batch_id",
    "model",
    "scene",
    "status",
    "item_count",
    "counts",
    "per_item_credits",
    "quoted_credits",
    "charged_credits",
    "created_at",
    "settled_at",
    "items"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
🟢retry_batch(batch_id, item_ids)

Queue the batch’s failed pictures (and any stopped for want of credits) again as new runs, or only the item_ids given. Charged as each starts, like a new batch of that many pictures: the balance must cover them and they count against a monthly limit.

입력 스키마

{
  "type": "object",
  "properties": {
    "batch_id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 191,
      "description": "The batch id start_batch returned."
    },
    "item_ids": {
      "maxItems": 100,
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1,
        "maxLength": 191
      }
    }
  },
  "required": [
    "batch_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

출력 스키마

{
  "type": "object",
  "properties": {
    "batch_id": {
      "type": "string"
    },
    "model": {
      "type": "string"
    },
    "scene": {
      "type": "string"
    },
    "status": {
      "type": "string",
      "enum": [
        "running",
        "done",
        "cancelled"
      ]
    },
    "item_count": {
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    },
    "counts": {
      "type": "object",
      "properties": {
        "queued": {
          "type": "integer",
          "minimum": -9007199254740991,
          "maximum": 9007199254740991
        },
        "running": {
          "type": "integer",
          "minimum": -9007199254740991,
          "maximum": 9007199254740991
        },
        "done": {
          "type": "integer",
          "minimum": -9007199254740991,
          "maximum": 9007199254740991
        },
        "failed": {
          "type": "integer",
          "minimum": -9007199254740991,
          "maximum": 9007199254740991
        },
        "cancelled": {
          "type": "integer",
          "minimum": -9007199254740991,
          "maximum": 9007199254740991
        }
      },
      "required": [
        "queued",
        "running",
        "done",
        "failed",
        "cancelled"
      ],
      "additionalProperties": false
    },
    "per_item_credits": {
      "type": "number"
    },
    "quoted_credits": {
      "type": "number",
      "description": "What the batch costs if every picture runs."
    },
    "charged_credits": {
      "type": "number",
      "description": "What its runs were charged so far."
    },
    "created_at": {
      "type": "string"
    },
    "settled_at": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ]
    },
    "items": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "item_id": {
            "type": "string"
          },
          "position": {
            "type": "integer",
            "minimum": -9007199254740991,
            "maximum": 9007199254740991,
            "description": "The picture’s place in the batch."
          },
          "name": {
            "type": "string"
          },
          "state": {
            "type": "string",
            "enum": [
              "queued",
              "running",
              "done",
              "failed",
              "cancelled"
            ]
          },
          "job_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Its run once started: pass to get_job for the files."
          },
          "credits": {
            "type": "number",
            "description": "What its run was charged."
          },
          "error_code": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "retryable": {
            "type": "boolean",
            "description": "retry_batch would run it again."
          }
        },
        "required": [
          "item_id",
          "position",
          "name",
          "state",
          "job_id",
          "credits",
          "error_code",
          "retryable"
        ],
        "additionalProperties": false
      }
    },
    "requeued": {
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991,
      "description": "Pictures queued again."
    }
  },
  "required": [
    "batch_id",
    "model",
    "scene",
    "status",
    "item_count",
    "counts",
    "per_item_credits",
    "quoted_credits",
    "charged_credits",
    "created_at",
    "settled_at",
    "items",
    "requeued"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
🟢search_library(query, media_type, limit, cursor)

Search the Library of past generations kept by this account, newest first: filter by words in the prompt or title and by kind (3d, image, …). Returns the job id, model, status and result file URLs of each run. Use next_cursor to page. Only runs of this account are ever searched. For the full detail of one run call get_job.

입력 스키마

{
  "type": "object",
  "properties": {
    "query": {
      "description": "Words to look for in the prompt or title.",
      "type": "string",
      "maxLength": 200
    },
    "media_type": {
      "description": "Only runs of this kind, e.g. '3d' or 'image'.",
      "type": "string",
      "enum": [
        "music",
        "image",
        "video",
        "text",
        "speech",
        "3d"
      ]
    },
    "limit": {
      "default": 20,
      "description": "How many to return, 1 to 50.",
      "type": "integer",
      "minimum": 1,
      "maximum": 50
    },
    "cursor": {
      "description": "The next_cursor of the previous result.",
      "type": "string",
      "maxLength": 8
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

출력 스키마

{
  "type": "object",
  "properties": {
    "items": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "job_id": {
            "type": "string",
            "description": "Pass to get_job for the full result."
          },
          "title": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "prompt": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "The start of the prompt."
          },
          "media_type": {
            "type": "string"
          },
          "model": {
            "type": "string"
          },
          "scene": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "status": {
            "type": "string",
            "enum": [
              "pending",
              "processing",
              "success",
              "partial",
              "failed",
              "canceled"
            ]
          },
          "credits_charged": {
            "type": "number"
          },
          "created_at": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "files": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "asset_id": {
                  "type": "string",
                  "description": "The output file id inside the job."
                },
                "media_type": {
                  "type": "string",
                  "description": "What the file is: '3d', 'image', 'video' or 'music'."
                },
                "format": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "description": "File format, e.g. 'glb', 'fbx', 'png'; null if unknown."
                },
                "url": {
                  "type": "string",
                  "description": "Public https download URL."
                },
                "thumbnail_url": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "content_type": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "size_bytes": {
                  "anyOf": [
                    {
                      "type": "number"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "width": {
                  "anyOf": [
                    {
                      "type": "number"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "height": {
                  "anyOf": [
                    {
                      "type": "number"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "duration_seconds": {
                  "anyOf": [
                    {
                      "type": "number"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "role": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "description": "What the output is within its job, e.g. 'normal' for a map."
                },
                "alternates": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "format": {
                        "type": "string"
                      },
                      "url": {
                        "type": "string",
                        "description": "Public https download URL."
                      },
                      "source": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      }
                    },
                    "required": [
                      "format",
                      "url",
                      "source"
                    ],
                    "additionalProperties": false
                  },
                  "description": "The same model in other formats the provider returned."
                }
              },
              "required": [
                "asset_id",
                "media_type",
                "format",
                "url",
                "thumbnail_url",
                "content_type",
                "size_bytes",
                "width",
                "height",
                "duration_seconds",
                "role",
                "alternates"
              ],
              "additionalProperties": false
            },
            "description": "Up to 4 result files with download URLs."
          }
        },
        "required": [
          "job_id",
          "title",
          "prompt",
          "media_type",
          "model",
          "scene",
          "status",
          "credits_charged",
          "created_at",
          "files"
        ],
        "additionalProperties": false
      }
    },
    "total": {
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991,
      "description": "How many runs match in all."
    },
    "next_cursor": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "description": "Pass as cursor for the next page; null at the end."
    }
  },
  "required": [
    "items",
    "total",
    "next_cursor"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
🟢convert_model(asset_id, format, compression, simplify, resize_height, ...)

Convert one of the account’s Library 3D models (a GLB) to GLB, STL, 3MF, OBJ or PLY on the server, optionally simplifying it, compressing its geometry, scaling it to a real-world size, moving its origin or repairing it for printing (holes, flipped faces, debris; STL, 3MF, OBJ or PLY), and file the result in the Library as a new creation made from it. Free (no credits) and answered at once. STL and 3MF are millimetres and Z-up for slicers; OBJ and PLY are geometry only, in metres; GLB keeps materials and textures and can be meshopt-compressed. Take asset_id from get_job or search_library (a file of a finished 3D job). Models over 50 MB or 2,000,000 triangles, and Draco-compressed GLBs, are refused. The same conversion run twice returns the same creation.

입력 스키마

{
  "type": "object",
  "properties": {
    "asset_id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 191,
      "description": "A GLB file of one of your Library models."
    },
    "format": {
      "description": "The file to make; glb when omitted.",
      "type": "string",
      "enum": [
        "glb",
        "stl",
        "3mf",
        "obj",
        "ply"
      ]
    },
    "compression": {
      "description": "GLB only: meshopt (default, smallest) or none.",
      "type": "string",
      "enum": [
        "meshopt",
        "none"
      ]
    },
    "simplify": {
      "description": "Share of triangles to keep: 1 (default), 0.75, 0.5 or 0.25.",
      "anyOf": [
        {
          "type": "number",
          "const": 1
        },
        {
          "type": "number",
          "const": 0.75
        },
        {
          "type": "number",
          "const": 0.5
        },
        {
          "type": "number",
          "const": 0.25
        }
      ]
    },
    "resize_height": {
      "description": "Scale the model to this height, in metres.",
      "type": "number",
      "exclusiveMinimum": 0,
      "maximum": 1000
    },
    "resize_longest_side": {
      "description": "Scale the model so its longest side is this long, in metres. Not with resize_height.",
      "type": "number",
      "exclusiveMinimum": 0,
      "maximum": 1000
    },
    "origin": {
      "description": "Move the origin to the bottom centre (default when resizing) or the centre.",
      "type": "string",
      "enum": [
        "bottom",
        "center"
      ]
    },
    "repair": {
      "description": "Repair for printing first: weld, drop broken and duplicate faces and loose debris, fix flipped faces, fill holes. stl, 3mf, obj, ply only; up to 200,000 triangles (simplify first for more).",
      "type": "boolean"
    },
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "project_id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 191
    }
  },
  "required": [
    "asset_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

출력 스키마

{
  "type": "object",
  "properties": {
    "job_id": {
      "type": "string",
      "description": "The new Library creation: pass to get_job like any job."
    },
    "asset_id": {
      "type": "string",
      "description": "Its file, for another convert_model."
    },
    "created": {
      "type": "boolean",
      "description": "False when the same conversion was already in the Library: that creation is returned."
    },
    "format": {
      "type": "string",
      "enum": [
        "glb",
        "stl",
        "3mf",
        "obj",
        "ply"
      ]
    },
    "url": {
      "type": "string",
      "description": "Public https download URL of the file."
    },
    "content_type": {
      "type": "string"
    },
    "size_bytes": {
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    },
    "triangles_before": {
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    },
    "triangles_after": {
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    },
    "repair": {
      "description": "What repair found and fixed, when repair was asked for.",
      "type": "object",
      "properties": {
        "watertight_before": {
          "type": "boolean"
        },
        "watertight_after": {
          "type": "boolean"
        },
        "holes_filled": {
          "type": "integer",
          "minimum": -9007199254740991,
          "maximum": 9007199254740991
        },
        "holes_left": {
          "type": "integer",
          "minimum": -9007199254740991,
          "maximum": 9007199254740991
        },
        "faces_flipped": {
          "type": "integer",
          "minimum": -9007199254740991,
          "maximum": 9007199254740991
        },
        "shells_removed": {
          "type": "integer",
          "minimum": -9007199254740991,
          "maximum": 9007199254740991
        },
        "non_manifold_edges_left": {
          "type": "integer",
          "minimum": -9007199254740991,
          "maximum": 9007199254740991
        }
      },
      "required": [
        "watertight_before",
        "watertight_after",
        "holes_filled",
        "holes_left",
        "faces_flipped",
        "shells_removed",
        "non_manifold_edges_left"
      ],
      "additionalProperties": false
    }
  },
  "required": [
    "job_id",
    "asset_id",
    "created",
    "format",
    "url",
    "content_type",
    "size_bytes",
    "triangles_before",
    "triangles_after"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
🟢viewer_job_state(job_id)

Used by the interactive 3D viewer shown next to a generation result, not for direct use: the state of one job and, once it has finished, the URL of the model file the viewer can draw plus the download links. Read-only; the conversation never needs to call it, get_job gives the same facts as text.

입력 스키마

{
  "type": "object",
  "properties": {
    "job_id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 191,
      "description": "The job id returned by generate_3d."
    }
  },
  "required": [
    "job_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

출력 스키마

{
  "type": "object",
  "properties": {
    "job_id": {
      "type": "string"
    },
    "status": {
      "type": "string",
      "enum": [
        "pending",
        "processing",
        "success",
        "partial",
        "failed",
        "canceled"
      ],
      "description": "pending and processing are running; success, partial, failed and canceled are final. 'partial' means some outputs finished and the rest were refunded."
    },
    "is_terminal": {
      "type": "boolean"
    },
    "media_type": {
      "type": "string"
    },
    "outputs": {
      "type": "object",
      "properties": {
        "expected": {
          "type": "integer",
          "minimum": -9007199254740991,
          "maximum": 9007199254740991
        },
        "finished": {
          "type": "integer",
          "minimum": -9007199254740991,
          "maximum": 9007199254740991
        }
      },
      "required": [
        "expected",
        "finished"
      ],
      "additionalProperties": false
    },
    "error": {
      "anyOf": [
        {
          "type": "object",
          "properties": {
            "code": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ]
            },
            "message": {
              "type": "string"
            }
          },
          "required": [
            "code",
            "message"
          ],
          "additionalProperties": false
        },
        {
          "type": "null"
        }
      ]
    },
    "model": {
      "anyOf": [
        {
          "type": "object",
          "properties": {
            "url": {
              "type": "string",
              "description": "Public https URL of a file the viewer can draw."
            },
            "format": {
              "type": "string",
              "enum": [
                "glb"
              ]
            },
            "size_bytes": {
              "anyOf": [
                {
                  "type": "number"
                },
                {
                  "type": "null"
                }
              ]
            }
          },
          "required": [
            "url",
            "format",
            "size_bytes"
          ],
          "additionalProperties": false
        },
        {
          "type": "null"
        }
      ],
      "description": "Null until the job has produced a file in a viewable format."
    },
    "downloads": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "format": {
            "type": "string"
          },
          "url": {
            "type": "string",
            "description": "Public https download URL."
          },
          "size_bytes": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "format",
          "url",
          "size_bytes"
        ],
        "additionalProperties": false
      }
    },
    "library_url": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "description": "Where the job is kept in the web app."
    }
  },
  "required": [
    "job_id",
    "status",
    "is_terminal",
    "media_type",
    "outputs",
    "error",
    "model",
    "downloads",
    "library_url"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}

커뮤니티

이 서버 평가하기

증거

최근 관측

검증됨버전이 기록되지 않음도구 14개