{
  "openapi": "3.0.3",
  "info": {
    "title": "roasOS API",
    "version": "1.0.0",
    "description": "roasOS is one API for generating paid creative — images, video, UGC ads, lipsync, and audio — and for researching the ads your competitors run.\n\nEvery paid action is **quote-first**: send `quote_only: true` to see the price for free, then send the same request with the returned `quote_id` to run it. Confirming is the only step that spends credits.\n\nNew here? Start with the [Guides](https://docs.roasos.com).\n\nCall `GET /v1/capabilities` to see exactly which operations and models are live for your key. A few operations are marked internal and are not launch-public yet (not live yet, or switched off by the owner; their descriptions say why).\n\n## Authentication\nAll `/v1/*` endpoints require a Bearer token:\n```\nAuthorization: Bearer roasos_sk_...\n```\nAPI keys can be created in your workspace settings (Growth or Scale plan required).\n\n## Rate Limits\n- **Read endpoints (GET):** 60 requests/minute\n- **Write endpoints (POST):** 10 requests/minute\n\nRate limit headers are included in responses after successful API-key authentication: `X-RateLimit-Limit`, `X-RateLimit-Remaining`, `X-RateLimit-Reset`.\n\n## Webhooks\nPass a `webhook_url` when creating a generation to receive a POST callback when it completes.\n\nEvery delivery includes these headers:\n- `X-RoasOS-Signature`: `t=<unix seconds>,v1=<hex>` — HMAC-SHA256, in lowercase hex, of `<t>.<raw-request-body>` keyed by your API key's webhook secret.\n- `X-RoasOS-Timestamp`: the same unix seconds as `t`, for convenience.\n- `X-RoasOS-Delivery-Id`: stable id for the delivery; identical across retries. Use it to deduplicate.\n\nVerify that `t` is recent, compute `HMAC_SHA256(secret, t + \".\" + rawBody)` as lowercase hex over the raw body, and constant-time compare it with the `v1` value.\n\nThe delivered body is `{ \"event\", \"data\" }`, where `event` is `generation.completed` or `generation.failed` and `data` is the same job envelope `GET /v1/jobs/{id}` returns.",
    "contact": {
      "url": "https://roasos.com"
    }
  },
  "servers": [
    {
      "url": "https://api.roasos.com",
      "description": "Production"
    }
  ],
  "security": [
    {
      "bearerAuth": []
    }
  ],
  "tags": [
    {
      "name": "Generations",
      "description": "Create images, video, audio, and lipsync — the core of the API. Quote first, then confirm to run."
    },
    {
      "name": "Scenes",
      "description": "Create and manage scenes."
    },
    {
      "name": "Avatars",
      "description": "Your saved avatars."
    },
    {
      "name": "Edits",
      "description": "Saved edits: a stored cut with versions, command batches and a render with a QA result."
    },
    {
      "name": "Products",
      "description": "Your products: the photos, facts, and product kit every generation references."
    },
    {
      "name": "Uploads",
      "description": "Put your own images, video, and audio on workspace CDN storage."
    },
    {
      "name": "Voices",
      "description": "Clone a voice once, then speak with it on every later text-to-speech call."
    },
    {
      "name": "Research",
      "description": "Research the ads your competitors are running."
    },
    {
      "name": "Workflows",
      "description": "Named operations over the whole pipeline: analyze an ad, recast a video, animate a still."
    },
    {
      "name": "Agent",
      "description": "Ask the roasOS agent to work on its own: it plans, calls tools, and spends up to the caps you set."
    },
    {
      "name": "Skills",
      "description": "Your saved, reusable asks. Run one and it becomes an agent run."
    },
    {
      "name": "Brand kit",
      "description": "Your logo, colours, fonts and call to action — the identity a finished ad ends on."
    },
    {
      "name": "Memory",
      "description": "What the agent remembers about your brand: pinned facts and the marketing brief."
    },
    {
      "name": "Intelligence",
      "description": "Everything your workspace knows, compiled into documents you and the agent can read."
    },
    {
      "name": "Discover",
      "description": "Browse ad creatives from the cached ad library."
    },
    {
      "name": "Account",
      "description": "Your balance, usage, spend limits, and billing history."
    },
    {
      "name": "Capabilities",
      "description": "See which models and operations are available."
    },
    {
      "name": "Projects",
      "description": "One chat is one project. Start one, list them, and continue one through the agent."
    },
    {
      "name": "Media",
      "description": "Measured reading of a workspace video or audio file: frames, cuts, words, and one question on a time range."
    },
    {
      "name": "Jobs",
      "description": "One read model over every job: images, scenes, avatars, video, UGC, audio, and lipsync."
    },
    {
      "name": "Catalog",
      "description": "Every model roasOS can run, with its modes, fields, prices, and prompt guide."
    },
    {
      "name": "Models",
      "description": "One endpoint per model. The request shows the real fields of that model."
    }
  ],
  "components": {
    "securitySchemes": {
      "bearerAuth": {
        "type": "http",
        "scheme": "bearer",
        "description": "API key authentication. Use your API key as the bearer token: `Authorization: Bearer roasos_sk_...`"
      }
    },
    "schemas": {
      "Error": {
        "type": "object",
        "properties": {
          "error": {
            "type": "object",
            "properties": {
              "code": {
                "type": "string",
                "minLength": 1,
                "maxLength": 128
              },
              "message": {
                "type": "string",
                "minLength": 1,
                "maxLength": 2000
              },
              "retryable": {
                "type": "boolean"
              },
              "request_id": {
                "type": "string",
                "format": "uuid"
              },
              "balance": {
                "type": "integer",
                "minimum": 0
              },
              "required": {
                "type": "integer",
                "exclusiveMinimum": true,
                "minimum": 0
              },
              "field": {
                "type": "string",
                "minLength": 1,
                "maxLength": 512
              },
              "state": {
                "type": "string",
                "minLength": 1,
                "maxLength": 128
              },
              "retryWithNewKey": {
                "type": "boolean"
              },
              "parameter": {
                "type": "string",
                "minLength": 1,
                "maxLength": 128
              },
              "allowed": {
                "type": "array",
                "items": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 128
                },
                "maxItems": 100
              }
            },
            "required": [
              "code",
              "message",
              "retryable",
              "request_id"
            ],
            "additionalProperties": false
          }
        },
        "required": [
          "error"
        ],
        "additionalProperties": false
      },
      "EmptyInput": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      },
      "CapabilitiesListInput": {
        "type": "object",
        "properties": {
          "include": {
            "type": "string",
            "enum": [
              "public",
              "available",
              "all"
            ],
            "default": "public"
          }
        },
        "additionalProperties": false
      },
      "PaginationInput": {
        "type": "object",
        "properties": {
          "cursor": {
            "type": "string",
            "minLength": 1,
            "maxLength": 4096
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100,
            "default": 20
          }
        },
        "additionalProperties": false
      },
      "ResourceIdInput": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          }
        },
        "required": [
          "id"
        ],
        "additionalProperties": false
      },
      "PaginationMeta": {
        "type": "object",
        "properties": {
          "cursor": {
            "type": "string",
            "minLength": 1,
            "maxLength": 4096
          },
          "has_more": {
            "type": "boolean"
          }
        },
        "required": [
          "has_more"
        ],
        "additionalProperties": false
      },
      "GenerationCreateRequest": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "image",
              "video",
              "audio",
              "lipsync"
            ]
          },
          "prompt": {
            "type": "string",
            "minLength": 1,
            "maxLength": 10000
          },
          "webhook_url": {
            "type": "string",
            "format": "uri"
          },
          "quote_only": {
            "type": "boolean",
            "default": false
          },
          "quote_id": {
            "type": "string",
            "format": "uuid"
          },
          "model": {
            "type": "string",
            "minLength": 1,
            "maxLength": 200
          },
          "options": {
            "type": "object",
            "properties": {
              "aspect_ratio": {
                "type": "string",
                "minLength": 1,
                "maxLength": 32
              },
              "resolution": {
                "type": "string",
                "maxLength": 32
              },
              "duration": {
                "type": "integer",
                "minimum": 1,
                "maximum": 60
              },
              "num_outputs": {
                "type": "integer",
                "minimum": 1,
                "maximum": 4
              },
              "reference_images": {
                "type": "array",
                "items": {
                  "type": "string",
                  "format": "uri"
                },
                "maxItems": 30
              },
              "reference_videos": {
                "type": "array",
                "items": {
                  "type": "string",
                  "format": "uri"
                },
                "maxItems": 10
              },
              "image": {
                "type": "string",
                "format": "uri"
              },
              "negative_prompt": {
                "type": "string",
                "maxLength": 2000
              },
              "prompt_upsampling": {
                "type": "boolean"
              },
              "background": {
                "type": "string",
                "enum": [
                  "auto",
                  "transparent",
                  "opaque"
                ]
              },
              "exact_aspect_ratio": {
                "type": "boolean",
                "enum": [
                  true
                ]
              },
              "generate_audio": {
                "type": "boolean"
              },
              "last_frame": {
                "type": "string",
                "format": "uri"
              },
              "multi_shots": {
                "type": "boolean"
              },
              "prompt_expansion": {
                "type": "boolean"
              },
              "audio_url": {
                "type": "string",
                "format": "uri"
              },
              "audio_urls": {
                "type": "array",
                "items": {
                  "type": "string",
                  "format": "uri"
                },
                "maxItems": 10
              },
              "multi_prompt": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "prompt": {
                      "type": "string",
                      "minLength": 1,
                      "maxLength": 2500
                    },
                    "duration_seconds": {
                      "type": "integer",
                      "minimum": 1,
                      "maximum": 30
                    }
                  },
                  "required": [
                    "prompt",
                    "duration_seconds"
                  ],
                  "additionalProperties": false
                },
                "minItems": 1,
                "maxItems": 8
              },
              "elements": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "frontal_image_url": {
                      "type": "string",
                      "format": "uri"
                    },
                    "reference_image_urls": {
                      "type": "array",
                      "items": {
                        "type": "string",
                        "format": "uri"
                      },
                      "minItems": 1,
                      "maxItems": 3
                    },
                    "video_url": {
                      "type": "string",
                      "format": "uri"
                    },
                    "voice_id": {
                      "type": "string",
                      "pattern": "^[A-Za-z0-9_-]{1,128}$"
                    }
                  },
                  "additionalProperties": false
                },
                "minItems": 1,
                "maxItems": 7
              },
              "cfg_scale": {
                "type": "number",
                "minimum": 0,
                "maximum": 1
              },
              "shot_type": {
                "type": "string",
                "enum": [
                  "customize",
                  "intelligent"
                ]
              },
              "bitrate_mode": {
                "type": "string",
                "enum": [
                  "standard",
                  "high"
                ]
              },
              "style": {
                "type": "string",
                "enum": [
                  "vhs",
                  "retro-toon-70s",
                  "low-poly",
                  "hand-drawn",
                  "16bit-pixel"
                ]
              },
              "damage_level": {
                "type": "string",
                "enum": [
                  "light",
                  "medium",
                  "heavy"
                ]
              },
              "source_video": {
                "type": "string",
                "format": "uri"
              },
              "extend_output": {
                "type": "string",
                "enum": [
                  "extended",
                  "continuation"
                ]
              },
              "insert_start_seconds": {
                "type": "number",
                "minimum": 0,
                "maximum": 60
              },
              "insert_resume_seconds": {
                "type": "number",
                "minimum": 0,
                "maximum": 60
              },
              "enhance_realism": {
                "type": "boolean"
              },
              "voice": {
                "type": "string",
                "minLength": 1,
                "maxLength": 256
              },
              "speed": {
                "type": "number",
                "minimum": 0.1,
                "maximum": 5
              },
              "pitch": {
                "type": "number",
                "minimum": -12,
                "maximum": 12
              },
              "stability": {
                "type": "number",
                "minimum": 0,
                "maximum": 1
              },
              "similarity_boost": {
                "type": "number",
                "minimum": 0,
                "maximum": 1
              },
              "language": {
                "type": "string",
                "minLength": 1,
                "maxLength": 64
              },
              "voice_id": {
                "type": "string",
                "format": "uuid"
              },
              "emotion": {
                "type": "string",
                "enum": [
                  "auto",
                  "neutral",
                  "happy",
                  "sad",
                  "angry",
                  "fearful",
                  "disgusted",
                  "surprised"
                ]
              },
              "english_normalization": {
                "type": "boolean"
              },
              "temperature": {
                "type": "number",
                "minimum": 0,
                "maximum": 2
              },
              "voice_prompt": {
                "type": "string",
                "minLength": 1,
                "maxLength": 500
              },
              "style_instruction": {
                "type": "string",
                "minLength": 1,
                "maxLength": 2000
              },
              "reference_text": {
                "type": "string",
                "minLength": 1,
                "maxLength": 10000
              },
              "sample_rate": {
                "type": "string",
                "enum": [
                  "48 kHz",
                  "24 kHz",
                  "8000",
                  "16000",
                  "24000",
                  "32000",
                  "44100",
                  "48000"
                ]
              },
              "output_format": {
                "type": "string",
                "enum": [
                  "wav",
                  "mp3",
                  "pcm",
                  "ogg_opus"
                ]
              },
              "volume": {
                "type": "number",
                "minimum": 0.5,
                "maximum": 2
              },
              "image_url": {
                "type": "string",
                "format": "uri"
              },
              "apply_text_normalization": {
                "type": "string",
                "enum": [
                  "auto",
                  "on",
                  "off"
                ]
              },
              "speakers": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "speaker_id": {
                      "type": "string",
                      "pattern": "^[A-Za-z0-9_-]{1,32}$"
                    },
                    "voice": {
                      "type": "string",
                      "minLength": 1,
                      "maxLength": 64
                    }
                  },
                  "required": [
                    "speaker_id",
                    "voice"
                  ],
                  "additionalProperties": false
                },
                "minItems": 1,
                "maxItems": 2
              },
              "duration_seconds": {
                "type": "number",
                "minimum": 0.5,
                "maximum": 22
              },
              "prompt_influence": {
                "type": "number",
                "minimum": 0,
                "maximum": 1
              },
              "loop": {
                "type": "boolean"
              },
              "seed": {
                "type": "integer",
                "minimum": -2147483648,
                "maximum": 2147483647
              }
            },
            "additionalProperties": false,
            "default": {}
          }
        },
        "required": [
          "type",
          "prompt"
        ],
        "additionalProperties": false
      },
      "GenerationBatchQuoteRequest": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "item_id": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 64,
                  "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{0,63}$"
                },
                "request": {
                  "anyOf": [
                    {
                      "type": "object",
                      "properties": {
                        "type": {
                          "type": "string",
                          "enum": [
                            "image"
                          ]
                        },
                        "prompt": {
                          "type": "string",
                          "minLength": 1,
                          "maxLength": 10000
                        },
                        "webhook_url": {
                          "type": "string",
                          "format": "uri"
                        },
                        "model": {
                          "type": "string",
                          "enum": [
                            "nano-banana-pro",
                            "nano-banana-2.1",
                            "gpt-image-2.5",
                            "gpt-image-2.5-sunburst",
                            "flux-2-max",
                            "grok-imagine-image"
                          ],
                          "default": "nano-banana-pro"
                        },
                        "options": {
                          "type": "object",
                          "properties": {
                            "aspect_ratio": {
                              "type": "string",
                              "minLength": 1,
                              "maxLength": 32
                            },
                            "resolution": {
                              "type": "string",
                              "maxLength": 32
                            },
                            "num_outputs": {
                              "type": "integer",
                              "minimum": 1,
                              "maximum": 4
                            },
                            "reference_images": {
                              "type": "array",
                              "items": {
                                "type": "string",
                                "format": "uri"
                              },
                              "maxItems": 9
                            },
                            "negative_prompt": {
                              "type": "string",
                              "maxLength": 2000
                            },
                            "prompt_upsampling": {
                              "type": "boolean"
                            },
                            "seed": {
                              "type": "integer",
                              "minimum": -2147483648,
                              "maximum": 2147483647
                            },
                            "background": {
                              "type": "string",
                              "enum": [
                                "auto",
                                "transparent",
                                "opaque"
                              ]
                            },
                            "exact_aspect_ratio": {
                              "type": "boolean",
                              "enum": [
                                true
                              ]
                            }
                          },
                          "additionalProperties": false,
                          "default": {}
                        }
                      },
                      "required": [
                        "type",
                        "prompt"
                      ],
                      "additionalProperties": false
                    },
                    {
                      "type": "object",
                      "properties": {
                        "type": {
                          "type": "string",
                          "enum": [
                            "video"
                          ]
                        },
                        "prompt": {
                          "type": "string",
                          "minLength": 1,
                          "maxLength": 10000
                        },
                        "webhook_url": {
                          "type": "string",
                          "format": "uri"
                        },
                        "model": {
                          "type": "string",
                          "enum": [
                            "veo-3.1",
                            "grok-imagine",
                            "wan-2.7",
                            "seedance-2.5",
                            "seedance-2",
                            "seedance-2-pro",
                            "gemini-omni-flash",
                            "h3-max",
                            "h3-max-style",
                            "h3-max-extend",
                            "h3-max-insert",
                            "flux-3-max",
                            "h3-max-recast",
                            "kling-4",
                            "seedance-2.5-edit",
                            "gemini-omni-flash-extend"
                          ],
                          "default": "kling-4"
                        },
                        "options": {
                          "type": "object",
                          "properties": {
                            "aspect_ratio": {
                              "type": "string",
                              "minLength": 1,
                              "maxLength": 32
                            },
                            "resolution": {
                              "type": "string",
                              "maxLength": 32
                            },
                            "duration": {
                              "type": "integer",
                              "minimum": 1,
                              "maximum": 60
                            },
                            "reference_images": {
                              "type": "array",
                              "items": {
                                "type": "string",
                                "format": "uri"
                              },
                              "maxItems": 9
                            },
                            "reference_videos": {
                              "type": "array",
                              "items": {
                                "type": "string",
                                "format": "uri"
                              },
                              "maxItems": 3
                            },
                            "image": {
                              "type": "string",
                              "format": "uri"
                            },
                            "negative_prompt": {
                              "type": "string",
                              "maxLength": 2000
                            },
                            "generate_audio": {
                              "type": "boolean"
                            },
                            "last_frame": {
                              "type": "string",
                              "format": "uri"
                            },
                            "multi_shots": {
                              "type": "boolean"
                            },
                            "prompt_expansion": {
                              "type": "boolean"
                            },
                            "audio_url": {
                              "type": "string",
                              "format": "uri"
                            },
                            "audio_urls": {
                              "type": "array",
                              "items": {
                                "type": "string",
                                "format": "uri"
                              },
                              "maxItems": 3
                            },
                            "multi_prompt": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "prompt": {
                                    "type": "string",
                                    "minLength": 1,
                                    "maxLength": 2500
                                  },
                                  "duration_seconds": {
                                    "type": "integer",
                                    "minimum": 1,
                                    "maximum": 30
                                  }
                                },
                                "required": [
                                  "prompt",
                                  "duration_seconds"
                                ],
                                "additionalProperties": false
                              },
                              "minItems": 1,
                              "maxItems": 8
                            },
                            "elements": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "frontal_image_url": {
                                    "type": "string",
                                    "format": "uri"
                                  },
                                  "reference_image_urls": {
                                    "type": "array",
                                    "items": {
                                      "type": "string",
                                      "format": "uri"
                                    },
                                    "minItems": 1,
                                    "maxItems": 3
                                  },
                                  "video_url": {
                                    "type": "string",
                                    "format": "uri"
                                  },
                                  "voice_id": {
                                    "type": "string",
                                    "pattern": "^[A-Za-z0-9_-]{1,128}$"
                                  }
                                },
                                "additionalProperties": false
                              },
                              "minItems": 1,
                              "maxItems": 7
                            },
                            "cfg_scale": {
                              "type": "number",
                              "minimum": 0,
                              "maximum": 1
                            },
                            "shot_type": {
                              "type": "string",
                              "enum": [
                                "customize",
                                "intelligent"
                              ]
                            },
                            "bitrate_mode": {
                              "type": "string",
                              "enum": [
                                "standard",
                                "high"
                              ]
                            },
                            "seed": {
                              "type": "integer",
                              "minimum": -2147483648,
                              "maximum": 2147483647
                            },
                            "style": {
                              "type": "string",
                              "enum": [
                                "vhs",
                                "retro-toon-70s",
                                "low-poly",
                                "hand-drawn",
                                "16bit-pixel"
                              ]
                            },
                            "damage_level": {
                              "type": "string",
                              "enum": [
                                "light",
                                "medium",
                                "heavy"
                              ]
                            },
                            "source_video": {
                              "type": "string",
                              "format": "uri"
                            },
                            "extend_output": {
                              "type": "string",
                              "enum": [
                                "extended",
                                "continuation"
                              ]
                            },
                            "insert_start_seconds": {
                              "type": "number",
                              "minimum": 0,
                              "maximum": 60
                            },
                            "insert_resume_seconds": {
                              "type": "number",
                              "minimum": 0,
                              "maximum": 60
                            },
                            "enhance_realism": {
                              "type": "boolean"
                            }
                          },
                          "additionalProperties": false,
                          "default": {}
                        }
                      },
                      "required": [
                        "type",
                        "prompt"
                      ],
                      "additionalProperties": false
                    },
                    {
                      "type": "object",
                      "properties": {
                        "type": {
                          "type": "string",
                          "enum": [
                            "audio"
                          ]
                        },
                        "prompt": {
                          "type": "string",
                          "minLength": 1,
                          "maxLength": 10000
                        },
                        "webhook_url": {
                          "type": "string",
                          "format": "uri"
                        },
                        "model": {
                          "type": "string",
                          "enum": [
                            "elevenlabs-v3",
                            "maya-1",
                            "minimax-speech-hd",
                            "minimax-speech-turbo",
                            "qwen3-tts",
                            "seed-audio-1.0",
                            "gemini-3.1-flash-tts",
                            "elevenlabs-sfx-v2"
                          ],
                          "default": "elevenlabs-v3"
                        },
                        "options": {
                          "type": "object",
                          "properties": {
                            "voice": {
                              "type": "string",
                              "minLength": 1,
                              "maxLength": 256
                            },
                            "speed": {
                              "type": "number",
                              "minimum": 0.1,
                              "maximum": 5
                            },
                            "pitch": {
                              "type": "number",
                              "minimum": -12,
                              "maximum": 12
                            },
                            "stability": {
                              "type": "number",
                              "minimum": 0,
                              "maximum": 1
                            },
                            "similarity_boost": {
                              "type": "number",
                              "minimum": 0,
                              "maximum": 1
                            },
                            "language": {
                              "type": "string",
                              "minLength": 1,
                              "maxLength": 64
                            },
                            "voice_id": {
                              "type": "string",
                              "format": "uuid"
                            },
                            "emotion": {
                              "type": "string",
                              "enum": [
                                "auto",
                                "neutral",
                                "happy",
                                "sad",
                                "angry",
                                "fearful",
                                "disgusted",
                                "surprised"
                              ]
                            },
                            "english_normalization": {
                              "type": "boolean"
                            },
                            "temperature": {
                              "type": "number",
                              "minimum": 0,
                              "maximum": 2
                            },
                            "voice_prompt": {
                              "type": "string",
                              "minLength": 1,
                              "maxLength": 500
                            },
                            "style_instruction": {
                              "type": "string",
                              "minLength": 1,
                              "maxLength": 2000
                            },
                            "reference_text": {
                              "type": "string",
                              "minLength": 1,
                              "maxLength": 10000
                            },
                            "sample_rate": {
                              "type": "string",
                              "enum": [
                                "48 kHz",
                                "24 kHz",
                                "8000",
                                "16000",
                                "24000",
                                "32000",
                                "44100",
                                "48000"
                              ]
                            },
                            "output_format": {
                              "type": "string",
                              "enum": [
                                "wav",
                                "mp3",
                                "pcm",
                                "ogg_opus"
                              ]
                            },
                            "volume": {
                              "type": "number",
                              "minimum": 0.5,
                              "maximum": 2
                            },
                            "audio_urls": {
                              "type": "array",
                              "items": {
                                "type": "string",
                                "format": "uri"
                              },
                              "maxItems": 3
                            },
                            "image_url": {
                              "type": "string",
                              "format": "uri"
                            },
                            "apply_text_normalization": {
                              "type": "string",
                              "enum": [
                                "auto",
                                "on",
                                "off"
                              ]
                            },
                            "speakers": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "speaker_id": {
                                    "type": "string",
                                    "pattern": "^[A-Za-z0-9_-]{1,32}$"
                                  },
                                  "voice": {
                                    "type": "string",
                                    "minLength": 1,
                                    "maxLength": 64
                                  }
                                },
                                "required": [
                                  "speaker_id",
                                  "voice"
                                ],
                                "additionalProperties": false
                              },
                              "minItems": 1,
                              "maxItems": 2
                            },
                            "duration_seconds": {
                              "type": "number",
                              "minimum": 0.5,
                              "maximum": 22
                            },
                            "prompt_influence": {
                              "type": "number",
                              "minimum": 0,
                              "maximum": 1
                            },
                            "loop": {
                              "type": "boolean"
                            }
                          },
                          "additionalProperties": false,
                          "default": {}
                        }
                      },
                      "required": [
                        "type",
                        "prompt"
                      ],
                      "additionalProperties": false
                    },
                    {
                      "type": "object",
                      "properties": {
                        "type": {
                          "type": "string",
                          "enum": [
                            "lipsync"
                          ]
                        },
                        "prompt": {
                          "type": "string",
                          "minLength": 1,
                          "maxLength": 10000
                        },
                        "webhook_url": {
                          "type": "string",
                          "format": "uri"
                        },
                        "model": {
                          "type": "string",
                          "enum": [
                            "ltx-lipsync"
                          ],
                          "default": "ltx-lipsync"
                        },
                        "options": {
                          "type": "object",
                          "properties": {
                            "aspect_ratio": {
                              "type": "string",
                              "minLength": 1,
                              "maxLength": 32
                            },
                            "image": {
                              "type": "string",
                              "format": "uri"
                            },
                            "audio_url": {
                              "type": "string",
                              "format": "uri"
                            }
                          },
                          "required": [
                            "image",
                            "audio_url"
                          ],
                          "additionalProperties": false
                        }
                      },
                      "required": [
                        "type",
                        "prompt",
                        "options"
                      ],
                      "additionalProperties": false
                    }
                  ]
                }
              },
              "required": [
                "item_id",
                "request"
              ],
              "additionalProperties": false
            },
            "minItems": 1,
            "maxItems": 8
          }
        },
        "required": [
          "items"
        ],
        "additionalProperties": false
      },
      "GenerationBatchQuoteResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "kind": {
                "type": "string",
                "enum": [
                  "batch_quote"
                ]
              },
              "batch_quote_id": {
                "type": "string",
                "format": "uuid"
              },
              "items": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "item_id": {
                      "type": "string",
                      "minLength": 1,
                      "maxLength": 64,
                      "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{0,63}$"
                    },
                    "reserved_credits": {
                      "type": "integer",
                      "exclusiveMinimum": true,
                      "minimum": 0
                    },
                    "confirmation": {
                      "type": "object",
                      "properties": {
                        "generation_type": {
                          "type": "string",
                          "enum": [
                            "image",
                            "video",
                            "audio",
                            "lipsync"
                          ]
                        },
                        "model": {
                          "type": "string",
                          "minLength": 1,
                          "maxLength": 200
                        },
                        "mode": {
                          "type": "string",
                          "minLength": 1,
                          "maxLength": 160
                        },
                        "resolution": {
                          "type": "string",
                          "minLength": 1,
                          "maxLength": 32
                        },
                        "output_count": {
                          "type": "integer",
                          "exclusiveMinimum": true,
                          "minimum": 0,
                          "maximum": 16
                        },
                        "duration_seconds": {
                          "type": "number",
                          "exclusiveMinimum": true,
                          "minimum": 0,
                          "maximum": 3600
                        },
                        "generate_audio": {
                          "type": "boolean"
                        },
                        "reference_count": {
                          "type": "integer",
                          "minimum": 0,
                          "maximum": 16
                        },
                        "text_length": {
                          "type": "integer",
                          "minimum": 0,
                          "maximum": 1000000
                        }
                      },
                      "required": [
                        "generation_type",
                        "model"
                      ],
                      "additionalProperties": false
                    }
                  },
                  "required": [
                    "item_id",
                    "reserved_credits",
                    "confirmation"
                  ],
                  "additionalProperties": false
                },
                "minItems": 1,
                "maxItems": 8
              },
              "total_reserved_credits": {
                "type": "integer",
                "exclusiveMinimum": true,
                "minimum": 0
              },
              "pricing_version": {
                "type": "string",
                "minLength": 1,
                "maxLength": 80
              },
              "expires_at": {
                "type": "string",
                "format": "date-time"
              },
              "authorization": {
                "anyOf": [
                  {
                    "type": "object",
                    "properties": {
                      "status": {
                        "type": "string",
                        "enum": [
                          "auto_approved"
                        ]
                      }
                    },
                    "required": [
                      "status"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "object",
                    "properties": {
                      "status": {
                        "type": "string",
                        "enum": [
                          "approval_required"
                        ]
                      },
                      "authorize_url": {
                        "type": "string",
                        "format": "uri",
                        "maxLength": 2048
                      }
                    },
                    "required": [
                      "status",
                      "authorize_url"
                    ],
                    "additionalProperties": false
                  }
                ]
              }
            },
            "required": [
              "kind",
              "batch_quote_id",
              "items",
              "total_reserved_credits",
              "pricing_version",
              "expires_at",
              "authorization"
            ],
            "additionalProperties": false
          }
        },
        "required": [
          "data"
        ],
        "additionalProperties": false
      },
      "GenerationBatchCreateRequest": {
        "type": "object",
        "properties": {
          "batch_quote_id": {
            "type": "string",
            "format": "uuid"
          }
        },
        "required": [
          "batch_quote_id"
        ],
        "additionalProperties": false
      },
      "GenerationBatchCreateResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "kind": {
                "type": "string",
                "enum": [
                  "generation_batch"
                ]
              },
              "id": {
                "type": "string",
                "format": "uuid"
              },
              "status": {
                "type": "string",
                "enum": [
                  "processing"
                ]
              },
              "items": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "item_id": {
                      "type": "string",
                      "minLength": 1,
                      "maxLength": 64,
                      "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{0,63}$"
                    },
                    "generation_id": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "type": {
                      "type": "string",
                      "enum": [
                        "image",
                        "video",
                        "audio",
                        "lipsync"
                      ]
                    },
                    "status": {
                      "type": "string",
                      "enum": [
                        "processing"
                      ]
                    },
                    "model": {
                      "type": "string",
                      "minLength": 1,
                      "maxLength": 200
                    },
                    "reserved_credits": {
                      "type": "integer",
                      "exclusiveMinimum": true,
                      "minimum": 0
                    }
                  },
                  "required": [
                    "item_id",
                    "generation_id",
                    "type",
                    "status",
                    "model",
                    "reserved_credits"
                  ],
                  "additionalProperties": false
                },
                "minItems": 1,
                "maxItems": 8
              },
              "total_reserved_credits": {
                "type": "integer",
                "exclusiveMinimum": true,
                "minimum": 0
              },
              "created_at": {
                "type": "string",
                "format": "date-time"
              }
            },
            "required": [
              "kind",
              "id",
              "status",
              "items",
              "total_reserved_credits",
              "created_at"
            ],
            "additionalProperties": false
          }
        },
        "required": [
          "data"
        ],
        "additionalProperties": false
      },
      "ImageGenerationCreateRequest": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "image"
            ]
          },
          "prompt": {
            "type": "string",
            "minLength": 1,
            "maxLength": 10000
          },
          "webhook_url": {
            "type": "string",
            "format": "uri"
          },
          "model": {
            "type": "string",
            "enum": [
              "nano-banana-pro",
              "nano-banana-2.1",
              "gpt-image-2.5",
              "gpt-image-2.5-sunburst",
              "flux-2-max",
              "grok-imagine-image"
            ],
            "default": "nano-banana-pro"
          },
          "options": {
            "type": "object",
            "properties": {
              "aspect_ratio": {
                "type": "string",
                "minLength": 1,
                "maxLength": 32
              },
              "resolution": {
                "type": "string",
                "maxLength": 32
              },
              "num_outputs": {
                "type": "integer",
                "minimum": 1,
                "maximum": 4
              },
              "reference_images": {
                "type": "array",
                "items": {
                  "type": "string",
                  "format": "uri"
                },
                "maxItems": 9
              },
              "negative_prompt": {
                "type": "string",
                "maxLength": 2000
              },
              "prompt_upsampling": {
                "type": "boolean"
              },
              "seed": {
                "type": "integer",
                "minimum": -2147483648,
                "maximum": 2147483647
              },
              "background": {
                "type": "string",
                "enum": [
                  "auto",
                  "transparent",
                  "opaque"
                ]
              },
              "exact_aspect_ratio": {
                "type": "boolean",
                "enum": [
                  true
                ]
              }
            },
            "additionalProperties": false,
            "default": {}
          },
          "quote_only": {
            "type": "boolean",
            "default": false
          },
          "quote_id": {
            "type": "string",
            "format": "uuid"
          }
        },
        "required": [
          "type",
          "prompt"
        ],
        "additionalProperties": false
      },
      "VideoGenerationCreateRequest": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "video"
            ]
          },
          "prompt": {
            "type": "string",
            "minLength": 1,
            "maxLength": 10000
          },
          "webhook_url": {
            "type": "string",
            "format": "uri"
          },
          "model": {
            "type": "string",
            "enum": [
              "veo-3.1",
              "grok-imagine",
              "wan-2.7",
              "seedance-2.5",
              "seedance-2",
              "seedance-2-pro",
              "gemini-omni-flash",
              "h3-max",
              "h3-max-style",
              "h3-max-extend",
              "h3-max-insert",
              "flux-3-max",
              "h3-max-recast",
              "kling-4",
              "seedance-2.5-edit",
              "gemini-omni-flash-extend"
            ],
            "default": "kling-4"
          },
          "options": {
            "type": "object",
            "properties": {
              "aspect_ratio": {
                "type": "string",
                "minLength": 1,
                "maxLength": 32
              },
              "resolution": {
                "type": "string",
                "maxLength": 32
              },
              "duration": {
                "type": "integer",
                "minimum": 1,
                "maximum": 60
              },
              "reference_images": {
                "type": "array",
                "items": {
                  "type": "string",
                  "format": "uri"
                },
                "maxItems": 9
              },
              "reference_videos": {
                "type": "array",
                "items": {
                  "type": "string",
                  "format": "uri"
                },
                "maxItems": 3
              },
              "image": {
                "type": "string",
                "format": "uri"
              },
              "negative_prompt": {
                "type": "string",
                "maxLength": 2000
              },
              "generate_audio": {
                "type": "boolean"
              },
              "last_frame": {
                "type": "string",
                "format": "uri"
              },
              "multi_shots": {
                "type": "boolean"
              },
              "prompt_expansion": {
                "type": "boolean"
              },
              "audio_url": {
                "type": "string",
                "format": "uri"
              },
              "audio_urls": {
                "type": "array",
                "items": {
                  "type": "string",
                  "format": "uri"
                },
                "maxItems": 3
              },
              "multi_prompt": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "prompt": {
                      "type": "string",
                      "minLength": 1,
                      "maxLength": 2500
                    },
                    "duration_seconds": {
                      "type": "integer",
                      "minimum": 1,
                      "maximum": 30
                    }
                  },
                  "required": [
                    "prompt",
                    "duration_seconds"
                  ],
                  "additionalProperties": false
                },
                "minItems": 1,
                "maxItems": 8
              },
              "elements": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "frontal_image_url": {
                      "type": "string",
                      "format": "uri"
                    },
                    "reference_image_urls": {
                      "type": "array",
                      "items": {
                        "type": "string",
                        "format": "uri"
                      },
                      "minItems": 1,
                      "maxItems": 3
                    },
                    "video_url": {
                      "type": "string",
                      "format": "uri"
                    },
                    "voice_id": {
                      "type": "string",
                      "pattern": "^[A-Za-z0-9_-]{1,128}$"
                    }
                  },
                  "additionalProperties": false
                },
                "minItems": 1,
                "maxItems": 7
              },
              "cfg_scale": {
                "type": "number",
                "minimum": 0,
                "maximum": 1
              },
              "shot_type": {
                "type": "string",
                "enum": [
                  "customize",
                  "intelligent"
                ]
              },
              "bitrate_mode": {
                "type": "string",
                "enum": [
                  "standard",
                  "high"
                ]
              },
              "seed": {
                "type": "integer",
                "minimum": -2147483648,
                "maximum": 2147483647
              },
              "style": {
                "type": "string",
                "enum": [
                  "vhs",
                  "retro-toon-70s",
                  "low-poly",
                  "hand-drawn",
                  "16bit-pixel"
                ]
              },
              "damage_level": {
                "type": "string",
                "enum": [
                  "light",
                  "medium",
                  "heavy"
                ]
              },
              "source_video": {
                "type": "string",
                "format": "uri"
              },
              "extend_output": {
                "type": "string",
                "enum": [
                  "extended",
                  "continuation"
                ]
              },
              "insert_start_seconds": {
                "type": "number",
                "minimum": 0,
                "maximum": 60
              },
              "insert_resume_seconds": {
                "type": "number",
                "minimum": 0,
                "maximum": 60
              },
              "enhance_realism": {
                "type": "boolean"
              }
            },
            "additionalProperties": false,
            "default": {}
          },
          "quote_only": {
            "type": "boolean",
            "default": false
          },
          "quote_id": {
            "type": "string",
            "format": "uuid"
          }
        },
        "required": [
          "type",
          "prompt"
        ],
        "additionalProperties": false
      },
      "AudioGenerationCreateRequest": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "audio"
            ]
          },
          "prompt": {
            "type": "string",
            "minLength": 1,
            "maxLength": 10000
          },
          "webhook_url": {
            "type": "string",
            "format": "uri"
          },
          "model": {
            "type": "string",
            "enum": [
              "elevenlabs-v3",
              "maya-1",
              "minimax-speech-hd",
              "minimax-speech-turbo",
              "qwen3-tts",
              "seed-audio-1.0",
              "gemini-3.1-flash-tts",
              "elevenlabs-sfx-v2"
            ],
            "default": "elevenlabs-v3"
          },
          "options": {
            "type": "object",
            "properties": {
              "voice": {
                "type": "string",
                "minLength": 1,
                "maxLength": 256
              },
              "speed": {
                "type": "number",
                "minimum": 0.1,
                "maximum": 5
              },
              "pitch": {
                "type": "number",
                "minimum": -12,
                "maximum": 12
              },
              "stability": {
                "type": "number",
                "minimum": 0,
                "maximum": 1
              },
              "similarity_boost": {
                "type": "number",
                "minimum": 0,
                "maximum": 1
              },
              "language": {
                "type": "string",
                "minLength": 1,
                "maxLength": 64
              },
              "voice_id": {
                "type": "string",
                "format": "uuid"
              },
              "emotion": {
                "type": "string",
                "enum": [
                  "auto",
                  "neutral",
                  "happy",
                  "sad",
                  "angry",
                  "fearful",
                  "disgusted",
                  "surprised"
                ]
              },
              "english_normalization": {
                "type": "boolean"
              },
              "temperature": {
                "type": "number",
                "minimum": 0,
                "maximum": 2
              },
              "voice_prompt": {
                "type": "string",
                "minLength": 1,
                "maxLength": 500
              },
              "style_instruction": {
                "type": "string",
                "minLength": 1,
                "maxLength": 2000
              },
              "reference_text": {
                "type": "string",
                "minLength": 1,
                "maxLength": 10000
              },
              "sample_rate": {
                "type": "string",
                "enum": [
                  "48 kHz",
                  "24 kHz",
                  "8000",
                  "16000",
                  "24000",
                  "32000",
                  "44100",
                  "48000"
                ]
              },
              "output_format": {
                "type": "string",
                "enum": [
                  "wav",
                  "mp3",
                  "pcm",
                  "ogg_opus"
                ]
              },
              "volume": {
                "type": "number",
                "minimum": 0.5,
                "maximum": 2
              },
              "audio_urls": {
                "type": "array",
                "items": {
                  "type": "string",
                  "format": "uri"
                },
                "maxItems": 3
              },
              "image_url": {
                "type": "string",
                "format": "uri"
              },
              "apply_text_normalization": {
                "type": "string",
                "enum": [
                  "auto",
                  "on",
                  "off"
                ]
              },
              "speakers": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "speaker_id": {
                      "type": "string",
                      "pattern": "^[A-Za-z0-9_-]{1,32}$"
                    },
                    "voice": {
                      "type": "string",
                      "minLength": 1,
                      "maxLength": 64
                    }
                  },
                  "required": [
                    "speaker_id",
                    "voice"
                  ],
                  "additionalProperties": false
                },
                "minItems": 1,
                "maxItems": 2
              },
              "duration_seconds": {
                "type": "number",
                "minimum": 0.5,
                "maximum": 22
              },
              "prompt_influence": {
                "type": "number",
                "minimum": 0,
                "maximum": 1
              },
              "loop": {
                "type": "boolean"
              }
            },
            "additionalProperties": false,
            "default": {}
          },
          "quote_only": {
            "type": "boolean",
            "default": false
          },
          "quote_id": {
            "type": "string",
            "format": "uuid"
          }
        },
        "required": [
          "type",
          "prompt"
        ],
        "additionalProperties": false
      },
      "LipsyncGenerationCreateRequest": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "lipsync"
            ]
          },
          "prompt": {
            "type": "string",
            "minLength": 1,
            "maxLength": 10000
          },
          "webhook_url": {
            "type": "string",
            "format": "uri"
          },
          "model": {
            "type": "string",
            "enum": [
              "ltx-lipsync"
            ],
            "default": "ltx-lipsync"
          },
          "options": {
            "type": "object",
            "properties": {
              "aspect_ratio": {
                "type": "string",
                "minLength": 1,
                "maxLength": 32
              },
              "image": {
                "type": "string",
                "format": "uri"
              },
              "audio_url": {
                "type": "string",
                "format": "uri"
              }
            },
            "required": [
              "image",
              "audio_url"
            ],
            "additionalProperties": false
          },
          "quote_only": {
            "type": "boolean",
            "default": false
          },
          "quote_id": {
            "type": "string",
            "format": "uuid"
          }
        },
        "required": [
          "type",
          "prompt",
          "options"
        ],
        "additionalProperties": false
      },
      "GenerationListInput": {
        "type": "object",
        "properties": {
          "cursor": {
            "type": "string",
            "minLength": 1,
            "maxLength": 4096
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100,
            "default": 20
          },
          "type": {
            "type": "string",
            "enum": [
              "image",
              "video",
              "audio",
              "lipsync",
              "avatar",
              "scene"
            ]
          },
          "status": {
            "type": "string",
            "enum": [
              "pending",
              "processing",
              "completed",
              "failed"
            ]
          }
        },
        "additionalProperties": false
      },
      "GenerationListResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "format": "uuid"
                },
                "type": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 64
                },
                "status": {
                  "type": "string",
                  "enum": [
                    "pending",
                    "processing",
                    "completed",
                    "failed"
                  ]
                },
                "model": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 200,
                  "nullable": true
                },
                "prompt": {
                  "type": "string",
                  "maxLength": 10000,
                  "nullable": true
                },
                "credits_used": {
                  "type": "integer",
                  "minimum": 0
                },
                "error_message": {
                  "type": "string",
                  "maxLength": 500,
                  "nullable": true
                },
                "output": {
                  "type": "object",
                  "properties": {
                    "url": {
                      "type": "string",
                      "format": "uri",
                      "maxLength": 4096
                    },
                    "images": {
                      "type": "array",
                      "items": {
                        "type": "string",
                        "format": "uri",
                        "maxLength": 4096
                      },
                      "maxItems": 4
                    },
                    "scene_id": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "avatar_id": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "reference_sheet": {
                      "type": "string",
                      "format": "uri",
                      "maxLength": 4096
                    },
                    "portrait_url": {
                      "type": "string",
                      "format": "uri",
                      "maxLength": 4096
                    },
                    "full_body_url": {
                      "type": "string",
                      "format": "uri",
                      "maxLength": 4096
                    },
                    "provider_seed": {
                      "type": "integer",
                      "minimum": -2147483648,
                      "maximum": 2147483647
                    }
                  },
                  "additionalProperties": false
                },
                "created_at": {
                  "type": "string",
                  "format": "date-time"
                },
                "completed_at": {
                  "type": "string",
                  "format": "date-time",
                  "nullable": true
                }
              },
              "required": [
                "id",
                "type",
                "status",
                "model",
                "prompt",
                "credits_used",
                "error_message",
                "created_at",
                "completed_at"
              ],
              "additionalProperties": false
            },
            "maxItems": 100
          },
          "meta": {
            "type": "object",
            "properties": {
              "cursor": {
                "type": "string",
                "minLength": 1,
                "maxLength": 4096
              },
              "has_more": {
                "type": "boolean"
              }
            },
            "required": [
              "has_more"
            ],
            "additionalProperties": false
          }
        },
        "required": [
          "data",
          "meta"
        ],
        "additionalProperties": false
      },
      "GenerationDetailResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "format": "uuid"
              },
              "type": {
                "type": "string",
                "minLength": 1,
                "maxLength": 64
              },
              "status": {
                "type": "string",
                "enum": [
                  "pending",
                  "processing",
                  "completed",
                  "failed"
                ]
              },
              "model": {
                "type": "string",
                "minLength": 1,
                "maxLength": 200,
                "nullable": true
              },
              "prompt": {
                "type": "string",
                "maxLength": 10000,
                "nullable": true
              },
              "credits_used": {
                "type": "integer",
                "minimum": 0
              },
              "error_message": {
                "type": "string",
                "maxLength": 500,
                "nullable": true
              },
              "output": {
                "type": "object",
                "properties": {
                  "url": {
                    "type": "string",
                    "format": "uri",
                    "maxLength": 4096
                  },
                  "images": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "format": "uri",
                      "maxLength": 4096
                    },
                    "maxItems": 4
                  },
                  "scene_id": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "avatar_id": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "reference_sheet": {
                    "type": "string",
                    "format": "uri",
                    "maxLength": 4096
                  },
                  "portrait_url": {
                    "type": "string",
                    "format": "uri",
                    "maxLength": 4096
                  },
                  "full_body_url": {
                    "type": "string",
                    "format": "uri",
                    "maxLength": 4096
                  },
                  "provider_seed": {
                    "type": "integer",
                    "minimum": -2147483648,
                    "maximum": 2147483647
                  }
                },
                "additionalProperties": false
              },
              "created_at": {
                "type": "string",
                "format": "date-time"
              },
              "completed_at": {
                "type": "string",
                "format": "date-time",
                "nullable": true
              }
            },
            "required": [
              "id",
              "type",
              "status",
              "model",
              "prompt",
              "credits_used",
              "error_message",
              "created_at",
              "completed_at"
            ],
            "additionalProperties": false
          }
        },
        "required": [
          "data"
        ],
        "additionalProperties": false
      },
      "SceneCreateRequest": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 200
          },
          "prompt": {
            "type": "string",
            "minLength": 1,
            "maxLength": 10000
          },
          "model": {
            "type": "string",
            "enum": [
              "nano-banana-pro"
            ],
            "default": "nano-banana-pro"
          },
          "resolution": {
            "type": "string",
            "enum": [
              "1K",
              "2K",
              "4K"
            ],
            "default": "1K"
          },
          "webhook_url": {
            "type": "string",
            "format": "uri"
          },
          "quote_only": {
            "type": "boolean",
            "default": false
          },
          "quote_id": {
            "type": "string",
            "format": "uuid"
          },
          "options": {
            "type": "object",
            "properties": {
              "aspect_ratio": {
                "type": "string",
                "enum": [
                  "1:1",
                  "16:9",
                  "9:16",
                  "4:3",
                  "3:4",
                  "3:2",
                  "2:3"
                ]
              },
              "reference_images": {
                "type": "array",
                "items": {
                  "type": "string",
                  "format": "uri"
                },
                "maxItems": 4
              },
              "avatar_id": {
                "type": "string",
                "format": "uuid"
              },
              "product_image": {
                "type": "string",
                "format": "uri"
              },
              "mode": {
                "type": "string",
                "enum": [
                  "ugc",
                  "product",
                  "custom"
                ]
              }
            },
            "additionalProperties": false,
            "default": {}
          }
        },
        "required": [
          "name",
          "prompt"
        ],
        "additionalProperties": false
      },
      "SceneListResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "format": "uuid"
                },
                "name": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 200
                },
                "prompt": {
                  "type": "string",
                  "maxLength": 10000
                },
                "image_url": {
                  "type": "string",
                  "format": "uri",
                  "maxLength": 4096
                },
                "thumbnail_url": {
                  "type": "string",
                  "format": "uri",
                  "maxLength": 4096
                },
                "model": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 200
                },
                "aspect_ratio": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 32
                },
                "resolution": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 32
                },
                "mode": {
                  "type": "string",
                  "enum": [
                    "ugc",
                    "product",
                    "custom"
                  ]
                },
                "created_at": {
                  "type": "string",
                  "format": "date-time"
                }
              },
              "required": [
                "id",
                "name",
                "created_at"
              ],
              "additionalProperties": false
            },
            "maxItems": 100
          },
          "meta": {
            "type": "object",
            "properties": {
              "cursor": {
                "type": "string",
                "minLength": 1,
                "maxLength": 4096
              },
              "has_more": {
                "type": "boolean"
              }
            },
            "required": [
              "has_more"
            ],
            "additionalProperties": false
          }
        },
        "required": [
          "data",
          "meta"
        ],
        "additionalProperties": false
      },
      "SceneDetailResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "format": "uuid"
              },
              "name": {
                "type": "string",
                "minLength": 1,
                "maxLength": 200
              },
              "prompt": {
                "type": "string",
                "maxLength": 10000
              },
              "image_url": {
                "type": "string",
                "format": "uri",
                "maxLength": 4096
              },
              "thumbnail_url": {
                "type": "string",
                "format": "uri",
                "maxLength": 4096
              },
              "model": {
                "type": "string",
                "minLength": 1,
                "maxLength": 200
              },
              "aspect_ratio": {
                "type": "string",
                "minLength": 1,
                "maxLength": 32
              },
              "resolution": {
                "type": "string",
                "minLength": 1,
                "maxLength": 32
              },
              "mode": {
                "type": "string",
                "enum": [
                  "ugc",
                  "product",
                  "custom"
                ]
              },
              "created_at": {
                "type": "string",
                "format": "date-time"
              }
            },
            "required": [
              "id",
              "name",
              "created_at"
            ],
            "additionalProperties": false
          }
        },
        "required": [
          "data"
        ],
        "additionalProperties": false
      },
      "ResearchJobRequest": {
        "anyOf": [
          {
            "type": "object",
            "properties": {
              "capability_id": {
                "type": "string",
                "enum": [
                  "research.facebook-company-ads@1"
                ]
              },
              "target": {
                "type": "object",
                "properties": {
                  "kind": {
                    "type": "string",
                    "enum": [
                      "page_id"
                    ]
                  },
                  "page_id": {
                    "type": "string",
                    "pattern": "^[1-9][0-9]{4,30}$"
                  }
                },
                "required": [
                  "kind",
                  "page_id"
                ],
                "additionalProperties": false
              },
              "filters": {
                "type": "object",
                "properties": {
                  "country": {
                    "type": "string",
                    "pattern": "^(?:ALL|[A-Z]{2})$"
                  },
                  "status": {
                    "type": "string",
                    "enum": [
                      "ACTIVE"
                    ]
                  },
                  "media_type": {
                    "type": "string",
                    "enum": [
                      "ALL"
                    ]
                  },
                  "language": {
                    "type": "string",
                    "pattern": "^[A-Z]{2}$"
                  },
                  "sort_by": {
                    "type": "string",
                    "enum": [
                      "relevancy_monthly_grouped"
                    ]
                  },
                  "start_date": {
                    "type": "string",
                    "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
                  },
                  "end_date": {
                    "type": "string",
                    "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
                  }
                },
                "additionalProperties": false
              },
              "page": {
                "type": "object",
                "properties": {
                  "max_pages": {
                    "type": "number",
                    "enum": [
                      1
                    ]
                  },
                  "max_results": {
                    "type": "integer",
                    "minimum": 1,
                    "maximum": 30
                  }
                },
                "required": [
                  "max_pages",
                  "max_results"
                ],
                "additionalProperties": false
              },
              "freshness": {
                "type": "object",
                "properties": {
                  "max_age_seconds": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 21600
                  },
                  "allow_stale": {
                    "type": "boolean"
                  }
                },
                "required": [
                  "max_age_seconds",
                  "allow_stale"
                ],
                "additionalProperties": false
              },
              "quote_only": {
                "type": "boolean",
                "default": false
              },
              "quote_id": {
                "type": "string",
                "format": "uuid"
              }
            },
            "required": [
              "capability_id",
              "target",
              "filters",
              "page",
              "freshness"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "capability_id": {
                "type": "string",
                "enum": [
                  "research.facebook-ad-search@1"
                ]
              },
              "target": {
                "type": "object",
                "properties": {
                  "kind": {
                    "type": "string",
                    "enum": [
                      "query"
                    ]
                  },
                  "query": {
                    "type": "string",
                    "minLength": 2,
                    "maxLength": 200,
                    "pattern": "^[^\\s\\p{Cc}](?:[^\\p{Cc}]{0,198}[^\\s\\p{Cc}])?$"
                  }
                },
                "required": [
                  "kind",
                  "query"
                ],
                "additionalProperties": false
              },
              "filters": {
                "type": "object",
                "properties": {
                  "country": {
                    "type": "string",
                    "pattern": "^(?:ALL|[A-Z]{2})$"
                  },
                  "status": {
                    "type": "string",
                    "enum": [
                      "ACTIVE"
                    ]
                  },
                  "media_type": {
                    "type": "string",
                    "enum": [
                      "ALL",
                      "IMAGE",
                      "VIDEO"
                    ]
                  },
                  "language": {
                    "type": "string",
                    "pattern": "^[A-Z]{2}$"
                  },
                  "sort_by": {
                    "type": "string",
                    "enum": [
                      "total_impressions",
                      "relevancy_monthly_grouped"
                    ]
                  },
                  "start_date": {
                    "type": "string",
                    "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
                  },
                  "end_date": {
                    "type": "string",
                    "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
                  }
                },
                "additionalProperties": false
              },
              "page": {
                "type": "object",
                "properties": {
                  "max_pages": {
                    "type": "number",
                    "enum": [
                      1
                    ]
                  },
                  "max_results": {
                    "type": "integer",
                    "minimum": 1,
                    "maximum": 30
                  }
                },
                "required": [
                  "max_pages",
                  "max_results"
                ],
                "additionalProperties": false
              },
              "freshness": {
                "type": "object",
                "properties": {
                  "max_age_seconds": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 21600
                  },
                  "allow_stale": {
                    "type": "boolean"
                  }
                },
                "required": [
                  "max_age_seconds",
                  "allow_stale"
                ],
                "additionalProperties": false
              },
              "quote_only": {
                "type": "boolean",
                "default": false
              },
              "quote_id": {
                "type": "string",
                "format": "uuid"
              }
            },
            "required": [
              "capability_id",
              "target",
              "filters",
              "page",
              "freshness"
            ],
            "additionalProperties": false
          }
        ]
      },
      "ResearchCreateResponse": {
        "anyOf": [
          {
            "type": "object",
            "properties": {
              "data": {
                "type": "object",
                "properties": {
                  "schema_version": {
                    "type": "string",
                    "enum": [
                      "research-quote@1"
                    ]
                  },
                  "kind": {
                    "type": "string",
                    "enum": [
                      "research_quote"
                    ]
                  },
                  "status": {
                    "type": "string",
                    "enum": [
                      "quoted"
                    ]
                  },
                  "quote_id": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "capability_id": {
                    "type": "string",
                    "enum": [
                      "research.facebook-company-ads@1",
                      "research.facebook-ad-search@1"
                    ]
                  },
                  "cache_disposition": {
                    "type": "string",
                    "enum": [
                      "cache_hit",
                      "live_fetch"
                    ]
                  },
                  "reserved_credits": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 1000000000
                  },
                  "maximum_credits": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 1000000000
                  },
                  "expires_at": {
                    "type": "string",
                    "format": "date-time"
                  },
                  "pricing_version": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 80
                  },
                  "authorization": {
                    "anyOf": [
                      {
                        "type": "object",
                        "properties": {
                          "status": {
                            "type": "string",
                            "enum": [
                              "auto_approved"
                            ]
                          }
                        },
                        "required": [
                          "status"
                        ],
                        "additionalProperties": false
                      },
                      {
                        "type": "object",
                        "properties": {
                          "status": {
                            "type": "string",
                            "enum": [
                              "approval_required"
                            ]
                          },
                          "authorize_url": {
                            "type": "string",
                            "format": "uri",
                            "maxLength": 2048
                          }
                        },
                        "required": [
                          "status",
                          "authorize_url"
                        ],
                        "additionalProperties": false
                      }
                    ]
                  },
                  "confirmation": {
                    "type": "object",
                    "properties": {
                      "max_pages": {
                        "type": "integer",
                        "minimum": 1,
                        "maximum": 3
                      },
                      "max_results": {
                        "type": "integer",
                        "minimum": 1,
                        "maximum": 100
                      },
                      "max_age_seconds": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 2592000
                      },
                      "allow_stale": {
                        "type": "boolean"
                      }
                    },
                    "required": [
                      "max_pages",
                      "max_results",
                      "max_age_seconds",
                      "allow_stale"
                    ],
                    "additionalProperties": false
                  }
                },
                "required": [
                  "schema_version",
                  "kind",
                  "status",
                  "quote_id",
                  "capability_id",
                  "cache_disposition",
                  "reserved_credits",
                  "maximum_credits",
                  "expires_at",
                  "pricing_version",
                  "authorization",
                  "confirmation"
                ],
                "additionalProperties": false
              }
            },
            "required": [
              "data"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "data": {
                "anyOf": [
                  {
                    "type": "object",
                    "properties": {
                      "schema_version": {
                        "type": "string",
                        "enum": [
                          "research-job@1"
                        ]
                      },
                      "kind": {
                        "type": "string",
                        "enum": [
                          "research_job"
                        ]
                      },
                      "id": {
                        "type": "string",
                        "format": "uuid"
                      },
                      "capability_id": {
                        "type": "string",
                        "enum": [
                          "research.facebook-company-ads@1",
                          "research.facebook-ad-search@1"
                        ]
                      },
                      "maximum_credits": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 1000000000
                      },
                      "created_at": {
                        "type": "string",
                        "format": "date-time"
                      },
                      "updated_at": {
                        "type": "string",
                        "format": "date-time"
                      },
                      "status": {
                        "type": "string",
                        "enum": [
                          "quoted"
                        ]
                      },
                      "cache_disposition": {
                        "type": "string",
                        "enum": [
                          "live_fetch"
                        ]
                      },
                      "reserved_credits": {
                        "type": "number",
                        "enum": [
                          0
                        ]
                      },
                      "quote_id": {
                        "type": "string",
                        "format": "uuid"
                      },
                      "expires_at": {
                        "type": "string",
                        "format": "date-time"
                      }
                    },
                    "required": [
                      "schema_version",
                      "kind",
                      "id",
                      "capability_id",
                      "maximum_credits",
                      "created_at",
                      "updated_at",
                      "status",
                      "cache_disposition",
                      "reserved_credits",
                      "quote_id",
                      "expires_at"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "object",
                    "properties": {
                      "schema_version": {
                        "type": "string",
                        "enum": [
                          "research-job@1"
                        ]
                      },
                      "kind": {
                        "type": "string",
                        "enum": [
                          "research_job"
                        ]
                      },
                      "id": {
                        "type": "string",
                        "format": "uuid"
                      },
                      "capability_id": {
                        "type": "string",
                        "enum": [
                          "research.facebook-company-ads@1",
                          "research.facebook-ad-search@1"
                        ]
                      },
                      "maximum_credits": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 1000000000
                      },
                      "created_at": {
                        "type": "string",
                        "format": "date-time"
                      },
                      "updated_at": {
                        "type": "string",
                        "format": "date-time"
                      },
                      "status": {
                        "type": "string",
                        "enum": [
                          "queued"
                        ]
                      },
                      "cache_disposition": {
                        "type": "string",
                        "enum": [
                          "live_fetch"
                        ]
                      },
                      "reserved_credits": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 1000000000
                      }
                    },
                    "required": [
                      "schema_version",
                      "kind",
                      "id",
                      "capability_id",
                      "maximum_credits",
                      "created_at",
                      "updated_at",
                      "status",
                      "cache_disposition",
                      "reserved_credits"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "object",
                    "properties": {
                      "schema_version": {
                        "type": "string",
                        "enum": [
                          "research-job@1"
                        ]
                      },
                      "kind": {
                        "type": "string",
                        "enum": [
                          "research_job"
                        ]
                      },
                      "id": {
                        "type": "string",
                        "format": "uuid"
                      },
                      "capability_id": {
                        "type": "string",
                        "enum": [
                          "research.facebook-company-ads@1",
                          "research.facebook-ad-search@1"
                        ]
                      },
                      "maximum_credits": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 1000000000
                      },
                      "created_at": {
                        "type": "string",
                        "format": "date-time"
                      },
                      "updated_at": {
                        "type": "string",
                        "format": "date-time"
                      },
                      "status": {
                        "type": "string",
                        "enum": [
                          "processing"
                        ]
                      },
                      "cache_disposition": {
                        "type": "string",
                        "enum": [
                          "live_fetch"
                        ]
                      },
                      "reserved_credits": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 1000000000
                      },
                      "started_at": {
                        "type": "string",
                        "format": "date-time"
                      }
                    },
                    "required": [
                      "schema_version",
                      "kind",
                      "id",
                      "capability_id",
                      "maximum_credits",
                      "created_at",
                      "updated_at",
                      "status",
                      "cache_disposition",
                      "reserved_credits",
                      "started_at"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "object",
                    "properties": {
                      "schema_version": {
                        "type": "string",
                        "enum": [
                          "research-job@1"
                        ]
                      },
                      "kind": {
                        "type": "string",
                        "enum": [
                          "research_job"
                        ]
                      },
                      "id": {
                        "type": "string",
                        "format": "uuid"
                      },
                      "capability_id": {
                        "type": "string",
                        "enum": [
                          "research.facebook-company-ads@1",
                          "research.facebook-ad-search@1"
                        ]
                      },
                      "maximum_credits": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 1000000000
                      },
                      "created_at": {
                        "type": "string",
                        "format": "date-time"
                      },
                      "updated_at": {
                        "type": "string",
                        "format": "date-time"
                      },
                      "status": {
                        "type": "string",
                        "enum": [
                          "succeeded"
                        ]
                      },
                      "cache_disposition": {
                        "type": "string",
                        "enum": [
                          "cache_hit",
                          "live_fetch"
                        ]
                      },
                      "reserved_credits": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 1000000000
                      },
                      "settled_credits": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 1000000000
                      },
                      "completed_at": {
                        "type": "string",
                        "format": "date-time"
                      },
                      "result_ready": {
                        "type": "boolean",
                        "enum": [
                          true
                        ]
                      }
                    },
                    "required": [
                      "schema_version",
                      "kind",
                      "id",
                      "capability_id",
                      "maximum_credits",
                      "created_at",
                      "updated_at",
                      "status",
                      "cache_disposition",
                      "reserved_credits",
                      "settled_credits",
                      "completed_at",
                      "result_ready"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "object",
                    "properties": {
                      "schema_version": {
                        "type": "string",
                        "enum": [
                          "research-job@1"
                        ]
                      },
                      "kind": {
                        "type": "string",
                        "enum": [
                          "research_job"
                        ]
                      },
                      "id": {
                        "type": "string",
                        "format": "uuid"
                      },
                      "capability_id": {
                        "type": "string",
                        "enum": [
                          "research.facebook-company-ads@1",
                          "research.facebook-ad-search@1"
                        ]
                      },
                      "maximum_credits": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 1000000000
                      },
                      "created_at": {
                        "type": "string",
                        "format": "date-time"
                      },
                      "updated_at": {
                        "type": "string",
                        "format": "date-time"
                      },
                      "status": {
                        "type": "string",
                        "enum": [
                          "failed"
                        ]
                      },
                      "cache_disposition": {
                        "type": "string",
                        "enum": [
                          "live_fetch"
                        ]
                      },
                      "reserved_credits": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 1000000000
                      },
                      "settled_credits": {
                        "type": "number",
                        "enum": [
                          0
                        ]
                      },
                      "completed_at": {
                        "type": "string",
                        "format": "date-time"
                      },
                      "error": {
                        "type": "object",
                        "properties": {
                          "code": {
                            "type": "string",
                            "enum": [
                              "research_failed",
                              "normalization_failed"
                            ]
                          },
                          "message": {
                            "type": "string",
                            "enum": [
                              "Research request failed",
                              "Research result could not be normalized"
                            ]
                          }
                        },
                        "required": [
                          "code",
                          "message"
                        ],
                        "additionalProperties": false
                      }
                    },
                    "required": [
                      "schema_version",
                      "kind",
                      "id",
                      "capability_id",
                      "maximum_credits",
                      "created_at",
                      "updated_at",
                      "status",
                      "cache_disposition",
                      "reserved_credits",
                      "settled_credits",
                      "completed_at",
                      "error"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "object",
                    "properties": {
                      "schema_version": {
                        "type": "string",
                        "enum": [
                          "research-job@1"
                        ]
                      },
                      "kind": {
                        "type": "string",
                        "enum": [
                          "research_job"
                        ]
                      },
                      "id": {
                        "type": "string",
                        "format": "uuid"
                      },
                      "capability_id": {
                        "type": "string",
                        "enum": [
                          "research.facebook-company-ads@1",
                          "research.facebook-ad-search@1"
                        ]
                      },
                      "maximum_credits": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 1000000000
                      },
                      "created_at": {
                        "type": "string",
                        "format": "date-time"
                      },
                      "updated_at": {
                        "type": "string",
                        "format": "date-time"
                      },
                      "status": {
                        "type": "string",
                        "enum": [
                          "unknown"
                        ]
                      },
                      "cache_disposition": {
                        "type": "string",
                        "enum": [
                          "live_fetch"
                        ]
                      },
                      "reserved_credits": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 1000000000
                      },
                      "reconciliation_required": {
                        "type": "boolean",
                        "enum": [
                          true
                        ]
                      }
                    },
                    "required": [
                      "schema_version",
                      "kind",
                      "id",
                      "capability_id",
                      "maximum_credits",
                      "created_at",
                      "updated_at",
                      "status",
                      "cache_disposition",
                      "reserved_credits",
                      "reconciliation_required"
                    ],
                    "additionalProperties": false
                  }
                ]
              }
            },
            "required": [
              "data"
            ],
            "additionalProperties": false
          }
        ]
      },
      "ResearchQuoteResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "schema_version": {
                "type": "string",
                "enum": [
                  "research-quote@1"
                ]
              },
              "kind": {
                "type": "string",
                "enum": [
                  "research_quote"
                ]
              },
              "status": {
                "type": "string",
                "enum": [
                  "quoted"
                ]
              },
              "quote_id": {
                "type": "string",
                "format": "uuid"
              },
              "capability_id": {
                "type": "string",
                "enum": [
                  "research.facebook-company-ads@1",
                  "research.facebook-ad-search@1"
                ]
              },
              "cache_disposition": {
                "type": "string",
                "enum": [
                  "cache_hit",
                  "live_fetch"
                ]
              },
              "reserved_credits": {
                "type": "integer",
                "minimum": 0,
                "maximum": 1000000000
              },
              "maximum_credits": {
                "type": "integer",
                "minimum": 0,
                "maximum": 1000000000
              },
              "expires_at": {
                "type": "string",
                "format": "date-time"
              },
              "pricing_version": {
                "type": "string",
                "minLength": 1,
                "maxLength": 80
              },
              "authorization": {
                "anyOf": [
                  {
                    "type": "object",
                    "properties": {
                      "status": {
                        "type": "string",
                        "enum": [
                          "auto_approved"
                        ]
                      }
                    },
                    "required": [
                      "status"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "object",
                    "properties": {
                      "status": {
                        "type": "string",
                        "enum": [
                          "approval_required"
                        ]
                      },
                      "authorize_url": {
                        "type": "string",
                        "format": "uri",
                        "maxLength": 2048
                      }
                    },
                    "required": [
                      "status",
                      "authorize_url"
                    ],
                    "additionalProperties": false
                  }
                ]
              },
              "confirmation": {
                "type": "object",
                "properties": {
                  "max_pages": {
                    "type": "integer",
                    "minimum": 1,
                    "maximum": 3
                  },
                  "max_results": {
                    "type": "integer",
                    "minimum": 1,
                    "maximum": 100
                  },
                  "max_age_seconds": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 2592000
                  },
                  "allow_stale": {
                    "type": "boolean"
                  }
                },
                "required": [
                  "max_pages",
                  "max_results",
                  "max_age_seconds",
                  "allow_stale"
                ],
                "additionalProperties": false
              }
            },
            "required": [
              "schema_version",
              "kind",
              "status",
              "quote_id",
              "capability_id",
              "cache_disposition",
              "reserved_credits",
              "maximum_credits",
              "expires_at",
              "pricing_version",
              "authorization",
              "confirmation"
            ],
            "additionalProperties": false
          }
        },
        "required": [
          "data"
        ],
        "additionalProperties": false
      },
      "ResearchJobSubmissionResponse": {
        "type": "object",
        "properties": {
          "data": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "schema_version": {
                    "type": "string",
                    "enum": [
                      "research-job@1"
                    ]
                  },
                  "kind": {
                    "type": "string",
                    "enum": [
                      "research_job"
                    ]
                  },
                  "id": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "capability_id": {
                    "type": "string",
                    "enum": [
                      "research.facebook-company-ads@1",
                      "research.facebook-ad-search@1"
                    ]
                  },
                  "maximum_credits": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 1000000000
                  },
                  "created_at": {
                    "type": "string",
                    "format": "date-time"
                  },
                  "updated_at": {
                    "type": "string",
                    "format": "date-time"
                  },
                  "status": {
                    "type": "string",
                    "enum": [
                      "quoted"
                    ]
                  },
                  "cache_disposition": {
                    "type": "string",
                    "enum": [
                      "live_fetch"
                    ]
                  },
                  "reserved_credits": {
                    "type": "number",
                    "enum": [
                      0
                    ]
                  },
                  "quote_id": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "expires_at": {
                    "type": "string",
                    "format": "date-time"
                  }
                },
                "required": [
                  "schema_version",
                  "kind",
                  "id",
                  "capability_id",
                  "maximum_credits",
                  "created_at",
                  "updated_at",
                  "status",
                  "cache_disposition",
                  "reserved_credits",
                  "quote_id",
                  "expires_at"
                ],
                "additionalProperties": false
              },
              {
                "type": "object",
                "properties": {
                  "schema_version": {
                    "type": "string",
                    "enum": [
                      "research-job@1"
                    ]
                  },
                  "kind": {
                    "type": "string",
                    "enum": [
                      "research_job"
                    ]
                  },
                  "id": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "capability_id": {
                    "type": "string",
                    "enum": [
                      "research.facebook-company-ads@1",
                      "research.facebook-ad-search@1"
                    ]
                  },
                  "maximum_credits": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 1000000000
                  },
                  "created_at": {
                    "type": "string",
                    "format": "date-time"
                  },
                  "updated_at": {
                    "type": "string",
                    "format": "date-time"
                  },
                  "status": {
                    "type": "string",
                    "enum": [
                      "queued"
                    ]
                  },
                  "cache_disposition": {
                    "type": "string",
                    "enum": [
                      "live_fetch"
                    ]
                  },
                  "reserved_credits": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 1000000000
                  }
                },
                "required": [
                  "schema_version",
                  "kind",
                  "id",
                  "capability_id",
                  "maximum_credits",
                  "created_at",
                  "updated_at",
                  "status",
                  "cache_disposition",
                  "reserved_credits"
                ],
                "additionalProperties": false
              },
              {
                "type": "object",
                "properties": {
                  "schema_version": {
                    "type": "string",
                    "enum": [
                      "research-job@1"
                    ]
                  },
                  "kind": {
                    "type": "string",
                    "enum": [
                      "research_job"
                    ]
                  },
                  "id": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "capability_id": {
                    "type": "string",
                    "enum": [
                      "research.facebook-company-ads@1",
                      "research.facebook-ad-search@1"
                    ]
                  },
                  "maximum_credits": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 1000000000
                  },
                  "created_at": {
                    "type": "string",
                    "format": "date-time"
                  },
                  "updated_at": {
                    "type": "string",
                    "format": "date-time"
                  },
                  "status": {
                    "type": "string",
                    "enum": [
                      "processing"
                    ]
                  },
                  "cache_disposition": {
                    "type": "string",
                    "enum": [
                      "live_fetch"
                    ]
                  },
                  "reserved_credits": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 1000000000
                  },
                  "started_at": {
                    "type": "string",
                    "format": "date-time"
                  }
                },
                "required": [
                  "schema_version",
                  "kind",
                  "id",
                  "capability_id",
                  "maximum_credits",
                  "created_at",
                  "updated_at",
                  "status",
                  "cache_disposition",
                  "reserved_credits",
                  "started_at"
                ],
                "additionalProperties": false
              },
              {
                "type": "object",
                "properties": {
                  "schema_version": {
                    "type": "string",
                    "enum": [
                      "research-job@1"
                    ]
                  },
                  "kind": {
                    "type": "string",
                    "enum": [
                      "research_job"
                    ]
                  },
                  "id": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "capability_id": {
                    "type": "string",
                    "enum": [
                      "research.facebook-company-ads@1",
                      "research.facebook-ad-search@1"
                    ]
                  },
                  "maximum_credits": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 1000000000
                  },
                  "created_at": {
                    "type": "string",
                    "format": "date-time"
                  },
                  "updated_at": {
                    "type": "string",
                    "format": "date-time"
                  },
                  "status": {
                    "type": "string",
                    "enum": [
                      "succeeded"
                    ]
                  },
                  "cache_disposition": {
                    "type": "string",
                    "enum": [
                      "cache_hit",
                      "live_fetch"
                    ]
                  },
                  "reserved_credits": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 1000000000
                  },
                  "settled_credits": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 1000000000
                  },
                  "completed_at": {
                    "type": "string",
                    "format": "date-time"
                  },
                  "result_ready": {
                    "type": "boolean",
                    "enum": [
                      true
                    ]
                  }
                },
                "required": [
                  "schema_version",
                  "kind",
                  "id",
                  "capability_id",
                  "maximum_credits",
                  "created_at",
                  "updated_at",
                  "status",
                  "cache_disposition",
                  "reserved_credits",
                  "settled_credits",
                  "completed_at",
                  "result_ready"
                ],
                "additionalProperties": false
              },
              {
                "type": "object",
                "properties": {
                  "schema_version": {
                    "type": "string",
                    "enum": [
                      "research-job@1"
                    ]
                  },
                  "kind": {
                    "type": "string",
                    "enum": [
                      "research_job"
                    ]
                  },
                  "id": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "capability_id": {
                    "type": "string",
                    "enum": [
                      "research.facebook-company-ads@1",
                      "research.facebook-ad-search@1"
                    ]
                  },
                  "maximum_credits": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 1000000000
                  },
                  "created_at": {
                    "type": "string",
                    "format": "date-time"
                  },
                  "updated_at": {
                    "type": "string",
                    "format": "date-time"
                  },
                  "status": {
                    "type": "string",
                    "enum": [
                      "failed"
                    ]
                  },
                  "cache_disposition": {
                    "type": "string",
                    "enum": [
                      "live_fetch"
                    ]
                  },
                  "reserved_credits": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 1000000000
                  },
                  "settled_credits": {
                    "type": "number",
                    "enum": [
                      0
                    ]
                  },
                  "completed_at": {
                    "type": "string",
                    "format": "date-time"
                  },
                  "error": {
                    "type": "object",
                    "properties": {
                      "code": {
                        "type": "string",
                        "enum": [
                          "research_failed",
                          "normalization_failed"
                        ]
                      },
                      "message": {
                        "type": "string",
                        "enum": [
                          "Research request failed",
                          "Research result could not be normalized"
                        ]
                      }
                    },
                    "required": [
                      "code",
                      "message"
                    ],
                    "additionalProperties": false
                  }
                },
                "required": [
                  "schema_version",
                  "kind",
                  "id",
                  "capability_id",
                  "maximum_credits",
                  "created_at",
                  "updated_at",
                  "status",
                  "cache_disposition",
                  "reserved_credits",
                  "settled_credits",
                  "completed_at",
                  "error"
                ],
                "additionalProperties": false
              },
              {
                "type": "object",
                "properties": {
                  "schema_version": {
                    "type": "string",
                    "enum": [
                      "research-job@1"
                    ]
                  },
                  "kind": {
                    "type": "string",
                    "enum": [
                      "research_job"
                    ]
                  },
                  "id": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "capability_id": {
                    "type": "string",
                    "enum": [
                      "research.facebook-company-ads@1",
                      "research.facebook-ad-search@1"
                    ]
                  },
                  "maximum_credits": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 1000000000
                  },
                  "created_at": {
                    "type": "string",
                    "format": "date-time"
                  },
                  "updated_at": {
                    "type": "string",
                    "format": "date-time"
                  },
                  "status": {
                    "type": "string",
                    "enum": [
                      "unknown"
                    ]
                  },
                  "cache_disposition": {
                    "type": "string",
                    "enum": [
                      "live_fetch"
                    ]
                  },
                  "reserved_credits": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 1000000000
                  },
                  "reconciliation_required": {
                    "type": "boolean",
                    "enum": [
                      true
                    ]
                  }
                },
                "required": [
                  "schema_version",
                  "kind",
                  "id",
                  "capability_id",
                  "maximum_credits",
                  "created_at",
                  "updated_at",
                  "status",
                  "cache_disposition",
                  "reserved_credits",
                  "reconciliation_required"
                ],
                "additionalProperties": false
              }
            ]
          }
        },
        "required": [
          "data"
        ],
        "additionalProperties": false
      },
      "ResearchJobDetailResponse": {
        "type": "object",
        "properties": {
          "data": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "schema_version": {
                    "type": "string",
                    "enum": [
                      "research-job@1"
                    ]
                  },
                  "kind": {
                    "type": "string",
                    "enum": [
                      "research_job"
                    ]
                  },
                  "id": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "capability_id": {
                    "type": "string",
                    "enum": [
                      "research.facebook-company-ads@1",
                      "research.facebook-ad-search@1"
                    ]
                  },
                  "maximum_credits": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 1000000000
                  },
                  "created_at": {
                    "type": "string",
                    "format": "date-time"
                  },
                  "updated_at": {
                    "type": "string",
                    "format": "date-time"
                  },
                  "status": {
                    "type": "string",
                    "enum": [
                      "quoted"
                    ]
                  },
                  "cache_disposition": {
                    "type": "string",
                    "enum": [
                      "live_fetch"
                    ]
                  },
                  "reserved_credits": {
                    "type": "number",
                    "enum": [
                      0
                    ]
                  },
                  "quote_id": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "expires_at": {
                    "type": "string",
                    "format": "date-time"
                  }
                },
                "required": [
                  "schema_version",
                  "kind",
                  "id",
                  "capability_id",
                  "maximum_credits",
                  "created_at",
                  "updated_at",
                  "status",
                  "cache_disposition",
                  "reserved_credits",
                  "quote_id",
                  "expires_at"
                ],
                "additionalProperties": false
              },
              {
                "type": "object",
                "properties": {
                  "schema_version": {
                    "type": "string",
                    "enum": [
                      "research-job@1"
                    ]
                  },
                  "kind": {
                    "type": "string",
                    "enum": [
                      "research_job"
                    ]
                  },
                  "id": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "capability_id": {
                    "type": "string",
                    "enum": [
                      "research.facebook-company-ads@1",
                      "research.facebook-ad-search@1"
                    ]
                  },
                  "maximum_credits": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 1000000000
                  },
                  "created_at": {
                    "type": "string",
                    "format": "date-time"
                  },
                  "updated_at": {
                    "type": "string",
                    "format": "date-time"
                  },
                  "status": {
                    "type": "string",
                    "enum": [
                      "queued"
                    ]
                  },
                  "cache_disposition": {
                    "type": "string",
                    "enum": [
                      "live_fetch"
                    ]
                  },
                  "reserved_credits": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 1000000000
                  }
                },
                "required": [
                  "schema_version",
                  "kind",
                  "id",
                  "capability_id",
                  "maximum_credits",
                  "created_at",
                  "updated_at",
                  "status",
                  "cache_disposition",
                  "reserved_credits"
                ],
                "additionalProperties": false
              },
              {
                "type": "object",
                "properties": {
                  "schema_version": {
                    "type": "string",
                    "enum": [
                      "research-job@1"
                    ]
                  },
                  "kind": {
                    "type": "string",
                    "enum": [
                      "research_job"
                    ]
                  },
                  "id": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "capability_id": {
                    "type": "string",
                    "enum": [
                      "research.facebook-company-ads@1",
                      "research.facebook-ad-search@1"
                    ]
                  },
                  "maximum_credits": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 1000000000
                  },
                  "created_at": {
                    "type": "string",
                    "format": "date-time"
                  },
                  "updated_at": {
                    "type": "string",
                    "format": "date-time"
                  },
                  "status": {
                    "type": "string",
                    "enum": [
                      "processing"
                    ]
                  },
                  "cache_disposition": {
                    "type": "string",
                    "enum": [
                      "live_fetch"
                    ]
                  },
                  "reserved_credits": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 1000000000
                  },
                  "started_at": {
                    "type": "string",
                    "format": "date-time"
                  }
                },
                "required": [
                  "schema_version",
                  "kind",
                  "id",
                  "capability_id",
                  "maximum_credits",
                  "created_at",
                  "updated_at",
                  "status",
                  "cache_disposition",
                  "reserved_credits",
                  "started_at"
                ],
                "additionalProperties": false
              },
              {
                "type": "object",
                "properties": {
                  "schema_version": {
                    "type": "string",
                    "enum": [
                      "research-job@1"
                    ]
                  },
                  "kind": {
                    "type": "string",
                    "enum": [
                      "research_job"
                    ]
                  },
                  "id": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "capability_id": {
                    "type": "string",
                    "enum": [
                      "research.facebook-company-ads@1",
                      "research.facebook-ad-search@1"
                    ]
                  },
                  "maximum_credits": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 1000000000
                  },
                  "created_at": {
                    "type": "string",
                    "format": "date-time"
                  },
                  "updated_at": {
                    "type": "string",
                    "format": "date-time"
                  },
                  "status": {
                    "type": "string",
                    "enum": [
                      "succeeded"
                    ]
                  },
                  "cache_disposition": {
                    "type": "string",
                    "enum": [
                      "cache_hit",
                      "live_fetch"
                    ]
                  },
                  "reserved_credits": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 1000000000
                  },
                  "settled_credits": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 1000000000
                  },
                  "completed_at": {
                    "type": "string",
                    "format": "date-time"
                  },
                  "result_ready": {
                    "type": "boolean",
                    "enum": [
                      true
                    ]
                  }
                },
                "required": [
                  "schema_version",
                  "kind",
                  "id",
                  "capability_id",
                  "maximum_credits",
                  "created_at",
                  "updated_at",
                  "status",
                  "cache_disposition",
                  "reserved_credits",
                  "settled_credits",
                  "completed_at",
                  "result_ready"
                ],
                "additionalProperties": false
              },
              {
                "type": "object",
                "properties": {
                  "schema_version": {
                    "type": "string",
                    "enum": [
                      "research-job@1"
                    ]
                  },
                  "kind": {
                    "type": "string",
                    "enum": [
                      "research_job"
                    ]
                  },
                  "id": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "capability_id": {
                    "type": "string",
                    "enum": [
                      "research.facebook-company-ads@1",
                      "research.facebook-ad-search@1"
                    ]
                  },
                  "maximum_credits": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 1000000000
                  },
                  "created_at": {
                    "type": "string",
                    "format": "date-time"
                  },
                  "updated_at": {
                    "type": "string",
                    "format": "date-time"
                  },
                  "status": {
                    "type": "string",
                    "enum": [
                      "failed"
                    ]
                  },
                  "cache_disposition": {
                    "type": "string",
                    "enum": [
                      "live_fetch"
                    ]
                  },
                  "reserved_credits": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 1000000000
                  },
                  "settled_credits": {
                    "type": "number",
                    "enum": [
                      0
                    ]
                  },
                  "completed_at": {
                    "type": "string",
                    "format": "date-time"
                  },
                  "error": {
                    "type": "object",
                    "properties": {
                      "code": {
                        "type": "string",
                        "enum": [
                          "research_failed",
                          "normalization_failed"
                        ]
                      },
                      "message": {
                        "type": "string",
                        "enum": [
                          "Research request failed",
                          "Research result could not be normalized"
                        ]
                      }
                    },
                    "required": [
                      "code",
                      "message"
                    ],
                    "additionalProperties": false
                  }
                },
                "required": [
                  "schema_version",
                  "kind",
                  "id",
                  "capability_id",
                  "maximum_credits",
                  "created_at",
                  "updated_at",
                  "status",
                  "cache_disposition",
                  "reserved_credits",
                  "settled_credits",
                  "completed_at",
                  "error"
                ],
                "additionalProperties": false
              },
              {
                "type": "object",
                "properties": {
                  "schema_version": {
                    "type": "string",
                    "enum": [
                      "research-job@1"
                    ]
                  },
                  "kind": {
                    "type": "string",
                    "enum": [
                      "research_job"
                    ]
                  },
                  "id": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "capability_id": {
                    "type": "string",
                    "enum": [
                      "research.facebook-company-ads@1",
                      "research.facebook-ad-search@1"
                    ]
                  },
                  "maximum_credits": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 1000000000
                  },
                  "created_at": {
                    "type": "string",
                    "format": "date-time"
                  },
                  "updated_at": {
                    "type": "string",
                    "format": "date-time"
                  },
                  "status": {
                    "type": "string",
                    "enum": [
                      "unknown"
                    ]
                  },
                  "cache_disposition": {
                    "type": "string",
                    "enum": [
                      "live_fetch"
                    ]
                  },
                  "reserved_credits": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 1000000000
                  },
                  "reconciliation_required": {
                    "type": "boolean",
                    "enum": [
                      true
                    ]
                  }
                },
                "required": [
                  "schema_version",
                  "kind",
                  "id",
                  "capability_id",
                  "maximum_credits",
                  "created_at",
                  "updated_at",
                  "status",
                  "cache_disposition",
                  "reserved_credits",
                  "reconciliation_required"
                ],
                "additionalProperties": false
              }
            ]
          }
        },
        "required": [
          "data"
        ],
        "additionalProperties": false
      },
      "ResearchJobStatusResponse": {
        "type": "object",
        "properties": {
          "data": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "schema_version": {
                    "type": "string",
                    "enum": [
                      "research-job@1"
                    ]
                  },
                  "kind": {
                    "type": "string",
                    "enum": [
                      "research_job"
                    ]
                  },
                  "id": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "capability_id": {
                    "type": "string",
                    "enum": [
                      "research.facebook-company-ads@1",
                      "research.facebook-ad-search@1"
                    ]
                  },
                  "maximum_credits": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 1000000000
                  },
                  "created_at": {
                    "type": "string",
                    "format": "date-time"
                  },
                  "updated_at": {
                    "type": "string",
                    "format": "date-time"
                  },
                  "status": {
                    "type": "string",
                    "enum": [
                      "quoted"
                    ]
                  },
                  "cache_disposition": {
                    "type": "string",
                    "enum": [
                      "live_fetch"
                    ]
                  },
                  "reserved_credits": {
                    "type": "number",
                    "enum": [
                      0
                    ]
                  },
                  "quote_id": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "expires_at": {
                    "type": "string",
                    "format": "date-time"
                  }
                },
                "required": [
                  "schema_version",
                  "kind",
                  "id",
                  "capability_id",
                  "maximum_credits",
                  "created_at",
                  "updated_at",
                  "status",
                  "cache_disposition",
                  "reserved_credits",
                  "quote_id",
                  "expires_at"
                ],
                "additionalProperties": false
              },
              {
                "type": "object",
                "properties": {
                  "schema_version": {
                    "type": "string",
                    "enum": [
                      "research-job@1"
                    ]
                  },
                  "kind": {
                    "type": "string",
                    "enum": [
                      "research_job"
                    ]
                  },
                  "id": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "capability_id": {
                    "type": "string",
                    "enum": [
                      "research.facebook-company-ads@1",
                      "research.facebook-ad-search@1"
                    ]
                  },
                  "maximum_credits": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 1000000000
                  },
                  "created_at": {
                    "type": "string",
                    "format": "date-time"
                  },
                  "updated_at": {
                    "type": "string",
                    "format": "date-time"
                  },
                  "status": {
                    "type": "string",
                    "enum": [
                      "queued"
                    ]
                  },
                  "cache_disposition": {
                    "type": "string",
                    "enum": [
                      "live_fetch"
                    ]
                  },
                  "reserved_credits": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 1000000000
                  }
                },
                "required": [
                  "schema_version",
                  "kind",
                  "id",
                  "capability_id",
                  "maximum_credits",
                  "created_at",
                  "updated_at",
                  "status",
                  "cache_disposition",
                  "reserved_credits"
                ],
                "additionalProperties": false
              },
              {
                "type": "object",
                "properties": {
                  "schema_version": {
                    "type": "string",
                    "enum": [
                      "research-job@1"
                    ]
                  },
                  "kind": {
                    "type": "string",
                    "enum": [
                      "research_job"
                    ]
                  },
                  "id": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "capability_id": {
                    "type": "string",
                    "enum": [
                      "research.facebook-company-ads@1",
                      "research.facebook-ad-search@1"
                    ]
                  },
                  "maximum_credits": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 1000000000
                  },
                  "created_at": {
                    "type": "string",
                    "format": "date-time"
                  },
                  "updated_at": {
                    "type": "string",
                    "format": "date-time"
                  },
                  "status": {
                    "type": "string",
                    "enum": [
                      "processing"
                    ]
                  },
                  "cache_disposition": {
                    "type": "string",
                    "enum": [
                      "live_fetch"
                    ]
                  },
                  "reserved_credits": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 1000000000
                  },
                  "started_at": {
                    "type": "string",
                    "format": "date-time"
                  }
                },
                "required": [
                  "schema_version",
                  "kind",
                  "id",
                  "capability_id",
                  "maximum_credits",
                  "created_at",
                  "updated_at",
                  "status",
                  "cache_disposition",
                  "reserved_credits",
                  "started_at"
                ],
                "additionalProperties": false
              },
              {
                "type": "object",
                "properties": {
                  "schema_version": {
                    "type": "string",
                    "enum": [
                      "research-job@1"
                    ]
                  },
                  "kind": {
                    "type": "string",
                    "enum": [
                      "research_job"
                    ]
                  },
                  "id": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "capability_id": {
                    "type": "string",
                    "enum": [
                      "research.facebook-company-ads@1",
                      "research.facebook-ad-search@1"
                    ]
                  },
                  "maximum_credits": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 1000000000
                  },
                  "created_at": {
                    "type": "string",
                    "format": "date-time"
                  },
                  "updated_at": {
                    "type": "string",
                    "format": "date-time"
                  },
                  "status": {
                    "type": "string",
                    "enum": [
                      "succeeded"
                    ]
                  },
                  "cache_disposition": {
                    "type": "string",
                    "enum": [
                      "cache_hit",
                      "live_fetch"
                    ]
                  },
                  "reserved_credits": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 1000000000
                  },
                  "settled_credits": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 1000000000
                  },
                  "completed_at": {
                    "type": "string",
                    "format": "date-time"
                  },
                  "result_ready": {
                    "type": "boolean",
                    "enum": [
                      true
                    ]
                  }
                },
                "required": [
                  "schema_version",
                  "kind",
                  "id",
                  "capability_id",
                  "maximum_credits",
                  "created_at",
                  "updated_at",
                  "status",
                  "cache_disposition",
                  "reserved_credits",
                  "settled_credits",
                  "completed_at",
                  "result_ready"
                ],
                "additionalProperties": false
              },
              {
                "type": "object",
                "properties": {
                  "schema_version": {
                    "type": "string",
                    "enum": [
                      "research-job@1"
                    ]
                  },
                  "kind": {
                    "type": "string",
                    "enum": [
                      "research_job"
                    ]
                  },
                  "id": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "capability_id": {
                    "type": "string",
                    "enum": [
                      "research.facebook-company-ads@1",
                      "research.facebook-ad-search@1"
                    ]
                  },
                  "maximum_credits": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 1000000000
                  },
                  "created_at": {
                    "type": "string",
                    "format": "date-time"
                  },
                  "updated_at": {
                    "type": "string",
                    "format": "date-time"
                  },
                  "status": {
                    "type": "string",
                    "enum": [
                      "failed"
                    ]
                  },
                  "cache_disposition": {
                    "type": "string",
                    "enum": [
                      "live_fetch"
                    ]
                  },
                  "reserved_credits": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 1000000000
                  },
                  "settled_credits": {
                    "type": "number",
                    "enum": [
                      0
                    ]
                  },
                  "completed_at": {
                    "type": "string",
                    "format": "date-time"
                  },
                  "error": {
                    "type": "object",
                    "properties": {
                      "code": {
                        "type": "string",
                        "enum": [
                          "research_failed",
                          "normalization_failed"
                        ]
                      },
                      "message": {
                        "type": "string",
                        "enum": [
                          "Research request failed",
                          "Research result could not be normalized"
                        ]
                      }
                    },
                    "required": [
                      "code",
                      "message"
                    ],
                    "additionalProperties": false
                  }
                },
                "required": [
                  "schema_version",
                  "kind",
                  "id",
                  "capability_id",
                  "maximum_credits",
                  "created_at",
                  "updated_at",
                  "status",
                  "cache_disposition",
                  "reserved_credits",
                  "settled_credits",
                  "completed_at",
                  "error"
                ],
                "additionalProperties": false
              },
              {
                "type": "object",
                "properties": {
                  "schema_version": {
                    "type": "string",
                    "enum": [
                      "research-job@1"
                    ]
                  },
                  "kind": {
                    "type": "string",
                    "enum": [
                      "research_job"
                    ]
                  },
                  "id": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "capability_id": {
                    "type": "string",
                    "enum": [
                      "research.facebook-company-ads@1",
                      "research.facebook-ad-search@1"
                    ]
                  },
                  "maximum_credits": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 1000000000
                  },
                  "created_at": {
                    "type": "string",
                    "format": "date-time"
                  },
                  "updated_at": {
                    "type": "string",
                    "format": "date-time"
                  },
                  "status": {
                    "type": "string",
                    "enum": [
                      "unknown"
                    ]
                  },
                  "cache_disposition": {
                    "type": "string",
                    "enum": [
                      "live_fetch"
                    ]
                  },
                  "reserved_credits": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 1000000000
                  },
                  "reconciliation_required": {
                    "type": "boolean",
                    "enum": [
                      true
                    ]
                  }
                },
                "required": [
                  "schema_version",
                  "kind",
                  "id",
                  "capability_id",
                  "maximum_credits",
                  "created_at",
                  "updated_at",
                  "status",
                  "cache_disposition",
                  "reserved_credits",
                  "reconciliation_required"
                ],
                "additionalProperties": false
              }
            ]
          }
        },
        "required": [
          "data"
        ],
        "additionalProperties": false
      },
      "ResearchResultResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "schema_version": {
                "type": "string",
                "enum": [
                  "research-result@1"
                ]
              },
              "kind": {
                "type": "string",
                "enum": [
                  "research_result"
                ]
              },
              "job_id": {
                "type": "string",
                "format": "uuid"
              },
              "capability_id": {
                "type": "string",
                "enum": [
                  "research.facebook-company-ads@1",
                  "research.facebook-ad-search@1"
                ]
              },
              "status": {
                "type": "string",
                "enum": [
                  "succeeded"
                ]
              },
              "cache_disposition": {
                "type": "string",
                "enum": [
                  "cache_hit",
                  "live_fetch"
                ]
              },
              "reserved_credits": {
                "type": "integer",
                "minimum": 0,
                "maximum": 1000000000
              },
              "maximum_credits": {
                "type": "integer",
                "minimum": 0,
                "maximum": 1000000000
              },
              "settled_credits": {
                "type": "integer",
                "minimum": 0,
                "maximum": 1000000000
              },
              "provenance": {
                "type": "object",
                "properties": {
                  "source": {
                    "type": "string",
                    "enum": [
                      "facebook"
                    ]
                  },
                  "native_id": {
                    "anyOf": [
                      {
                        "type": "string",
                        "pattern": "^[1-9][0-9]{4,30}$"
                      },
                      {
                        "type": "string",
                        "minLength": 2,
                        "maxLength": 200,
                        "pattern": "^[^\\s\\p{Cc}](?:[^\\p{Cc}]{0,198}[^\\s\\p{Cc}])?$"
                      }
                    ]
                  },
                  "fetched_at": {
                    "type": "string",
                    "format": "date-time"
                  },
                  "fresh_through": {
                    "type": "string",
                    "format": "date-time"
                  }
                },
                "required": [
                  "source",
                  "native_id",
                  "fetched_at",
                  "fresh_through"
                ],
                "additionalProperties": false
              },
              "result": {
                "type": "object",
                "properties": {
                  "kind": {
                    "type": "string",
                    "enum": [
                      "facebook_company_ads",
                      "facebook_ad_search"
                    ]
                  },
                  "items": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string",
                          "pattern": "^[1-9][0-9]{4,30}$"
                        },
                        "source": {
                          "type": "string",
                          "enum": [
                            "facebook_ad"
                          ]
                        },
                        "advertiser": {
                          "type": "object",
                          "properties": {
                            "id": {
                              "type": "string",
                              "pattern": "^[1-9][0-9]{4,30}$"
                            },
                            "name": {
                              "type": "string",
                              "minLength": 1,
                              "maxLength": 255,
                              "pattern": "\\S"
                            },
                            "avatar_url": {
                              "type": "string",
                              "format": "uri",
                              "maxLength": 8192,
                              "nullable": true
                            }
                          },
                          "required": [
                            "id",
                            "name",
                            "avatar_url"
                          ],
                          "additionalProperties": false
                        },
                        "media": {
                          "type": "object",
                          "properties": {
                            "type": {
                              "type": "string",
                              "enum": [
                                "image",
                                "video",
                                "carousel"
                              ]
                            },
                            "slides": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "type": {
                                    "type": "string",
                                    "enum": [
                                      "image",
                                      "video"
                                    ]
                                  },
                                  "thumbnail_url": {
                                    "type": "string",
                                    "format": "uri",
                                    "maxLength": 8192
                                  },
                                  "video_url": {
                                    "type": "string",
                                    "format": "uri",
                                    "maxLength": 8192,
                                    "nullable": true
                                  }
                                },
                                "required": [
                                  "type",
                                  "thumbnail_url",
                                  "video_url"
                                ],
                                "additionalProperties": false
                              },
                              "minItems": 1,
                              "maxItems": 20
                            }
                          },
                          "required": [
                            "type",
                            "slides"
                          ],
                          "additionalProperties": false
                        },
                        "copy": {
                          "type": "string",
                          "minLength": 1,
                          "maxLength": 100000,
                          "nullable": true
                        },
                        "title": {
                          "type": "string",
                          "minLength": 1,
                          "maxLength": 10000,
                          "nullable": true
                        },
                        "description": {
                          "type": "string",
                          "minLength": 1,
                          "maxLength": 100000,
                          "nullable": true
                        },
                        "domain": {
                          "type": "string",
                          "minLength": 1,
                          "maxLength": 253,
                          "nullable": true
                        },
                        "cta": {
                          "type": "string",
                          "minLength": 1,
                          "maxLength": 1000,
                          "nullable": true
                        },
                        "destination_url": {
                          "type": "string",
                          "format": "uri",
                          "maxLength": 8192,
                          "nullable": true
                        },
                        "run_start_date": {
                          "type": "string",
                          "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
                        },
                        "run_end_date": {
                          "type": "string",
                          "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
                          "nullable": true
                        },
                        "is_active": {
                          "type": "boolean"
                        },
                        "platform_link": {
                          "type": "string",
                          "format": "uri",
                          "maxLength": 8192
                        }
                      },
                      "required": [
                        "id",
                        "source",
                        "advertiser",
                        "media",
                        "copy",
                        "title",
                        "description",
                        "domain",
                        "cta",
                        "destination_url",
                        "run_start_date",
                        "run_end_date",
                        "is_active",
                        "platform_link"
                      ],
                      "additionalProperties": false
                    },
                    "maxItems": 30
                  },
                  "item_count": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 30
                  }
                },
                "required": [
                  "kind",
                  "items",
                  "item_count"
                ],
                "additionalProperties": false
              }
            },
            "required": [
              "schema_version",
              "kind",
              "job_id",
              "capability_id",
              "status",
              "cache_disposition",
              "reserved_credits",
              "maximum_credits",
              "settled_credits",
              "provenance",
              "result"
            ],
            "additionalProperties": false
          }
        },
        "required": [
          "data"
        ],
        "additionalProperties": false
      },
      "ResearchFacebookAdResult": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^[1-9][0-9]{4,30}$"
          },
          "source": {
            "type": "string",
            "enum": [
              "facebook_ad"
            ]
          },
          "advertiser": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "pattern": "^[1-9][0-9]{4,30}$"
              },
              "name": {
                "type": "string",
                "minLength": 1,
                "maxLength": 255,
                "pattern": "\\S"
              },
              "avatar_url": {
                "type": "string",
                "format": "uri",
                "maxLength": 8192,
                "nullable": true
              }
            },
            "required": [
              "id",
              "name",
              "avatar_url"
            ],
            "additionalProperties": false
          },
          "media": {
            "type": "object",
            "properties": {
              "type": {
                "type": "string",
                "enum": [
                  "image",
                  "video",
                  "carousel"
                ]
              },
              "slides": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "enum": [
                        "image",
                        "video"
                      ]
                    },
                    "thumbnail_url": {
                      "type": "string",
                      "format": "uri",
                      "maxLength": 8192
                    },
                    "video_url": {
                      "type": "string",
                      "format": "uri",
                      "maxLength": 8192,
                      "nullable": true
                    }
                  },
                  "required": [
                    "type",
                    "thumbnail_url",
                    "video_url"
                  ],
                  "additionalProperties": false
                },
                "minItems": 1,
                "maxItems": 20
              }
            },
            "required": [
              "type",
              "slides"
            ],
            "additionalProperties": false
          },
          "copy": {
            "type": "string",
            "minLength": 1,
            "maxLength": 100000,
            "nullable": true
          },
          "title": {
            "type": "string",
            "minLength": 1,
            "maxLength": 10000,
            "nullable": true
          },
          "description": {
            "type": "string",
            "minLength": 1,
            "maxLength": 100000,
            "nullable": true
          },
          "domain": {
            "type": "string",
            "minLength": 1,
            "maxLength": 253,
            "nullable": true
          },
          "cta": {
            "type": "string",
            "minLength": 1,
            "maxLength": 1000,
            "nullable": true
          },
          "destination_url": {
            "type": "string",
            "format": "uri",
            "maxLength": 8192,
            "nullable": true
          },
          "run_start_date": {
            "type": "string",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
          },
          "run_end_date": {
            "type": "string",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
            "nullable": true
          },
          "is_active": {
            "type": "boolean"
          },
          "platform_link": {
            "type": "string",
            "format": "uri",
            "maxLength": 8192
          }
        },
        "required": [
          "id",
          "source",
          "advertiser",
          "media",
          "copy",
          "title",
          "description",
          "domain",
          "cta",
          "destination_url",
          "run_start_date",
          "run_end_date",
          "is_active",
          "platform_link"
        ],
        "additionalProperties": false
      },
      "ResearchSafeProvenance": {
        "type": "object",
        "properties": {
          "source": {
            "type": "string",
            "enum": [
              "facebook"
            ]
          },
          "native_id": {
            "anyOf": [
              {
                "type": "string",
                "pattern": "^[1-9][0-9]{4,30}$"
              },
              {
                "type": "string",
                "minLength": 2,
                "maxLength": 200,
                "pattern": "^[^\\s\\p{Cc}](?:[^\\p{Cc}]{0,198}[^\\s\\p{Cc}])?$"
              }
            ]
          },
          "fetched_at": {
            "type": "string",
            "format": "date-time"
          },
          "fresh_through": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "source",
          "native_id",
          "fetched_at",
          "fresh_through"
        ],
        "additionalProperties": false
      },
      "WorkflowAnalyzeRequest": {
        "type": "object",
        "properties": {
          "video_url": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "image_url": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "discover_item_id": {
            "type": "string",
            "minLength": 1,
            "maxLength": 128
          },
          "note": {
            "type": "string",
            "maxLength": 400
          },
          "quote_only": {
            "type": "boolean",
            "default": false
          },
          "quote_id": {
            "type": "string",
            "format": "uuid"
          }
        },
        "additionalProperties": false
      },
      "WorkflowRecastRequest": {
        "type": "object",
        "properties": {
          "source_video_url": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "source_generation_id": {
            "type": "string",
            "format": "uuid"
          },
          "prompt": {
            "type": "string",
            "minLength": 1,
            "maxLength": 2500
          },
          "alter": {
            "type": "object",
            "properties": {
              "mode": {
                "type": "string",
                "enum": [
                  "recast",
                  "product_swap",
                  "clean_text"
                ]
              },
              "who": {
                "type": "string",
                "minLength": 1,
                "maxLength": 200
              },
              "new_person": {
                "type": "string",
                "minLength": 1,
                "maxLength": 200
              },
              "clothes": {
                "type": "string",
                "minLength": 1,
                "maxLength": 200
              },
              "outfit": {
                "type": "string",
                "enum": [
                  "own",
                  "source"
                ]
              },
              "object": {
                "type": "string",
                "minLength": 1,
                "maxLength": 200
              },
              "product": {
                "type": "string",
                "minLength": 1,
                "maxLength": 200
              },
              "keep": {
                "type": "string",
                "minLength": 1,
                "maxLength": 200
              },
              "multi_shot": {
                "type": "boolean"
              }
            },
            "required": [
              "mode"
            ],
            "additionalProperties": false
          },
          "avatar_id": {
            "type": "string",
            "format": "uuid"
          },
          "product_id": {
            "type": "string",
            "format": "uuid"
          },
          "elements": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "frontal_image_url": {
                  "type": "string",
                  "format": "uri"
                },
                "reference_image_urls": {
                  "type": "array",
                  "items": {
                    "type": "string",
                    "format": "uri"
                  },
                  "minItems": 1,
                  "maxItems": 3
                }
              },
              "required": [
                "frontal_image_url",
                "reference_image_urls"
              ],
              "additionalProperties": false
            },
            "minItems": 1,
            "maxItems": 7
          },
          "references": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uri",
              "maxLength": 4096
            },
            "minItems": 1,
            "maxItems": 9
          },
          "model": {
            "type": "string",
            "enum": [
              "kling-4",
              "seedance-2.5-edit"
            ],
            "default": "seedance-2.5-edit"
          },
          "media_rights": {
            "type": "object",
            "properties": {
              "accepted": {
                "type": "boolean",
                "enum": [
                  true
                ]
              },
              "statement_version": {
                "type": "number",
                "enum": [
                  1
                ]
              }
            },
            "required": [
              "accepted",
              "statement_version"
            ],
            "additionalProperties": false
          },
          "quote_only": {
            "type": "boolean",
            "default": false
          },
          "quote_id": {
            "type": "string",
            "format": "uuid"
          },
          "webhook_url": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "wait_timeout_seconds": {
            "type": "integer",
            "minimum": 0,
            "maximum": 60,
            "default": 0
          }
        },
        "additionalProperties": false
      },
      "WorkflowStaticToVideoRequest": {
        "type": "object",
        "properties": {
          "image_url": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "upload_id": {
            "type": "string",
            "format": "uuid"
          },
          "prompt": {
            "type": "string",
            "minLength": 1,
            "maxLength": 10000
          },
          "auto_prompt": {
            "type": "boolean",
            "default": false
          },
          "model": {
            "type": "string",
            "enum": [
              "seedance-2.5",
              "kling-4"
            ],
            "default": "seedance-2.5"
          },
          "duration_seconds": {
            "type": "integer",
            "minimum": 1,
            "maximum": 60
          },
          "aspect_ratio": {
            "type": "string",
            "minLength": 1,
            "maxLength": 32
          },
          "resolution": {
            "type": "string",
            "minLength": 1,
            "maxLength": 32
          },
          "product_id": {
            "type": "string",
            "format": "uuid"
          },
          "quote_only": {
            "type": "boolean",
            "default": false
          },
          "quote_id": {
            "type": "string",
            "format": "uuid"
          },
          "webhook_url": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "wait_timeout_seconds": {
            "type": "integer",
            "minimum": 0,
            "maximum": 60,
            "default": 0
          }
        },
        "additionalProperties": false
      },
      "WorkflowRemixRequest": {
        "type": "object",
        "properties": {
          "ad_url": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "discover_item_id": {
            "type": "string",
            "minLength": 1,
            "maxLength": 128
          },
          "source_generation_id": {
            "type": "string",
            "format": "uuid"
          },
          "product_id": {
            "type": "string",
            "format": "uuid"
          },
          "avatar_id": {
            "type": "string",
            "format": "uuid"
          },
          "variants": {
            "type": "integer",
            "minimum": 1,
            "maximum": 2,
            "default": 1
          },
          "note": {
            "type": "string",
            "maxLength": 400
          },
          "max_credits": {
            "type": "integer",
            "minimum": 0,
            "maximum": 100000
          },
          "generation_spend_cap_credits": {
            "type": "integer",
            "minimum": 0,
            "maximum": 100000
          },
          "finished_ad": {
            "type": "boolean",
            "default": false
          },
          "quote_only": {
            "type": "boolean",
            "default": false
          },
          "quote_id": {
            "type": "string",
            "format": "uuid"
          }
        },
        "required": [
          "product_id"
        ],
        "additionalProperties": false
      },
      "WorkflowExtractBrandRequest": {
        "type": "object",
        "properties": {
          "website_url": {
            "type": "string",
            "format": "uri",
            "maxLength": 2048
          },
          "quote_only": {
            "type": "boolean",
            "default": false
          },
          "quote_id": {
            "type": "string",
            "format": "uuid"
          }
        },
        "required": [
          "website_url"
        ],
        "additionalProperties": false
      },
      "WorkflowStaticsRequest": {
        "type": "object",
        "properties": {
          "product_id": {
            "type": "string",
            "format": "uuid"
          },
          "brief": {
            "type": "string",
            "maxLength": 400
          },
          "variants": {
            "type": "integer",
            "minimum": 1,
            "maximum": 8,
            "default": 3
          },
          "aspect_ratio": {
            "type": "string",
            "enum": [
              "1:1",
              "4:5",
              "9:16",
              "16:9"
            ],
            "default": "4:5"
          },
          "lane": {
            "type": "string",
            "enum": [
              "scene",
              "product"
            ],
            "default": "scene"
          },
          "avatar_id": {
            "type": "string",
            "format": "uuid"
          },
          "max_credits": {
            "type": "integer",
            "minimum": 0,
            "maximum": 100000
          },
          "generation_spend_cap_credits": {
            "type": "integer",
            "minimum": 0,
            "maximum": 100000
          },
          "quote_only": {
            "type": "boolean",
            "default": false
          },
          "quote_id": {
            "type": "string",
            "format": "uuid"
          }
        },
        "required": [
          "product_id"
        ],
        "additionalProperties": false
      },
      "WorkflowExtendRequest": {
        "type": "object",
        "properties": {
          "video_url": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "source_generation_id": {
            "type": "string",
            "format": "uuid"
          },
          "prompt": {
            "type": "string",
            "minLength": 1,
            "maxLength": 10000
          },
          "model": {
            "type": "string",
            "minLength": 1,
            "maxLength": 64
          },
          "duration_seconds": {
            "type": "integer",
            "minimum": 1,
            "maximum": 60
          },
          "resolution": {
            "type": "string",
            "minLength": 1,
            "maxLength": 32
          },
          "generate_audio": {
            "type": "boolean"
          },
          "quote_only": {
            "type": "boolean",
            "default": false
          },
          "quote_id": {
            "type": "string",
            "format": "uuid"
          },
          "webhook_url": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "wait_timeout_seconds": {
            "type": "integer",
            "minimum": 0,
            "maximum": 60,
            "default": 0
          }
        },
        "required": [
          "prompt"
        ],
        "additionalProperties": false
      },
      "WorkflowExtendResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "format": "uuid"
              },
              "kind": {
                "type": "string",
                "enum": [
                  "extend"
                ]
              },
              "stage": {
                "type": "string",
                "enum": [
                  "continuation",
                  "merging",
                  "completed",
                  "failed",
                  "merge_failed"
                ]
              },
              "continuation": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "kind": {
                    "type": "string",
                    "enum": [
                      "image",
                      "scene",
                      "avatar",
                      "video",
                      "ugc",
                      "audio",
                      "voice",
                      "lipsync",
                      "batch",
                      "research"
                    ]
                  },
                  "model": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 200,
                    "nullable": true
                  },
                  "status": {
                    "type": "string",
                    "enum": [
                      "queued",
                      "processing",
                      "completed",
                      "failed",
                      "canceled"
                    ]
                  },
                  "credits_reserved": {
                    "type": "integer",
                    "minimum": 0
                  },
                  "created_at": {
                    "type": "string"
                  },
                  "completed_at": {
                    "type": "string",
                    "nullable": true
                  },
                  "error": {
                    "type": "object",
                    "properties": {
                      "code": {
                        "type": "string"
                      },
                      "message": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "code",
                      "message"
                    ],
                    "additionalProperties": false,
                    "nullable": true
                  },
                  "result": {},
                  "webhook": {
                    "type": "object",
                    "properties": {
                      "status": {
                        "type": "string",
                        "enum": [
                          "delivered",
                          "failed"
                        ]
                      },
                      "attempts": {
                        "type": "integer",
                        "minimum": 0
                      },
                      "last_status": {
                        "type": "string",
                        "maxLength": 64,
                        "nullable": true
                      },
                      "delivered_at": {
                        "type": "string"
                      },
                      "failed_at": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "status",
                      "attempts",
                      "last_status"
                    ],
                    "additionalProperties": false
                  },
                  "inputs": {
                    "type": "object",
                    "properties": {
                      "endpoint": {
                        "type": "string",
                        "minLength": 1,
                        "maxLength": 200
                      },
                      "request": {
                        "type": "object",
                        "additionalProperties": {}
                      }
                    },
                    "required": [
                      "endpoint",
                      "request"
                    ],
                    "additionalProperties": false
                  },
                  "links": {
                    "type": "object",
                    "properties": {
                      "self": {
                        "type": "string"
                      },
                      "status": {
                        "type": "string"
                      },
                      "result": {
                        "type": "string"
                      },
                      "events": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "self",
                      "status",
                      "result",
                      "events"
                    ],
                    "additionalProperties": false
                  }
                },
                "required": [
                  "id",
                  "kind",
                  "model",
                  "status",
                  "credits_reserved",
                  "created_at",
                  "links"
                ],
                "additionalProperties": false
              },
              "merged": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "kind": {
                    "type": "string",
                    "enum": [
                      "image",
                      "scene",
                      "avatar",
                      "video",
                      "ugc",
                      "audio",
                      "voice",
                      "lipsync",
                      "batch",
                      "research"
                    ]
                  },
                  "model": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 200,
                    "nullable": true
                  },
                  "status": {
                    "type": "string",
                    "enum": [
                      "queued",
                      "processing",
                      "completed",
                      "failed",
                      "canceled"
                    ]
                  },
                  "credits_reserved": {
                    "type": "integer",
                    "minimum": 0
                  },
                  "created_at": {
                    "type": "string"
                  },
                  "completed_at": {
                    "type": "string",
                    "nullable": true
                  },
                  "error": {
                    "type": "object",
                    "properties": {
                      "code": {
                        "type": "string"
                      },
                      "message": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "code",
                      "message"
                    ],
                    "additionalProperties": false,
                    "nullable": true
                  },
                  "result": {},
                  "webhook": {
                    "type": "object",
                    "properties": {
                      "status": {
                        "type": "string",
                        "enum": [
                          "delivered",
                          "failed"
                        ]
                      },
                      "attempts": {
                        "type": "integer",
                        "minimum": 0
                      },
                      "last_status": {
                        "type": "string",
                        "maxLength": 64,
                        "nullable": true
                      },
                      "delivered_at": {
                        "type": "string"
                      },
                      "failed_at": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "status",
                      "attempts",
                      "last_status"
                    ],
                    "additionalProperties": false
                  },
                  "inputs": {
                    "type": "object",
                    "properties": {
                      "endpoint": {
                        "type": "string",
                        "minLength": 1,
                        "maxLength": 200
                      },
                      "request": {
                        "type": "object",
                        "additionalProperties": {}
                      }
                    },
                    "required": [
                      "endpoint",
                      "request"
                    ],
                    "additionalProperties": false
                  },
                  "links": {
                    "type": "object",
                    "properties": {
                      "self": {
                        "type": "string"
                      },
                      "status": {
                        "type": "string"
                      },
                      "result": {
                        "type": "string"
                      },
                      "events": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "self",
                      "status",
                      "result",
                      "events"
                    ],
                    "additionalProperties": false
                  }
                },
                "required": [
                  "id",
                  "kind",
                  "model",
                  "status",
                  "credits_reserved",
                  "created_at",
                  "links"
                ],
                "additionalProperties": false,
                "nullable": true
              }
            },
            "required": [
              "id",
              "kind",
              "stage",
              "continuation",
              "merged"
            ],
            "additionalProperties": false
          }
        },
        "required": [
          "data"
        ],
        "additionalProperties": false
      },
      "WorkflowAnalysisResponse": {
        "type": "object",
        "properties": {
          "data": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "schema_version": {
                    "type": "string",
                    "enum": [
                      "workflow-analysis@1"
                    ]
                  },
                  "kind": {
                    "type": "string",
                    "enum": [
                      "workflow_analysis"
                    ]
                  },
                  "id": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "workflow": {
                    "type": "string",
                    "enum": [
                      "analyze",
                      "extract-brand"
                    ]
                  },
                  "analysis_kind": {
                    "type": "string",
                    "enum": [
                      "image",
                      "video",
                      "website"
                    ]
                  },
                  "cache_disposition": {
                    "type": "string",
                    "enum": [
                      "cache_hit",
                      "live_analysis"
                    ]
                  },
                  "maximum_credits": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 1000000000
                  },
                  "pricing_version": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 80
                  },
                  "created_at": {
                    "type": "string",
                    "format": "date-time"
                  },
                  "updated_at": {
                    "type": "string",
                    "format": "date-time"
                  },
                  "status": {
                    "type": "string",
                    "enum": [
                      "quoted"
                    ]
                  },
                  "reserved_credits": {
                    "type": "number",
                    "enum": [
                      0
                    ]
                  },
                  "quote_id": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "expires_at": {
                    "type": "string",
                    "format": "date-time"
                  },
                  "authorization": {
                    "anyOf": [
                      {
                        "type": "object",
                        "properties": {
                          "status": {
                            "type": "string",
                            "enum": [
                              "auto_approved"
                            ]
                          }
                        },
                        "required": [
                          "status"
                        ],
                        "additionalProperties": false
                      },
                      {
                        "type": "object",
                        "properties": {
                          "status": {
                            "type": "string",
                            "enum": [
                              "approval_required"
                            ]
                          },
                          "authorize_url": {
                            "type": "string",
                            "format": "uri",
                            "maxLength": 2048
                          }
                        },
                        "required": [
                          "status",
                          "authorize_url"
                        ],
                        "additionalProperties": false
                      }
                    ]
                  }
                },
                "required": [
                  "schema_version",
                  "kind",
                  "id",
                  "workflow",
                  "analysis_kind",
                  "cache_disposition",
                  "maximum_credits",
                  "pricing_version",
                  "created_at",
                  "updated_at",
                  "status",
                  "reserved_credits",
                  "quote_id",
                  "expires_at",
                  "authorization"
                ],
                "additionalProperties": false
              },
              {
                "type": "object",
                "properties": {
                  "schema_version": {
                    "type": "string",
                    "enum": [
                      "workflow-analysis@1"
                    ]
                  },
                  "kind": {
                    "type": "string",
                    "enum": [
                      "workflow_analysis"
                    ]
                  },
                  "id": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "workflow": {
                    "type": "string",
                    "enum": [
                      "analyze",
                      "extract-brand"
                    ]
                  },
                  "analysis_kind": {
                    "type": "string",
                    "enum": [
                      "image",
                      "video",
                      "website"
                    ]
                  },
                  "cache_disposition": {
                    "type": "string",
                    "enum": [
                      "cache_hit",
                      "live_analysis"
                    ]
                  },
                  "maximum_credits": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 1000000000
                  },
                  "pricing_version": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 80
                  },
                  "created_at": {
                    "type": "string",
                    "format": "date-time"
                  },
                  "updated_at": {
                    "type": "string",
                    "format": "date-time"
                  },
                  "status": {
                    "type": "string",
                    "enum": [
                      "queued"
                    ]
                  },
                  "reserved_credits": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 1000000000
                  }
                },
                "required": [
                  "schema_version",
                  "kind",
                  "id",
                  "workflow",
                  "analysis_kind",
                  "cache_disposition",
                  "maximum_credits",
                  "pricing_version",
                  "created_at",
                  "updated_at",
                  "status",
                  "reserved_credits"
                ],
                "additionalProperties": false
              },
              {
                "type": "object",
                "properties": {
                  "schema_version": {
                    "type": "string",
                    "enum": [
                      "workflow-analysis@1"
                    ]
                  },
                  "kind": {
                    "type": "string",
                    "enum": [
                      "workflow_analysis"
                    ]
                  },
                  "id": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "workflow": {
                    "type": "string",
                    "enum": [
                      "analyze",
                      "extract-brand"
                    ]
                  },
                  "analysis_kind": {
                    "type": "string",
                    "enum": [
                      "image",
                      "video",
                      "website"
                    ]
                  },
                  "cache_disposition": {
                    "type": "string",
                    "enum": [
                      "cache_hit",
                      "live_analysis"
                    ]
                  },
                  "maximum_credits": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 1000000000
                  },
                  "pricing_version": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 80
                  },
                  "created_at": {
                    "type": "string",
                    "format": "date-time"
                  },
                  "updated_at": {
                    "type": "string",
                    "format": "date-time"
                  },
                  "status": {
                    "type": "string",
                    "enum": [
                      "processing"
                    ]
                  },
                  "reserved_credits": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 1000000000
                  },
                  "started_at": {
                    "type": "string",
                    "format": "date-time"
                  }
                },
                "required": [
                  "schema_version",
                  "kind",
                  "id",
                  "workflow",
                  "analysis_kind",
                  "cache_disposition",
                  "maximum_credits",
                  "pricing_version",
                  "created_at",
                  "updated_at",
                  "status",
                  "reserved_credits",
                  "started_at"
                ],
                "additionalProperties": false
              },
              {
                "type": "object",
                "properties": {
                  "schema_version": {
                    "type": "string",
                    "enum": [
                      "workflow-analysis@1"
                    ]
                  },
                  "kind": {
                    "type": "string",
                    "enum": [
                      "workflow_analysis"
                    ]
                  },
                  "id": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "workflow": {
                    "type": "string",
                    "enum": [
                      "analyze",
                      "extract-brand"
                    ]
                  },
                  "analysis_kind": {
                    "type": "string",
                    "enum": [
                      "image",
                      "video",
                      "website"
                    ]
                  },
                  "cache_disposition": {
                    "type": "string",
                    "enum": [
                      "cache_hit",
                      "live_analysis"
                    ]
                  },
                  "maximum_credits": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 1000000000
                  },
                  "pricing_version": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 80
                  },
                  "created_at": {
                    "type": "string",
                    "format": "date-time"
                  },
                  "updated_at": {
                    "type": "string",
                    "format": "date-time"
                  },
                  "status": {
                    "type": "string",
                    "enum": [
                      "succeeded"
                    ]
                  },
                  "reserved_credits": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 1000000000
                  },
                  "settled_credits": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 1000000000
                  },
                  "completed_at": {
                    "type": "string",
                    "format": "date-time"
                  },
                  "result_ready": {
                    "type": "boolean",
                    "enum": [
                      true
                    ]
                  }
                },
                "required": [
                  "schema_version",
                  "kind",
                  "id",
                  "workflow",
                  "analysis_kind",
                  "cache_disposition",
                  "maximum_credits",
                  "pricing_version",
                  "created_at",
                  "updated_at",
                  "status",
                  "reserved_credits",
                  "settled_credits",
                  "completed_at",
                  "result_ready"
                ],
                "additionalProperties": false
              },
              {
                "type": "object",
                "properties": {
                  "schema_version": {
                    "type": "string",
                    "enum": [
                      "workflow-analysis@1"
                    ]
                  },
                  "kind": {
                    "type": "string",
                    "enum": [
                      "workflow_analysis"
                    ]
                  },
                  "id": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "workflow": {
                    "type": "string",
                    "enum": [
                      "analyze",
                      "extract-brand"
                    ]
                  },
                  "analysis_kind": {
                    "type": "string",
                    "enum": [
                      "image",
                      "video",
                      "website"
                    ]
                  },
                  "cache_disposition": {
                    "type": "string",
                    "enum": [
                      "cache_hit",
                      "live_analysis"
                    ]
                  },
                  "maximum_credits": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 1000000000
                  },
                  "pricing_version": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 80
                  },
                  "created_at": {
                    "type": "string",
                    "format": "date-time"
                  },
                  "updated_at": {
                    "type": "string",
                    "format": "date-time"
                  },
                  "status": {
                    "type": "string",
                    "enum": [
                      "failed"
                    ]
                  },
                  "reserved_credits": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 1000000000
                  },
                  "settled_credits": {
                    "type": "number",
                    "enum": [
                      0
                    ]
                  },
                  "completed_at": {
                    "type": "string",
                    "format": "date-time"
                  },
                  "error": {
                    "type": "object",
                    "properties": {
                      "code": {
                        "type": "string",
                        "enum": [
                          "analysis_failed",
                          "analysis_media_unreadable",
                          "analysis_timed_out"
                        ]
                      },
                      "message": {
                        "type": "string",
                        "minLength": 1,
                        "maxLength": 200
                      }
                    },
                    "required": [
                      "code",
                      "message"
                    ],
                    "additionalProperties": false
                  }
                },
                "required": [
                  "schema_version",
                  "kind",
                  "id",
                  "workflow",
                  "analysis_kind",
                  "cache_disposition",
                  "maximum_credits",
                  "pricing_version",
                  "created_at",
                  "updated_at",
                  "status",
                  "reserved_credits",
                  "settled_credits",
                  "completed_at",
                  "error"
                ],
                "additionalProperties": false
              }
            ]
          }
        },
        "required": [
          "data"
        ],
        "additionalProperties": false
      },
      "WorkflowAnalysisResultResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "schema_version": {
                "type": "string",
                "enum": [
                  "workflow-analysis-result@1"
                ]
              },
              "kind": {
                "type": "string",
                "enum": [
                  "workflow_analysis_result"
                ]
              },
              "analysis_id": {
                "type": "string",
                "format": "uuid"
              },
              "workflow": {
                "type": "string",
                "enum": [
                  "analyze",
                  "extract-brand"
                ]
              },
              "status": {
                "type": "string",
                "enum": [
                  "succeeded"
                ]
              },
              "analysis_kind": {
                "type": "string",
                "enum": [
                  "image",
                  "video",
                  "website"
                ]
              },
              "cache_disposition": {
                "type": "string",
                "enum": [
                  "cache_hit",
                  "live_analysis"
                ]
              },
              "model": {
                "type": "string",
                "minLength": 1,
                "maxLength": 80
              },
              "pricing_version": {
                "type": "string",
                "minLength": 1,
                "maxLength": 80
              },
              "reserved_credits": {
                "type": "integer",
                "minimum": 0,
                "maximum": 1000000000
              },
              "maximum_credits": {
                "type": "integer",
                "minimum": 0,
                "maximum": 1000000000
              },
              "settled_credits": {
                "type": "integer",
                "minimum": 0,
                "maximum": 1000000000
              },
              "completed_at": {
                "type": "string",
                "format": "date-time"
              },
              "analysis": {
                "type": "object",
                "additionalProperties": {},
                "description": "The analysis document: AdAnalysis for a video, StillAdAnalysis for a still, SiteAnalysis for a website."
              },
              "measured_cuts": {
                "type": "object",
                "additionalProperties": {},
                "nullable": true
              }
            },
            "required": [
              "schema_version",
              "kind",
              "analysis_id",
              "workflow",
              "status",
              "analysis_kind",
              "cache_disposition",
              "model",
              "pricing_version",
              "reserved_credits",
              "maximum_credits",
              "settled_credits",
              "completed_at",
              "analysis"
            ],
            "additionalProperties": false
          }
        },
        "required": [
          "data"
        ],
        "additionalProperties": false
      },
      "BrandKitResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "schema_version": {
                "type": "string",
                "enum": [
                  "brand-kit@1"
                ]
              },
              "kind": {
                "type": "string",
                "enum": [
                  "brand_kit"
                ]
              },
              "logo_url": {
                "type": "string",
                "format": "uri",
                "maxLength": 2048,
                "nullable": true
              },
              "logo_dark_url": {
                "type": "string",
                "format": "uri",
                "maxLength": 2048,
                "nullable": true
              },
              "colors": {
                "type": "object",
                "properties": {
                  "primary": {
                    "type": "string",
                    "pattern": "^#[0-9a-f]{6}$"
                  },
                  "secondary": {
                    "type": "string",
                    "pattern": "^#[0-9a-f]{6}$"
                  },
                  "accent": {
                    "type": "string",
                    "pattern": "^#[0-9a-f]{6}$"
                  },
                  "background": {
                    "type": "string",
                    "pattern": "^#[0-9a-f]{6}$"
                  },
                  "text": {
                    "type": "string",
                    "pattern": "^#[0-9a-f]{6}$"
                  }
                },
                "additionalProperties": false
              },
              "fonts": {
                "type": "object",
                "properties": {
                  "heading": {
                    "type": "string",
                    "maxLength": 64,
                    "pattern": "^[A-Za-z0-9][A-Za-z0-9 ._-]{0,63}$"
                  },
                  "body": {
                    "type": "string",
                    "maxLength": 64,
                    "pattern": "^[A-Za-z0-9][A-Za-z0-9 ._-]{0,63}$"
                  }
                },
                "additionalProperties": false
              },
              "cta_text": {
                "type": "string",
                "maxLength": 40,
                "nullable": true
              },
              "cta_url": {
                "type": "string",
                "format": "uri",
                "maxLength": 2048,
                "nullable": true
              },
              "source_analysis_id": {
                "type": "string",
                "format": "uuid",
                "nullable": true
              },
              "updated_by": {
                "type": "string",
                "format": "uuid",
                "nullable": true
              },
              "created_at": {
                "type": "string",
                "format": "date-time"
              },
              "updated_at": {
                "type": "string",
                "format": "date-time"
              }
            },
            "required": [
              "schema_version",
              "kind",
              "logo_url",
              "logo_dark_url",
              "colors",
              "fonts",
              "cta_text",
              "cta_url",
              "source_analysis_id",
              "updated_by",
              "created_at",
              "updated_at"
            ],
            "additionalProperties": false
          }
        },
        "required": [
          "data"
        ],
        "additionalProperties": false
      },
      "BrandKitUpdateRequest": {
        "type": "object",
        "properties": {
          "logo_url": {
            "type": "string",
            "format": "uri",
            "maxLength": 2048
          },
          "logo_dark_url": {
            "type": "string",
            "format": "uri",
            "maxLength": 2048
          },
          "colors": {
            "type": "object",
            "properties": {
              "primary": {
                "type": "string",
                "pattern": "^#[0-9a-f]{6}$"
              },
              "secondary": {
                "type": "string",
                "pattern": "^#[0-9a-f]{6}$"
              },
              "accent": {
                "type": "string",
                "pattern": "^#[0-9a-f]{6}$"
              },
              "background": {
                "type": "string",
                "pattern": "^#[0-9a-f]{6}$"
              },
              "text": {
                "type": "string",
                "pattern": "^#[0-9a-f]{6}$"
              }
            },
            "additionalProperties": false,
            "default": {}
          },
          "fonts": {
            "type": "object",
            "properties": {
              "heading": {
                "type": "string",
                "maxLength": 64,
                "pattern": "^[A-Za-z0-9][A-Za-z0-9 ._-]{0,63}$"
              },
              "body": {
                "type": "string",
                "maxLength": 64,
                "pattern": "^[A-Za-z0-9][A-Za-z0-9 ._-]{0,63}$"
              }
            },
            "additionalProperties": false,
            "default": {}
          },
          "cta_text": {
            "type": "string",
            "minLength": 1,
            "maxLength": 40,
            "pattern": "^[^\\u0000-\\u001f\\u007f]+$"
          },
          "cta_url": {
            "type": "string",
            "format": "uri",
            "maxLength": 2048,
            "pattern": "^https:\\/\\/[^\\s\\u0000-\\u001f\\u007f]+$"
          }
        },
        "additionalProperties": false
      },
      "MemoryPinCreateRequest": {
        "type": "object",
        "properties": {
          "category": {
            "type": "string",
            "enum": [
              "brand_voice",
              "audience",
              "hook",
              "banned",
              "win",
              "note"
            ]
          },
          "content": {
            "type": "string",
            "minLength": 2,
            "maxLength": 1000
          },
          "metadata": {
            "type": "object",
            "additionalProperties": {}
          }
        },
        "required": [
          "category",
          "content"
        ],
        "additionalProperties": false
      },
      "MemoryPinListResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "format": "uuid"
                },
                "category": {
                  "type": "string",
                  "enum": [
                    "brand_voice",
                    "audience",
                    "hook",
                    "banned",
                    "win",
                    "note"
                  ]
                },
                "content": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 1000
                },
                "metadata": {
                  "type": "object",
                  "additionalProperties": {}
                },
                "created_at": {
                  "type": "string",
                  "format": "date-time"
                }
              },
              "required": [
                "id",
                "category",
                "content",
                "metadata",
                "created_at"
              ],
              "additionalProperties": false
            }
          },
          "meta": {
            "type": "object",
            "properties": {
              "cursor": {
                "type": "string",
                "minLength": 1,
                "maxLength": 4096
              },
              "has_more": {
                "type": "boolean"
              }
            },
            "required": [
              "has_more"
            ],
            "additionalProperties": false
          }
        },
        "required": [
          "data",
          "meta"
        ],
        "additionalProperties": false
      },
      "MemoryPinResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "format": "uuid"
              },
              "category": {
                "type": "string",
                "enum": [
                  "brand_voice",
                  "audience",
                  "hook",
                  "banned",
                  "win",
                  "note"
                ]
              },
              "content": {
                "type": "string",
                "minLength": 1,
                "maxLength": 1000
              },
              "metadata": {
                "type": "object",
                "additionalProperties": {}
              },
              "created_at": {
                "type": "string",
                "format": "date-time"
              }
            },
            "required": [
              "id",
              "category",
              "content",
              "metadata",
              "created_at"
            ],
            "additionalProperties": false
          }
        },
        "required": [
          "data"
        ],
        "additionalProperties": false
      },
      "MemoryBriefResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "schema_version": {
                "type": "string",
                "enum": [
                  "marketing-brief@1"
                ]
              },
              "kind": {
                "type": "string",
                "enum": [
                  "marketing_brief"
                ]
              },
              "brief": {
                "type": "object",
                "properties": {
                  "personas": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "minLength": 2,
                      "maxLength": 300
                    },
                    "maxItems": 8
                  },
                  "jtbd_forces": {
                    "type": "object",
                    "properties": {
                      "push": {
                        "type": "string",
                        "minLength": 2,
                        "maxLength": 500
                      },
                      "pull": {
                        "type": "string",
                        "minLength": 2,
                        "maxLength": 500
                      },
                      "habit": {
                        "type": "string",
                        "minLength": 2,
                        "maxLength": 500
                      },
                      "anxiety": {
                        "type": "string",
                        "minLength": 2,
                        "maxLength": 500
                      }
                    },
                    "additionalProperties": false
                  },
                  "objections": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "objection": {
                          "type": "string",
                          "minLength": 2,
                          "maxLength": 300
                        },
                        "response": {
                          "type": "string",
                          "minLength": 2,
                          "maxLength": 500
                        }
                      },
                      "required": [
                        "objection",
                        "response"
                      ],
                      "additionalProperties": false
                    },
                    "maxItems": 10
                  },
                  "anti_persona": {
                    "type": "string",
                    "minLength": 2,
                    "maxLength": 500
                  },
                  "words_to_use": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "minLength": 1,
                      "maxLength": 120
                    },
                    "maxItems": 30
                  },
                  "words_to_avoid": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "minLength": 1,
                      "maxLength": 120
                    },
                    "maxItems": 30
                  },
                  "proof_points": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "claim": {
                          "type": "string",
                          "minLength": 2,
                          "maxLength": 300
                        },
                        "evidence": {
                          "type": "string",
                          "minLength": 2,
                          "maxLength": 500
                        }
                      },
                      "required": [
                        "claim",
                        "evidence"
                      ],
                      "additionalProperties": false
                    },
                    "maxItems": 12
                  },
                  "voice_notes": {
                    "type": "string",
                    "minLength": 2,
                    "maxLength": 800
                  }
                },
                "additionalProperties": false
              },
              "updated_at": {
                "type": "string",
                "format": "date-time",
                "nullable": true
              }
            },
            "required": [
              "schema_version",
              "kind",
              "brief",
              "updated_at"
            ],
            "additionalProperties": false
          }
        },
        "required": [
          "data"
        ],
        "additionalProperties": false
      },
      "MemoryBriefUpdateRequest": {
        "type": "object",
        "properties": {
          "personas": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 2,
              "maxLength": 300
            },
            "maxItems": 8
          },
          "jtbd_forces": {
            "type": "object",
            "properties": {
              "push": {
                "type": "string",
                "minLength": 2,
                "maxLength": 500
              },
              "pull": {
                "type": "string",
                "minLength": 2,
                "maxLength": 500
              },
              "habit": {
                "type": "string",
                "minLength": 2,
                "maxLength": 500
              },
              "anxiety": {
                "type": "string",
                "minLength": 2,
                "maxLength": 500
              }
            },
            "additionalProperties": false
          },
          "objections": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "objection": {
                  "type": "string",
                  "minLength": 2,
                  "maxLength": 300
                },
                "response": {
                  "type": "string",
                  "minLength": 2,
                  "maxLength": 500
                }
              },
              "required": [
                "objection",
                "response"
              ],
              "additionalProperties": false
            },
            "maxItems": 10
          },
          "anti_persona": {
            "type": "string",
            "minLength": 2,
            "maxLength": 500
          },
          "words_to_use": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1,
              "maxLength": 120
            },
            "maxItems": 30
          },
          "words_to_avoid": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1,
              "maxLength": 120
            },
            "maxItems": 30
          },
          "proof_points": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "claim": {
                  "type": "string",
                  "minLength": 2,
                  "maxLength": 300
                },
                "evidence": {
                  "type": "string",
                  "minLength": 2,
                  "maxLength": 500
                }
              },
              "required": [
                "claim",
                "evidence"
              ],
              "additionalProperties": false
            },
            "maxItems": 12
          },
          "voice_notes": {
            "type": "string",
            "minLength": 2,
            "maxLength": 800
          }
        },
        "additionalProperties": false
      },
      "IntelligenceContextResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "schema_version": {
                "type": "string",
                "enum": [
                  "intelligence-context@1"
                ]
              },
              "kind": {
                "type": "string",
                "enum": [
                  "intelligence_context"
                ]
              },
              "documents": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "slug": {
                      "type": "string",
                      "enum": [
                        "brand-truth",
                        "products",
                        "customer-profiles",
                        "voice-of-customer",
                        "competitors",
                        "creative-patterns",
                        "performance-learnings"
                      ]
                    },
                    "title": {
                      "type": "string",
                      "minLength": 1,
                      "maxLength": 200
                    },
                    "version": {
                      "type": "integer",
                      "minimum": 1,
                      "maximum": 1000000
                    },
                    "updated_at": {
                      "type": "string",
                      "format": "date-time"
                    },
                    "markdown": {
                      "type": "string",
                      "maxLength": 18000
                    },
                    "truncated": {
                      "type": "boolean"
                    }
                  },
                  "required": [
                    "slug",
                    "title",
                    "version",
                    "updated_at",
                    "markdown",
                    "truncated"
                  ],
                  "additionalProperties": false
                },
                "maxItems": 7
              },
              "total_characters": {
                "type": "integer",
                "minimum": 0,
                "maximum": 72000
              },
              "max_characters_per_document": {
                "type": "number",
                "enum": [
                  18000
                ]
              },
              "max_total_characters": {
                "type": "number",
                "enum": [
                  72000
                ]
              }
            },
            "required": [
              "schema_version",
              "kind",
              "documents",
              "total_characters",
              "max_characters_per_document",
              "max_total_characters"
            ],
            "additionalProperties": false
          }
        },
        "required": [
          "data"
        ],
        "additionalProperties": false
      },
      "IntelligenceDocumentListResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "slug": {
                  "type": "string",
                  "enum": [
                    "brand-truth",
                    "products",
                    "customer-profiles",
                    "voice-of-customer",
                    "competitors",
                    "creative-patterns",
                    "performance-learnings"
                  ]
                },
                "title": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 200
                },
                "description": {
                  "type": "string",
                  "maxLength": 500,
                  "nullable": true
                },
                "status": {
                  "type": "string",
                  "enum": [
                    "active",
                    "archived"
                  ]
                },
                "version": {
                  "type": "integer",
                  "minimum": 1,
                  "maximum": 1000000
                },
                "summary": {
                  "type": "string",
                  "maxLength": 500,
                  "nullable": true
                },
                "last_compiled_at": {
                  "type": "string",
                  "format": "date-time",
                  "nullable": true
                },
                "created_at": {
                  "type": "string",
                  "format": "date-time"
                },
                "updated_at": {
                  "type": "string",
                  "format": "date-time"
                }
              },
              "required": [
                "slug",
                "title",
                "description",
                "status",
                "version",
                "summary",
                "last_compiled_at",
                "created_at",
                "updated_at"
              ],
              "additionalProperties": false
            },
            "maxItems": 7
          }
        },
        "required": [
          "data"
        ],
        "additionalProperties": false
      },
      "IntelligenceDocumentResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "slug": {
                "type": "string",
                "enum": [
                  "brand-truth",
                  "products",
                  "customer-profiles",
                  "voice-of-customer",
                  "competitors",
                  "creative-patterns",
                  "performance-learnings"
                ]
              },
              "title": {
                "type": "string",
                "minLength": 1,
                "maxLength": 200
              },
              "description": {
                "type": "string",
                "maxLength": 500,
                "nullable": true
              },
              "status": {
                "type": "string",
                "enum": [
                  "active",
                  "archived"
                ]
              },
              "version": {
                "type": "integer",
                "minimum": 1,
                "maximum": 1000000
              },
              "summary": {
                "type": "string",
                "maxLength": 500,
                "nullable": true
              },
              "last_compiled_at": {
                "type": "string",
                "format": "date-time",
                "nullable": true
              },
              "created_at": {
                "type": "string",
                "format": "date-time"
              },
              "updated_at": {
                "type": "string",
                "format": "date-time"
              },
              "markdown": {
                "type": "string",
                "maxLength": 65536
              },
              "structured": {
                "type": "object",
                "additionalProperties": {},
                "nullable": true
              },
              "generator": {
                "type": "string",
                "minLength": 1,
                "maxLength": 100
              },
              "source_observed_at": {
                "type": "string",
                "format": "date-time",
                "nullable": true
              }
            },
            "required": [
              "slug",
              "title",
              "description",
              "status",
              "version",
              "summary",
              "last_compiled_at",
              "created_at",
              "updated_at",
              "markdown",
              "structured",
              "generator",
              "source_observed_at"
            ],
            "additionalProperties": false
          }
        },
        "required": [
          "data"
        ],
        "additionalProperties": false
      },
      "IntelligenceRefreshResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "schema_version": {
                "type": "string",
                "enum": [
                  "intelligence-refresh@1"
                ]
              },
              "kind": {
                "type": "string",
                "enum": [
                  "intelligence_refresh"
                ]
              },
              "refreshed_at": {
                "type": "string",
                "format": "date-time"
              },
              "credits": {
                "type": "number",
                "enum": [
                  0
                ]
              },
              "documents": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "slug": {
                      "type": "string",
                      "enum": [
                        "brand-truth",
                        "products",
                        "customer-profiles",
                        "voice-of-customer",
                        "competitors",
                        "creative-patterns",
                        "performance-learnings"
                      ]
                    },
                    "version": {
                      "type": "integer",
                      "minimum": 1,
                      "maximum": 1000000,
                      "nullable": true
                    },
                    "changed": {
                      "type": "boolean"
                    }
                  },
                  "required": [
                    "slug",
                    "version",
                    "changed"
                  ],
                  "additionalProperties": false
                },
                "maxItems": 7
              }
            },
            "required": [
              "schema_version",
              "kind",
              "refreshed_at",
              "credits",
              "documents"
            ],
            "additionalProperties": false
          }
        },
        "required": [
          "data"
        ],
        "additionalProperties": false
      },
      "AgentCompletionRequest": {
        "type": "object",
        "properties": {
          "text": {
            "type": "string",
            "minLength": 1,
            "maxLength": 8000
          },
          "conversation_id": {
            "type": "string",
            "format": "uuid"
          },
          "finished_ad": {
            "type": "boolean",
            "default": false
          },
          "max_credits": {
            "type": "integer",
            "minimum": 0,
            "maximum": 100000
          },
          "generation_spend_cap_credits": {
            "type": "integer",
            "minimum": 0,
            "maximum": 100000
          },
          "quote_only": {
            "type": "boolean",
            "default": false
          },
          "quote_id": {
            "type": "string",
            "format": "uuid"
          }
        },
        "required": [
          "text"
        ],
        "additionalProperties": false
      },
      "AgentRunResponse": {
        "type": "object",
        "properties": {
          "data": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "schema_version": {
                    "type": "string",
                    "enum": [
                      "agent-run@1"
                    ]
                  },
                  "kind": {
                    "type": "string",
                    "enum": [
                      "agent_run"
                    ]
                  },
                  "id": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "trigger": {
                    "type": "string",
                    "enum": [
                      "chat",
                      "skill",
                      "routine",
                      "workflow",
                      "api"
                    ]
                  },
                  "skill_id": {
                    "type": "string",
                    "format": "uuid",
                    "nullable": true
                  },
                  "conversation_id": {
                    "type": "string",
                    "format": "uuid",
                    "nullable": true
                  },
                  "max_credits": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 1000000000
                  },
                  "generation_spend_cap_credits": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 1000000000
                  },
                  "pricing_version": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 80
                  },
                  "created_at": {
                    "type": "string",
                    "format": "date-time"
                  },
                  "updated_at": {
                    "type": "string",
                    "format": "date-time"
                  },
                  "status": {
                    "type": "string",
                    "enum": [
                      "quoted"
                    ]
                  },
                  "credits_reserved": {
                    "type": "number",
                    "enum": [
                      0
                    ]
                  },
                  "credits_max": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 1000000000
                  },
                  "quote_id": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "expires_at": {
                    "type": "string",
                    "format": "date-time"
                  },
                  "authorization": {
                    "anyOf": [
                      {
                        "type": "object",
                        "properties": {
                          "status": {
                            "type": "string",
                            "enum": [
                              "auto_approved"
                            ]
                          }
                        },
                        "required": [
                          "status"
                        ],
                        "additionalProperties": false
                      },
                      {
                        "type": "object",
                        "properties": {
                          "status": {
                            "type": "string",
                            "enum": [
                              "approval_required"
                            ]
                          },
                          "authorize_url": {
                            "type": "string",
                            "format": "uri",
                            "maxLength": 2048
                          }
                        },
                        "required": [
                          "status",
                          "authorize_url"
                        ],
                        "additionalProperties": false
                      }
                    ]
                  }
                },
                "required": [
                  "schema_version",
                  "kind",
                  "id",
                  "trigger",
                  "skill_id",
                  "conversation_id",
                  "max_credits",
                  "generation_spend_cap_credits",
                  "pricing_version",
                  "created_at",
                  "updated_at",
                  "status",
                  "credits_reserved",
                  "credits_max",
                  "quote_id",
                  "expires_at",
                  "authorization"
                ],
                "additionalProperties": false
              },
              {
                "type": "object",
                "properties": {
                  "schema_version": {
                    "type": "string",
                    "enum": [
                      "agent-run@1"
                    ]
                  },
                  "kind": {
                    "type": "string",
                    "enum": [
                      "agent_run"
                    ]
                  },
                  "id": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "trigger": {
                    "type": "string",
                    "enum": [
                      "chat",
                      "skill",
                      "routine",
                      "workflow",
                      "api"
                    ]
                  },
                  "skill_id": {
                    "type": "string",
                    "format": "uuid",
                    "nullable": true
                  },
                  "conversation_id": {
                    "type": "string",
                    "format": "uuid",
                    "nullable": true
                  },
                  "max_credits": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 1000000000
                  },
                  "generation_spend_cap_credits": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 1000000000
                  },
                  "pricing_version": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 80
                  },
                  "created_at": {
                    "type": "string",
                    "format": "date-time"
                  },
                  "updated_at": {
                    "type": "string",
                    "format": "date-time"
                  },
                  "status": {
                    "type": "string",
                    "enum": [
                      "processing"
                    ]
                  },
                  "credits_reserved": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 1000000000
                  },
                  "started_at": {
                    "type": "string",
                    "format": "date-time"
                  },
                  "pending_approvals": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "gate_id": {
                          "type": "string",
                          "format": "uuid"
                        },
                        "summary": {
                          "type": "string",
                          "minLength": 1,
                          "maxLength": 400
                        },
                        "credits": {
                          "type": "integer",
                          "minimum": 0,
                          "maximum": 1000000000,
                          "nullable": true
                        },
                        "items": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "index": {
                                "type": "integer",
                                "minimum": 0,
                                "maximum": 7
                              },
                              "summary": {
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 400
                              },
                              "credits": {
                                "type": "integer",
                                "minimum": 0,
                                "maximum": 1000000000,
                                "nullable": true
                              }
                            },
                            "required": [
                              "index",
                              "summary",
                              "credits"
                            ],
                            "additionalProperties": false
                          },
                          "minItems": 2,
                          "maxItems": 8
                        },
                        "expires_at": {
                          "type": "string",
                          "format": "date-time"
                        },
                        "approve_url": {
                          "type": "string",
                          "format": "uri",
                          "maxLength": 2048
                        }
                      },
                      "required": [
                        "gate_id",
                        "summary",
                        "credits",
                        "expires_at",
                        "approve_url"
                      ],
                      "additionalProperties": false
                    },
                    "maxItems": 20
                  }
                },
                "required": [
                  "schema_version",
                  "kind",
                  "id",
                  "trigger",
                  "skill_id",
                  "conversation_id",
                  "max_credits",
                  "generation_spend_cap_credits",
                  "pricing_version",
                  "created_at",
                  "updated_at",
                  "status",
                  "credits_reserved",
                  "started_at",
                  "pending_approvals"
                ],
                "additionalProperties": false
              },
              {
                "type": "object",
                "properties": {
                  "schema_version": {
                    "type": "string",
                    "enum": [
                      "agent-run@1"
                    ]
                  },
                  "kind": {
                    "type": "string",
                    "enum": [
                      "agent_run"
                    ]
                  },
                  "id": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "trigger": {
                    "type": "string",
                    "enum": [
                      "chat",
                      "skill",
                      "routine",
                      "workflow",
                      "api"
                    ]
                  },
                  "skill_id": {
                    "type": "string",
                    "format": "uuid",
                    "nullable": true
                  },
                  "conversation_id": {
                    "type": "string",
                    "format": "uuid",
                    "nullable": true
                  },
                  "max_credits": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 1000000000
                  },
                  "generation_spend_cap_credits": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 1000000000
                  },
                  "pricing_version": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 80
                  },
                  "created_at": {
                    "type": "string",
                    "format": "date-time"
                  },
                  "updated_at": {
                    "type": "string",
                    "format": "date-time"
                  },
                  "status": {
                    "type": "string",
                    "enum": [
                      "canceling"
                    ]
                  },
                  "credits_reserved": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 1000000000
                  },
                  "started_at": {
                    "type": "string",
                    "format": "date-time"
                  },
                  "cancel_requested_at": {
                    "type": "string",
                    "format": "date-time"
                  },
                  "pending_approvals": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "gate_id": {
                          "type": "string",
                          "format": "uuid"
                        },
                        "summary": {
                          "type": "string",
                          "minLength": 1,
                          "maxLength": 400
                        },
                        "credits": {
                          "type": "integer",
                          "minimum": 0,
                          "maximum": 1000000000,
                          "nullable": true
                        },
                        "items": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "index": {
                                "type": "integer",
                                "minimum": 0,
                                "maximum": 7
                              },
                              "summary": {
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 400
                              },
                              "credits": {
                                "type": "integer",
                                "minimum": 0,
                                "maximum": 1000000000,
                                "nullable": true
                              }
                            },
                            "required": [
                              "index",
                              "summary",
                              "credits"
                            ],
                            "additionalProperties": false
                          },
                          "minItems": 2,
                          "maxItems": 8
                        },
                        "expires_at": {
                          "type": "string",
                          "format": "date-time"
                        },
                        "approve_url": {
                          "type": "string",
                          "format": "uri",
                          "maxLength": 2048
                        }
                      },
                      "required": [
                        "gate_id",
                        "summary",
                        "credits",
                        "expires_at",
                        "approve_url"
                      ],
                      "additionalProperties": false
                    },
                    "maxItems": 20
                  }
                },
                "required": [
                  "schema_version",
                  "kind",
                  "id",
                  "trigger",
                  "skill_id",
                  "conversation_id",
                  "max_credits",
                  "generation_spend_cap_credits",
                  "pricing_version",
                  "created_at",
                  "updated_at",
                  "status",
                  "credits_reserved",
                  "started_at",
                  "cancel_requested_at",
                  "pending_approvals"
                ],
                "additionalProperties": false
              },
              {
                "type": "object",
                "properties": {
                  "schema_version": {
                    "type": "string",
                    "enum": [
                      "agent-run@1"
                    ]
                  },
                  "kind": {
                    "type": "string",
                    "enum": [
                      "agent_run"
                    ]
                  },
                  "id": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "trigger": {
                    "type": "string",
                    "enum": [
                      "chat",
                      "skill",
                      "routine",
                      "workflow",
                      "api"
                    ]
                  },
                  "skill_id": {
                    "type": "string",
                    "format": "uuid",
                    "nullable": true
                  },
                  "conversation_id": {
                    "type": "string",
                    "format": "uuid",
                    "nullable": true
                  },
                  "max_credits": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 1000000000
                  },
                  "generation_spend_cap_credits": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 1000000000
                  },
                  "pricing_version": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 80
                  },
                  "created_at": {
                    "type": "string",
                    "format": "date-time"
                  },
                  "updated_at": {
                    "type": "string",
                    "format": "date-time"
                  },
                  "status": {
                    "type": "string",
                    "enum": [
                      "completed"
                    ]
                  },
                  "credits_reserved": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 1000000000
                  },
                  "completed_at": {
                    "type": "string",
                    "format": "date-time"
                  },
                  "result_ready": {
                    "type": "boolean",
                    "enum": [
                      true
                    ]
                  },
                  "pending_approvals": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "gate_id": {
                          "type": "string",
                          "format": "uuid"
                        },
                        "summary": {
                          "type": "string",
                          "minLength": 1,
                          "maxLength": 400
                        },
                        "credits": {
                          "type": "integer",
                          "minimum": 0,
                          "maximum": 1000000000,
                          "nullable": true
                        },
                        "items": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "index": {
                                "type": "integer",
                                "minimum": 0,
                                "maximum": 7
                              },
                              "summary": {
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 400
                              },
                              "credits": {
                                "type": "integer",
                                "minimum": 0,
                                "maximum": 1000000000,
                                "nullable": true
                              }
                            },
                            "required": [
                              "index",
                              "summary",
                              "credits"
                            ],
                            "additionalProperties": false
                          },
                          "minItems": 2,
                          "maxItems": 8
                        },
                        "expires_at": {
                          "type": "string",
                          "format": "date-time"
                        },
                        "approve_url": {
                          "type": "string",
                          "format": "uri",
                          "maxLength": 2048
                        }
                      },
                      "required": [
                        "gate_id",
                        "summary",
                        "credits",
                        "expires_at",
                        "approve_url"
                      ],
                      "additionalProperties": false
                    },
                    "maxItems": 20
                  },
                  "usage": {
                    "type": "object",
                    "properties": {
                      "model": {
                        "type": "string",
                        "minLength": 1,
                        "maxLength": 120,
                        "nullable": true
                      },
                      "pricing_version": {
                        "type": "string",
                        "minLength": 1,
                        "maxLength": 80
                      },
                      "input_tokens": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 1000000
                      },
                      "cached_input_tokens": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 1000000
                      },
                      "output_tokens": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 1000000
                      },
                      "steps": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 1000000
                      },
                      "tool_calls": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 1000000
                      },
                      "credits_reserved": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 1000000000
                      },
                      "credits_charged": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 1000000000
                      },
                      "credits_refunded": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 1000000000
                      },
                      "generation_credits_charged": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 1000000000
                      }
                    },
                    "required": [
                      "model",
                      "pricing_version",
                      "input_tokens",
                      "cached_input_tokens",
                      "output_tokens",
                      "steps",
                      "tool_calls",
                      "credits_reserved",
                      "credits_charged",
                      "credits_refunded",
                      "generation_credits_charged"
                    ],
                    "additionalProperties": false
                  }
                },
                "required": [
                  "schema_version",
                  "kind",
                  "id",
                  "trigger",
                  "skill_id",
                  "conversation_id",
                  "max_credits",
                  "generation_spend_cap_credits",
                  "pricing_version",
                  "created_at",
                  "updated_at",
                  "status",
                  "credits_reserved",
                  "completed_at",
                  "result_ready",
                  "pending_approvals",
                  "usage"
                ],
                "additionalProperties": false
              },
              {
                "type": "object",
                "properties": {
                  "schema_version": {
                    "type": "string",
                    "enum": [
                      "agent-run@1"
                    ]
                  },
                  "kind": {
                    "type": "string",
                    "enum": [
                      "agent_run"
                    ]
                  },
                  "id": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "trigger": {
                    "type": "string",
                    "enum": [
                      "chat",
                      "skill",
                      "routine",
                      "workflow",
                      "api"
                    ]
                  },
                  "skill_id": {
                    "type": "string",
                    "format": "uuid",
                    "nullable": true
                  },
                  "conversation_id": {
                    "type": "string",
                    "format": "uuid",
                    "nullable": true
                  },
                  "max_credits": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 1000000000
                  },
                  "generation_spend_cap_credits": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 1000000000
                  },
                  "pricing_version": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 80
                  },
                  "created_at": {
                    "type": "string",
                    "format": "date-time"
                  },
                  "updated_at": {
                    "type": "string",
                    "format": "date-time"
                  },
                  "status": {
                    "type": "string",
                    "enum": [
                      "failed"
                    ]
                  },
                  "credits_reserved": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 1000000000
                  },
                  "completed_at": {
                    "type": "string",
                    "format": "date-time"
                  },
                  "error": {
                    "type": "object",
                    "properties": {
                      "code": {
                        "type": "string",
                        "minLength": 1,
                        "maxLength": 128
                      },
                      "message": {
                        "type": "string",
                        "minLength": 1,
                        "maxLength": 400
                      }
                    },
                    "required": [
                      "code",
                      "message"
                    ],
                    "additionalProperties": false
                  },
                  "usage": {
                    "type": "object",
                    "properties": {
                      "model": {
                        "type": "string",
                        "minLength": 1,
                        "maxLength": 120,
                        "nullable": true
                      },
                      "pricing_version": {
                        "type": "string",
                        "minLength": 1,
                        "maxLength": 80
                      },
                      "input_tokens": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 1000000
                      },
                      "cached_input_tokens": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 1000000
                      },
                      "output_tokens": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 1000000
                      },
                      "steps": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 1000000
                      },
                      "tool_calls": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 1000000
                      },
                      "credits_reserved": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 1000000000
                      },
                      "credits_charged": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 1000000000
                      },
                      "credits_refunded": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 1000000000
                      },
                      "generation_credits_charged": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 1000000000
                      }
                    },
                    "required": [
                      "model",
                      "pricing_version",
                      "input_tokens",
                      "cached_input_tokens",
                      "output_tokens",
                      "steps",
                      "tool_calls",
                      "credits_reserved",
                      "credits_charged",
                      "credits_refunded",
                      "generation_credits_charged"
                    ],
                    "additionalProperties": false
                  }
                },
                "required": [
                  "schema_version",
                  "kind",
                  "id",
                  "trigger",
                  "skill_id",
                  "conversation_id",
                  "max_credits",
                  "generation_spend_cap_credits",
                  "pricing_version",
                  "created_at",
                  "updated_at",
                  "status",
                  "credits_reserved",
                  "completed_at",
                  "error",
                  "usage"
                ],
                "additionalProperties": false
              },
              {
                "type": "object",
                "properties": {
                  "schema_version": {
                    "type": "string",
                    "enum": [
                      "agent-run@1"
                    ]
                  },
                  "kind": {
                    "type": "string",
                    "enum": [
                      "agent_run"
                    ]
                  },
                  "id": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "trigger": {
                    "type": "string",
                    "enum": [
                      "chat",
                      "skill",
                      "routine",
                      "workflow",
                      "api"
                    ]
                  },
                  "skill_id": {
                    "type": "string",
                    "format": "uuid",
                    "nullable": true
                  },
                  "conversation_id": {
                    "type": "string",
                    "format": "uuid",
                    "nullable": true
                  },
                  "max_credits": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 1000000000
                  },
                  "generation_spend_cap_credits": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 1000000000
                  },
                  "pricing_version": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 80
                  },
                  "created_at": {
                    "type": "string",
                    "format": "date-time"
                  },
                  "updated_at": {
                    "type": "string",
                    "format": "date-time"
                  },
                  "status": {
                    "type": "string",
                    "enum": [
                      "canceled"
                    ]
                  },
                  "credits_reserved": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 1000000000
                  },
                  "completed_at": {
                    "type": "string",
                    "format": "date-time"
                  },
                  "usage": {
                    "type": "object",
                    "properties": {
                      "model": {
                        "type": "string",
                        "minLength": 1,
                        "maxLength": 120,
                        "nullable": true
                      },
                      "pricing_version": {
                        "type": "string",
                        "minLength": 1,
                        "maxLength": 80
                      },
                      "input_tokens": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 1000000
                      },
                      "cached_input_tokens": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 1000000
                      },
                      "output_tokens": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 1000000
                      },
                      "steps": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 1000000
                      },
                      "tool_calls": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 1000000
                      },
                      "credits_reserved": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 1000000000
                      },
                      "credits_charged": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 1000000000
                      },
                      "credits_refunded": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 1000000000
                      },
                      "generation_credits_charged": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 1000000000
                      }
                    },
                    "required": [
                      "model",
                      "pricing_version",
                      "input_tokens",
                      "cached_input_tokens",
                      "output_tokens",
                      "steps",
                      "tool_calls",
                      "credits_reserved",
                      "credits_charged",
                      "credits_refunded",
                      "generation_credits_charged"
                    ],
                    "additionalProperties": false
                  }
                },
                "required": [
                  "schema_version",
                  "kind",
                  "id",
                  "trigger",
                  "skill_id",
                  "conversation_id",
                  "max_credits",
                  "generation_spend_cap_credits",
                  "pricing_version",
                  "created_at",
                  "updated_at",
                  "status",
                  "credits_reserved",
                  "completed_at",
                  "usage"
                ],
                "additionalProperties": false
              }
            ]
          }
        },
        "required": [
          "data"
        ],
        "additionalProperties": false
      },
      "AgentRunStatusResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "format": "uuid"
              },
              "status": {
                "type": "string",
                "enum": [
                  "quoted",
                  "processing",
                  "canceling",
                  "completed",
                  "failed",
                  "canceled"
                ]
              },
              "updated_at": {
                "type": "string",
                "format": "date-time"
              }
            },
            "required": [
              "id",
              "status",
              "updated_at"
            ],
            "additionalProperties": false
          }
        },
        "required": [
          "data"
        ],
        "additionalProperties": false
      },
      "AgentRunResultResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "schema_version": {
                "type": "string",
                "enum": [
                  "agent-run-result@1"
                ]
              },
              "kind": {
                "type": "string",
                "enum": [
                  "agent_run_result"
                ]
              },
              "run_id": {
                "type": "string",
                "format": "uuid"
              },
              "conversation_id": {
                "type": "string",
                "format": "uuid",
                "nullable": true
              },
              "trigger": {
                "type": "string",
                "enum": [
                  "chat",
                  "skill",
                  "routine",
                  "workflow",
                  "api"
                ]
              },
              "skill_id": {
                "type": "string",
                "format": "uuid",
                "nullable": true
              },
              "status": {
                "type": "string",
                "enum": [
                  "completed"
                ]
              },
              "text": {
                "type": "string",
                "maxLength": 200000
              },
              "url": {
                "type": "string",
                "format": "uri",
                "maxLength": 2048
              },
              "completed_at": {
                "type": "string",
                "format": "date-time"
              },
              "usage": {
                "type": "object",
                "properties": {
                  "model": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 120,
                    "nullable": true
                  },
                  "pricing_version": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 80
                  },
                  "input_tokens": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 1000000
                  },
                  "cached_input_tokens": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 1000000
                  },
                  "output_tokens": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 1000000
                  },
                  "steps": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 1000000
                  },
                  "tool_calls": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 1000000
                  },
                  "credits_reserved": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 1000000000
                  },
                  "credits_charged": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 1000000000
                  },
                  "credits_refunded": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 1000000000
                  },
                  "generation_credits_charged": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 1000000000
                  }
                },
                "required": [
                  "model",
                  "pricing_version",
                  "input_tokens",
                  "cached_input_tokens",
                  "output_tokens",
                  "steps",
                  "tool_calls",
                  "credits_reserved",
                  "credits_charged",
                  "credits_refunded",
                  "generation_credits_charged"
                ],
                "additionalProperties": false
              }
            },
            "required": [
              "schema_version",
              "kind",
              "run_id",
              "conversation_id",
              "trigger",
              "skill_id",
              "status",
              "text",
              "url",
              "completed_at",
              "usage"
            ],
            "additionalProperties": false
          }
        },
        "required": [
          "data"
        ],
        "additionalProperties": false
      },
      "AgentRunEventsResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "seq": {
                  "type": "integer",
                  "minimum": 0
                },
                "event": {
                  "type": "string",
                  "enum": [
                    "accepted",
                    "started",
                    "tool_called",
                    "gate_opened",
                    "gate_auto_approved",
                    "generation_started",
                    "settled",
                    "failed",
                    "cancelled"
                  ]
                },
                "at": {
                  "type": "string",
                  "format": "date-time"
                }
              },
              "required": [
                "seq",
                "event",
                "at"
              ],
              "additionalProperties": false
            },
            "maxItems": 500
          }
        },
        "required": [
          "data"
        ],
        "additionalProperties": false
      },
      "AgentGateDeclineRequest": {
        "type": "object",
        "properties": {
          "note": {
            "type": "string",
            "maxLength": 400
          }
        },
        "additionalProperties": false
      },
      "AgentGateDecisionResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "gate_id": {
                "type": "string",
                "format": "uuid"
              },
              "run_id": {
                "type": "string",
                "format": "uuid"
              },
              "status": {
                "type": "string",
                "enum": [
                  "declined",
                  "already_decided",
                  "expired"
                ]
              },
              "decided_at": {
                "type": "string",
                "format": "date-time",
                "nullable": true
              }
            },
            "required": [
              "gate_id",
              "run_id",
              "status",
              "decided_at"
            ],
            "additionalProperties": false
          }
        },
        "required": [
          "data"
        ],
        "additionalProperties": false
      },
      "AgentGateApproveRequest": {
        "type": "object",
        "properties": {
          "note": {
            "type": "string",
            "maxLength": 400
          },
          "drop": {
            "type": "array",
            "items": {
              "type": "integer",
              "minimum": 0,
              "maximum": 7
            },
            "maxItems": 8
          },
          "max_credits": {
            "type": "integer",
            "minimum": 0,
            "maximum": 100000
          },
          "generation_spend_cap_credits": {
            "type": "integer",
            "minimum": 0,
            "maximum": 100000
          }
        },
        "additionalProperties": false
      },
      "AgentGateApprovalResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "gate_id": {
                "type": "string",
                "format": "uuid"
              },
              "run_id": {
                "type": "string",
                "format": "uuid"
              },
              "status": {
                "type": "string",
                "enum": [
                  "approved",
                  "already_decided",
                  "expired"
                ]
              },
              "decided_at": {
                "type": "string",
                "format": "date-time",
                "nullable": true
              },
              "follow_up_run_id": {
                "type": "string",
                "format": "uuid",
                "nullable": true
              }
            },
            "required": [
              "gate_id",
              "run_id",
              "status",
              "decided_at",
              "follow_up_run_id"
            ],
            "additionalProperties": false
          }
        },
        "required": [
          "data"
        ],
        "additionalProperties": false
      },
      "SkillListResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "anyOf": [
                    {
                      "type": "string",
                      "format": "uuid"
                    },
                    {
                      "type": "string",
                      "pattern": "^guide:[a-z0-9._-]{1,64}$"
                    }
                  ]
                },
                "slug": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 70,
                  "nullable": true
                },
                "name": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 60
                },
                "description": {
                  "type": "string",
                  "maxLength": 200,
                  "nullable": true
                },
                "prompt": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 12000,
                  "nullable": true
                },
                "use_count": {
                  "type": "integer",
                  "minimum": 0,
                  "maximum": 1000000
                },
                "pack_version": {
                  "type": "integer",
                  "minimum": 1,
                  "maximum": 1000000,
                  "nullable": true
                },
                "created_at": {
                  "type": "string",
                  "format": "date-time"
                },
                "updated_at": {
                  "type": "string",
                  "format": "date-time"
                },
                "kind": {
                  "type": "string",
                  "enum": [
                    "guide"
                  ]
                },
                "requires": {
                  "type": "object",
                  "properties": {
                    "tools": {
                      "type": "array",
                      "items": {
                        "type": "string",
                        "pattern": "^roasos_[a-z0-9_]+$"
                      },
                      "maxItems": 60
                    },
                    "host_features": {
                      "type": "array",
                      "items": {
                        "type": "string",
                        "maxLength": 64
                      },
                      "maxItems": 12
                    }
                  },
                  "required": [
                    "tools",
                    "host_features"
                  ],
                  "additionalProperties": false
                }
              },
              "required": [
                "id",
                "slug",
                "name",
                "description",
                "prompt",
                "use_count",
                "pack_version",
                "created_at",
                "updated_at"
              ],
              "additionalProperties": false
            }
          },
          "meta": {
            "type": "object",
            "properties": {
              "cursor": {
                "type": "string",
                "minLength": 1,
                "maxLength": 4096
              },
              "has_more": {
                "type": "boolean"
              }
            },
            "required": [
              "has_more"
            ],
            "additionalProperties": false
          }
        },
        "required": [
          "data",
          "meta"
        ],
        "additionalProperties": false
      },
      "SkillDetailResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "anyOf": [
                  {
                    "type": "string",
                    "format": "uuid"
                  },
                  {
                    "type": "string",
                    "pattern": "^guide:[a-z0-9._-]{1,64}$"
                  }
                ]
              },
              "slug": {
                "type": "string",
                "minLength": 1,
                "maxLength": 70,
                "nullable": true
              },
              "name": {
                "type": "string",
                "minLength": 1,
                "maxLength": 60
              },
              "description": {
                "type": "string",
                "maxLength": 200,
                "nullable": true
              },
              "prompt": {
                "type": "string",
                "minLength": 1,
                "maxLength": 12000,
                "nullable": true
              },
              "use_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 1000000
              },
              "pack_version": {
                "type": "integer",
                "minimum": 1,
                "maximum": 1000000,
                "nullable": true
              },
              "created_at": {
                "type": "string",
                "format": "date-time"
              },
              "updated_at": {
                "type": "string",
                "format": "date-time"
              },
              "kind": {
                "type": "string",
                "enum": [
                  "guide"
                ]
              },
              "requires": {
                "type": "object",
                "properties": {
                  "tools": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "pattern": "^roasos_[a-z0-9_]+$"
                    },
                    "maxItems": 60
                  },
                  "host_features": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "maxLength": 64
                    },
                    "maxItems": 12
                  }
                },
                "required": [
                  "tools",
                  "host_features"
                ],
                "additionalProperties": false
              }
            },
            "required": [
              "id",
              "slug",
              "name",
              "description",
              "prompt",
              "use_count",
              "pack_version",
              "created_at",
              "updated_at"
            ],
            "additionalProperties": false
          }
        },
        "required": [
          "data"
        ],
        "additionalProperties": false
      },
      "SkillRunRequest": {
        "type": "object",
        "properties": {
          "max_credits": {
            "type": "integer",
            "minimum": 0,
            "maximum": 100000
          },
          "generation_spend_cap_credits": {
            "type": "integer",
            "minimum": 0,
            "maximum": 100000
          },
          "quote_only": {
            "type": "boolean",
            "default": false
          },
          "quote_id": {
            "type": "string",
            "format": "uuid"
          }
        },
        "additionalProperties": false
      },
      "JobSubmissionResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "format": "uuid"
              },
              "type": {
                "type": "string",
                "enum": [
                  "image",
                  "video",
                  "audio",
                  "lipsync",
                  "scene"
                ]
              },
              "status": {
                "type": "string",
                "enum": [
                  "processing"
                ]
              },
              "model": {
                "type": "string",
                "minLength": 1,
                "maxLength": 200
              },
              "credits_used": {
                "type": "integer",
                "exclusiveMinimum": true,
                "minimum": 0
              },
              "credits_remaining": {
                "type": "integer",
                "minimum": 0
              },
              "estimated_seconds": {
                "type": "integer",
                "exclusiveMinimum": true,
                "minimum": 0,
                "maximum": 86400
              },
              "created_at": {
                "type": "string",
                "format": "date-time"
              }
            },
            "required": [
              "id",
              "type",
              "status",
              "model",
              "credits_used",
              "credits_remaining",
              "estimated_seconds",
              "created_at"
            ],
            "additionalProperties": false
          }
        },
        "required": [
          "data"
        ],
        "additionalProperties": false
      },
      "GenerationQuoteResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "kind": {
                "type": "string",
                "enum": [
                  "quote"
                ]
              },
              "quote_id": {
                "type": "string",
                "format": "uuid"
              },
              "reserved_credits": {
                "type": "integer",
                "exclusiveMinimum": true,
                "minimum": 0
              },
              "expires_at": {
                "type": "string",
                "format": "date-time"
              },
              "pricing_version": {
                "type": "string",
                "minLength": 1,
                "maxLength": 80
              },
              "authorization": {
                "anyOf": [
                  {
                    "type": "object",
                    "properties": {
                      "status": {
                        "type": "string",
                        "enum": [
                          "auto_approved"
                        ]
                      }
                    },
                    "required": [
                      "status"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "object",
                    "properties": {
                      "status": {
                        "type": "string",
                        "enum": [
                          "approval_required"
                        ]
                      },
                      "authorize_url": {
                        "type": "string",
                        "format": "uri",
                        "maxLength": 2048
                      }
                    },
                    "required": [
                      "status",
                      "authorize_url"
                    ],
                    "additionalProperties": false
                  }
                ]
              },
              "confirmation": {
                "type": "object",
                "properties": {
                  "generation_type": {
                    "type": "string",
                    "enum": [
                      "image",
                      "video",
                      "audio",
                      "lipsync",
                      "scene"
                    ]
                  },
                  "model": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 200
                  },
                  "mode": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 160
                  },
                  "resolution": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 32
                  },
                  "output_count": {
                    "type": "integer",
                    "exclusiveMinimum": true,
                    "minimum": 0,
                    "maximum": 16
                  },
                  "duration_seconds": {
                    "type": "number",
                    "exclusiveMinimum": true,
                    "minimum": 0,
                    "maximum": 3600
                  },
                  "generate_audio": {
                    "type": "boolean"
                  },
                  "reference_count": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 16
                  },
                  "text_length": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 1000000
                  }
                },
                "required": [
                  "generation_type",
                  "model"
                ],
                "additionalProperties": false
              }
            },
            "required": [
              "kind",
              "quote_id",
              "reserved_credits",
              "expires_at",
              "pricing_version",
              "authorization",
              "confirmation"
            ],
            "additionalProperties": false
          }
        },
        "required": [
          "data"
        ],
        "additionalProperties": false
      },
      "GenerationCreateResponse": {
        "type": "object",
        "properties": {
          "data": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "kind": {
                    "type": "string",
                    "enum": [
                      "quote"
                    ]
                  },
                  "quote_id": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "reserved_credits": {
                    "type": "integer",
                    "exclusiveMinimum": true,
                    "minimum": 0
                  },
                  "expires_at": {
                    "type": "string",
                    "format": "date-time"
                  },
                  "pricing_version": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 80
                  },
                  "authorization": {
                    "anyOf": [
                      {
                        "type": "object",
                        "properties": {
                          "status": {
                            "type": "string",
                            "enum": [
                              "auto_approved"
                            ]
                          }
                        },
                        "required": [
                          "status"
                        ],
                        "additionalProperties": false
                      },
                      {
                        "type": "object",
                        "properties": {
                          "status": {
                            "type": "string",
                            "enum": [
                              "approval_required"
                            ]
                          },
                          "authorize_url": {
                            "type": "string",
                            "format": "uri",
                            "maxLength": 2048
                          }
                        },
                        "required": [
                          "status",
                          "authorize_url"
                        ],
                        "additionalProperties": false
                      }
                    ]
                  },
                  "confirmation": {
                    "type": "object",
                    "properties": {
                      "generation_type": {
                        "type": "string",
                        "enum": [
                          "image",
                          "video",
                          "audio",
                          "lipsync",
                          "scene"
                        ]
                      },
                      "model": {
                        "type": "string",
                        "minLength": 1,
                        "maxLength": 200
                      },
                      "mode": {
                        "type": "string",
                        "minLength": 1,
                        "maxLength": 160
                      },
                      "resolution": {
                        "type": "string",
                        "minLength": 1,
                        "maxLength": 32
                      },
                      "output_count": {
                        "type": "integer",
                        "exclusiveMinimum": true,
                        "minimum": 0,
                        "maximum": 16
                      },
                      "duration_seconds": {
                        "type": "number",
                        "exclusiveMinimum": true,
                        "minimum": 0,
                        "maximum": 3600
                      },
                      "generate_audio": {
                        "type": "boolean"
                      },
                      "reference_count": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 16
                      },
                      "text_length": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 1000000
                      }
                    },
                    "required": [
                      "generation_type",
                      "model"
                    ],
                    "additionalProperties": false
                  }
                },
                "required": [
                  "kind",
                  "quote_id",
                  "reserved_credits",
                  "expires_at",
                  "pricing_version",
                  "authorization",
                  "confirmation"
                ],
                "additionalProperties": false
              },
              {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "type": {
                    "type": "string",
                    "enum": [
                      "image",
                      "video",
                      "audio",
                      "lipsync",
                      "scene"
                    ]
                  },
                  "status": {
                    "type": "string",
                    "enum": [
                      "processing"
                    ]
                  },
                  "model": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 200
                  },
                  "credits_used": {
                    "type": "integer",
                    "exclusiveMinimum": true,
                    "minimum": 0
                  },
                  "credits_remaining": {
                    "type": "integer",
                    "minimum": 0
                  },
                  "estimated_seconds": {
                    "type": "integer",
                    "exclusiveMinimum": true,
                    "minimum": 0,
                    "maximum": 86400
                  },
                  "created_at": {
                    "type": "string",
                    "format": "date-time"
                  }
                },
                "required": [
                  "id",
                  "type",
                  "status",
                  "model",
                  "credits_used",
                  "credits_remaining",
                  "estimated_seconds",
                  "created_at"
                ],
                "additionalProperties": false
              }
            ]
          }
        },
        "required": [
          "data"
        ],
        "additionalProperties": false
      },
      "AccountResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "workspace": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "name": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 255
                  },
                  "created_at": {
                    "type": "string",
                    "format": "date-time"
                  }
                },
                "required": [
                  "id",
                  "name",
                  "created_at"
                ],
                "additionalProperties": false
              },
              "credits": {
                "type": "object",
                "properties": {
                  "balance": {
                    "type": "integer",
                    "minimum": 0
                  },
                  "available": {
                    "type": "integer",
                    "minimum": 0
                  },
                  "reserved": {
                    "type": "integer",
                    "minimum": 0
                  },
                  "pending_refunds": {
                    "type": "integer",
                    "minimum": 0
                  },
                  "uncertain_debits": {
                    "type": "integer",
                    "minimum": 0
                  },
                  "uncertain_credits": {
                    "type": "integer",
                    "minimum": 0
                  },
                  "status": {
                    "type": "string",
                    "enum": [
                      "confirmed"
                    ]
                  }
                },
                "required": [
                  "balance",
                  "available",
                  "reserved",
                  "pending_refunds",
                  "uncertain_debits",
                  "uncertain_credits",
                  "status"
                ],
                "additionalProperties": false
              },
              "subscription": {
                "type": "object",
                "properties": {
                  "plan": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 128,
                    "nullable": true
                  },
                  "status": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 128
                  }
                },
                "required": [
                  "plan",
                  "status"
                ],
                "additionalProperties": false,
                "nullable": true
              }
            },
            "required": [
              "workspace",
              "credits",
              "subscription"
            ],
            "additionalProperties": false
          }
        },
        "required": [
          "data"
        ],
        "additionalProperties": false
      },
      "LimitsResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "policy": {
                "type": "object",
                "properties": {
                  "max_credits_per_request": {
                    "type": "integer",
                    "exclusiveMinimum": true,
                    "minimum": 0
                  },
                  "approval_threshold_credits": {
                    "type": "integer",
                    "minimum": 0
                  },
                  "allowed_models": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "minLength": 1,
                      "maxLength": 200
                    },
                    "maxItems": 200,
                    "nullable": true
                  }
                },
                "required": [
                  "max_credits_per_request",
                  "approval_threshold_credits",
                  "allowed_models"
                ],
                "additionalProperties": false
              },
              "daily": {
                "type": "object",
                "properties": {
                  "limit": {
                    "type": "integer",
                    "exclusiveMinimum": true,
                    "minimum": 0
                  },
                  "used": {
                    "type": "integer",
                    "minimum": 0
                  },
                  "remaining": {
                    "type": "integer",
                    "minimum": 0
                  },
                  "reset_at": {
                    "type": "string",
                    "format": "date-time"
                  }
                },
                "required": [
                  "limit",
                  "used",
                  "remaining",
                  "reset_at"
                ],
                "additionalProperties": false
              },
              "monthly": {
                "type": "object",
                "properties": {
                  "limit": {
                    "type": "integer",
                    "exclusiveMinimum": true,
                    "minimum": 0
                  },
                  "used": {
                    "type": "integer",
                    "minimum": 0
                  },
                  "remaining": {
                    "type": "integer",
                    "minimum": 0
                  },
                  "reset_at": {
                    "type": "string",
                    "format": "date-time"
                  }
                },
                "required": [
                  "limit",
                  "used",
                  "remaining",
                  "reset_at"
                ],
                "additionalProperties": false
              }
            },
            "required": [
              "policy",
              "daily",
              "monthly"
            ],
            "additionalProperties": false
          }
        },
        "required": [
          "data"
        ],
        "additionalProperties": false
      },
      "CreditUsageListResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "format": "uuid"
                },
                "credits": {
                  "type": "integer",
                  "minimum": 0
                },
                "direction": {
                  "type": "string",
                  "enum": [
                    "debit",
                    "credit"
                  ]
                },
                "generation_id": {
                  "type": "string",
                  "format": "uuid",
                  "nullable": true
                },
                "created_at": {
                  "type": "string",
                  "format": "date-time"
                }
              },
              "required": [
                "id",
                "credits",
                "direction",
                "generation_id",
                "created_at"
              ],
              "additionalProperties": false
            },
            "maxItems": 100
          },
          "meta": {
            "type": "object",
            "properties": {
              "cursor": {
                "type": "string",
                "minLength": 1,
                "maxLength": 4096
              },
              "has_more": {
                "type": "boolean"
              }
            },
            "required": [
              "has_more"
            ],
            "additionalProperties": false
          }
        },
        "required": [
          "data",
          "meta"
        ],
        "additionalProperties": false
      },
      "BillingLedgerListResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "format": "uuid"
                },
                "paid_request_id": {
                  "type": "string",
                  "format": "uuid"
                },
                "generation_id": {
                  "type": "string",
                  "format": "uuid",
                  "nullable": true
                },
                "event_kind": {
                  "type": "string",
                  "enum": [
                    "reservation",
                    "settlement_charge",
                    "settlement_refund",
                    "failure_refund"
                  ]
                },
                "credits": {
                  "type": "integer",
                  "exclusiveMinimum": true,
                  "minimum": 0
                },
                "direction": {
                  "type": "string",
                  "enum": [
                    "debit",
                    "credit"
                  ]
                },
                "operation": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 96
                },
                "model": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 160,
                  "nullable": true
                },
                "pricing_version": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 80,
                  "nullable": true
                },
                "api_key_id": {
                  "type": "string",
                  "format": "uuid",
                  "nullable": true
                },
                "surface": {
                  "type": "string",
                  "enum": [
                    "public_api"
                  ],
                  "nullable": true
                },
                "project": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 64,
                  "nullable": true
                },
                "cost_center": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 64,
                  "nullable": true
                },
                "quote_request_id": {
                  "type": "string",
                  "format": "uuid",
                  "nullable": true
                },
                "confirmation_request_id": {
                  "type": "string",
                  "format": "uuid",
                  "nullable": true
                },
                "created_at": {
                  "type": "string",
                  "format": "date-time"
                }
              },
              "required": [
                "id",
                "paid_request_id",
                "generation_id",
                "event_kind",
                "credits",
                "direction",
                "operation",
                "model",
                "pricing_version",
                "api_key_id",
                "surface",
                "project",
                "cost_center",
                "quote_request_id",
                "confirmation_request_id",
                "created_at"
              ],
              "additionalProperties": false
            },
            "maxItems": 100
          },
          "meta": {
            "type": "object",
            "properties": {
              "cursor": {
                "type": "string",
                "minLength": 1,
                "maxLength": 4096
              },
              "has_more": {
                "type": "boolean"
              }
            },
            "required": [
              "has_more"
            ],
            "additionalProperties": false
          }
        },
        "required": [
          "data",
          "meta"
        ],
        "additionalProperties": false
      },
      "UsageSummaryResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "from": {
                "type": "string",
                "format": "date-time"
              },
              "to": {
                "type": "string",
                "format": "date-time"
              },
              "group_by": {
                "type": "string",
                "enum": [
                  "day",
                  "api_key",
                  "model",
                  "capability",
                  "project",
                  "cost_center"
                ]
              },
              "rows": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "dimension": {
                      "type": "string",
                      "minLength": 1,
                      "maxLength": 160
                    },
                    "consumed_credits": {
                      "type": "integer",
                      "minimum": 0
                    },
                    "job_count": {
                      "type": "integer",
                      "minimum": 0
                    }
                  },
                  "required": [
                    "dimension",
                    "consumed_credits",
                    "job_count"
                  ],
                  "additionalProperties": false
                },
                "maxItems": 1000
              }
            },
            "required": [
              "from",
              "to",
              "group_by",
              "rows"
            ],
            "additionalProperties": false
          }
        },
        "required": [
          "data"
        ],
        "additionalProperties": false
      },
      "AvatarListResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "format": "uuid"
                },
                "name": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 255
                },
                "description": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 2000,
                  "nullable": true
                },
                "images": {
                  "type": "object",
                  "properties": {
                    "front": {
                      "type": "string",
                      "format": "uri",
                      "maxLength": 4096
                    },
                    "full_body": {
                      "type": "string",
                      "format": "uri",
                      "maxLength": 4096
                    },
                    "reference_sheet": {
                      "type": "string",
                      "format": "uri",
                      "maxLength": 4096
                    }
                  },
                  "required": [
                    "front",
                    "full_body"
                  ],
                  "additionalProperties": false
                },
                "reference_kit": {
                  "type": "object",
                  "properties": {
                    "generation_id": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "status": {
                      "type": "string",
                      "enum": [
                        "pending",
                        "processing",
                        "ready",
                        "failed",
                        "superseded"
                      ]
                    },
                    "active": {
                      "type": "boolean"
                    },
                    "sheet_url": {
                      "type": "string",
                      "format": "uri"
                    },
                    "views": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "role": {
                            "type": "string",
                            "enum": [
                              "neutral_front",
                              "smiling_front",
                              "three_quarter",
                              "profile",
                              "full_body_front",
                              "full_body_back"
                            ]
                          },
                          "url": {
                            "type": "string",
                            "format": "uri"
                          },
                          "width": {
                            "type": "integer",
                            "exclusiveMinimum": true,
                            "minimum": 0
                          },
                          "height": {
                            "type": "integer",
                            "exclusiveMinimum": true,
                            "minimum": 0
                          }
                        },
                        "required": [
                          "role",
                          "url",
                          "width",
                          "height"
                        ],
                        "additionalProperties": false
                      },
                      "maxItems": 6
                    },
                    "created_at": {
                      "type": "string",
                      "format": "date-time"
                    },
                    "error": {
                      "type": "string",
                      "maxLength": 200
                    }
                  },
                  "required": [
                    "generation_id",
                    "status",
                    "active",
                    "created_at"
                  ],
                  "additionalProperties": false
                },
                "pending_reference_kit": {
                  "type": "object",
                  "properties": {
                    "generation_id": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "status": {
                      "type": "string",
                      "enum": [
                        "pending",
                        "processing",
                        "ready",
                        "failed",
                        "superseded"
                      ]
                    },
                    "active": {
                      "type": "boolean"
                    },
                    "sheet_url": {
                      "type": "string",
                      "format": "uri"
                    },
                    "views": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "role": {
                            "type": "string",
                            "enum": [
                              "neutral_front",
                              "smiling_front",
                              "three_quarter",
                              "profile",
                              "full_body_front",
                              "full_body_back"
                            ]
                          },
                          "url": {
                            "type": "string",
                            "format": "uri"
                          },
                          "width": {
                            "type": "integer",
                            "exclusiveMinimum": true,
                            "minimum": 0
                          },
                          "height": {
                            "type": "integer",
                            "exclusiveMinimum": true,
                            "minimum": 0
                          }
                        },
                        "required": [
                          "role",
                          "url",
                          "width",
                          "height"
                        ],
                        "additionalProperties": false
                      },
                      "maxItems": 6
                    },
                    "created_at": {
                      "type": "string",
                      "format": "date-time"
                    },
                    "error": {
                      "type": "string",
                      "maxLength": 200
                    }
                  },
                  "required": [
                    "generation_id",
                    "status",
                    "active",
                    "created_at"
                  ],
                  "additionalProperties": false
                },
                "tags": {
                  "type": "array",
                  "items": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 128
                  },
                  "maxItems": 50
                },
                "created_at": {
                  "type": "string",
                  "format": "date-time"
                }
              },
              "required": [
                "id",
                "name",
                "description",
                "images",
                "tags",
                "created_at"
              ],
              "additionalProperties": false
            },
            "maxItems": 100
          },
          "meta": {
            "type": "object",
            "properties": {
              "cursor": {
                "type": "string",
                "minLength": 1,
                "maxLength": 4096
              },
              "has_more": {
                "type": "boolean"
              }
            },
            "required": [
              "has_more"
            ],
            "additionalProperties": false
          }
        },
        "required": [
          "data",
          "meta"
        ],
        "additionalProperties": false
      },
      "AvatarDetailResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "format": "uuid"
              },
              "name": {
                "type": "string",
                "minLength": 1,
                "maxLength": 255
              },
              "description": {
                "type": "string",
                "minLength": 1,
                "maxLength": 2000,
                "nullable": true
              },
              "images": {
                "type": "object",
                "properties": {
                  "front": {
                    "type": "string",
                    "format": "uri",
                    "maxLength": 4096
                  },
                  "full_body": {
                    "type": "string",
                    "format": "uri",
                    "maxLength": 4096
                  },
                  "reference_sheet": {
                    "type": "string",
                    "format": "uri",
                    "maxLength": 4096
                  }
                },
                "required": [
                  "front",
                  "full_body"
                ],
                "additionalProperties": false
              },
              "reference_kit": {
                "type": "object",
                "properties": {
                  "generation_id": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "status": {
                    "type": "string",
                    "enum": [
                      "pending",
                      "processing",
                      "ready",
                      "failed",
                      "superseded"
                    ]
                  },
                  "active": {
                    "type": "boolean"
                  },
                  "sheet_url": {
                    "type": "string",
                    "format": "uri"
                  },
                  "views": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "role": {
                          "type": "string",
                          "enum": [
                            "neutral_front",
                            "smiling_front",
                            "three_quarter",
                            "profile",
                            "full_body_front",
                            "full_body_back"
                          ]
                        },
                        "url": {
                          "type": "string",
                          "format": "uri"
                        },
                        "width": {
                          "type": "integer",
                          "exclusiveMinimum": true,
                          "minimum": 0
                        },
                        "height": {
                          "type": "integer",
                          "exclusiveMinimum": true,
                          "minimum": 0
                        }
                      },
                      "required": [
                        "role",
                        "url",
                        "width",
                        "height"
                      ],
                      "additionalProperties": false
                    },
                    "maxItems": 6
                  },
                  "created_at": {
                    "type": "string",
                    "format": "date-time"
                  },
                  "error": {
                    "type": "string",
                    "maxLength": 200
                  }
                },
                "required": [
                  "generation_id",
                  "status",
                  "active",
                  "created_at"
                ],
                "additionalProperties": false
              },
              "pending_reference_kit": {
                "type": "object",
                "properties": {
                  "generation_id": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "status": {
                    "type": "string",
                    "enum": [
                      "pending",
                      "processing",
                      "ready",
                      "failed",
                      "superseded"
                    ]
                  },
                  "active": {
                    "type": "boolean"
                  },
                  "sheet_url": {
                    "type": "string",
                    "format": "uri"
                  },
                  "views": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "role": {
                          "type": "string",
                          "enum": [
                            "neutral_front",
                            "smiling_front",
                            "three_quarter",
                            "profile",
                            "full_body_front",
                            "full_body_back"
                          ]
                        },
                        "url": {
                          "type": "string",
                          "format": "uri"
                        },
                        "width": {
                          "type": "integer",
                          "exclusiveMinimum": true,
                          "minimum": 0
                        },
                        "height": {
                          "type": "integer",
                          "exclusiveMinimum": true,
                          "minimum": 0
                        }
                      },
                      "required": [
                        "role",
                        "url",
                        "width",
                        "height"
                      ],
                      "additionalProperties": false
                    },
                    "maxItems": 6
                  },
                  "created_at": {
                    "type": "string",
                    "format": "date-time"
                  },
                  "error": {
                    "type": "string",
                    "maxLength": 200
                  }
                },
                "required": [
                  "generation_id",
                  "status",
                  "active",
                  "created_at"
                ],
                "additionalProperties": false
              },
              "tags": {
                "type": "array",
                "items": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 128
                },
                "maxItems": 50
              },
              "created_at": {
                "type": "string",
                "format": "date-time"
              }
            },
            "required": [
              "id",
              "name",
              "description",
              "images",
              "tags",
              "created_at"
            ],
            "additionalProperties": false
          }
        },
        "required": [
          "data"
        ],
        "additionalProperties": false
      },
      "ProductCreateRequest": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 200
          },
          "kind": {
            "type": "string",
            "enum": [
              "physical",
              "app"
            ],
            "default": "physical"
          },
          "app_store_url": {
            "type": "string",
            "format": "uri",
            "maxLength": 2048
          },
          "product_url": {
            "type": "string",
            "format": "uri",
            "maxLength": 2048
          },
          "description": {
            "type": "string",
            "maxLength": 2000
          },
          "images": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uri",
              "maxLength": 2048
            },
            "minItems": 1,
            "maxItems": 10
          },
          "import_urls": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uri",
              "maxLength": 2048
            },
            "minItems": 1,
            "maxItems": 10
          },
          "import_from_url": {
            "type": "string",
            "format": "uri",
            "maxLength": 2048
          },
          "brand": {
            "type": "string",
            "minLength": 1,
            "maxLength": 200
          },
          "category": {
            "type": "string",
            "minLength": 1,
            "maxLength": 100
          }
        },
        "additionalProperties": false
      },
      "ProductUpdateRequest": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 200
          },
          "description": {
            "type": "string",
            "maxLength": 2000,
            "nullable": true
          },
          "brand": {
            "type": "string",
            "minLength": 1,
            "maxLength": 200,
            "nullable": true
          },
          "category": {
            "type": "string",
            "minLength": 1,
            "maxLength": 100,
            "nullable": true
          },
          "images": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uri",
              "maxLength": 2048
            },
            "minItems": 1,
            "maxItems": 10
          },
          "hero": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "front",
                  "three_quarter",
                  "detail",
                  "in_hand",
                  "side_left",
                  "side_right",
                  "top",
                  "surface",
                  "back"
                ]
              },
              {
                "type": "string",
                "format": "uri",
                "maxLength": 2048
              }
            ]
          }
        },
        "additionalProperties": false
      },
      "ProductKitBuildRequest": {
        "type": "object",
        "properties": {
          "full": {
            "type": "boolean",
            "default": false
          },
          "angles": {
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "front",
                "three_quarter",
                "detail",
                "in_hand",
                "side_left",
                "side_right",
                "top",
                "surface",
                "back"
              ]
            },
            "minItems": 1,
            "maxItems": 9
          },
          "quote_only": {
            "type": "boolean"
          },
          "quote_id": {
            "type": "string",
            "format": "uuid"
          }
        },
        "additionalProperties": false
      },
      "ProductKitBuildResponse": {
        "type": "object",
        "properties": {
          "data": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "kind": {
                    "type": "string",
                    "enum": [
                      "quote"
                    ]
                  },
                  "quote_id": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "reserved_credits": {
                    "type": "integer",
                    "exclusiveMinimum": true,
                    "minimum": 0
                  },
                  "expires_at": {
                    "type": "string",
                    "format": "date-time"
                  },
                  "pricing_version": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 80
                  },
                  "authorization": {
                    "anyOf": [
                      {
                        "type": "object",
                        "properties": {
                          "status": {
                            "type": "string",
                            "enum": [
                              "auto_approved"
                            ]
                          }
                        },
                        "required": [
                          "status"
                        ],
                        "additionalProperties": false
                      },
                      {
                        "type": "object",
                        "properties": {
                          "status": {
                            "type": "string",
                            "enum": [
                              "approval_required"
                            ]
                          },
                          "authorize_url": {
                            "type": "string",
                            "format": "uri",
                            "maxLength": 2048
                          }
                        },
                        "required": [
                          "status",
                          "authorize_url"
                        ],
                        "additionalProperties": false
                      }
                    ]
                  },
                  "confirmation": {
                    "type": "object",
                    "properties": {
                      "generation_type": {
                        "type": "string",
                        "enum": [
                          "product_kit"
                        ]
                      },
                      "product_id": {
                        "type": "string",
                        "format": "uuid"
                      },
                      "kit_version": {
                        "type": "integer",
                        "exclusiveMinimum": true,
                        "minimum": 0
                      },
                      "angles": {
                        "type": "array",
                        "items": {
                          "type": "string",
                          "enum": [
                            "front",
                            "three_quarter",
                            "detail",
                            "in_hand",
                            "side_left",
                            "side_right",
                            "top",
                            "surface",
                            "back"
                          ]
                        },
                        "minItems": 1,
                        "maxItems": 9
                      },
                      "included": {
                        "type": "boolean"
                      }
                    },
                    "required": [
                      "generation_type",
                      "product_id",
                      "kit_version",
                      "angles",
                      "included"
                    ],
                    "additionalProperties": false
                  }
                },
                "required": [
                  "kind",
                  "quote_id",
                  "reserved_credits",
                  "expires_at",
                  "pricing_version",
                  "authorization",
                  "confirmation"
                ],
                "additionalProperties": false
              },
              {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "kind": {
                    "type": "string",
                    "enum": [
                      "product_kit"
                    ]
                  },
                  "status": {
                    "type": "string",
                    "enum": [
                      "queued"
                    ]
                  },
                  "credits_reserved": {
                    "type": "integer",
                    "minimum": 0
                  },
                  "included": {
                    "type": "boolean"
                  },
                  "kit_version": {
                    "type": "integer",
                    "minimum": 0
                  }
                },
                "required": [
                  "id",
                  "kind",
                  "status",
                  "credits_reserved",
                  "included",
                  "kit_version"
                ],
                "additionalProperties": false
              }
            ]
          }
        },
        "required": [
          "data"
        ],
        "additionalProperties": false
      },
      "ProductListResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "format": "uuid"
                },
                "kind": {
                  "type": "string",
                  "enum": [
                    "physical",
                    "app"
                  ]
                },
                "name": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 200
                },
                "description": {
                  "type": "string",
                  "maxLength": 2000,
                  "nullable": true
                },
                "brand": {
                  "type": "string",
                  "maxLength": 200,
                  "nullable": true
                },
                "category": {
                  "type": "string",
                  "maxLength": 100,
                  "nullable": true
                },
                "images": {
                  "type": "array",
                  "items": {
                    "type": "string",
                    "format": "uri",
                    "maxLength": 4096
                  },
                  "maxItems": 10
                },
                "icon": {
                  "type": "string",
                  "format": "uri",
                  "maxLength": 4096,
                  "nullable": true
                },
                "product_url": {
                  "type": "string",
                  "format": "uri",
                  "maxLength": 2048,
                  "nullable": true
                },
                "thumbnail": {
                  "type": "string",
                  "format": "uri",
                  "maxLength": 4096,
                  "nullable": true
                },
                "reference_sheet": {
                  "type": "string",
                  "format": "uri",
                  "maxLength": 4096,
                  "nullable": true
                },
                "facts": {
                  "type": "object",
                  "additionalProperties": {},
                  "nullable": true
                },
                "kit": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string",
                      "enum": [
                        "none",
                        "queued",
                        "processing",
                        "ready",
                        "partial",
                        "failed"
                      ]
                    },
                    "version": {
                      "type": "integer",
                      "minimum": 0
                    },
                    "hero": {
                      "type": "string",
                      "enum": [
                        "front",
                        "three_quarter",
                        "detail",
                        "in_hand",
                        "side_left",
                        "side_right",
                        "top",
                        "surface",
                        "back"
                      ],
                      "nullable": true
                    },
                    "angles": {
                      "type": "object",
                      "required": [
                        "front",
                        "three_quarter",
                        "detail",
                        "in_hand",
                        "side_left",
                        "side_right",
                        "top",
                        "surface",
                        "back"
                      ],
                      "properties": {
                        "front": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "type": "string",
                              "format": "uri",
                              "maxLength": 4096
                            },
                            "verified": {
                              "type": "boolean"
                            },
                            "score": {
                              "type": "number",
                              "minimum": 0,
                              "maximum": 1,
                              "nullable": true
                            },
                            "source": {
                              "type": "string",
                              "enum": [
                                "generated",
                                "raw-cutout"
                              ]
                            }
                          },
                          "required": [
                            "url",
                            "verified",
                            "score",
                            "source"
                          ],
                          "additionalProperties": false
                        },
                        "three_quarter": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "type": "string",
                              "format": "uri",
                              "maxLength": 4096
                            },
                            "verified": {
                              "type": "boolean"
                            },
                            "score": {
                              "type": "number",
                              "minimum": 0,
                              "maximum": 1,
                              "nullable": true
                            },
                            "source": {
                              "type": "string",
                              "enum": [
                                "generated",
                                "raw-cutout"
                              ]
                            }
                          },
                          "required": [
                            "url",
                            "verified",
                            "score",
                            "source"
                          ],
                          "additionalProperties": false
                        },
                        "detail": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "type": "string",
                              "format": "uri",
                              "maxLength": 4096
                            },
                            "verified": {
                              "type": "boolean"
                            },
                            "score": {
                              "type": "number",
                              "minimum": 0,
                              "maximum": 1,
                              "nullable": true
                            },
                            "source": {
                              "type": "string",
                              "enum": [
                                "generated",
                                "raw-cutout"
                              ]
                            }
                          },
                          "required": [
                            "url",
                            "verified",
                            "score",
                            "source"
                          ],
                          "additionalProperties": false
                        },
                        "in_hand": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "type": "string",
                              "format": "uri",
                              "maxLength": 4096
                            },
                            "verified": {
                              "type": "boolean"
                            },
                            "score": {
                              "type": "number",
                              "minimum": 0,
                              "maximum": 1,
                              "nullable": true
                            },
                            "source": {
                              "type": "string",
                              "enum": [
                                "generated",
                                "raw-cutout"
                              ]
                            }
                          },
                          "required": [
                            "url",
                            "verified",
                            "score",
                            "source"
                          ],
                          "additionalProperties": false
                        },
                        "side_left": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "type": "string",
                              "format": "uri",
                              "maxLength": 4096
                            },
                            "verified": {
                              "type": "boolean"
                            },
                            "score": {
                              "type": "number",
                              "minimum": 0,
                              "maximum": 1,
                              "nullable": true
                            },
                            "source": {
                              "type": "string",
                              "enum": [
                                "generated",
                                "raw-cutout"
                              ]
                            }
                          },
                          "required": [
                            "url",
                            "verified",
                            "score",
                            "source"
                          ],
                          "additionalProperties": false
                        },
                        "side_right": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "type": "string",
                              "format": "uri",
                              "maxLength": 4096
                            },
                            "verified": {
                              "type": "boolean"
                            },
                            "score": {
                              "type": "number",
                              "minimum": 0,
                              "maximum": 1,
                              "nullable": true
                            },
                            "source": {
                              "type": "string",
                              "enum": [
                                "generated",
                                "raw-cutout"
                              ]
                            }
                          },
                          "required": [
                            "url",
                            "verified",
                            "score",
                            "source"
                          ],
                          "additionalProperties": false
                        },
                        "top": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "type": "string",
                              "format": "uri",
                              "maxLength": 4096
                            },
                            "verified": {
                              "type": "boolean"
                            },
                            "score": {
                              "type": "number",
                              "minimum": 0,
                              "maximum": 1,
                              "nullable": true
                            },
                            "source": {
                              "type": "string",
                              "enum": [
                                "generated",
                                "raw-cutout"
                              ]
                            }
                          },
                          "required": [
                            "url",
                            "verified",
                            "score",
                            "source"
                          ],
                          "additionalProperties": false
                        },
                        "surface": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "type": "string",
                              "format": "uri",
                              "maxLength": 4096
                            },
                            "verified": {
                              "type": "boolean"
                            },
                            "score": {
                              "type": "number",
                              "minimum": 0,
                              "maximum": 1,
                              "nullable": true
                            },
                            "source": {
                              "type": "string",
                              "enum": [
                                "generated",
                                "raw-cutout"
                              ]
                            }
                          },
                          "required": [
                            "url",
                            "verified",
                            "score",
                            "source"
                          ],
                          "additionalProperties": false
                        },
                        "back": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "type": "string",
                              "format": "uri",
                              "maxLength": 4096
                            },
                            "verified": {
                              "type": "boolean"
                            },
                            "score": {
                              "type": "number",
                              "minimum": 0,
                              "maximum": 1,
                              "nullable": true
                            },
                            "source": {
                              "type": "string",
                              "enum": [
                                "generated",
                                "raw-cutout"
                              ]
                            }
                          },
                          "required": [
                            "url",
                            "verified",
                            "score",
                            "source"
                          ],
                          "additionalProperties": false
                        }
                      },
                      "additionalProperties": false
                    },
                    "cutouts": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "raw": {
                            "type": "string",
                            "format": "uri",
                            "maxLength": 4096
                          },
                          "url": {
                            "type": "string",
                            "format": "uri",
                            "maxLength": 4096
                          },
                          "angle": {
                            "type": "string",
                            "maxLength": 32,
                            "nullable": true
                          }
                        },
                        "required": [
                          "raw",
                          "url",
                          "angle"
                        ],
                        "additionalProperties": false
                      },
                      "maxItems": 5
                    }
                  },
                  "required": [
                    "status",
                    "version",
                    "hero",
                    "angles",
                    "cutouts"
                  ],
                  "additionalProperties": false
                },
                "created_at": {
                  "type": "string",
                  "format": "date-time"
                },
                "updated_at": {
                  "type": "string",
                  "format": "date-time"
                }
              },
              "required": [
                "id",
                "kind",
                "name",
                "description",
                "brand",
                "category",
                "images",
                "icon",
                "product_url",
                "thumbnail",
                "reference_sheet",
                "facts",
                "kit",
                "created_at",
                "updated_at"
              ],
              "additionalProperties": false
            },
            "maxItems": 100
          },
          "meta": {
            "type": "object",
            "properties": {
              "cursor": {
                "type": "string",
                "minLength": 1,
                "maxLength": 4096
              },
              "has_more": {
                "type": "boolean"
              }
            },
            "required": [
              "has_more"
            ],
            "additionalProperties": false
          }
        },
        "required": [
          "data",
          "meta"
        ],
        "additionalProperties": false
      },
      "ProductDetailResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "format": "uuid"
              },
              "kind": {
                "type": "string",
                "enum": [
                  "physical",
                  "app"
                ]
              },
              "name": {
                "type": "string",
                "minLength": 1,
                "maxLength": 200
              },
              "description": {
                "type": "string",
                "maxLength": 2000,
                "nullable": true
              },
              "brand": {
                "type": "string",
                "maxLength": 200,
                "nullable": true
              },
              "category": {
                "type": "string",
                "maxLength": 100,
                "nullable": true
              },
              "images": {
                "type": "array",
                "items": {
                  "type": "string",
                  "format": "uri",
                  "maxLength": 4096
                },
                "maxItems": 10
              },
              "icon": {
                "type": "string",
                "format": "uri",
                "maxLength": 4096,
                "nullable": true
              },
              "product_url": {
                "type": "string",
                "format": "uri",
                "maxLength": 2048,
                "nullable": true
              },
              "thumbnail": {
                "type": "string",
                "format": "uri",
                "maxLength": 4096,
                "nullable": true
              },
              "reference_sheet": {
                "type": "string",
                "format": "uri",
                "maxLength": 4096,
                "nullable": true
              },
              "facts": {
                "type": "object",
                "additionalProperties": {},
                "nullable": true
              },
              "kit": {
                "type": "object",
                "properties": {
                  "status": {
                    "type": "string",
                    "enum": [
                      "none",
                      "queued",
                      "processing",
                      "ready",
                      "partial",
                      "failed"
                    ]
                  },
                  "version": {
                    "type": "integer",
                    "minimum": 0
                  },
                  "hero": {
                    "type": "string",
                    "enum": [
                      "front",
                      "three_quarter",
                      "detail",
                      "in_hand",
                      "side_left",
                      "side_right",
                      "top",
                      "surface",
                      "back"
                    ],
                    "nullable": true
                  },
                  "angles": {
                    "type": "object",
                    "required": [
                      "front",
                      "three_quarter",
                      "detail",
                      "in_hand",
                      "side_left",
                      "side_right",
                      "top",
                      "surface",
                      "back"
                    ],
                    "properties": {
                      "front": {
                        "type": "object",
                        "properties": {
                          "url": {
                            "type": "string",
                            "format": "uri",
                            "maxLength": 4096
                          },
                          "verified": {
                            "type": "boolean"
                          },
                          "score": {
                            "type": "number",
                            "minimum": 0,
                            "maximum": 1,
                            "nullable": true
                          },
                          "source": {
                            "type": "string",
                            "enum": [
                              "generated",
                              "raw-cutout"
                            ]
                          }
                        },
                        "required": [
                          "url",
                          "verified",
                          "score",
                          "source"
                        ],
                        "additionalProperties": false
                      },
                      "three_quarter": {
                        "type": "object",
                        "properties": {
                          "url": {
                            "type": "string",
                            "format": "uri",
                            "maxLength": 4096
                          },
                          "verified": {
                            "type": "boolean"
                          },
                          "score": {
                            "type": "number",
                            "minimum": 0,
                            "maximum": 1,
                            "nullable": true
                          },
                          "source": {
                            "type": "string",
                            "enum": [
                              "generated",
                              "raw-cutout"
                            ]
                          }
                        },
                        "required": [
                          "url",
                          "verified",
                          "score",
                          "source"
                        ],
                        "additionalProperties": false
                      },
                      "detail": {
                        "type": "object",
                        "properties": {
                          "url": {
                            "type": "string",
                            "format": "uri",
                            "maxLength": 4096
                          },
                          "verified": {
                            "type": "boolean"
                          },
                          "score": {
                            "type": "number",
                            "minimum": 0,
                            "maximum": 1,
                            "nullable": true
                          },
                          "source": {
                            "type": "string",
                            "enum": [
                              "generated",
                              "raw-cutout"
                            ]
                          }
                        },
                        "required": [
                          "url",
                          "verified",
                          "score",
                          "source"
                        ],
                        "additionalProperties": false
                      },
                      "in_hand": {
                        "type": "object",
                        "properties": {
                          "url": {
                            "type": "string",
                            "format": "uri",
                            "maxLength": 4096
                          },
                          "verified": {
                            "type": "boolean"
                          },
                          "score": {
                            "type": "number",
                            "minimum": 0,
                            "maximum": 1,
                            "nullable": true
                          },
                          "source": {
                            "type": "string",
                            "enum": [
                              "generated",
                              "raw-cutout"
                            ]
                          }
                        },
                        "required": [
                          "url",
                          "verified",
                          "score",
                          "source"
                        ],
                        "additionalProperties": false
                      },
                      "side_left": {
                        "type": "object",
                        "properties": {
                          "url": {
                            "type": "string",
                            "format": "uri",
                            "maxLength": 4096
                          },
                          "verified": {
                            "type": "boolean"
                          },
                          "score": {
                            "type": "number",
                            "minimum": 0,
                            "maximum": 1,
                            "nullable": true
                          },
                          "source": {
                            "type": "string",
                            "enum": [
                              "generated",
                              "raw-cutout"
                            ]
                          }
                        },
                        "required": [
                          "url",
                          "verified",
                          "score",
                          "source"
                        ],
                        "additionalProperties": false
                      },
                      "side_right": {
                        "type": "object",
                        "properties": {
                          "url": {
                            "type": "string",
                            "format": "uri",
                            "maxLength": 4096
                          },
                          "verified": {
                            "type": "boolean"
                          },
                          "score": {
                            "type": "number",
                            "minimum": 0,
                            "maximum": 1,
                            "nullable": true
                          },
                          "source": {
                            "type": "string",
                            "enum": [
                              "generated",
                              "raw-cutout"
                            ]
                          }
                        },
                        "required": [
                          "url",
                          "verified",
                          "score",
                          "source"
                        ],
                        "additionalProperties": false
                      },
                      "top": {
                        "type": "object",
                        "properties": {
                          "url": {
                            "type": "string",
                            "format": "uri",
                            "maxLength": 4096
                          },
                          "verified": {
                            "type": "boolean"
                          },
                          "score": {
                            "type": "number",
                            "minimum": 0,
                            "maximum": 1,
                            "nullable": true
                          },
                          "source": {
                            "type": "string",
                            "enum": [
                              "generated",
                              "raw-cutout"
                            ]
                          }
                        },
                        "required": [
                          "url",
                          "verified",
                          "score",
                          "source"
                        ],
                        "additionalProperties": false
                      },
                      "surface": {
                        "type": "object",
                        "properties": {
                          "url": {
                            "type": "string",
                            "format": "uri",
                            "maxLength": 4096
                          },
                          "verified": {
                            "type": "boolean"
                          },
                          "score": {
                            "type": "number",
                            "minimum": 0,
                            "maximum": 1,
                            "nullable": true
                          },
                          "source": {
                            "type": "string",
                            "enum": [
                              "generated",
                              "raw-cutout"
                            ]
                          }
                        },
                        "required": [
                          "url",
                          "verified",
                          "score",
                          "source"
                        ],
                        "additionalProperties": false
                      },
                      "back": {
                        "type": "object",
                        "properties": {
                          "url": {
                            "type": "string",
                            "format": "uri",
                            "maxLength": 4096
                          },
                          "verified": {
                            "type": "boolean"
                          },
                          "score": {
                            "type": "number",
                            "minimum": 0,
                            "maximum": 1,
                            "nullable": true
                          },
                          "source": {
                            "type": "string",
                            "enum": [
                              "generated",
                              "raw-cutout"
                            ]
                          }
                        },
                        "required": [
                          "url",
                          "verified",
                          "score",
                          "source"
                        ],
                        "additionalProperties": false
                      }
                    },
                    "additionalProperties": false
                  },
                  "cutouts": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "raw": {
                          "type": "string",
                          "format": "uri",
                          "maxLength": 4096
                        },
                        "url": {
                          "type": "string",
                          "format": "uri",
                          "maxLength": 4096
                        },
                        "angle": {
                          "type": "string",
                          "maxLength": 32,
                          "nullable": true
                        }
                      },
                      "required": [
                        "raw",
                        "url",
                        "angle"
                      ],
                      "additionalProperties": false
                    },
                    "maxItems": 5
                  }
                },
                "required": [
                  "status",
                  "version",
                  "hero",
                  "angles",
                  "cutouts"
                ],
                "additionalProperties": false
              },
              "created_at": {
                "type": "string",
                "format": "date-time"
              },
              "updated_at": {
                "type": "string",
                "format": "date-time"
              }
            },
            "required": [
              "id",
              "kind",
              "name",
              "description",
              "brand",
              "category",
              "images",
              "icon",
              "product_url",
              "thumbnail",
              "reference_sheet",
              "facts",
              "kit",
              "created_at",
              "updated_at"
            ],
            "additionalProperties": false
          }
        },
        "required": [
          "data"
        ],
        "additionalProperties": false
      },
      "EditCreateRequest": {
        "type": "object",
        "properties": {
          "title": {
            "type": "string",
            "minLength": 1,
            "maxLength": 200
          },
          "clips": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "generation_id": {
                  "type": "string",
                  "format": "uuid",
                  "description": "A finished generation in this workspace."
                },
                "url": {
                  "type": "string",
                  "format": "uri",
                  "maxLength": 2048,
                  "description": "A file your workspace owns on cdn.roasos.com."
                },
                "seconds": {
                  "type": "number",
                  "exclusiveMinimum": true,
                  "minimum": 0,
                  "maximum": 3600,
                  "description": "The file length, only when the file cannot be measured."
                }
              },
              "additionalProperties": false
            },
            "minItems": 1,
            "maxItems": 30,
            "description": "The first version's clips, in order."
          },
          "ratio": {
            "type": "string",
            "enum": [
              "9:16",
              "4:5",
              "1:1",
              "16:9"
            ]
          },
          "fit": {
            "type": "string",
            "enum": [
              "cover",
              "contain",
              "blur"
            ]
          },
          "source_generation_id": {
            "type": "string",
            "format": "uuid"
          }
        },
        "required": [
          "clips"
        ],
        "additionalProperties": false
      },
      "EditCommandsRequest": {
        "type": "object",
        "properties": {
          "commands": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "type": {
                  "type": "string",
                  "enum": [
                    "insert_clip",
                    "remove_clip",
                    "move_clip",
                    "duplicate_clip",
                    "replace_clip",
                    "split_clip",
                    "trim_clip",
                    "set_speed",
                    "set_fit",
                    "set_framing",
                    "set_volume",
                    "set_transition",
                    "set_effect",
                    "set_image",
                    "set_output",
                    "set_voice",
                    "set_music",
                    "update_audio",
                    "remove_audio",
                    "fit_clips_to_voice",
                    "set_captions",
                    "captions_from_script",
                    "edit_caption",
                    "remove_caption",
                    "clear_captions",
                    "set_caption_style",
                    "add_overlay",
                    "edit_overlay",
                    "remove_overlay"
                  ]
                }
              },
              "required": [
                "type"
              ],
              "additionalProperties": {}
            },
            "minItems": 1,
            "maxItems": 50,
            "description": "Applied in order, all or none. Clip numbers update after each command. insert_clip(source,at?,source_in_seconds?,duration_seconds?); remove_clip(clip); move_clip(clip,to); duplicate_clip(clip); replace_clip(clip,source,source_in_seconds?); split_clip(clip,at_seconds); trim_clip(clip,source_in_seconds?,source_out_seconds?,duration_seconds?); set_speed(clip,speed,keep?); set_fit(fit,clip?); set_framing(clip,x?,y?,scale?,rotation?,flip_h?,flip_v?); set_volume(volume?,muted?,clip?,audio?,all_clips?); set_transition(clip,transition,duration_seconds?); set_effect(clip,effect); set_image(clip,duration_seconds?,motion?,motion_amount?); set_output(ratio); set_voice(source,start_seconds?,volume?,replace?,mute_clips?); set_music(source,start_seconds?,duration_seconds?,volume?,fade_in_seconds?,fade_out_seconds?,duck?); update_audio(audio,start_seconds?,volume?,fade_in_seconds?,fade_out_seconds?,duck?); remove_audio(audio); fit_clips_to_voice(tail_seconds?); set_captions(captions); captions_from_script(script,words?,audio?,max_words?,max_chars?); edit_caption(caption,text?,start_seconds?,duration_seconds?); remove_caption(caption); clear_captions(); set_caption_style(preset?,color?,uppercase?,highlight?,position?,x?,y?); add_overlay(text,style?,sub?,start_seconds?,from_end_seconds?,duration_seconds?,x?,y?,animation?,color?); edit_overlay(overlay,text?,style?,sub?,start_seconds?,from_end_seconds?,duration_seconds?,x?,y?,animation?,color?); remove_overlay(overlay)"
          },
          "expected_version": {
            "type": "integer",
            "minimum": 0,
            "description": "Refuses the batch if the edit has changed since this version."
          }
        },
        "required": [
          "commands"
        ],
        "additionalProperties": false
      },
      "EditRenderRequest": {
        "type": "object",
        "properties": {
          "version": {
            "type": "integer",
            "minimum": 1,
            "description": "Default: the latest version."
          }
        },
        "additionalProperties": false
      },
      "EditDetailResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "format": "uuid"
              },
              "title": {
                "type": "string"
              },
              "version": {
                "type": "integer"
              },
              "latest_version": {
                "type": "integer"
              },
              "length_seconds": {
                "type": "number"
              }
            },
            "required": [
              "id",
              "title",
              "version",
              "latest_version",
              "length_seconds"
            ],
            "additionalProperties": {}
          }
        },
        "required": [
          "data"
        ],
        "additionalProperties": false
      },
      "EditListResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "format": "uuid"
                },
                "title": {
                  "type": "string"
                },
                "latest_version": {
                  "type": "integer"
                },
                "source_generation_id": {
                  "type": "string",
                  "format": "uuid",
                  "nullable": true
                },
                "created_at": {
                  "type": "string"
                },
                "updated_at": {
                  "type": "string"
                }
              },
              "required": [
                "id",
                "title",
                "latest_version",
                "source_generation_id",
                "created_at",
                "updated_at"
              ],
              "additionalProperties": false
            },
            "maxItems": 100
          },
          "meta": {
            "type": "object",
            "properties": {
              "cursor": {
                "type": "string",
                "minLength": 1,
                "maxLength": 4096
              },
              "has_more": {
                "type": "boolean"
              }
            },
            "required": [
              "has_more"
            ],
            "additionalProperties": false
          }
        },
        "required": [
          "data",
          "meta"
        ],
        "additionalProperties": false
      },
      "EditRenderResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "job_id": {
                "type": "string",
                "format": "uuid"
              },
              "edit_id": {
                "type": "string",
                "format": "uuid"
              },
              "version": {
                "type": "integer"
              },
              "status": {
                "type": "string",
                "enum": [
                  "queued",
                  "rendering",
                  "completed",
                  "failed"
                ]
              },
              "url": {
                "type": "string",
                "nullable": true
              },
              "poster_url": {
                "type": "string",
                "nullable": true
              },
              "generation_id": {
                "type": "string",
                "format": "uuid",
                "nullable": true
              },
              "qa": {
                "type": "object",
                "properties": {
                  "passed": {
                    "type": "boolean"
                  },
                  "failures": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  }
                },
                "required": [
                  "passed",
                  "failures"
                ],
                "additionalProperties": {},
                "nullable": true
              },
              "error": {
                "type": "string",
                "nullable": true
              },
              "created_at": {
                "type": "string"
              },
              "completed_at": {
                "type": "string",
                "nullable": true
              }
            },
            "required": [
              "job_id",
              "edit_id",
              "version",
              "status",
              "url",
              "poster_url",
              "generation_id",
              "qa",
              "error",
              "created_at",
              "completed_at"
            ],
            "additionalProperties": false
          }
        },
        "required": [
          "data"
        ],
        "additionalProperties": false
      },
      "UploadCreateRequest": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "enum": [
              "image",
              "video",
              "audio"
            ]
          },
          "content_type": {
            "type": "string",
            "minLength": 3,
            "maxLength": 255
          },
          "byte_length": {
            "type": "integer",
            "minimum": 1,
            "maximum": 104857600
          },
          "sha256": {
            "type": "string",
            "pattern": "^[0-9a-f]{64}$"
          },
          "filename": {
            "type": "string",
            "minLength": 1,
            "maxLength": 255
          },
          "source_url": {
            "type": "string",
            "format": "uri",
            "maxLength": 2048
          }
        },
        "required": [
          "kind"
        ],
        "additionalProperties": false
      },
      "UploadDetailResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "format": "uuid"
              },
              "kind": {
                "type": "string",
                "enum": [
                  "image",
                  "video",
                  "audio"
                ]
              },
              "status": {
                "type": "string",
                "enum": [
                  "pending",
                  "ready"
                ]
              },
              "content_type": {
                "type": "string",
                "maxLength": 255,
                "nullable": true
              },
              "byte_length": {
                "type": "integer",
                "minimum": 0
              },
              "url": {
                "type": "string",
                "format": "uri",
                "maxLength": 4096,
                "nullable": true
              },
              "put_url": {
                "type": "string",
                "format": "uri",
                "maxLength": 4096,
                "nullable": true
              },
              "put_headers": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "nullable": true
              },
              "expires_at": {
                "type": "string",
                "format": "date-time",
                "nullable": true
              },
              "limits": {
                "type": "object",
                "properties": {
                  "max_bytes": {
                    "type": "integer",
                    "minimum": 1
                  },
                  "allowed_content_types": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "maxLength": 255
                    },
                    "maxItems": 20
                  }
                },
                "required": [
                  "max_bytes",
                  "allowed_content_types"
                ],
                "additionalProperties": false
              }
            },
            "required": [
              "id",
              "kind",
              "status",
              "content_type",
              "byte_length",
              "url",
              "put_url",
              "put_headers",
              "expires_at",
              "limits"
            ],
            "additionalProperties": false
          }
        },
        "required": [
          "data"
        ],
        "additionalProperties": false
      },
      "VoiceCreateRequest": {
        "type": "object",
        "properties": {
          "model": {
            "type": "string",
            "enum": [
              "minimax-voice-clone",
              "qwen3-voice-clone"
            ],
            "default": "minimax-voice-clone"
          },
          "audio_url": {
            "type": "string",
            "format": "uri",
            "maxLength": 2048
          },
          "noise_reduction": {
            "type": "boolean",
            "default": false
          },
          "reference_text": {
            "type": "string",
            "minLength": 1,
            "maxLength": 10000
          },
          "media_rights": {
            "type": "object",
            "properties": {
              "accepted": {
                "type": "boolean",
                "enum": [
                  true
                ]
              },
              "statement_version": {
                "type": "integer"
              },
              "policy_version": {
                "type": "string",
                "minLength": 1,
                "maxLength": 64
              }
            },
            "required": [
              "accepted",
              "statement_version",
              "policy_version"
            ],
            "additionalProperties": false
          },
          "quote_only": {
            "type": "boolean",
            "default": false
          },
          "quote_id": {
            "type": "string",
            "format": "uuid"
          },
          "webhook_url": {
            "type": "string",
            "format": "uri"
          }
        },
        "required": [
          "audio_url",
          "media_rights"
        ],
        "additionalProperties": false
      },
      "VoiceListResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "format": "uuid"
                },
                "name": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 120,
                  "nullable": true
                },
                "model": {
                  "type": "string",
                  "enum": [
                    "minimax-voice-clone",
                    "qwen3-voice-clone"
                  ],
                  "nullable": true
                },
                "preview_audio_url": {
                  "type": "string",
                  "format": "uri",
                  "maxLength": 4096,
                  "nullable": true
                },
                "retention_expires_at": {
                  "type": "string",
                  "nullable": true
                },
                "first_used_at": {
                  "type": "string",
                  "nullable": true
                },
                "created_at": {
                  "type": "string"
                }
              },
              "required": [
                "id",
                "name",
                "model",
                "preview_audio_url",
                "retention_expires_at",
                "first_used_at",
                "created_at"
              ],
              "additionalProperties": false
            },
            "maxItems": 100
          },
          "meta": {
            "type": "object",
            "properties": {
              "cursor": {
                "type": "string",
                "minLength": 1,
                "maxLength": 4096
              },
              "has_more": {
                "type": "boolean"
              }
            },
            "required": [
              "has_more"
            ],
            "additionalProperties": false
          }
        },
        "required": [
          "data",
          "meta"
        ],
        "additionalProperties": false
      },
      "DeleteResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "format": "uuid"
              },
              "resource": {
                "type": "string",
                "enum": [
                  "generation",
                  "scene",
                  "avatar",
                  "product",
                  "voice",
                  "memory_pin"
                ]
              },
              "deleted": {
                "type": "boolean",
                "enum": [
                  true
                ]
              }
            },
            "required": [
              "id",
              "resource",
              "deleted"
            ],
            "additionalProperties": false
          }
        },
        "required": [
          "data"
        ],
        "additionalProperties": false
      },
      "DiscoverListInput": {
        "type": "object",
        "properties": {
          "view": {
            "type": "string",
            "enum": [
              "feed",
              "following",
              "saved"
            ],
            "default": "feed"
          },
          "sources": {
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "meta_ad",
                "instagram_post",
                "tiktok_post"
              ]
            },
            "maxItems": 3
          },
          "brand_ids": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            },
            "maxItems": 100
          },
          "media_types": {
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "image",
                "video",
                "carousel"
              ]
            },
            "maxItems": 3
          },
          "since": {
            "type": "string",
            "format": "date-time"
          },
          "query": {
            "type": "string",
            "maxLength": 500
          },
          "sort": {
            "type": "string",
            "enum": [
              "newest",
              "oldest"
            ],
            "default": "newest"
          },
          "cursor": {
            "type": "string",
            "minLength": 1,
            "maxLength": 2048
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100,
            "default": 20
          }
        },
        "additionalProperties": false
      },
      "DiscoverListResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "format": "uuid"
                },
                "source": {
                  "type": "string",
                  "enum": [
                    "meta_ad",
                    "instagram_post",
                    "tiktok_post"
                  ]
                },
                "brand": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "slug": {
                      "type": "string",
                      "minLength": 1,
                      "maxLength": 255
                    },
                    "name": {
                      "type": "string",
                      "minLength": 1,
                      "maxLength": 255
                    },
                    "handle": {
                      "type": "string",
                      "minLength": 1,
                      "maxLength": 255,
                      "nullable": true
                    },
                    "avatar_url": {
                      "type": "string",
                      "format": "uri",
                      "maxLength": 4096,
                      "nullable": true
                    }
                  },
                  "required": [
                    "id",
                    "slug",
                    "name",
                    "handle",
                    "avatar_url"
                  ],
                  "additionalProperties": false
                },
                "media": {
                  "type": "object",
                  "properties": {
                    "aspect_ratio": {
                      "type": "number",
                      "exclusiveMinimum": true,
                      "minimum": 0,
                      "maximum": 10,
                      "nullable": true
                    },
                    "slides": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "type": {
                            "type": "string",
                            "enum": [
                              "image",
                              "video"
                            ]
                          },
                          "thumbnail_url": {
                            "type": "string",
                            "format": "uri",
                            "maxLength": 4096
                          },
                          "video_url": {
                            "type": "string",
                            "format": "uri",
                            "maxLength": 4096,
                            "nullable": true
                          }
                        },
                        "required": [
                          "type",
                          "thumbnail_url",
                          "video_url"
                        ],
                        "additionalProperties": false
                      },
                      "maxItems": 20
                    }
                  },
                  "required": [
                    "aspect_ratio",
                    "slides"
                  ],
                  "additionalProperties": false
                },
                "copy": {
                  "type": "string",
                  "maxLength": 100000,
                  "nullable": true
                },
                "title": {
                  "type": "string",
                  "maxLength": 10000,
                  "nullable": true
                },
                "description": {
                  "type": "string",
                  "maxLength": 100000,
                  "nullable": true
                },
                "domain": {
                  "type": "string",
                  "maxLength": 253,
                  "nullable": true
                },
                "cta": {
                  "type": "string",
                  "maxLength": 1000,
                  "nullable": true
                },
                "run_start_date": {
                  "type": "string",
                  "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
                  "nullable": true
                },
                "run_end_date": {
                  "type": "string",
                  "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
                  "nullable": true
                },
                "is_active_ad": {
                  "type": "boolean",
                  "nullable": true
                },
                "post_date": {
                  "type": "string",
                  "format": "date-time",
                  "nullable": true
                },
                "engagement": {
                  "type": "object",
                  "properties": {
                    "likes": {
                      "type": "integer",
                      "minimum": 0
                    },
                    "comments": {
                      "type": "integer",
                      "minimum": 0
                    },
                    "views": {
                      "type": "integer",
                      "minimum": 0
                    }
                  },
                  "required": [
                    "likes",
                    "comments",
                    "views"
                  ],
                  "additionalProperties": false,
                  "nullable": true
                },
                "platform_link": {
                  "type": "string",
                  "format": "uri",
                  "maxLength": 4096
                },
                "content_at": {
                  "type": "string",
                  "format": "date-time"
                },
                "media_type": {
                  "type": "string",
                  "enum": [
                    "image",
                    "video",
                    "carousel"
                  ],
                  "nullable": true
                },
                "vertical": {
                  "type": "string",
                  "maxLength": 255,
                  "nullable": true
                },
                "creative_type": {
                  "type": "string",
                  "maxLength": 255,
                  "nullable": true
                },
                "tags": {
                  "type": "array",
                  "items": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 128
                  },
                  "maxItems": 50
                },
                "ai_summary": {
                  "type": "string",
                  "maxLength": 20000,
                  "nullable": true
                },
                "language": {
                  "type": "string",
                  "pattern": "^[a-z]{2}$",
                  "nullable": true
                }
              },
              "required": [
                "id",
                "source",
                "brand",
                "media",
                "copy",
                "title",
                "description",
                "domain",
                "cta",
                "run_start_date",
                "run_end_date",
                "is_active_ad",
                "post_date",
                "engagement",
                "platform_link",
                "content_at",
                "media_type",
                "vertical",
                "creative_type",
                "tags",
                "ai_summary",
                "language"
              ],
              "additionalProperties": false
            },
            "maxItems": 100
          },
          "meta": {
            "type": "object",
            "properties": {
              "cursor": {
                "type": "string",
                "minLength": 1,
                "maxLength": 4096
              },
              "has_more": {
                "type": "boolean"
              }
            },
            "required": [
              "has_more"
            ],
            "additionalProperties": false
          }
        },
        "required": [
          "data",
          "meta"
        ],
        "additionalProperties": false
      },
      "DiscoverDetailResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "format": "uuid"
              },
              "source": {
                "type": "string",
                "enum": [
                  "meta_ad",
                  "instagram_post",
                  "tiktok_post"
                ]
              },
              "brand": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "slug": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 255
                  },
                  "name": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 255
                  },
                  "handle": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 255,
                    "nullable": true
                  },
                  "avatar_url": {
                    "type": "string",
                    "format": "uri",
                    "maxLength": 4096,
                    "nullable": true
                  }
                },
                "required": [
                  "id",
                  "slug",
                  "name",
                  "handle",
                  "avatar_url"
                ],
                "additionalProperties": false
              },
              "media": {
                "type": "object",
                "properties": {
                  "aspect_ratio": {
                    "type": "number",
                    "exclusiveMinimum": true,
                    "minimum": 0,
                    "maximum": 10,
                    "nullable": true
                  },
                  "slides": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "type": {
                          "type": "string",
                          "enum": [
                            "image",
                            "video"
                          ]
                        },
                        "thumbnail_url": {
                          "type": "string",
                          "format": "uri",
                          "maxLength": 4096
                        },
                        "video_url": {
                          "type": "string",
                          "format": "uri",
                          "maxLength": 4096,
                          "nullable": true
                        }
                      },
                      "required": [
                        "type",
                        "thumbnail_url",
                        "video_url"
                      ],
                      "additionalProperties": false
                    },
                    "maxItems": 20
                  }
                },
                "required": [
                  "aspect_ratio",
                  "slides"
                ],
                "additionalProperties": false
              },
              "copy": {
                "type": "string",
                "maxLength": 100000,
                "nullable": true
              },
              "title": {
                "type": "string",
                "maxLength": 10000,
                "nullable": true
              },
              "description": {
                "type": "string",
                "maxLength": 100000,
                "nullable": true
              },
              "domain": {
                "type": "string",
                "maxLength": 253,
                "nullable": true
              },
              "cta": {
                "type": "string",
                "maxLength": 1000,
                "nullable": true
              },
              "run_start_date": {
                "type": "string",
                "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
                "nullable": true
              },
              "run_end_date": {
                "type": "string",
                "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
                "nullable": true
              },
              "is_active_ad": {
                "type": "boolean",
                "nullable": true
              },
              "post_date": {
                "type": "string",
                "format": "date-time",
                "nullable": true
              },
              "engagement": {
                "type": "object",
                "properties": {
                  "likes": {
                    "type": "integer",
                    "minimum": 0
                  },
                  "comments": {
                    "type": "integer",
                    "minimum": 0
                  },
                  "views": {
                    "type": "integer",
                    "minimum": 0
                  }
                },
                "required": [
                  "likes",
                  "comments",
                  "views"
                ],
                "additionalProperties": false,
                "nullable": true
              },
              "platform_link": {
                "type": "string",
                "format": "uri",
                "maxLength": 4096
              },
              "content_at": {
                "type": "string",
                "format": "date-time"
              },
              "media_type": {
                "type": "string",
                "enum": [
                  "image",
                  "video",
                  "carousel"
                ],
                "nullable": true
              },
              "vertical": {
                "type": "string",
                "maxLength": 255,
                "nullable": true
              },
              "creative_type": {
                "type": "string",
                "maxLength": 255,
                "nullable": true
              },
              "tags": {
                "type": "array",
                "items": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 128
                },
                "maxItems": 50
              },
              "ai_summary": {
                "type": "string",
                "maxLength": 20000,
                "nullable": true
              },
              "language": {
                "type": "string",
                "pattern": "^[a-z]{2}$",
                "nullable": true
              }
            },
            "required": [
              "id",
              "source",
              "brand",
              "media",
              "copy",
              "title",
              "description",
              "domain",
              "cta",
              "run_start_date",
              "run_end_date",
              "is_active_ad",
              "post_date",
              "engagement",
              "platform_link",
              "content_at",
              "media_type",
              "vertical",
              "creative_type",
              "tags",
              "ai_summary",
              "language"
            ],
            "additionalProperties": false
          }
        },
        "required": [
          "data"
        ],
        "additionalProperties": false
      },
      "CapabilityManifestResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "schema_version": {
                "type": "string",
                "enum": [
                  "roasos.capability-manifest@1"
                ]
              },
              "manifest_version": {
                "type": "string",
                "enum": [
                  "platform-capabilities@2026-11-09.v24"
                ]
              },
              "boundary": {
                "type": "string",
                "enum": [
                  "public_api"
                ]
              },
              "pricing_version": {
                "type": "string",
                "minLength": 1,
                "maxLength": 200
              },
              "capabilities": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "pattern": "^[a-z][a-z0-9.-]*@[1-9][0-9]*$"
                    },
                    "title": {
                      "type": "string",
                      "minLength": 1,
                      "maxLength": 200
                    },
                    "description": {
                      "type": "string",
                      "minLength": 1,
                      "maxLength": 2000
                    },
                    "domain": {
                      "type": "string",
                      "enum": [
                        "platform",
                        "generation",
                        "scene",
                        "avatar",
                        "account",
                        "discover",
                        "research"
                      ]
                    },
                    "availability": {
                      "type": "string",
                      "enum": [
                        "available",
                        "unavailable",
                        "planned",
                        "blocked"
                      ]
                    },
                    "release": {
                      "type": "object",
                      "properties": {
                        "runtimeStatus": {
                          "type": "string",
                          "enum": [
                            "available",
                            "unavailable",
                            "planned",
                            "blocked"
                          ]
                        },
                        "launchReadiness": {
                          "type": "string",
                          "enum": [
                            "ready",
                            "conditional",
                            "blocked"
                          ]
                        },
                        "exposure": {
                          "type": "string",
                          "enum": [
                            "public",
                            "internal",
                            "deferred"
                          ]
                        }
                      },
                      "required": [
                        "runtimeStatus",
                        "launchReadiness",
                        "exposure"
                      ],
                      "additionalProperties": false
                    },
                    "execution": {
                      "type": "string",
                      "enum": [
                        "sync",
                        "async"
                      ]
                    },
                    "requiredScopes": {
                      "type": "array",
                      "items": {
                        "type": "string",
                        "enum": [
                          "api:read",
                          "api:write"
                        ]
                      },
                      "minItems": 1,
                      "maxItems": 10
                    },
                    "risk": {
                      "type": "object",
                      "properties": {
                        "readOnly": {
                          "type": "boolean"
                        },
                        "paid": {
                          "type": "boolean"
                        },
                        "destructive": {
                          "type": "boolean"
                        },
                        "humanApprovalRecommended": {
                          "type": "boolean"
                        }
                      },
                      "required": [
                        "readOnly",
                        "paid",
                        "destructive",
                        "humanApprovalRecommended"
                      ],
                      "additionalProperties": false
                    },
                    "billing": {
                      "type": "object",
                      "properties": {
                        "behavior": {
                          "type": "string",
                          "enum": [
                            "included",
                            "dynamic",
                            "unpriced"
                          ]
                        },
                        "authority": {
                          "type": "string",
                          "minLength": 1,
                          "maxLength": 200
                        },
                        "pricingVersion": {
                          "type": "string",
                          "minLength": 1,
                          "maxLength": 200,
                          "nullable": true
                        }
                      },
                      "required": [
                        "behavior",
                        "authority",
                        "pricingVersion"
                      ],
                      "additionalProperties": false
                    },
                    "rest": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "method": {
                            "type": "string",
                            "enum": [
                              "GET",
                              "POST",
                              "DELETE"
                            ]
                          },
                          "path": {
                            "type": "string",
                            "pattern": "^\\/v1\\/"
                          },
                          "operationId": {
                            "type": "string",
                            "pattern": "^[a-z][A-Za-z0-9]*$"
                          },
                          "status": {
                            "type": "string",
                            "enum": [
                              "available",
                              "unavailable",
                              "planned",
                              "blocked"
                            ]
                          }
                        },
                        "required": [
                          "method",
                          "path",
                          "operationId",
                          "status"
                        ],
                        "additionalProperties": false
                      },
                      "minItems": 1,
                      "maxItems": 10
                    },
                    "mcp": {
                      "type": "object",
                      "properties": {
                        "tool": {
                          "type": "string",
                          "pattern": "^roasos_[a-z0-9_]+$"
                        },
                        "status": {
                          "type": "string",
                          "enum": [
                            "available",
                            "planned"
                          ]
                        }
                      },
                      "required": [
                        "tool",
                        "status"
                      ],
                      "additionalProperties": false,
                      "nullable": true
                    },
                    "models": {
                      "type": "array",
                      "items": {
                        "type": "string",
                        "minLength": 1,
                        "maxLength": 200
                      },
                      "maxItems": 200
                    },
                    "constraints": {
                      "type": "object",
                      "additionalProperties": {
                        "anyOf": [
                          {
                            "type": "string",
                            "maxLength": 4096
                          },
                          {
                            "type": "number"
                          },
                          {
                            "type": "boolean"
                          },
                          {
                            "enum": [
                              "null"
                            ],
                            "nullable": true
                          }
                        ]
                      }
                    },
                    "policies": {
                      "type": "object",
                      "properties": {
                        "catalogVersion": {
                          "type": "string",
                          "minLength": 1,
                          "maxLength": 200
                        },
                        "mediaPolicyId": {
                          "type": "string",
                          "pattern": "^media\\.[a-z0-9-]+@[1-9][0-9]*$"
                        },
                        "trustPolicyId": {
                          "type": "string",
                          "pattern": "^trust\\.[a-z0-9-]+@[1-9][0-9]*$"
                        },
                        "lifecyclePolicyId": {
                          "type": "string",
                          "pattern": "^lifecycle\\.[a-z0-9-]+@[1-9][0-9]*$"
                        },
                        "financePolicyId": {
                          "type": "string",
                          "pattern": "^finance\\.[a-z0-9-]+@[1-9][0-9]*$"
                        }
                      },
                      "required": [
                        "catalogVersion",
                        "mediaPolicyId",
                        "trustPolicyId",
                        "lifecyclePolicyId",
                        "financePolicyId"
                      ],
                      "additionalProperties": false
                    },
                    "contracts": {
                      "type": "object",
                      "properties": {
                        "inputSchema": {
                          "type": "string",
                          "pattern": "^[a-z][a-z0-9_]*$",
                          "nullable": true
                        },
                        "outputSchema": {
                          "type": "string",
                          "pattern": "^[a-z][a-z0-9_]*$"
                        },
                        "errorSchema": {
                          "type": "string",
                          "enum": [
                            "error_response"
                          ]
                        }
                      },
                      "required": [
                        "inputSchema",
                        "outputSchema",
                        "errorSchema"
                      ],
                      "additionalProperties": false
                    },
                    "unavailableReason": {
                      "type": "string",
                      "minLength": 1,
                      "maxLength": 2000
                    }
                  },
                  "required": [
                    "id",
                    "title",
                    "description",
                    "domain",
                    "availability",
                    "release",
                    "execution",
                    "requiredScopes",
                    "risk",
                    "billing",
                    "rest",
                    "mcp"
                  ],
                  "additionalProperties": false
                },
                "maxItems": 500
              },
              "contracts": {
                "type": "object",
                "properties": {
                  "contract_version": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 200
                  },
                  "intent_fingerprint_version": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 200
                  },
                  "schemas": {
                    "type": "object",
                    "additionalProperties": {
                      "type": "object",
                      "additionalProperties": {}
                    }
                  },
                  "examples": {
                    "type": "object",
                    "additionalProperties": {}
                  }
                },
                "required": [
                  "contract_version",
                  "intent_fingerprint_version",
                  "schemas",
                  "examples"
                ],
                "additionalProperties": false
              }
            },
            "required": [
              "schema_version",
              "manifest_version",
              "boundary",
              "pricing_version",
              "capabilities",
              "contracts"
            ],
            "additionalProperties": false
          }
        },
        "required": [
          "data"
        ],
        "additionalProperties": false
      },
      "JobResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "format": "uuid"
              },
              "kind": {
                "type": "string",
                "enum": [
                  "image",
                  "scene",
                  "avatar",
                  "video",
                  "ugc",
                  "audio",
                  "voice",
                  "lipsync",
                  "batch",
                  "research"
                ]
              },
              "model": {
                "type": "string",
                "minLength": 1,
                "maxLength": 200,
                "nullable": true
              },
              "status": {
                "type": "string",
                "enum": [
                  "queued",
                  "processing",
                  "completed",
                  "failed",
                  "canceled"
                ]
              },
              "credits_reserved": {
                "type": "integer",
                "minimum": 0
              },
              "created_at": {
                "type": "string"
              },
              "completed_at": {
                "type": "string",
                "nullable": true
              },
              "error": {
                "type": "object",
                "properties": {
                  "code": {
                    "type": "string"
                  },
                  "message": {
                    "type": "string"
                  }
                },
                "required": [
                  "code",
                  "message"
                ],
                "additionalProperties": false,
                "nullable": true
              },
              "result": {},
              "webhook": {
                "type": "object",
                "properties": {
                  "status": {
                    "type": "string",
                    "enum": [
                      "delivered",
                      "failed"
                    ]
                  },
                  "attempts": {
                    "type": "integer",
                    "minimum": 0
                  },
                  "last_status": {
                    "type": "string",
                    "maxLength": 64,
                    "nullable": true
                  },
                  "delivered_at": {
                    "type": "string"
                  },
                  "failed_at": {
                    "type": "string"
                  }
                },
                "required": [
                  "status",
                  "attempts",
                  "last_status"
                ],
                "additionalProperties": false
              },
              "inputs": {
                "type": "object",
                "properties": {
                  "endpoint": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 200
                  },
                  "request": {
                    "type": "object",
                    "additionalProperties": {}
                  }
                },
                "required": [
                  "endpoint",
                  "request"
                ],
                "additionalProperties": false
              },
              "links": {
                "type": "object",
                "properties": {
                  "self": {
                    "type": "string"
                  },
                  "status": {
                    "type": "string"
                  },
                  "result": {
                    "type": "string"
                  },
                  "events": {
                    "type": "string"
                  }
                },
                "required": [
                  "self",
                  "status",
                  "result",
                  "events"
                ],
                "additionalProperties": false
              }
            },
            "required": [
              "id",
              "kind",
              "model",
              "status",
              "credits_reserved",
              "created_at",
              "links"
            ],
            "additionalProperties": false
          }
        },
        "required": [
          "data"
        ],
        "additionalProperties": false
      },
      "JobListResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "format": "uuid"
                },
                "kind": {
                  "type": "string",
                  "enum": [
                    "image",
                    "scene",
                    "avatar",
                    "video",
                    "ugc",
                    "audio",
                    "voice",
                    "lipsync",
                    "batch",
                    "research"
                  ]
                },
                "model": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 200,
                  "nullable": true
                },
                "status": {
                  "type": "string",
                  "enum": [
                    "queued",
                    "processing",
                    "completed",
                    "failed",
                    "canceled"
                  ]
                },
                "credits_reserved": {
                  "type": "integer",
                  "minimum": 0
                },
                "created_at": {
                  "type": "string"
                },
                "completed_at": {
                  "type": "string",
                  "nullable": true
                },
                "error": {
                  "type": "object",
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "code",
                    "message"
                  ],
                  "additionalProperties": false,
                  "nullable": true
                },
                "result": {},
                "webhook": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string",
                      "enum": [
                        "delivered",
                        "failed"
                      ]
                    },
                    "attempts": {
                      "type": "integer",
                      "minimum": 0
                    },
                    "last_status": {
                      "type": "string",
                      "maxLength": 64,
                      "nullable": true
                    },
                    "delivered_at": {
                      "type": "string"
                    },
                    "failed_at": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "status",
                    "attempts",
                    "last_status"
                  ],
                  "additionalProperties": false
                },
                "inputs": {
                  "type": "object",
                  "properties": {
                    "endpoint": {
                      "type": "string",
                      "minLength": 1,
                      "maxLength": 200
                    },
                    "request": {
                      "type": "object",
                      "additionalProperties": {}
                    }
                  },
                  "required": [
                    "endpoint",
                    "request"
                  ],
                  "additionalProperties": false
                },
                "links": {
                  "type": "object",
                  "properties": {
                    "self": {
                      "type": "string"
                    },
                    "status": {
                      "type": "string"
                    },
                    "result": {
                      "type": "string"
                    },
                    "events": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "self",
                    "status",
                    "result",
                    "events"
                  ],
                  "additionalProperties": false
                }
              },
              "required": [
                "id",
                "kind",
                "model",
                "status",
                "credits_reserved",
                "created_at",
                "links"
              ],
              "additionalProperties": false
            }
          },
          "meta": {
            "type": "object",
            "properties": {
              "has_more": {
                "type": "boolean"
              },
              "next_cursor": {
                "type": "string",
                "nullable": true
              }
            },
            "required": [
              "has_more",
              "next_cursor"
            ],
            "additionalProperties": false
          }
        },
        "required": [
          "data",
          "meta"
        ],
        "additionalProperties": false
      },
      "JobStatusResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "format": "uuid"
              },
              "status": {
                "type": "string",
                "enum": [
                  "queued",
                  "processing",
                  "completed",
                  "failed",
                  "canceled"
                ]
              },
              "updated_at": {
                "type": "string"
              }
            },
            "required": [
              "id",
              "status",
              "updated_at"
            ],
            "additionalProperties": false
          }
        },
        "required": [
          "data"
        ],
        "additionalProperties": false
      },
      "JobWaitResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "jobs": {
                "type": "array",
                "items": {
                  "anyOf": [
                    {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string",
                          "format": "uuid"
                        },
                        "status": {
                          "type": "string",
                          "enum": [
                            "queued",
                            "processing",
                            "completed",
                            "failed",
                            "canceled"
                          ]
                        },
                        "updated_at": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "id",
                        "status",
                        "updated_at"
                      ],
                      "additionalProperties": false
                    },
                    {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string",
                          "format": "uuid"
                        },
                        "error": {
                          "type": "object",
                          "properties": {
                            "code": {
                              "type": "string",
                              "enum": [
                                "job_not_found"
                              ]
                            },
                            "message": {
                              "type": "string"
                            }
                          },
                          "required": [
                            "code",
                            "message"
                          ],
                          "additionalProperties": false
                        }
                      },
                      "required": [
                        "id",
                        "error"
                      ],
                      "additionalProperties": false
                    }
                  ]
                }
              },
              "all_terminal": {
                "type": "boolean"
              },
              "waited_ms": {
                "type": "integer",
                "minimum": 0
              }
            },
            "required": [
              "jobs",
              "all_terminal",
              "waited_ms"
            ],
            "additionalProperties": false
          }
        },
        "required": [
          "data"
        ],
        "additionalProperties": false
      },
      "FormatsResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "registry_version": {
                "type": "string"
              },
              "formats": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string"
                    },
                    "name": {
                      "type": "string"
                    },
                    "kind": {
                      "type": "string",
                      "enum": [
                        "video",
                        "effect",
                        "slideshow",
                        "static"
                      ]
                    },
                    "aliases": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "premise": {
                      "type": "string"
                    },
                    "beats": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "shoot": {
                      "type": "string"
                    },
                    "avoid": {
                      "type": "string"
                    },
                    "needs": {
                      "type": "object",
                      "properties": {
                        "product": {
                          "type": "boolean"
                        },
                        "person": {
                          "type": "boolean"
                        }
                      },
                      "required": [
                        "product",
                        "person"
                      ],
                      "additionalProperties": false
                    },
                    "aspect": {
                      "type": "string"
                    },
                    "duration_sec": {
                      "type": "number",
                      "nullable": true
                    },
                    "roles": {
                      "type": "object",
                      "properties": {
                        "video": {
                          "type": "string"
                        },
                        "image": {
                          "type": "string"
                        }
                      },
                      "additionalProperties": false
                    },
                    "skill": {
                      "type": "string",
                      "nullable": true
                    },
                    "starter": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "id",
                    "name",
                    "kind",
                    "aliases",
                    "premise",
                    "beats",
                    "shoot",
                    "avoid",
                    "needs",
                    "aspect",
                    "duration_sec",
                    "roles",
                    "skill",
                    "starter"
                  ],
                  "additionalProperties": false
                }
              }
            },
            "required": [
              "registry_version",
              "formats"
            ],
            "additionalProperties": false
          }
        },
        "required": [
          "data"
        ],
        "additionalProperties": false
      },
      "JobResultResponse": {
        "type": "object",
        "properties": {
          "data": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "url": {
                    "type": "string",
                    "format": "uri",
                    "maxLength": 4096
                  },
                  "images": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "format": "uri",
                      "maxLength": 4096
                    }
                  },
                  "avatar_id": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "reference_sheet": {
                    "type": "string",
                    "format": "uri",
                    "maxLength": 4096
                  },
                  "portrait_url": {
                    "type": "string",
                    "format": "uri",
                    "maxLength": 4096
                  },
                  "full_body_url": {
                    "type": "string",
                    "format": "uri",
                    "maxLength": 4096
                  },
                  "provider_seed": {
                    "type": "integer"
                  }
                },
                "additionalProperties": false
              },
              {
                "type": "object",
                "properties": {
                  "url": {
                    "type": "string",
                    "format": "uri",
                    "maxLength": 4096
                  },
                  "scene_id": {
                    "type": "string",
                    "format": "uuid"
                  }
                },
                "required": [
                  "url",
                  "scene_id"
                ],
                "additionalProperties": false
              },
              {
                "type": "object",
                "properties": {
                  "avatar_id": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "reference_sheet": {
                    "type": "string",
                    "format": "uri",
                    "maxLength": 4096
                  },
                  "portrait_url": {
                    "type": "string",
                    "format": "uri",
                    "maxLength": 4096
                  },
                  "full_body_url": {
                    "type": "string",
                    "format": "uri",
                    "maxLength": 4096
                  },
                  "images": {
                    "type": "object",
                    "properties": {
                      "front": {
                        "type": "string",
                        "format": "uri",
                        "maxLength": 4096
                      },
                      "full_body": {
                        "type": "string",
                        "format": "uri",
                        "maxLength": 4096
                      }
                    },
                    "required": [
                      "front",
                      "full_body"
                    ],
                    "additionalProperties": false
                  }
                },
                "required": [
                  "avatar_id",
                  "images"
                ],
                "additionalProperties": false
              },
              {
                "type": "object",
                "properties": {
                  "url": {
                    "type": "string",
                    "format": "uri",
                    "maxLength": 4096
                  }
                },
                "required": [
                  "url"
                ],
                "additionalProperties": false
              },
              {
                "type": "object",
                "properties": {
                  "url": {
                    "type": "string",
                    "format": "uri",
                    "maxLength": 4096
                  },
                  "timestamps": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "word": {
                          "type": "string"
                        },
                        "start": {
                          "type": "number"
                        },
                        "end": {
                          "type": "number"
                        }
                      },
                      "required": [
                        "word",
                        "start",
                        "end"
                      ],
                      "additionalProperties": false
                    }
                  }
                },
                "required": [
                  "url"
                ],
                "additionalProperties": false
              },
              {
                "type": "object",
                "properties": {
                  "voice_id": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "provider": {
                    "type": "string",
                    "enum": [
                      "minimax",
                      "qwen"
                    ]
                  },
                  "name": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 120
                  }
                },
                "required": [
                  "voice_id",
                  "provider",
                  "name"
                ],
                "additionalProperties": false
              }
            ]
          }
        },
        "required": [
          "data"
        ],
        "additionalProperties": false
      },
      "JobEventsResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "seq": {
                  "type": "integer",
                  "minimum": 0
                },
                "event": {
                  "type": "string",
                  "enum": [
                    "queued",
                    "provider_submitted",
                    "provider_completed",
                    "settled",
                    "failed",
                    "canceled"
                  ]
                },
                "at": {
                  "type": "string"
                }
              },
              "required": [
                "seq",
                "event",
                "at"
              ],
              "additionalProperties": false
            }
          }
        },
        "required": [
          "data"
        ],
        "additionalProperties": false
      },
      "ModelQuoteResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "kind": {
                "type": "string",
                "enum": [
                  "quote"
                ]
              },
              "quote_id": {
                "type": "string",
                "format": "uuid"
              },
              "credits": {
                "type": "integer",
                "minimum": 0
              },
              "expires_at": {
                "type": "string"
              },
              "pricing_version": {
                "type": "string"
              },
              "confirmation": {
                "type": "object",
                "additionalProperties": {}
              }
            },
            "required": [
              "kind",
              "quote_id",
              "credits",
              "expires_at",
              "pricing_version",
              "confirmation"
            ],
            "additionalProperties": false
          }
        },
        "required": [
          "data"
        ],
        "additionalProperties": false
      },
      "CatalogResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "catalog_version": {
                "type": "string"
              },
              "pricing_version": {
                "type": "string"
              },
              "models": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "key": {
                      "type": "string"
                    },
                    "id": {
                      "type": "string"
                    },
                    "family": {
                      "type": "string"
                    },
                    "endpoint": {
                      "type": "string",
                      "nullable": true
                    },
                    "modes": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "fields": {
                      "type": "object",
                      "additionalProperties": {
                        "type": "object",
                        "properties": {
                          "type": {
                            "type": "string",
                            "enum": [
                              "string",
                              "integer",
                              "number",
                              "boolean",
                              "string[]",
                              "object[]",
                              "object",
                              "enum"
                            ]
                          },
                          "enum": {
                            "type": "array",
                            "items": {
                              "anyOf": [
                                {
                                  "type": "string"
                                },
                                {
                                  "type": "number"
                                },
                                {
                                  "type": "boolean"
                                }
                              ]
                            }
                          },
                          "min": {
                            "type": "number"
                          },
                          "max": {
                            "type": "number"
                          },
                          "max_chars": {
                            "type": "integer"
                          },
                          "max_items": {
                            "type": "integer"
                          },
                          "required": {
                            "type": "boolean"
                          },
                          "default": {
                            "anyOf": [
                              {
                                "type": "string"
                              },
                              {
                                "type": "number"
                              },
                              {
                                "type": "boolean"
                              }
                            ]
                          },
                          "modes": {
                            "type": "array",
                            "items": {
                              "type": "string"
                            }
                          },
                          "mode_rules": {
                            "type": "object",
                            "additionalProperties": {
                              "type": "object",
                              "properties": {
                                "required": {
                                  "type": "boolean"
                                },
                                "max": {
                                  "type": "number"
                                }
                              },
                              "additionalProperties": false
                            }
                          },
                          "pinned": {
                            "type": "boolean"
                          }
                        },
                        "required": [
                          "type"
                        ],
                        "additionalProperties": false
                      }
                    },
                    "media": {
                      "type": "object",
                      "additionalProperties": {
                        "type": "object",
                        "properties": {
                          "max_items": {
                            "type": "integer",
                            "minimum": 1
                          },
                          "max_bytes": {
                            "type": "integer",
                            "minimum": 1
                          },
                          "content_types": {
                            "type": "array",
                            "items": {
                              "type": "string"
                            }
                          },
                          "min_seconds": {
                            "type": "number"
                          },
                          "max_seconds": {
                            "type": "number"
                          }
                        },
                        "required": [
                          "max_items",
                          "max_bytes",
                          "content_types"
                        ],
                        "additionalProperties": false
                      }
                    },
                    "result": {
                      "type": "object",
                      "properties": {
                        "kind": {
                          "type": "string"
                        },
                        "fields": {
                          "type": "object",
                          "additionalProperties": {
                            "type": "object",
                            "properties": {
                              "type": {
                                "type": "string",
                                "enum": [
                                  "string",
                                  "integer",
                                  "number",
                                  "boolean",
                                  "string[]",
                                  "object[]",
                                  "object",
                                  "enum"
                                ]
                              },
                              "enum": {
                                "type": "array",
                                "items": {
                                  "anyOf": [
                                    {
                                      "type": "string"
                                    },
                                    {
                                      "type": "number"
                                    },
                                    {
                                      "type": "boolean"
                                    }
                                  ]
                                }
                              },
                              "min": {
                                "type": "number"
                              },
                              "max": {
                                "type": "number"
                              },
                              "max_chars": {
                                "type": "integer"
                              },
                              "max_items": {
                                "type": "integer"
                              },
                              "required": {
                                "type": "boolean"
                              },
                              "default": {
                                "anyOf": [
                                  {
                                    "type": "string"
                                  },
                                  {
                                    "type": "number"
                                  },
                                  {
                                    "type": "boolean"
                                  }
                                ]
                              },
                              "modes": {
                                "type": "array",
                                "items": {
                                  "type": "string"
                                }
                              },
                              "mode_rules": {
                                "type": "object",
                                "additionalProperties": {
                                  "type": "object",
                                  "properties": {
                                    "required": {
                                      "type": "boolean"
                                    },
                                    "max": {
                                      "type": "number"
                                    }
                                  },
                                  "additionalProperties": false
                                }
                              },
                              "pinned": {
                                "type": "boolean"
                              }
                            },
                            "required": [
                              "type"
                            ],
                            "additionalProperties": false
                          }
                        }
                      },
                      "required": [
                        "kind",
                        "fields"
                      ],
                      "additionalProperties": false
                    },
                    "credits": {
                      "type": "object",
                      "properties": {
                        "unit": {
                          "type": "string"
                        },
                        "examples": {
                          "type": "object",
                          "additionalProperties": {
                            "type": "number"
                          }
                        }
                      },
                      "required": [
                        "unit",
                        "examples"
                      ],
                      "additionalProperties": false
                    },
                    "provider_endpoint_ids": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "pricing_keys": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "provider_not_exposed": {
                      "type": "object",
                      "additionalProperties": {}
                    },
                    "provider_pricing": {
                      "type": "object",
                      "properties": {
                        "text": {
                          "type": "string"
                        },
                        "source": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "text",
                        "source"
                      ],
                      "additionalProperties": false,
                      "nullable": true
                    },
                    "hidden": {
                      "type": "boolean"
                    },
                    "deprecated": {
                      "type": "object",
                      "properties": {
                        "replacement": {
                          "type": "string"
                        },
                        "note": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "replacement",
                        "note"
                      ],
                      "additionalProperties": false,
                      "nullable": true
                    },
                    "guide": {
                      "type": "object",
                      "properties": {
                        "family": {
                          "type": "string"
                        },
                        "best_for": {
                          "type": "string"
                        },
                        "rules": {
                          "type": "array",
                          "items": {
                            "type": "string"
                          }
                        },
                        "example": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "family",
                        "best_for",
                        "rules",
                        "example"
                      ],
                      "additionalProperties": false,
                      "nullable": true
                    },
                    "expected_generation_ms": {
                      "type": "object",
                      "properties": {
                        "p50_ms": {
                          "type": "integer",
                          "exclusiveMinimum": true,
                          "minimum": 0
                        },
                        "p90_ms": {
                          "type": "integer",
                          "exclusiveMinimum": true,
                          "minimum": 0
                        },
                        "basis": {
                          "type": "string",
                          "enum": [
                            "measured",
                            "typical"
                          ]
                        }
                      },
                      "required": [
                        "p50_ms",
                        "p90_ms",
                        "basis"
                      ],
                      "additionalProperties": false
                    }
                  },
                  "required": [
                    "key",
                    "id",
                    "family",
                    "endpoint",
                    "modes",
                    "fields",
                    "media",
                    "result",
                    "credits",
                    "provider_endpoint_ids",
                    "pricing_keys",
                    "provider_not_exposed",
                    "provider_pricing",
                    "hidden",
                    "deprecated",
                    "guide"
                  ],
                  "additionalProperties": false
                }
              },
              "roles": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "job": {
                      "type": "string"
                    },
                    "family": {
                      "type": "string"
                    },
                    "model": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "job",
                    "family",
                    "model"
                  ],
                  "additionalProperties": false
                }
              }
            },
            "required": [
              "catalog_version",
              "pricing_version",
              "models",
              "roles"
            ],
            "additionalProperties": false
          }
        },
        "required": [
          "data"
        ],
        "additionalProperties": false
      },
      "CatalogModelResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "key": {
                "type": "string"
              },
              "id": {
                "type": "string"
              },
              "family": {
                "type": "string"
              },
              "endpoint": {
                "type": "string",
                "nullable": true
              },
              "modes": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "fields": {
                "type": "object",
                "additionalProperties": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "enum": [
                        "string",
                        "integer",
                        "number",
                        "boolean",
                        "string[]",
                        "object[]",
                        "object",
                        "enum"
                      ]
                    },
                    "enum": {
                      "type": "array",
                      "items": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "number"
                          },
                          {
                            "type": "boolean"
                          }
                        ]
                      }
                    },
                    "min": {
                      "type": "number"
                    },
                    "max": {
                      "type": "number"
                    },
                    "max_chars": {
                      "type": "integer"
                    },
                    "max_items": {
                      "type": "integer"
                    },
                    "required": {
                      "type": "boolean"
                    },
                    "default": {
                      "anyOf": [
                        {
                          "type": "string"
                        },
                        {
                          "type": "number"
                        },
                        {
                          "type": "boolean"
                        }
                      ]
                    },
                    "modes": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "mode_rules": {
                      "type": "object",
                      "additionalProperties": {
                        "type": "object",
                        "properties": {
                          "required": {
                            "type": "boolean"
                          },
                          "max": {
                            "type": "number"
                          }
                        },
                        "additionalProperties": false
                      }
                    },
                    "pinned": {
                      "type": "boolean"
                    }
                  },
                  "required": [
                    "type"
                  ],
                  "additionalProperties": false
                }
              },
              "media": {
                "type": "object",
                "additionalProperties": {
                  "type": "object",
                  "properties": {
                    "max_items": {
                      "type": "integer",
                      "minimum": 1
                    },
                    "max_bytes": {
                      "type": "integer",
                      "minimum": 1
                    },
                    "content_types": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "min_seconds": {
                      "type": "number"
                    },
                    "max_seconds": {
                      "type": "number"
                    }
                  },
                  "required": [
                    "max_items",
                    "max_bytes",
                    "content_types"
                  ],
                  "additionalProperties": false
                }
              },
              "result": {
                "type": "object",
                "properties": {
                  "kind": {
                    "type": "string"
                  },
                  "fields": {
                    "type": "object",
                    "additionalProperties": {
                      "type": "object",
                      "properties": {
                        "type": {
                          "type": "string",
                          "enum": [
                            "string",
                            "integer",
                            "number",
                            "boolean",
                            "string[]",
                            "object[]",
                            "object",
                            "enum"
                          ]
                        },
                        "enum": {
                          "type": "array",
                          "items": {
                            "anyOf": [
                              {
                                "type": "string"
                              },
                              {
                                "type": "number"
                              },
                              {
                                "type": "boolean"
                              }
                            ]
                          }
                        },
                        "min": {
                          "type": "number"
                        },
                        "max": {
                          "type": "number"
                        },
                        "max_chars": {
                          "type": "integer"
                        },
                        "max_items": {
                          "type": "integer"
                        },
                        "required": {
                          "type": "boolean"
                        },
                        "default": {
                          "anyOf": [
                            {
                              "type": "string"
                            },
                            {
                              "type": "number"
                            },
                            {
                              "type": "boolean"
                            }
                          ]
                        },
                        "modes": {
                          "type": "array",
                          "items": {
                            "type": "string"
                          }
                        },
                        "mode_rules": {
                          "type": "object",
                          "additionalProperties": {
                            "type": "object",
                            "properties": {
                              "required": {
                                "type": "boolean"
                              },
                              "max": {
                                "type": "number"
                              }
                            },
                            "additionalProperties": false
                          }
                        },
                        "pinned": {
                          "type": "boolean"
                        }
                      },
                      "required": [
                        "type"
                      ],
                      "additionalProperties": false
                    }
                  }
                },
                "required": [
                  "kind",
                  "fields"
                ],
                "additionalProperties": false
              },
              "credits": {
                "type": "object",
                "properties": {
                  "unit": {
                    "type": "string"
                  },
                  "examples": {
                    "type": "object",
                    "additionalProperties": {
                      "type": "number"
                    }
                  }
                },
                "required": [
                  "unit",
                  "examples"
                ],
                "additionalProperties": false
              },
              "provider_endpoint_ids": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "pricing_keys": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "provider_not_exposed": {
                "type": "object",
                "additionalProperties": {}
              },
              "provider_pricing": {
                "type": "object",
                "properties": {
                  "text": {
                    "type": "string"
                  },
                  "source": {
                    "type": "string"
                  }
                },
                "required": [
                  "text",
                  "source"
                ],
                "additionalProperties": false,
                "nullable": true
              },
              "hidden": {
                "type": "boolean"
              },
              "deprecated": {
                "type": "object",
                "properties": {
                  "replacement": {
                    "type": "string"
                  },
                  "note": {
                    "type": "string"
                  }
                },
                "required": [
                  "replacement",
                  "note"
                ],
                "additionalProperties": false,
                "nullable": true
              },
              "guide": {
                "type": "object",
                "properties": {
                  "family": {
                    "type": "string"
                  },
                  "best_for": {
                    "type": "string"
                  },
                  "rules": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "example": {
                    "type": "string"
                  }
                },
                "required": [
                  "family",
                  "best_for",
                  "rules",
                  "example"
                ],
                "additionalProperties": false,
                "nullable": true
              },
              "expected_generation_ms": {
                "type": "object",
                "properties": {
                  "p50_ms": {
                    "type": "integer",
                    "exclusiveMinimum": true,
                    "minimum": 0
                  },
                  "p90_ms": {
                    "type": "integer",
                    "exclusiveMinimum": true,
                    "minimum": 0
                  },
                  "basis": {
                    "type": "string",
                    "enum": [
                      "measured",
                      "typical"
                    ]
                  }
                },
                "required": [
                  "p50_ms",
                  "p90_ms",
                  "basis"
                ],
                "additionalProperties": false
              }
            },
            "required": [
              "key",
              "id",
              "family",
              "endpoint",
              "modes",
              "fields",
              "media",
              "result",
              "credits",
              "provider_endpoint_ids",
              "pricing_keys",
              "provider_not_exposed",
              "provider_pricing",
              "hidden",
              "deprecated",
              "guide"
            ],
            "additionalProperties": false
          }
        },
        "required": [
          "data"
        ],
        "additionalProperties": false
      },
      "ImageNanoBananaProRequest": {
        "type": "object",
        "properties": {
          "prompt": {
            "type": "string",
            "minLength": 1,
            "maxLength": 8000
          },
          "alter": {
            "type": "object",
            "properties": {
              "mode": {
                "type": "string",
                "enum": [
                  "recast",
                  "product_swap",
                  "clean_text"
                ]
              },
              "who": {
                "type": "string",
                "minLength": 1,
                "maxLength": 200
              },
              "new_person": {
                "type": "string",
                "minLength": 1,
                "maxLength": 200
              },
              "clothes": {
                "type": "string",
                "minLength": 1,
                "maxLength": 200
              },
              "outfit": {
                "type": "string",
                "enum": [
                  "own",
                  "source"
                ]
              },
              "object": {
                "type": "string",
                "minLength": 1,
                "maxLength": 200
              },
              "product": {
                "type": "string",
                "minLength": 1,
                "maxLength": 200
              },
              "keep": {
                "type": "string",
                "minLength": 1,
                "maxLength": 200
              },
              "multi_shot": {
                "type": "boolean"
              }
            },
            "required": [
              "mode"
            ],
            "additionalProperties": false
          },
          "references": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uri",
              "maxLength": 4096
            },
            "maxItems": 14
          },
          "source_image": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "product_images": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uri",
              "maxLength": 4096
            },
            "maxItems": 14
          },
          "product_id": {
            "type": "string",
            "format": "uuid"
          },
          "avatar_id": {
            "type": "string",
            "format": "uuid"
          },
          "avatar_outfit": {
            "type": "string",
            "maxLength": 500
          },
          "aspect_ratio": {
            "type": "string",
            "enum": [
              "auto",
              "21:9",
              "16:9",
              "3:2",
              "4:3",
              "5:4",
              "1:1",
              "4:5",
              "3:4",
              "2:3",
              "9:16"
            ],
            "default": "1:1"
          },
          "resolution": {
            "type": "string",
            "enum": [
              "1K",
              "2K",
              "4K"
            ],
            "default": "2K"
          },
          "num_images": {
            "type": "integer",
            "minimum": 1,
            "maximum": 4,
            "default": 1
          },
          "seed": {
            "type": "integer",
            "minimum": -2147483648,
            "maximum": 2147483647
          },
          "ad_look": {
            "type": "string",
            "enum": [
              "designed",
              "native",
              "ui"
            ]
          },
          "ad_set": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "format": "uuid"
              },
              "index": {
                "type": "integer",
                "minimum": 1,
                "maximum": 20
              },
              "total": {
                "type": "integer",
                "minimum": 1,
                "maximum": 20
              }
            },
            "required": [
              "id",
              "index",
              "total"
            ],
            "additionalProperties": false
          },
          "prompt_mode": {
            "type": "string",
            "enum": [
              "wrapped",
              "exact"
            ]
          },
          "quote_only": {
            "type": "boolean",
            "default": false
          },
          "quote_id": {
            "type": "string",
            "format": "uuid"
          },
          "webhook_url": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "wait_timeout_seconds": {
            "type": "integer",
            "minimum": 0,
            "maximum": 60,
            "default": 0
          }
        },
        "additionalProperties": false
      },
      "ImageNanoBanana21Request": {
        "type": "object",
        "properties": {
          "prompt": {
            "type": "string",
            "minLength": 1,
            "maxLength": 8000
          },
          "alter": {
            "type": "object",
            "properties": {
              "mode": {
                "type": "string",
                "enum": [
                  "recast",
                  "product_swap",
                  "clean_text"
                ]
              },
              "who": {
                "type": "string",
                "minLength": 1,
                "maxLength": 200
              },
              "new_person": {
                "type": "string",
                "minLength": 1,
                "maxLength": 200
              },
              "clothes": {
                "type": "string",
                "minLength": 1,
                "maxLength": 200
              },
              "outfit": {
                "type": "string",
                "enum": [
                  "own",
                  "source"
                ]
              },
              "object": {
                "type": "string",
                "minLength": 1,
                "maxLength": 200
              },
              "product": {
                "type": "string",
                "minLength": 1,
                "maxLength": 200
              },
              "keep": {
                "type": "string",
                "minLength": 1,
                "maxLength": 200
              },
              "multi_shot": {
                "type": "boolean"
              }
            },
            "required": [
              "mode"
            ],
            "additionalProperties": false
          },
          "references": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uri",
              "maxLength": 4096
            },
            "maxItems": 14
          },
          "source_image": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "product_images": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uri",
              "maxLength": 4096
            },
            "maxItems": 14
          },
          "product_id": {
            "type": "string",
            "format": "uuid"
          },
          "avatar_id": {
            "type": "string",
            "format": "uuid"
          },
          "avatar_outfit": {
            "type": "string",
            "maxLength": 500
          },
          "aspect_ratio": {
            "type": "string",
            "enum": [
              "auto",
              "9:16",
              "1:1",
              "3:4",
              "4:3",
              "16:9",
              "21:9"
            ],
            "default": "1:1"
          },
          "resolution": {
            "type": "string",
            "enum": [
              "1K",
              "2K",
              "4K"
            ],
            "default": "1K"
          },
          "num_images": {
            "type": "integer",
            "minimum": 1,
            "maximum": 4,
            "default": 1
          },
          "seed": {
            "type": "integer",
            "minimum": -2147483648,
            "maximum": 2147483647
          },
          "ad_look": {
            "type": "string",
            "enum": [
              "designed",
              "native",
              "ui"
            ]
          },
          "ad_set": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "format": "uuid"
              },
              "index": {
                "type": "integer",
                "minimum": 1,
                "maximum": 20
              },
              "total": {
                "type": "integer",
                "minimum": 1,
                "maximum": 20
              }
            },
            "required": [
              "id",
              "index",
              "total"
            ],
            "additionalProperties": false
          },
          "prompt_mode": {
            "type": "string",
            "enum": [
              "wrapped",
              "exact"
            ]
          },
          "quote_only": {
            "type": "boolean",
            "default": false
          },
          "quote_id": {
            "type": "string",
            "format": "uuid"
          },
          "webhook_url": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "wait_timeout_seconds": {
            "type": "integer",
            "minimum": 0,
            "maximum": 60,
            "default": 0
          }
        },
        "additionalProperties": false
      },
      "ImageGptImage25Request": {
        "type": "object",
        "properties": {
          "prompt": {
            "type": "string",
            "minLength": 1,
            "maxLength": 10000
          },
          "references": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uri",
              "maxLength": 4096
            },
            "maxItems": 8
          },
          "source_image": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "product_images": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uri",
              "maxLength": 4096
            },
            "maxItems": 8
          },
          "product_id": {
            "type": "string",
            "format": "uuid"
          },
          "avatar_id": {
            "type": "string",
            "format": "uuid"
          },
          "avatar_outfit": {
            "type": "string",
            "maxLength": 500
          },
          "aspect_ratio": {
            "type": "string",
            "enum": [
              "9:16",
              "1:1",
              "2:3",
              "3:4",
              "4:5",
              "4:3",
              "3:2",
              "16:9"
            ]
          },
          "quality_tier": {
            "type": "string",
            "enum": [
              "low",
              "medium",
              "high"
            ],
            "default": "high"
          },
          "num_images": {
            "type": "integer",
            "minimum": 1,
            "maximum": 4,
            "default": 1
          },
          "background": {
            "type": "string",
            "enum": [
              "auto",
              "transparent",
              "opaque"
            ],
            "default": "auto"
          },
          "ad_look": {
            "type": "string",
            "enum": [
              "designed",
              "native",
              "ui"
            ]
          },
          "ad_set": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "format": "uuid"
              },
              "index": {
                "type": "integer",
                "minimum": 1,
                "maximum": 20
              },
              "total": {
                "type": "integer",
                "minimum": 1,
                "maximum": 20
              }
            },
            "required": [
              "id",
              "index",
              "total"
            ],
            "additionalProperties": false
          },
          "prompt_mode": {
            "type": "string",
            "enum": [
              "wrapped",
              "exact"
            ]
          },
          "quote_only": {
            "type": "boolean",
            "default": false
          },
          "quote_id": {
            "type": "string",
            "format": "uuid"
          },
          "webhook_url": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "wait_timeout_seconds": {
            "type": "integer",
            "minimum": 0,
            "maximum": 60,
            "default": 0
          }
        },
        "required": [
          "prompt"
        ],
        "additionalProperties": false
      },
      "ImageGptImage25SunburstRequest": {
        "type": "object",
        "properties": {
          "prompt": {
            "type": "string",
            "minLength": 1,
            "maxLength": 10000
          },
          "references": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uri",
              "maxLength": 4096
            },
            "maxItems": 8
          },
          "source_image": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "product_images": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uri",
              "maxLength": 4096
            },
            "maxItems": 8
          },
          "product_id": {
            "type": "string",
            "format": "uuid"
          },
          "avatar_id": {
            "type": "string",
            "format": "uuid"
          },
          "avatar_outfit": {
            "type": "string",
            "maxLength": 500
          },
          "aspect_ratio": {
            "type": "string",
            "enum": [
              "9:16",
              "1:1",
              "2:3",
              "3:4",
              "4:5",
              "4:3",
              "3:2",
              "16:9"
            ]
          },
          "quality_tier": {
            "type": "string",
            "enum": [
              "low",
              "medium",
              "high"
            ],
            "default": "high"
          },
          "num_images": {
            "type": "integer",
            "minimum": 1,
            "maximum": 4,
            "default": 1
          },
          "background": {
            "type": "string",
            "enum": [
              "auto",
              "transparent",
              "opaque"
            ],
            "default": "auto"
          },
          "ad_look": {
            "type": "string",
            "enum": [
              "designed",
              "native",
              "ui"
            ]
          },
          "ad_set": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "format": "uuid"
              },
              "index": {
                "type": "integer",
                "minimum": 1,
                "maximum": 20
              },
              "total": {
                "type": "integer",
                "minimum": 1,
                "maximum": 20
              }
            },
            "required": [
              "id",
              "index",
              "total"
            ],
            "additionalProperties": false
          },
          "prompt_mode": {
            "type": "string",
            "enum": [
              "wrapped",
              "exact"
            ]
          },
          "quote_only": {
            "type": "boolean",
            "default": false
          },
          "quote_id": {
            "type": "string",
            "format": "uuid"
          },
          "webhook_url": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "wait_timeout_seconds": {
            "type": "integer",
            "minimum": 0,
            "maximum": 60,
            "default": 0
          }
        },
        "required": [
          "prompt"
        ],
        "additionalProperties": false
      },
      "ImageFlux2MaxRequest": {
        "type": "object",
        "properties": {
          "prompt": {
            "type": "string",
            "minLength": 1,
            "maxLength": 10000
          },
          "aspect_ratio": {
            "type": "string",
            "enum": [
              "9:16",
              "1:1",
              "3:4",
              "4:3",
              "16:9"
            ]
          },
          "seed": {
            "type": "integer",
            "minimum": -2147483648,
            "maximum": 2147483647
          },
          "quote_only": {
            "type": "boolean",
            "default": false
          },
          "quote_id": {
            "type": "string",
            "format": "uuid"
          },
          "webhook_url": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "wait_timeout_seconds": {
            "type": "integer",
            "minimum": 0,
            "maximum": 60,
            "default": 0
          }
        },
        "required": [
          "prompt"
        ],
        "additionalProperties": false
      },
      "ImageGrokImagineImageRequest": {
        "type": "object",
        "properties": {
          "prompt": {
            "type": "string",
            "minLength": 1,
            "maxLength": 8000
          },
          "aspect_ratio": {
            "type": "string",
            "enum": [
              "9:16",
              "1:1",
              "2:3",
              "3:4",
              "4:3",
              "3:2",
              "16:9"
            ]
          },
          "resolution": {
            "type": "string",
            "enum": [
              "1K",
              "2K"
            ],
            "default": "1K"
          },
          "num_images": {
            "type": "integer",
            "minimum": 1,
            "maximum": 4,
            "default": 1
          },
          "quote_only": {
            "type": "boolean",
            "default": false
          },
          "quote_id": {
            "type": "string",
            "format": "uuid"
          },
          "webhook_url": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "wait_timeout_seconds": {
            "type": "integer",
            "minimum": 0,
            "maximum": 60,
            "default": 0
          }
        },
        "required": [
          "prompt"
        ],
        "additionalProperties": false
      },
      "ImageEditBriaBgRemoveRequest": {
        "type": "object",
        "properties": {
          "image_url": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "quote_only": {
            "type": "boolean",
            "default": false
          },
          "quote_id": {
            "type": "string",
            "format": "uuid"
          },
          "webhook_url": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "wait_timeout_seconds": {
            "type": "integer",
            "minimum": 0,
            "maximum": 60,
            "default": 0
          }
        },
        "required": [
          "image_url"
        ],
        "additionalProperties": false
      },
      "ImageEditBriaProductShotRequest": {
        "type": "object",
        "properties": {
          "image_url": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "prompt": {
            "type": "string",
            "minLength": 1,
            "maxLength": 1000
          },
          "quote_only": {
            "type": "boolean",
            "default": false
          },
          "quote_id": {
            "type": "string",
            "format": "uuid"
          },
          "webhook_url": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "wait_timeout_seconds": {
            "type": "integer",
            "minimum": 0,
            "maximum": 60,
            "default": 0
          }
        },
        "required": [
          "image_url",
          "prompt"
        ],
        "additionalProperties": false
      },
      "ImageEditTopazImageRequest": {
        "type": "object",
        "properties": {
          "image_url": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "model": {
            "type": "string",
            "enum": [
              "Standard V2",
              "Low Resolution V2",
              "CGI",
              "High Fidelity V2",
              "Text Refine",
              "Recovery V2",
              "Redefine"
            ],
            "default": "Standard V2"
          },
          "upscale_factor": {
            "anyOf": [
              {
                "type": "number",
                "enum": [
                  2
                ]
              },
              {
                "type": "number",
                "enum": [
                  3
                ]
              },
              {
                "type": "number",
                "enum": [
                  4
                ]
              }
            ],
            "default": 2
          },
          "face_enhancement": {
            "type": "boolean",
            "default": false
          },
          "quote_only": {
            "type": "boolean",
            "default": false
          },
          "quote_id": {
            "type": "string",
            "format": "uuid"
          },
          "webhook_url": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "wait_timeout_seconds": {
            "type": "integer",
            "minimum": 0,
            "maximum": 60,
            "default": 0
          }
        },
        "required": [
          "image_url"
        ],
        "additionalProperties": false
      },
      "ImageEditGptImage25Request": {
        "type": "object",
        "properties": {
          "prompt": {
            "type": "string",
            "minLength": 1,
            "maxLength": 10000
          },
          "image_url": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "mask_url": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "quote_only": {
            "type": "boolean",
            "default": false
          },
          "quote_id": {
            "type": "string",
            "format": "uuid"
          },
          "webhook_url": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "wait_timeout_seconds": {
            "type": "integer",
            "minimum": 0,
            "maximum": 60,
            "default": 0
          }
        },
        "required": [
          "prompt",
          "image_url",
          "mask_url"
        ],
        "additionalProperties": false
      },
      "SceneNanoBananaProRequest": {
        "type": "object",
        "properties": {
          "prompt": {
            "type": "string",
            "minLength": 1,
            "maxLength": 8000
          },
          "avatar_id": {
            "type": "string",
            "format": "uuid"
          },
          "product_images": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uri",
              "maxLength": 4096
            },
            "maxItems": 1
          },
          "product_id": {
            "type": "string",
            "format": "uuid"
          },
          "references": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uri",
              "maxLength": 4096
            },
            "maxItems": 12
          },
          "remix": {
            "type": "boolean",
            "default": false
          },
          "aspect_ratio": {
            "type": "string",
            "enum": [
              "auto",
              "21:9",
              "16:9",
              "3:2",
              "4:3",
              "5:4",
              "1:1",
              "4:5",
              "3:4",
              "2:3",
              "9:16"
            ],
            "default": "9:16"
          },
          "resolution": {
            "type": "string",
            "enum": [
              "1K",
              "2K"
            ],
            "default": "1K"
          },
          "name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 200
          },
          "display_prompt": {
            "type": "string",
            "minLength": 1,
            "maxLength": 500
          },
          "quote_only": {
            "type": "boolean",
            "default": false
          },
          "quote_id": {
            "type": "string",
            "format": "uuid"
          },
          "webhook_url": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "wait_timeout_seconds": {
            "type": "integer",
            "minimum": 0,
            "maximum": 60,
            "default": 0
          }
        },
        "required": [
          "prompt"
        ],
        "additionalProperties": false
      },
      "AvatarNanoBananaProRequest": {
        "type": "object",
        "properties": {
          "description": {
            "type": "string",
            "minLength": 1,
            "maxLength": 1000
          },
          "name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 200
          },
          "mode": {
            "type": "string",
            "enum": [
              "manual",
              "reference"
            ],
            "default": "manual"
          },
          "reference_images": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uri",
              "maxLength": 4096
            },
            "minItems": 1,
            "maxItems": 5
          },
          "quote_only": {
            "type": "boolean",
            "default": false
          },
          "quote_id": {
            "type": "string",
            "format": "uuid"
          },
          "webhook_url": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "wait_timeout_seconds": {
            "type": "integer",
            "minimum": 0,
            "maximum": 60,
            "default": 0
          }
        },
        "required": [
          "description"
        ],
        "additionalProperties": false
      },
      "VideoKling4Request": {
        "type": "object",
        "properties": {
          "mode": {
            "type": "string",
            "enum": [
              "text-to-video",
              "image-to-video",
              "reference-to-video"
            ]
          },
          "prompt": {
            "type": "string",
            "minLength": 1,
            "maxLength": 2500
          },
          "multi_prompt": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "prompt": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 512
                },
                "duration_seconds": {
                  "type": "integer",
                  "minimum": 1,
                  "maximum": 30
                }
              },
              "required": [
                "prompt",
                "duration_seconds"
              ],
              "additionalProperties": false
            },
            "minItems": 1,
            "maxItems": 8
          },
          "image_url": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "scene_id": {
            "type": "string",
            "format": "uuid"
          },
          "extend_of_generation_id": {
            "type": "string",
            "format": "uuid"
          },
          "end_image_url": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "references": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uri",
              "maxLength": 4096
            },
            "maxItems": 10
          },
          "video_urls": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uri",
              "maxLength": 4096
            },
            "minItems": 1,
            "maxItems": 5
          },
          "elements": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "frontal_image_url": {
                  "type": "string",
                  "format": "uri",
                  "maxLength": 4096
                },
                "reference_image_urls": {
                  "type": "array",
                  "items": {
                    "type": "string",
                    "format": "uri",
                    "maxLength": 4096
                  },
                  "minItems": 1,
                  "maxItems": 3
                },
                "video_url": {
                  "type": "string",
                  "format": "uri",
                  "maxLength": 4096
                },
                "voice_id": {
                  "type": "string",
                  "pattern": "^[A-Za-z0-9_-]{1,128}$"
                }
              },
              "additionalProperties": false
            },
            "minItems": 1,
            "maxItems": 7
          },
          "avatar_id": {
            "type": "string",
            "format": "uuid"
          },
          "avatar_outfit": {
            "type": "string",
            "maxLength": 500
          },
          "duration_seconds": {
            "anyOf": [
              {
                "type": "number",
                "enum": [
                  3
                ]
              },
              {
                "type": "number",
                "enum": [
                  4
                ]
              },
              {
                "type": "number",
                "enum": [
                  5
                ]
              },
              {
                "type": "number",
                "enum": [
                  6
                ]
              },
              {
                "type": "number",
                "enum": [
                  7
                ]
              },
              {
                "type": "number",
                "enum": [
                  8
                ]
              },
              {
                "type": "number",
                "enum": [
                  9
                ]
              },
              {
                "type": "number",
                "enum": [
                  10
                ]
              },
              {
                "type": "number",
                "enum": [
                  11
                ]
              },
              {
                "type": "number",
                "enum": [
                  12
                ]
              },
              {
                "type": "number",
                "enum": [
                  13
                ]
              },
              {
                "type": "number",
                "enum": [
                  14
                ]
              },
              {
                "type": "number",
                "enum": [
                  15
                ]
              },
              {
                "type": "number",
                "enum": [
                  16
                ]
              },
              {
                "type": "number",
                "enum": [
                  17
                ]
              },
              {
                "type": "number",
                "enum": [
                  18
                ]
              },
              {
                "type": "number",
                "enum": [
                  19
                ]
              },
              {
                "type": "number",
                "enum": [
                  20
                ]
              },
              {
                "type": "number",
                "enum": [
                  21
                ]
              },
              {
                "type": "number",
                "enum": [
                  22
                ]
              },
              {
                "type": "number",
                "enum": [
                  23
                ]
              },
              {
                "type": "number",
                "enum": [
                  24
                ]
              },
              {
                "type": "number",
                "enum": [
                  25
                ]
              },
              {
                "type": "number",
                "enum": [
                  26
                ]
              },
              {
                "type": "number",
                "enum": [
                  27
                ]
              },
              {
                "type": "number",
                "enum": [
                  28
                ]
              },
              {
                "type": "number",
                "enum": [
                  29
                ]
              },
              {
                "type": "number",
                "enum": [
                  30
                ]
              }
            ]
          },
          "aspect_ratio": {
            "type": "string",
            "enum": [
              "9:16",
              "16:9",
              "1:1",
              "21:9",
              "auto"
            ]
          },
          "resolution": {
            "type": "string",
            "enum": [
              "720p",
              "1080p"
            ],
            "default": "1080p"
          },
          "quote_only": {
            "type": "boolean",
            "default": false
          },
          "quote_id": {
            "type": "string",
            "format": "uuid"
          },
          "webhook_url": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "wait_timeout_seconds": {
            "type": "integer",
            "minimum": 0,
            "maximum": 60,
            "default": 0
          }
        },
        "additionalProperties": false
      },
      "VideoSeedance25Request": {
        "type": "object",
        "properties": {
          "mode": {
            "type": "string",
            "enum": [
              "text-to-video",
              "image-to-video",
              "reference-to-video"
            ]
          },
          "prompt": {
            "type": "string",
            "minLength": 1,
            "maxLength": 10000
          },
          "image_url": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "scene_id": {
            "type": "string",
            "format": "uuid"
          },
          "extend_of_generation_id": {
            "type": "string",
            "format": "uuid"
          },
          "end_image_url": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "references": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uri",
              "maxLength": 4096
            },
            "maxItems": 30
          },
          "avatar_id": {
            "type": "string",
            "format": "uuid"
          },
          "avatar_outfit": {
            "type": "string",
            "maxLength": 500
          },
          "video_urls": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uri",
              "maxLength": 4096
            },
            "maxItems": 10
          },
          "audio_urls": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uri",
              "maxLength": 4096
            },
            "maxItems": 10
          },
          "duration_seconds": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "auto"
                ]
              },
              {
                "type": "number",
                "enum": [
                  4
                ]
              },
              {
                "type": "number",
                "enum": [
                  5
                ]
              },
              {
                "type": "number",
                "enum": [
                  6
                ]
              },
              {
                "type": "number",
                "enum": [
                  8
                ]
              },
              {
                "type": "number",
                "enum": [
                  10
                ]
              },
              {
                "type": "number",
                "enum": [
                  12
                ]
              },
              {
                "type": "number",
                "enum": [
                  15
                ]
              },
              {
                "type": "number",
                "enum": [
                  20
                ]
              },
              {
                "type": "number",
                "enum": [
                  25
                ]
              },
              {
                "type": "number",
                "enum": [
                  30
                ]
              }
            ]
          },
          "resolution": {
            "type": "string",
            "enum": [
              "480p",
              "720p",
              "1080p"
            ],
            "default": "720p"
          },
          "aspect_ratio": {
            "type": "string",
            "enum": [
              "auto",
              "9:16",
              "1:1",
              "3:4",
              "4:3",
              "16:9",
              "21:9"
            ]
          },
          "generate_audio": {
            "type": "boolean",
            "default": true
          },
          "quote_only": {
            "type": "boolean",
            "default": false
          },
          "quote_id": {
            "type": "string",
            "format": "uuid"
          },
          "webhook_url": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "wait_timeout_seconds": {
            "type": "integer",
            "minimum": 0,
            "maximum": 60,
            "default": 0
          }
        },
        "required": [
          "prompt"
        ],
        "additionalProperties": false
      },
      "VideoGeminiOmniFlashRequest": {
        "type": "object",
        "properties": {
          "mode": {
            "type": "string",
            "enum": [
              "text-to-video",
              "image-to-video",
              "reference-to-video"
            ]
          },
          "prompt": {
            "type": "string",
            "minLength": 1,
            "maxLength": 10000
          },
          "image_url": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "scene_id": {
            "type": "string",
            "format": "uuid"
          },
          "extend_of_generation_id": {
            "type": "string",
            "format": "uuid"
          },
          "end_image_url": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "references": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uri",
              "maxLength": 4096
            },
            "minItems": 1,
            "maxItems": 10
          },
          "video_urls": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uri",
              "maxLength": 4096
            },
            "minItems": 1,
            "maxItems": 3
          },
          "avatar_id": {
            "type": "string",
            "format": "uuid"
          },
          "avatar_outfit": {
            "type": "string",
            "maxLength": 500
          },
          "duration_seconds": {
            "anyOf": [
              {
                "type": "number",
                "enum": [
                  3
                ]
              },
              {
                "type": "number",
                "enum": [
                  4
                ]
              },
              {
                "type": "number",
                "enum": [
                  5
                ]
              },
              {
                "type": "number",
                "enum": [
                  6
                ]
              },
              {
                "type": "number",
                "enum": [
                  7
                ]
              },
              {
                "type": "number",
                "enum": [
                  8
                ]
              },
              {
                "type": "number",
                "enum": [
                  9
                ]
              },
              {
                "type": "number",
                "enum": [
                  10
                ]
              },
              {
                "type": "number",
                "enum": [
                  11
                ]
              },
              {
                "type": "number",
                "enum": [
                  12
                ]
              },
              {
                "type": "number",
                "enum": [
                  13
                ]
              },
              {
                "type": "number",
                "enum": [
                  14
                ]
              },
              {
                "type": "number",
                "enum": [
                  15
                ]
              }
            ]
          },
          "aspect_ratio": {
            "type": "string",
            "enum": [
              "9:16",
              "16:9"
            ],
            "default": "16:9"
          },
          "resolution": {
            "type": "string",
            "enum": [
              "360p",
              "720p",
              "1080p",
              "4k"
            ],
            "default": "720p"
          },
          "quote_only": {
            "type": "boolean",
            "default": false
          },
          "quote_id": {
            "type": "string",
            "format": "uuid"
          },
          "webhook_url": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "wait_timeout_seconds": {
            "type": "integer",
            "minimum": 0,
            "maximum": 60,
            "default": 0
          }
        },
        "required": [
          "prompt"
        ],
        "additionalProperties": false
      },
      "VideoWan27Request": {
        "type": "object",
        "properties": {
          "mode": {
            "type": "string",
            "enum": [
              "text-to-video",
              "image-to-video",
              "reference-to-video"
            ]
          },
          "prompt": {
            "type": "string",
            "minLength": 1,
            "maxLength": 5000
          },
          "negative_prompt": {
            "type": "string",
            "maxLength": 500
          },
          "image_url": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "scene_id": {
            "type": "string",
            "format": "uuid"
          },
          "extend_of_generation_id": {
            "type": "string",
            "format": "uuid"
          },
          "end_image_url": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "audio_url": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "references": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uri",
              "maxLength": 4096
            },
            "maxItems": 10
          },
          "video_urls": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uri",
              "maxLength": 4096
            },
            "maxItems": 5
          },
          "avatar_id": {
            "type": "string",
            "format": "uuid"
          },
          "avatar_outfit": {
            "type": "string",
            "maxLength": 500
          },
          "duration_seconds": {
            "anyOf": [
              {
                "type": "number",
                "enum": [
                  5
                ]
              },
              {
                "type": "number",
                "enum": [
                  8
                ]
              },
              {
                "type": "number",
                "enum": [
                  10
                ]
              },
              {
                "type": "number",
                "enum": [
                  15
                ]
              }
            ]
          },
          "resolution": {
            "type": "string",
            "enum": [
              "720p",
              "1080p"
            ],
            "default": "720p"
          },
          "aspect_ratio": {
            "type": "string",
            "enum": [
              "9:16",
              "1:1",
              "3:4",
              "4:3",
              "16:9"
            ]
          },
          "prompt_expansion": {
            "type": "boolean"
          },
          "multi_shots": {
            "type": "boolean"
          },
          "seed": {
            "type": "integer",
            "minimum": 0,
            "maximum": 2147483647
          },
          "quote_only": {
            "type": "boolean",
            "default": false
          },
          "quote_id": {
            "type": "string",
            "format": "uuid"
          },
          "webhook_url": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "wait_timeout_seconds": {
            "type": "integer",
            "minimum": 0,
            "maximum": 60,
            "default": 0
          }
        },
        "required": [
          "prompt"
        ],
        "additionalProperties": false
      },
      "VideoVeo31Request": {
        "type": "object",
        "properties": {
          "mode": {
            "type": "string",
            "enum": [
              "text-to-video",
              "image-to-video",
              "reference-to-video"
            ]
          },
          "prompt": {
            "type": "string",
            "minLength": 1,
            "maxLength": 10000
          },
          "negative_prompt": {
            "type": "string",
            "maxLength": 2000
          },
          "image_url": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "scene_id": {
            "type": "string",
            "format": "uuid"
          },
          "extend_of_generation_id": {
            "type": "string",
            "format": "uuid"
          },
          "references": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uri",
              "maxLength": 4096
            },
            "minItems": 1,
            "maxItems": 3
          },
          "avatar_id": {
            "type": "string",
            "format": "uuid"
          },
          "avatar_outfit": {
            "type": "string",
            "maxLength": 500
          },
          "duration_seconds": {
            "anyOf": [
              {
                "type": "number",
                "enum": [
                  4
                ]
              },
              {
                "type": "number",
                "enum": [
                  6
                ]
              },
              {
                "type": "number",
                "enum": [
                  8
                ]
              }
            ]
          },
          "resolution": {
            "type": "string",
            "enum": [
              "720p",
              "1080p",
              "4k"
            ],
            "default": "720p"
          },
          "aspect_ratio": {
            "type": "string",
            "enum": [
              "9:16",
              "16:9"
            ]
          },
          "generate_audio": {
            "type": "boolean",
            "default": true
          },
          "seed": {
            "type": "integer",
            "minimum": -2147483648,
            "maximum": 2147483647
          },
          "quote_only": {
            "type": "boolean",
            "default": false
          },
          "quote_id": {
            "type": "string",
            "format": "uuid"
          },
          "webhook_url": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "wait_timeout_seconds": {
            "type": "integer",
            "minimum": 0,
            "maximum": 60,
            "default": 0
          }
        },
        "required": [
          "prompt",
          "duration_seconds"
        ],
        "additionalProperties": false
      },
      "VideoSeedance2Request": {
        "type": "object",
        "properties": {
          "mode": {
            "type": "string",
            "enum": [
              "text-to-video",
              "image-to-video",
              "reference-to-video"
            ]
          },
          "prompt": {
            "type": "string",
            "minLength": 1,
            "maxLength": 10000
          },
          "image_url": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "scene_id": {
            "type": "string",
            "format": "uuid"
          },
          "extend_of_generation_id": {
            "type": "string",
            "format": "uuid"
          },
          "end_image_url": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "references": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uri",
              "maxLength": 4096
            },
            "maxItems": 9
          },
          "video_urls": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uri",
              "maxLength": 4096
            },
            "maxItems": 3
          },
          "audio_urls": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uri",
              "maxLength": 4096
            },
            "maxItems": 3
          },
          "duration_seconds": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "auto"
                ]
              },
              {
                "type": "number",
                "enum": [
                  4
                ]
              },
              {
                "type": "number",
                "enum": [
                  5
                ]
              },
              {
                "type": "number",
                "enum": [
                  6
                ]
              },
              {
                "type": "number",
                "enum": [
                  7
                ]
              },
              {
                "type": "number",
                "enum": [
                  8
                ]
              },
              {
                "type": "number",
                "enum": [
                  9
                ]
              },
              {
                "type": "number",
                "enum": [
                  10
                ]
              },
              {
                "type": "number",
                "enum": [
                  11
                ]
              },
              {
                "type": "number",
                "enum": [
                  12
                ]
              },
              {
                "type": "number",
                "enum": [
                  13
                ]
              },
              {
                "type": "number",
                "enum": [
                  14
                ]
              },
              {
                "type": "number",
                "enum": [
                  15
                ]
              }
            ]
          },
          "resolution": {
            "type": "string",
            "enum": [
              "480p",
              "720p"
            ],
            "default": "720p"
          },
          "aspect_ratio": {
            "type": "string",
            "enum": [
              "9:16",
              "1:1",
              "3:4",
              "4:3",
              "16:9",
              "21:9"
            ]
          },
          "generate_audio": {
            "type": "boolean",
            "default": true
          },
          "bitrate_mode": {
            "type": "string",
            "enum": [
              "standard",
              "high"
            ]
          },
          "quote_only": {
            "type": "boolean",
            "default": false
          },
          "quote_id": {
            "type": "string",
            "format": "uuid"
          },
          "webhook_url": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "wait_timeout_seconds": {
            "type": "integer",
            "minimum": 0,
            "maximum": 60,
            "default": 0
          }
        },
        "required": [
          "prompt"
        ],
        "additionalProperties": false
      },
      "VideoSeedance2ProRequest": {
        "type": "object",
        "properties": {
          "mode": {
            "type": "string",
            "enum": [
              "text-to-video",
              "image-to-video",
              "reference-to-video"
            ]
          },
          "prompt": {
            "type": "string",
            "minLength": 1,
            "maxLength": 10000
          },
          "image_url": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "scene_id": {
            "type": "string",
            "format": "uuid"
          },
          "extend_of_generation_id": {
            "type": "string",
            "format": "uuid"
          },
          "end_image_url": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "references": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uri",
              "maxLength": 4096
            },
            "maxItems": 9
          },
          "video_urls": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uri",
              "maxLength": 4096
            },
            "maxItems": 3
          },
          "audio_urls": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uri",
              "maxLength": 4096
            },
            "maxItems": 3
          },
          "duration_seconds": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "auto"
                ]
              },
              {
                "type": "number",
                "enum": [
                  4
                ]
              },
              {
                "type": "number",
                "enum": [
                  5
                ]
              },
              {
                "type": "number",
                "enum": [
                  6
                ]
              },
              {
                "type": "number",
                "enum": [
                  7
                ]
              },
              {
                "type": "number",
                "enum": [
                  8
                ]
              },
              {
                "type": "number",
                "enum": [
                  9
                ]
              },
              {
                "type": "number",
                "enum": [
                  10
                ]
              },
              {
                "type": "number",
                "enum": [
                  11
                ]
              },
              {
                "type": "number",
                "enum": [
                  12
                ]
              },
              {
                "type": "number",
                "enum": [
                  13
                ]
              },
              {
                "type": "number",
                "enum": [
                  14
                ]
              },
              {
                "type": "number",
                "enum": [
                  15
                ]
              }
            ]
          },
          "resolution": {
            "type": "string",
            "enum": [
              "480p",
              "720p",
              "1080p",
              "4k"
            ],
            "default": "720p"
          },
          "aspect_ratio": {
            "type": "string",
            "enum": [
              "9:16",
              "1:1",
              "3:4",
              "4:3",
              "16:9",
              "21:9"
            ]
          },
          "generate_audio": {
            "type": "boolean",
            "default": true
          },
          "bitrate_mode": {
            "type": "string",
            "enum": [
              "standard",
              "high"
            ]
          },
          "quote_only": {
            "type": "boolean",
            "default": false
          },
          "quote_id": {
            "type": "string",
            "format": "uuid"
          },
          "webhook_url": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "wait_timeout_seconds": {
            "type": "integer",
            "minimum": 0,
            "maximum": 60,
            "default": 0
          }
        },
        "required": [
          "prompt"
        ],
        "additionalProperties": false
      },
      "VideoGrokImagineRequest": {
        "type": "object",
        "properties": {
          "mode": {
            "type": "string",
            "enum": [
              "text-to-video",
              "image-to-video",
              "reference-to-video"
            ]
          },
          "prompt": {
            "type": "string",
            "minLength": 1,
            "maxLength": 4096
          },
          "image_url": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "scene_id": {
            "type": "string",
            "format": "uuid"
          },
          "extend_of_generation_id": {
            "type": "string",
            "format": "uuid"
          },
          "references": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uri",
              "maxLength": 4096
            },
            "minItems": 1,
            "maxItems": 7
          },
          "duration_seconds": {
            "anyOf": [
              {
                "type": "number",
                "enum": [
                  3
                ]
              },
              {
                "type": "number",
                "enum": [
                  5
                ]
              },
              {
                "type": "number",
                "enum": [
                  10
                ]
              },
              {
                "type": "number",
                "enum": [
                  15
                ]
              }
            ]
          },
          "resolution": {
            "type": "string",
            "enum": [
              "480p",
              "720p"
            ],
            "default": "720p"
          },
          "aspect_ratio": {
            "type": "string",
            "enum": [
              "16:9",
              "9:16",
              "1:1"
            ]
          },
          "quote_only": {
            "type": "boolean",
            "default": false
          },
          "quote_id": {
            "type": "string",
            "format": "uuid"
          },
          "webhook_url": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "wait_timeout_seconds": {
            "type": "integer",
            "minimum": 0,
            "maximum": 60,
            "default": 0
          }
        },
        "required": [
          "prompt"
        ],
        "additionalProperties": false
      },
      "VideoH3MaxRequest": {
        "type": "object",
        "properties": {
          "mode": {
            "type": "string",
            "enum": [
              "text-to-video",
              "image-to-video",
              "reference-to-video"
            ]
          },
          "prompt": {
            "type": "string",
            "minLength": 1,
            "maxLength": 10000
          },
          "image_url": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "scene_id": {
            "type": "string",
            "format": "uuid"
          },
          "extend_of_generation_id": {
            "type": "string",
            "format": "uuid"
          },
          "end_image_url": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "references": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uri",
              "maxLength": 4096
            },
            "maxItems": 9
          },
          "avatar_id": {
            "type": "string",
            "format": "uuid"
          },
          "avatar_outfit": {
            "type": "string",
            "maxLength": 500
          },
          "product_id": {
            "type": "string",
            "format": "uuid"
          },
          "video_urls": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uri",
              "maxLength": 4096
            },
            "maxItems": 3
          },
          "audio_urls": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uri",
              "maxLength": 4096
            },
            "maxItems": 3
          },
          "audio_url": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "duration_seconds": {
            "anyOf": [
              {
                "type": "number",
                "enum": [
                  5
                ]
              },
              {
                "type": "number",
                "enum": [
                  6
                ]
              },
              {
                "type": "number",
                "enum": [
                  7
                ]
              },
              {
                "type": "number",
                "enum": [
                  8
                ]
              },
              {
                "type": "number",
                "enum": [
                  9
                ]
              },
              {
                "type": "number",
                "enum": [
                  10
                ]
              },
              {
                "type": "number",
                "enum": [
                  11
                ]
              },
              {
                "type": "number",
                "enum": [
                  12
                ]
              },
              {
                "type": "number",
                "enum": [
                  13
                ]
              },
              {
                "type": "number",
                "enum": [
                  14
                ]
              },
              {
                "type": "number",
                "enum": [
                  15
                ]
              }
            ]
          },
          "resolution": {
            "type": "string",
            "enum": [
              "480p",
              "768p",
              "1080p"
            ],
            "default": "768p"
          },
          "aspect_ratio": {
            "type": "string",
            "enum": [
              "21:9",
              "16:9",
              "4:3",
              "1:1",
              "3:4",
              "9:16",
              "auto"
            ]
          },
          "seed": {
            "type": "integer",
            "minimum": 0,
            "maximum": 2147483647
          },
          "quote_only": {
            "type": "boolean",
            "default": false
          },
          "quote_id": {
            "type": "string",
            "format": "uuid"
          },
          "webhook_url": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "wait_timeout_seconds": {
            "type": "integer",
            "minimum": 0,
            "maximum": 60,
            "default": 0
          }
        },
        "required": [
          "prompt"
        ],
        "additionalProperties": false
      },
      "VideoFlux3MaxRequest": {
        "type": "object",
        "properties": {
          "mode": {
            "type": "string",
            "enum": [
              "text-to-video",
              "image-to-video"
            ]
          },
          "prompt": {
            "type": "string",
            "minLength": 1,
            "maxLength": 10000
          },
          "image_url": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "scene_id": {
            "type": "string",
            "format": "uuid"
          },
          "extend_of_generation_id": {
            "type": "string",
            "format": "uuid"
          },
          "end_image_url": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "duration_seconds": {
            "anyOf": [
              {
                "type": "number",
                "enum": [
                  5
                ]
              },
              {
                "type": "number",
                "enum": [
                  6
                ]
              },
              {
                "type": "number",
                "enum": [
                  7
                ]
              },
              {
                "type": "number",
                "enum": [
                  8
                ]
              },
              {
                "type": "number",
                "enum": [
                  9
                ]
              },
              {
                "type": "number",
                "enum": [
                  10
                ]
              },
              {
                "type": "number",
                "enum": [
                  11
                ]
              },
              {
                "type": "number",
                "enum": [
                  12
                ]
              },
              {
                "type": "number",
                "enum": [
                  13
                ]
              },
              {
                "type": "number",
                "enum": [
                  14
                ]
              },
              {
                "type": "number",
                "enum": [
                  15
                ]
              },
              {
                "type": "number",
                "enum": [
                  16
                ]
              },
              {
                "type": "number",
                "enum": [
                  17
                ]
              },
              {
                "type": "number",
                "enum": [
                  18
                ]
              },
              {
                "type": "number",
                "enum": [
                  19
                ]
              },
              {
                "type": "number",
                "enum": [
                  20
                ]
              }
            ]
          },
          "resolution": {
            "type": "string",
            "enum": [
              "720p",
              "1080p"
            ],
            "default": "720p"
          },
          "aspect_ratio": {
            "type": "string",
            "enum": [
              "auto",
              "21:9",
              "16:9",
              "4:3",
              "1:1",
              "3:4",
              "9:16"
            ]
          },
          "generate_audio": {
            "type": "boolean",
            "default": true
          },
          "seed": {
            "type": "integer",
            "minimum": 0,
            "maximum": 2147483647
          },
          "quote_only": {
            "type": "boolean",
            "default": false
          },
          "quote_id": {
            "type": "string",
            "format": "uuid"
          },
          "webhook_url": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "wait_timeout_seconds": {
            "type": "integer",
            "minimum": 0,
            "maximum": 60,
            "default": 0
          }
        },
        "required": [
          "prompt"
        ],
        "additionalProperties": false
      },
      "VideoH3MaxExtendRequest": {
        "type": "object",
        "properties": {
          "video_url": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "prompt": {
            "type": "string",
            "minLength": 1,
            "maxLength": 10000
          },
          "duration_seconds": {
            "anyOf": [
              {
                "type": "number",
                "enum": [
                  5
                ]
              },
              {
                "type": "number",
                "enum": [
                  6
                ]
              },
              {
                "type": "number",
                "enum": [
                  7
                ]
              },
              {
                "type": "number",
                "enum": [
                  8
                ]
              },
              {
                "type": "number",
                "enum": [
                  9
                ]
              },
              {
                "type": "number",
                "enum": [
                  10
                ]
              },
              {
                "type": "number",
                "enum": [
                  11
                ]
              },
              {
                "type": "number",
                "enum": [
                  12
                ]
              },
              {
                "type": "number",
                "enum": [
                  13
                ]
              },
              {
                "type": "number",
                "enum": [
                  14
                ]
              },
              {
                "type": "number",
                "enum": [
                  15
                ]
              }
            ],
            "default": 5
          },
          "resolution": {
            "type": "string",
            "enum": [
              "480p",
              "768p",
              "1080p"
            ],
            "default": "768p"
          },
          "aspect_ratio": {
            "type": "string",
            "enum": [
              "auto",
              "21:9",
              "16:9",
              "4:3",
              "1:1",
              "3:4",
              "9:16"
            ]
          },
          "output": {
            "type": "string",
            "enum": [
              "extended",
              "continuation"
            ],
            "default": "extended"
          },
          "seed": {
            "type": "integer",
            "minimum": 0,
            "maximum": 2147483647
          },
          "quote_only": {
            "type": "boolean",
            "default": false
          },
          "quote_id": {
            "type": "string",
            "format": "uuid"
          },
          "webhook_url": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "wait_timeout_seconds": {
            "type": "integer",
            "minimum": 0,
            "maximum": 60,
            "default": 0
          }
        },
        "required": [
          "video_url",
          "prompt"
        ],
        "additionalProperties": false
      },
      "VideoGeminiOmniFlashExtendRequest": {
        "type": "object",
        "properties": {
          "video_url": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "prompt": {
            "type": "string",
            "minLength": 1,
            "maxLength": 10000
          },
          "duration_seconds": {
            "anyOf": [
              {
                "type": "number",
                "enum": [
                  3
                ]
              },
              {
                "type": "number",
                "enum": [
                  4
                ]
              },
              {
                "type": "number",
                "enum": [
                  5
                ]
              },
              {
                "type": "number",
                "enum": [
                  6
                ]
              },
              {
                "type": "number",
                "enum": [
                  7
                ]
              },
              {
                "type": "number",
                "enum": [
                  8
                ]
              },
              {
                "type": "number",
                "enum": [
                  9
                ]
              },
              {
                "type": "number",
                "enum": [
                  10
                ]
              }
            ],
            "default": 8
          },
          "resolution": {
            "type": "string",
            "enum": [
              "360p",
              "720p",
              "1080p",
              "4k"
            ],
            "default": "720p"
          },
          "quote_only": {
            "type": "boolean",
            "default": false
          },
          "quote_id": {
            "type": "string",
            "format": "uuid"
          },
          "webhook_url": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "wait_timeout_seconds": {
            "type": "integer",
            "minimum": 0,
            "maximum": 60,
            "default": 0
          }
        },
        "required": [
          "video_url",
          "prompt"
        ],
        "additionalProperties": false
      },
      "VideoH3MaxInsertRequest": {
        "type": "object",
        "properties": {
          "video_url": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "prompt": {
            "type": "string",
            "maxLength": 10000
          },
          "start_seconds": {
            "type": "number",
            "minimum": 1.625,
            "maximum": 60
          },
          "resume_seconds": {
            "type": "number",
            "minimum": 2.625,
            "maximum": 60
          },
          "duration_seconds": {
            "anyOf": [
              {
                "type": "number",
                "enum": [
                  5
                ]
              },
              {
                "type": "number",
                "enum": [
                  6
                ]
              },
              {
                "type": "number",
                "enum": [
                  7
                ]
              },
              {
                "type": "number",
                "enum": [
                  8
                ]
              },
              {
                "type": "number",
                "enum": [
                  9
                ]
              },
              {
                "type": "number",
                "enum": [
                  10
                ]
              },
              {
                "type": "number",
                "enum": [
                  11
                ]
              },
              {
                "type": "number",
                "enum": [
                  12
                ]
              },
              {
                "type": "number",
                "enum": [
                  13
                ]
              }
            ],
            "default": 5
          },
          "resolution": {
            "type": "string",
            "enum": [
              "480p",
              "768p"
            ],
            "default": "768p"
          },
          "references": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uri",
              "maxLength": 4096
            },
            "maxItems": 9
          },
          "video_urls": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uri",
              "maxLength": 4096
            },
            "maxItems": 3
          },
          "seed": {
            "type": "integer",
            "minimum": 0,
            "maximum": 2147483647
          },
          "quote_only": {
            "type": "boolean",
            "default": false
          },
          "quote_id": {
            "type": "string",
            "format": "uuid"
          },
          "webhook_url": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "wait_timeout_seconds": {
            "type": "integer",
            "minimum": 0,
            "maximum": 60,
            "default": 0
          }
        },
        "required": [
          "video_url",
          "start_seconds",
          "resume_seconds"
        ],
        "additionalProperties": false
      },
      "VideoSeedance25EditRequest": {
        "type": "object",
        "properties": {
          "video_url": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "prompt": {
            "type": "string",
            "minLength": 1,
            "maxLength": 10000
          },
          "alter": {
            "type": "object",
            "properties": {
              "mode": {
                "type": "string",
                "enum": [
                  "recast",
                  "product_swap",
                  "clean_text"
                ]
              },
              "who": {
                "type": "string",
                "minLength": 1,
                "maxLength": 200
              },
              "new_person": {
                "type": "string",
                "minLength": 1,
                "maxLength": 200
              },
              "clothes": {
                "type": "string",
                "minLength": 1,
                "maxLength": 200
              },
              "outfit": {
                "type": "string",
                "enum": [
                  "own",
                  "source"
                ]
              },
              "object": {
                "type": "string",
                "minLength": 1,
                "maxLength": 200
              },
              "product": {
                "type": "string",
                "minLength": 1,
                "maxLength": 200
              },
              "keep": {
                "type": "string",
                "minLength": 1,
                "maxLength": 200
              },
              "multi_shot": {
                "type": "boolean"
              }
            },
            "required": [
              "mode"
            ],
            "additionalProperties": false
          },
          "references": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uri",
              "maxLength": 4096
            },
            "maxItems": 9
          },
          "avatar_id": {
            "type": "string",
            "format": "uuid"
          },
          "avatar_outfit": {
            "type": "string",
            "maxLength": 500
          },
          "product_id": {
            "type": "string",
            "format": "uuid"
          },
          "resolution": {
            "type": "string",
            "enum": [
              "480p",
              "720p",
              "1080p"
            ],
            "default": "720p"
          },
          "generate_audio": {
            "type": "boolean",
            "default": true
          },
          "quote_only": {
            "type": "boolean",
            "default": false
          },
          "quote_id": {
            "type": "string",
            "format": "uuid"
          },
          "webhook_url": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "wait_timeout_seconds": {
            "type": "integer",
            "minimum": 0,
            "maximum": 60,
            "default": 0
          }
        },
        "required": [
          "video_url"
        ],
        "additionalProperties": false
      },
      "VideoH3MaxStyleRequest": {
        "type": "object",
        "properties": {
          "mode": {
            "type": "string",
            "enum": [
              "text-to-video",
              "image-to-video"
            ]
          },
          "prompt": {
            "type": "string",
            "minLength": 1,
            "maxLength": 10000
          },
          "style": {
            "type": "string",
            "enum": [
              "vhs",
              "retro-toon-70s",
              "low-poly",
              "hand-drawn",
              "16bit-pixel"
            ]
          },
          "damage_level": {
            "type": "string",
            "enum": [
              "light",
              "medium",
              "heavy"
            ]
          },
          "image_url": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "scene_id": {
            "type": "string",
            "format": "uuid"
          },
          "duration_seconds": {
            "anyOf": [
              {
                "type": "number",
                "enum": [
                  5
                ]
              },
              {
                "type": "number",
                "enum": [
                  6
                ]
              },
              {
                "type": "number",
                "enum": [
                  7
                ]
              },
              {
                "type": "number",
                "enum": [
                  8
                ]
              },
              {
                "type": "number",
                "enum": [
                  9
                ]
              },
              {
                "type": "number",
                "enum": [
                  10
                ]
              },
              {
                "type": "number",
                "enum": [
                  11
                ]
              },
              {
                "type": "number",
                "enum": [
                  12
                ]
              },
              {
                "type": "number",
                "enum": [
                  13
                ]
              },
              {
                "type": "number",
                "enum": [
                  14
                ]
              },
              {
                "type": "number",
                "enum": [
                  15
                ]
              }
            ]
          },
          "resolution": {
            "type": "string",
            "enum": [
              "768p"
            ],
            "default": "768p"
          },
          "aspect_ratio": {
            "type": "string",
            "enum": [
              "21:9",
              "16:9",
              "4:3",
              "1:1",
              "3:4",
              "9:16"
            ]
          },
          "seed": {
            "type": "integer",
            "minimum": 0,
            "maximum": 2147483647
          },
          "quote_only": {
            "type": "boolean",
            "default": false
          },
          "quote_id": {
            "type": "string",
            "format": "uuid"
          },
          "webhook_url": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "wait_timeout_seconds": {
            "type": "integer",
            "minimum": 0,
            "maximum": 60,
            "default": 0
          }
        },
        "required": [
          "prompt",
          "style"
        ],
        "additionalProperties": false
      },
      "VideoEditKling4Request": {
        "type": "object",
        "properties": {
          "prompt": {
            "type": "string",
            "minLength": 1,
            "maxLength": 2500
          },
          "video_url": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "references": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uri",
              "maxLength": 4096
            },
            "maxItems": 10
          },
          "elements": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "frontal_image_url": {
                  "type": "string",
                  "format": "uri",
                  "maxLength": 4096
                },
                "reference_image_urls": {
                  "type": "array",
                  "items": {
                    "type": "string",
                    "format": "uri",
                    "maxLength": 4096
                  },
                  "minItems": 1,
                  "maxItems": 3
                }
              },
              "required": [
                "frontal_image_url",
                "reference_image_urls"
              ],
              "additionalProperties": false
            },
            "minItems": 1,
            "maxItems": 7
          },
          "avatar_id": {
            "type": "string",
            "format": "uuid"
          },
          "avatar_outfit": {
            "type": "string",
            "maxLength": 500
          },
          "product_id": {
            "type": "string",
            "format": "uuid"
          },
          "duration_seconds": {
            "anyOf": [
              {
                "type": "number",
                "enum": [
                  3
                ]
              },
              {
                "type": "number",
                "enum": [
                  4
                ]
              },
              {
                "type": "number",
                "enum": [
                  5
                ]
              },
              {
                "type": "number",
                "enum": [
                  6
                ]
              },
              {
                "type": "number",
                "enum": [
                  7
                ]
              },
              {
                "type": "number",
                "enum": [
                  8
                ]
              },
              {
                "type": "number",
                "enum": [
                  9
                ]
              },
              {
                "type": "number",
                "enum": [
                  10
                ]
              },
              {
                "type": "number",
                "enum": [
                  11
                ]
              },
              {
                "type": "number",
                "enum": [
                  12
                ]
              },
              {
                "type": "number",
                "enum": [
                  13
                ]
              },
              {
                "type": "number",
                "enum": [
                  14
                ]
              },
              {
                "type": "number",
                "enum": [
                  15
                ]
              },
              {
                "type": "number",
                "enum": [
                  16
                ]
              },
              {
                "type": "number",
                "enum": [
                  17
                ]
              },
              {
                "type": "number",
                "enum": [
                  18
                ]
              },
              {
                "type": "number",
                "enum": [
                  19
                ]
              },
              {
                "type": "number",
                "enum": [
                  20
                ]
              },
              {
                "type": "number",
                "enum": [
                  21
                ]
              },
              {
                "type": "number",
                "enum": [
                  22
                ]
              },
              {
                "type": "number",
                "enum": [
                  23
                ]
              },
              {
                "type": "number",
                "enum": [
                  24
                ]
              },
              {
                "type": "number",
                "enum": [
                  25
                ]
              },
              {
                "type": "number",
                "enum": [
                  26
                ]
              },
              {
                "type": "number",
                "enum": [
                  27
                ]
              },
              {
                "type": "number",
                "enum": [
                  28
                ]
              },
              {
                "type": "number",
                "enum": [
                  29
                ]
              },
              {
                "type": "number",
                "enum": [
                  30
                ]
              }
            ]
          },
          "resolution": {
            "type": "string",
            "enum": [
              "720p",
              "1080p"
            ],
            "default": "1080p"
          },
          "quote_only": {
            "type": "boolean",
            "default": false
          },
          "quote_id": {
            "type": "string",
            "format": "uuid"
          },
          "webhook_url": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "wait_timeout_seconds": {
            "type": "integer",
            "minimum": 0,
            "maximum": 60,
            "default": 0
          }
        },
        "required": [
          "prompt",
          "video_url"
        ],
        "additionalProperties": false
      },
      "VideoEditGeminiOmniFlashRequest": {
        "type": "object",
        "properties": {
          "prompt": {
            "type": "string",
            "minLength": 1,
            "maxLength": 10000
          },
          "video_url": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "quote_only": {
            "type": "boolean",
            "default": false
          },
          "quote_id": {
            "type": "string",
            "format": "uuid"
          },
          "webhook_url": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "wait_timeout_seconds": {
            "type": "integer",
            "minimum": 0,
            "maximum": 60,
            "default": 0
          }
        },
        "required": [
          "prompt",
          "video_url"
        ],
        "additionalProperties": false
      },
      "VideoEditH3MaxRecastRequest": {
        "type": "object",
        "properties": {
          "video_url": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "references": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uri",
              "maxLength": 4096
            },
            "maxItems": 4
          },
          "avatar_id": {
            "type": "string",
            "format": "uuid"
          },
          "prompt": {
            "type": "string",
            "maxLength": 10000
          },
          "resolution": {
            "type": "string",
            "enum": [
              "768p",
              "1080p"
            ],
            "default": "1080p"
          },
          "enhance_realism": {
            "type": "boolean"
          },
          "seed": {
            "type": "integer",
            "minimum": 0,
            "maximum": 2147483647
          },
          "quote_only": {
            "type": "boolean",
            "default": false
          },
          "quote_id": {
            "type": "string",
            "format": "uuid"
          },
          "webhook_url": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "wait_timeout_seconds": {
            "type": "integer",
            "minimum": 0,
            "maximum": 60,
            "default": 0
          }
        },
        "required": [
          "video_url"
        ],
        "additionalProperties": false
      },
      "VideoEditVeedFastRequest": {
        "type": "object",
        "properties": {
          "video_url": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "refine_foreground_edges": {
            "type": "boolean",
            "default": false
          },
          "subject_is_person": {
            "type": "boolean",
            "default": true
          },
          "quote_only": {
            "type": "boolean",
            "default": false
          },
          "quote_id": {
            "type": "string",
            "format": "uuid"
          },
          "webhook_url": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "wait_timeout_seconds": {
            "type": "integer",
            "minimum": 0,
            "maximum": 60,
            "default": 0
          }
        },
        "required": [
          "video_url"
        ],
        "additionalProperties": false
      },
      "VideoEditVeedStandardRequest": {
        "type": "object",
        "properties": {
          "video_url": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "refine_foreground_edges": {
            "type": "boolean",
            "default": false
          },
          "subject_is_person": {
            "type": "boolean",
            "default": true
          },
          "quote_only": {
            "type": "boolean",
            "default": false
          },
          "quote_id": {
            "type": "string",
            "format": "uuid"
          },
          "webhook_url": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "wait_timeout_seconds": {
            "type": "integer",
            "minimum": 0,
            "maximum": 60,
            "default": 0
          }
        },
        "required": [
          "video_url"
        ],
        "additionalProperties": false
      },
      "VideoEditBriaRequest": {
        "type": "object",
        "properties": {
          "video_url": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "background_color": {
            "type": "string",
            "enum": [
              "Transparent",
              "Black",
              "White",
              "Gray",
              "Red",
              "Green",
              "Blue",
              "Yellow",
              "Cyan",
              "Magenta",
              "Orange"
            ],
            "default": "Transparent"
          },
          "quote_only": {
            "type": "boolean",
            "default": false
          },
          "quote_id": {
            "type": "string",
            "format": "uuid"
          },
          "webhook_url": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "wait_timeout_seconds": {
            "type": "integer",
            "minimum": 0,
            "maximum": 60,
            "default": 0
          }
        },
        "required": [
          "video_url"
        ],
        "additionalProperties": false
      },
      "VideoEditTopazVideoRequest": {
        "type": "object",
        "properties": {
          "video_url": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "enhance_model": {
            "type": "string",
            "enum": [
              "Proteus",
              "Artemis HQ",
              "Artemis MQ",
              "Gaia HQ",
              "Gaia CG",
              "Nyx",
              "Starlight HQ"
            ],
            "default": "Proteus"
          },
          "upscale_factor": {
            "anyOf": [
              {
                "type": "number",
                "enum": [
                  2
                ]
              },
              {
                "type": "number",
                "enum": [
                  3
                ]
              },
              {
                "type": "number",
                "enum": [
                  4
                ]
              }
            ],
            "default": 2
          },
          "target_fps": {
            "type": "integer",
            "minimum": 16,
            "maximum": 60
          },
          "quote_only": {
            "type": "boolean",
            "default": false
          },
          "quote_id": {
            "type": "string",
            "format": "uuid"
          },
          "webhook_url": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "wait_timeout_seconds": {
            "type": "integer",
            "minimum": 0,
            "maximum": 60,
            "default": 0
          }
        },
        "required": [
          "video_url"
        ],
        "additionalProperties": false
      },
      "VideoKling3MotionRequest": {
        "type": "object",
        "properties": {
          "image_url": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "scene_id": {
            "type": "string",
            "format": "uuid"
          },
          "extend_of_generation_id": {
            "type": "string",
            "format": "uuid"
          },
          "video_url": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "character_orientation": {
            "type": "string",
            "enum": [
              "image",
              "video"
            ]
          },
          "keep_original_sound": {
            "type": "boolean"
          },
          "tier": {
            "type": "string",
            "enum": [
              "standard",
              "pro"
            ],
            "default": "standard"
          },
          "prompt": {
            "type": "string",
            "minLength": 1,
            "maxLength": 2500
          },
          "media_rights": {
            "type": "object",
            "properties": {
              "accepted": {
                "type": "boolean",
                "enum": [
                  true
                ]
              },
              "statement_version": {
                "type": "number",
                "enum": [
                  1
                ]
              }
            },
            "required": [
              "accepted",
              "statement_version"
            ],
            "additionalProperties": false
          },
          "quote_only": {
            "type": "boolean",
            "default": false
          },
          "quote_id": {
            "type": "string",
            "format": "uuid"
          },
          "webhook_url": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "wait_timeout_seconds": {
            "type": "integer",
            "minimum": 0,
            "maximum": 60,
            "default": 0
          }
        },
        "required": [
          "video_url",
          "character_orientation",
          "keep_original_sound",
          "media_rights"
        ],
        "additionalProperties": false
      },
      "UgcKling4Request": {
        "type": "object",
        "properties": {
          "scene_id": {
            "type": "string",
            "format": "uuid"
          },
          "scene_image": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "script": {
            "type": "string",
            "minLength": 1,
            "maxLength": 10000
          },
          "prompt_mode": {
            "type": "string",
            "enum": [
              "wrapped",
              "exact"
            ]
          },
          "duration_seconds": {
            "anyOf": [
              {
                "type": "number",
                "enum": [
                  3
                ]
              },
              {
                "type": "number",
                "enum": [
                  4
                ]
              },
              {
                "type": "number",
                "enum": [
                  5
                ]
              },
              {
                "type": "number",
                "enum": [
                  6
                ]
              },
              {
                "type": "number",
                "enum": [
                  7
                ]
              },
              {
                "type": "number",
                "enum": [
                  8
                ]
              },
              {
                "type": "number",
                "enum": [
                  9
                ]
              },
              {
                "type": "number",
                "enum": [
                  10
                ]
              },
              {
                "type": "number",
                "enum": [
                  11
                ]
              },
              {
                "type": "number",
                "enum": [
                  12
                ]
              },
              {
                "type": "number",
                "enum": [
                  13
                ]
              },
              {
                "type": "number",
                "enum": [
                  14
                ]
              },
              {
                "type": "number",
                "enum": [
                  15
                ]
              },
              {
                "type": "number",
                "enum": [
                  16
                ]
              },
              {
                "type": "number",
                "enum": [
                  17
                ]
              },
              {
                "type": "number",
                "enum": [
                  18
                ]
              },
              {
                "type": "number",
                "enum": [
                  19
                ]
              },
              {
                "type": "number",
                "enum": [
                  20
                ]
              },
              {
                "type": "number",
                "enum": [
                  21
                ]
              },
              {
                "type": "number",
                "enum": [
                  22
                ]
              },
              {
                "type": "number",
                "enum": [
                  23
                ]
              },
              {
                "type": "number",
                "enum": [
                  24
                ]
              },
              {
                "type": "number",
                "enum": [
                  25
                ]
              },
              {
                "type": "number",
                "enum": [
                  26
                ]
              },
              {
                "type": "number",
                "enum": [
                  27
                ]
              },
              {
                "type": "number",
                "enum": [
                  28
                ]
              },
              {
                "type": "number",
                "enum": [
                  29
                ]
              },
              {
                "type": "number",
                "enum": [
                  30
                ]
              }
            ]
          },
          "resolution": {
            "type": "string",
            "enum": [
              "720p",
              "1080p"
            ]
          },
          "avatar_id": {
            "type": "string",
            "format": "uuid"
          },
          "avatar_upload": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "second_avatar_upload": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "product_id": {
            "type": "string",
            "format": "uuid"
          },
          "references": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uri",
              "maxLength": 4096
            },
            "maxItems": 10
          },
          "aspect_ratio": {
            "type": "string",
            "enum": [
              "9:16",
              "16:9",
              "1:1",
              "21:9",
              "auto"
            ]
          },
          "quote_only": {
            "type": "boolean",
            "default": false
          },
          "quote_id": {
            "type": "string",
            "format": "uuid"
          },
          "webhook_url": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "wait_timeout_seconds": {
            "type": "integer",
            "minimum": 0,
            "maximum": 60,
            "default": 0
          }
        },
        "required": [
          "script"
        ],
        "additionalProperties": false
      },
      "UgcSeedance25Request": {
        "type": "object",
        "properties": {
          "scene_id": {
            "type": "string",
            "format": "uuid"
          },
          "scene_image": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "script": {
            "type": "string",
            "minLength": 1,
            "maxLength": 10000
          },
          "prompt_mode": {
            "type": "string",
            "enum": [
              "wrapped",
              "exact"
            ]
          },
          "duration_seconds": {
            "anyOf": [
              {
                "type": "number",
                "enum": [
                  4
                ]
              },
              {
                "type": "number",
                "enum": [
                  5
                ]
              },
              {
                "type": "number",
                "enum": [
                  6
                ]
              },
              {
                "type": "number",
                "enum": [
                  8
                ]
              },
              {
                "type": "number",
                "enum": [
                  10
                ]
              },
              {
                "type": "number",
                "enum": [
                  12
                ]
              },
              {
                "type": "number",
                "enum": [
                  15
                ]
              },
              {
                "type": "number",
                "enum": [
                  20
                ]
              },
              {
                "type": "number",
                "enum": [
                  25
                ]
              },
              {
                "type": "number",
                "enum": [
                  30
                ]
              }
            ]
          },
          "generate_audio": {
            "type": "boolean",
            "default": true
          },
          "resolution": {
            "type": "string",
            "enum": [
              "480p",
              "720p",
              "1080p"
            ]
          },
          "avatar_id": {
            "type": "string",
            "format": "uuid"
          },
          "avatar_upload": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "product_id": {
            "type": "string",
            "format": "uuid"
          },
          "references": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uri",
              "maxLength": 4096
            },
            "maxItems": 30
          },
          "video_urls": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uri",
              "maxLength": 4096
            },
            "maxItems": 3
          },
          "aspect_ratio": {
            "type": "string",
            "enum": [
              "auto",
              "9:16",
              "1:1",
              "3:4",
              "4:3",
              "16:9",
              "21:9"
            ]
          },
          "quote_only": {
            "type": "boolean",
            "default": false
          },
          "quote_id": {
            "type": "string",
            "format": "uuid"
          },
          "webhook_url": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "wait_timeout_seconds": {
            "type": "integer",
            "minimum": 0,
            "maximum": 60,
            "default": 0
          }
        },
        "required": [
          "script"
        ],
        "additionalProperties": false
      },
      "UgcSeedance2Request": {
        "type": "object",
        "properties": {
          "scene_id": {
            "type": "string",
            "format": "uuid"
          },
          "scene_image": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "script": {
            "type": "string",
            "minLength": 1,
            "maxLength": 10000
          },
          "prompt_mode": {
            "type": "string",
            "enum": [
              "wrapped",
              "exact"
            ]
          },
          "duration_seconds": {
            "anyOf": [
              {
                "type": "number",
                "enum": [
                  4
                ]
              },
              {
                "type": "number",
                "enum": [
                  5
                ]
              },
              {
                "type": "number",
                "enum": [
                  6
                ]
              },
              {
                "type": "number",
                "enum": [
                  7
                ]
              },
              {
                "type": "number",
                "enum": [
                  8
                ]
              },
              {
                "type": "number",
                "enum": [
                  9
                ]
              },
              {
                "type": "number",
                "enum": [
                  10
                ]
              },
              {
                "type": "number",
                "enum": [
                  11
                ]
              },
              {
                "type": "number",
                "enum": [
                  12
                ]
              },
              {
                "type": "number",
                "enum": [
                  13
                ]
              },
              {
                "type": "number",
                "enum": [
                  14
                ]
              },
              {
                "type": "number",
                "enum": [
                  15
                ]
              }
            ]
          },
          "generate_audio": {
            "type": "boolean",
            "default": true
          },
          "resolution": {
            "type": "string",
            "enum": [
              "480p",
              "720p"
            ]
          },
          "avatar_id": {
            "type": "string",
            "format": "uuid"
          },
          "avatar_upload": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "product_id": {
            "type": "string",
            "format": "uuid"
          },
          "references": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uri",
              "maxLength": 4096
            },
            "maxItems": 9
          },
          "aspect_ratio": {
            "type": "string",
            "enum": [
              "9:16",
              "1:1",
              "3:4",
              "4:3",
              "16:9",
              "21:9"
            ]
          },
          "quote_only": {
            "type": "boolean",
            "default": false
          },
          "quote_id": {
            "type": "string",
            "format": "uuid"
          },
          "webhook_url": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "wait_timeout_seconds": {
            "type": "integer",
            "minimum": 0,
            "maximum": 60,
            "default": 0
          }
        },
        "required": [
          "script"
        ],
        "additionalProperties": false
      },
      "UgcSeedance2ProRequest": {
        "type": "object",
        "properties": {
          "scene_id": {
            "type": "string",
            "format": "uuid"
          },
          "scene_image": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "script": {
            "type": "string",
            "minLength": 1,
            "maxLength": 10000
          },
          "prompt_mode": {
            "type": "string",
            "enum": [
              "wrapped",
              "exact"
            ]
          },
          "duration_seconds": {
            "anyOf": [
              {
                "type": "number",
                "enum": [
                  4
                ]
              },
              {
                "type": "number",
                "enum": [
                  5
                ]
              },
              {
                "type": "number",
                "enum": [
                  6
                ]
              },
              {
                "type": "number",
                "enum": [
                  7
                ]
              },
              {
                "type": "number",
                "enum": [
                  8
                ]
              },
              {
                "type": "number",
                "enum": [
                  9
                ]
              },
              {
                "type": "number",
                "enum": [
                  10
                ]
              },
              {
                "type": "number",
                "enum": [
                  11
                ]
              },
              {
                "type": "number",
                "enum": [
                  12
                ]
              },
              {
                "type": "number",
                "enum": [
                  13
                ]
              },
              {
                "type": "number",
                "enum": [
                  14
                ]
              },
              {
                "type": "number",
                "enum": [
                  15
                ]
              }
            ]
          },
          "generate_audio": {
            "type": "boolean",
            "default": true
          },
          "resolution": {
            "type": "string",
            "enum": [
              "480p",
              "720p",
              "1080p",
              "4k"
            ]
          },
          "avatar_id": {
            "type": "string",
            "format": "uuid"
          },
          "avatar_upload": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "product_id": {
            "type": "string",
            "format": "uuid"
          },
          "references": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uri",
              "maxLength": 4096
            },
            "maxItems": 9
          },
          "aspect_ratio": {
            "type": "string",
            "enum": [
              "9:16",
              "1:1",
              "3:4",
              "4:3",
              "16:9",
              "21:9"
            ]
          },
          "quote_only": {
            "type": "boolean",
            "default": false
          },
          "quote_id": {
            "type": "string",
            "format": "uuid"
          },
          "webhook_url": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "wait_timeout_seconds": {
            "type": "integer",
            "minimum": 0,
            "maximum": 60,
            "default": 0
          }
        },
        "required": [
          "script"
        ],
        "additionalProperties": false
      },
      "UgcGeminiOmniFlashRequest": {
        "type": "object",
        "properties": {
          "scene_id": {
            "type": "string",
            "format": "uuid"
          },
          "scene_image": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "script": {
            "type": "string",
            "minLength": 1,
            "maxLength": 10000
          },
          "prompt_mode": {
            "type": "string",
            "enum": [
              "wrapped",
              "exact"
            ]
          },
          "duration_seconds": {
            "anyOf": [
              {
                "type": "number",
                "enum": [
                  3
                ]
              },
              {
                "type": "number",
                "enum": [
                  4
                ]
              },
              {
                "type": "number",
                "enum": [
                  5
                ]
              },
              {
                "type": "number",
                "enum": [
                  6
                ]
              },
              {
                "type": "number",
                "enum": [
                  7
                ]
              },
              {
                "type": "number",
                "enum": [
                  8
                ]
              },
              {
                "type": "number",
                "enum": [
                  9
                ]
              },
              {
                "type": "number",
                "enum": [
                  10
                ]
              },
              {
                "type": "number",
                "enum": [
                  11
                ]
              },
              {
                "type": "number",
                "enum": [
                  12
                ]
              },
              {
                "type": "number",
                "enum": [
                  13
                ]
              },
              {
                "type": "number",
                "enum": [
                  14
                ]
              },
              {
                "type": "number",
                "enum": [
                  15
                ]
              }
            ]
          },
          "resolution": {
            "type": "string",
            "enum": [
              "360p",
              "720p",
              "1080p",
              "4k"
            ]
          },
          "avatar_id": {
            "type": "string",
            "format": "uuid"
          },
          "avatar_upload": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "product_id": {
            "type": "string",
            "format": "uuid"
          },
          "references": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uri",
              "maxLength": 4096
            },
            "maxItems": 10
          },
          "aspect_ratio": {
            "type": "string",
            "enum": [
              "9:16",
              "16:9"
            ]
          },
          "quote_only": {
            "type": "boolean",
            "default": false
          },
          "quote_id": {
            "type": "string",
            "format": "uuid"
          },
          "webhook_url": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "wait_timeout_seconds": {
            "type": "integer",
            "minimum": 0,
            "maximum": 60,
            "default": 0
          }
        },
        "required": [
          "script"
        ],
        "additionalProperties": false
      },
      "UgcWan27Request": {
        "type": "object",
        "properties": {
          "scene_id": {
            "type": "string",
            "format": "uuid"
          },
          "scene_image": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "script": {
            "type": "string",
            "minLength": 1,
            "maxLength": 10000
          },
          "prompt_mode": {
            "type": "string",
            "enum": [
              "wrapped",
              "exact"
            ]
          },
          "duration_seconds": {
            "anyOf": [
              {
                "type": "number",
                "enum": [
                  5
                ]
              },
              {
                "type": "number",
                "enum": [
                  8
                ]
              },
              {
                "type": "number",
                "enum": [
                  10
                ]
              },
              {
                "type": "number",
                "enum": [
                  15
                ]
              }
            ]
          },
          "resolution": {
            "type": "string",
            "enum": [
              "720p",
              "1080p"
            ]
          },
          "avatar_id": {
            "type": "string",
            "format": "uuid"
          },
          "avatar_upload": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "product_id": {
            "type": "string",
            "format": "uuid"
          },
          "references": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uri",
              "maxLength": 4096
            },
            "maxItems": 10
          },
          "aspect_ratio": {
            "type": "string",
            "enum": [
              "9:16",
              "1:1",
              "3:4",
              "4:3",
              "16:9"
            ]
          },
          "multi_shots": {
            "type": "boolean"
          },
          "prompt_expansion": {
            "type": "boolean"
          },
          "quote_only": {
            "type": "boolean",
            "default": false
          },
          "quote_id": {
            "type": "string",
            "format": "uuid"
          },
          "webhook_url": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "wait_timeout_seconds": {
            "type": "integer",
            "minimum": 0,
            "maximum": 60,
            "default": 0
          }
        },
        "required": [
          "script"
        ],
        "additionalProperties": false
      },
      "UgcVeo31Request": {
        "type": "object",
        "properties": {
          "scene_id": {
            "type": "string",
            "format": "uuid"
          },
          "scene_image": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "script": {
            "type": "string",
            "minLength": 1,
            "maxLength": 10000
          },
          "prompt_mode": {
            "type": "string",
            "enum": [
              "wrapped",
              "exact"
            ]
          },
          "duration_seconds": {
            "anyOf": [
              {
                "type": "number",
                "enum": [
                  4
                ]
              },
              {
                "type": "number",
                "enum": [
                  6
                ]
              },
              {
                "type": "number",
                "enum": [
                  8
                ]
              }
            ]
          },
          "generate_audio": {
            "type": "boolean",
            "default": true
          },
          "resolution": {
            "type": "string",
            "enum": [
              "720p",
              "1080p",
              "4k"
            ]
          },
          "avatar_id": {
            "type": "string",
            "format": "uuid"
          },
          "avatar_upload": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "product_id": {
            "type": "string",
            "format": "uuid"
          },
          "references": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uri",
              "maxLength": 4096
            },
            "maxItems": 3
          },
          "aspect_ratio": {
            "type": "string",
            "enum": [
              "9:16",
              "16:9"
            ]
          },
          "quote_only": {
            "type": "boolean",
            "default": false
          },
          "quote_id": {
            "type": "string",
            "format": "uuid"
          },
          "webhook_url": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "wait_timeout_seconds": {
            "type": "integer",
            "minimum": 0,
            "maximum": 60,
            "default": 0
          }
        },
        "required": [
          "script"
        ],
        "additionalProperties": false
      },
      "UgcGrokImagineRequest": {
        "type": "object",
        "properties": {
          "scene_id": {
            "type": "string",
            "format": "uuid"
          },
          "scene_image": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "script": {
            "type": "string",
            "minLength": 1,
            "maxLength": 10000
          },
          "prompt_mode": {
            "type": "string",
            "enum": [
              "wrapped",
              "exact"
            ]
          },
          "duration_seconds": {
            "anyOf": [
              {
                "type": "number",
                "enum": [
                  3
                ]
              },
              {
                "type": "number",
                "enum": [
                  5
                ]
              },
              {
                "type": "number",
                "enum": [
                  10
                ]
              },
              {
                "type": "number",
                "enum": [
                  15
                ]
              }
            ]
          },
          "resolution": {
            "type": "string",
            "enum": [
              "480p",
              "720p"
            ]
          },
          "avatar_id": {
            "type": "string",
            "format": "uuid"
          },
          "avatar_upload": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "product_id": {
            "type": "string",
            "format": "uuid"
          },
          "references": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uri",
              "maxLength": 4096
            },
            "maxItems": 7
          },
          "aspect_ratio": {
            "type": "string",
            "enum": [
              "16:9",
              "9:16",
              "1:1"
            ]
          },
          "quote_only": {
            "type": "boolean",
            "default": false
          },
          "quote_id": {
            "type": "string",
            "format": "uuid"
          },
          "webhook_url": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "wait_timeout_seconds": {
            "type": "integer",
            "minimum": 0,
            "maximum": 60,
            "default": 0
          }
        },
        "required": [
          "script"
        ],
        "additionalProperties": false
      },
      "LipsyncLtxLipsyncRequest": {
        "type": "object",
        "properties": {
          "image_url": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "avatar_id": {
            "type": "string",
            "format": "uuid"
          },
          "audio_url": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "prompt": {
            "type": "string",
            "minLength": 1,
            "maxLength": 5000
          },
          "guidance_scale": {
            "type": "number",
            "minimum": 1,
            "maximum": 20
          },
          "aspect_ratio": {
            "type": "string",
            "enum": [
              "auto",
              "16:9",
              "9:16"
            ]
          },
          "quote_only": {
            "type": "boolean",
            "default": false
          },
          "quote_id": {
            "type": "string",
            "format": "uuid"
          },
          "webhook_url": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "wait_timeout_seconds": {
            "type": "integer",
            "minimum": 0,
            "maximum": 60,
            "default": 0
          }
        },
        "required": [
          "audio_url"
        ],
        "additionalProperties": false
      },
      "LipsyncH3MaxLipsyncRequest": {
        "type": "object",
        "properties": {
          "image_url": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "avatar_id": {
            "type": "string",
            "format": "uuid"
          },
          "audio_url": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "resolution": {
            "type": "string",
            "enum": [
              "480p",
              "768p",
              "1080p",
              "2k"
            ],
            "default": "768p"
          },
          "quote_only": {
            "type": "boolean",
            "default": false
          },
          "quote_id": {
            "type": "string",
            "format": "uuid"
          },
          "webhook_url": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "wait_timeout_seconds": {
            "type": "integer",
            "minimum": 0,
            "maximum": 60,
            "default": 0
          }
        },
        "required": [
          "audio_url"
        ],
        "additionalProperties": false
      },
      "LipsyncSyncLipsyncV3Request": {
        "type": "object",
        "properties": {
          "image_url": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "avatar_id": {
            "type": "string",
            "format": "uuid"
          },
          "audio_url": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "quote_only": {
            "type": "boolean",
            "default": false
          },
          "quote_id": {
            "type": "string",
            "format": "uuid"
          },
          "webhook_url": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "wait_timeout_seconds": {
            "type": "integer",
            "minimum": 0,
            "maximum": 60,
            "default": 0
          }
        },
        "required": [
          "audio_url"
        ],
        "additionalProperties": false
      },
      "LipsyncVeedLipsyncV2Request": {
        "type": "object",
        "properties": {
          "video_url": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "audio_url": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "media_rights": {
            "type": "object",
            "properties": {
              "accepted": {
                "type": "boolean",
                "enum": [
                  true
                ]
              },
              "statement_version": {
                "type": "number",
                "enum": [
                  1
                ]
              }
            },
            "required": [
              "accepted",
              "statement_version"
            ],
            "additionalProperties": false
          },
          "quote_only": {
            "type": "boolean",
            "default": false
          },
          "quote_id": {
            "type": "string",
            "format": "uuid"
          },
          "webhook_url": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "wait_timeout_seconds": {
            "type": "integer",
            "minimum": 0,
            "maximum": 60,
            "default": 0
          }
        },
        "required": [
          "video_url",
          "audio_url"
        ],
        "additionalProperties": false
      },
      "LipsyncKlingAvatarV2ProRequest": {
        "type": "object",
        "properties": {
          "image_url": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "avatar_id": {
            "type": "string",
            "format": "uuid"
          },
          "audio_url": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "media_rights": {
            "type": "object",
            "properties": {
              "accepted": {
                "type": "boolean",
                "enum": [
                  true
                ]
              },
              "statement_version": {
                "type": "number",
                "enum": [
                  1
                ]
              }
            },
            "required": [
              "accepted",
              "statement_version"
            ],
            "additionalProperties": false
          },
          "prompt": {
            "type": "string",
            "minLength": 1,
            "maxLength": 2500
          },
          "quote_only": {
            "type": "boolean",
            "default": false
          },
          "quote_id": {
            "type": "string",
            "format": "uuid"
          },
          "webhook_url": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "wait_timeout_seconds": {
            "type": "integer",
            "minimum": 0,
            "maximum": 60,
            "default": 0
          }
        },
        "required": [
          "audio_url",
          "media_rights"
        ],
        "additionalProperties": false
      },
      "LipsyncHeygenAvatar4Request": {
        "type": "object",
        "properties": {
          "image_url": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "avatar_id": {
            "type": "string",
            "format": "uuid"
          },
          "audio_url": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "media_rights": {
            "type": "object",
            "properties": {
              "accepted": {
                "type": "boolean",
                "enum": [
                  true
                ]
              },
              "statement_version": {
                "type": "number",
                "enum": [
                  1
                ]
              }
            },
            "required": [
              "accepted",
              "statement_version"
            ],
            "additionalProperties": false
          },
          "resolution": {
            "type": "string",
            "enum": [
              "360p",
              "480p",
              "540p",
              "720p",
              "1080p"
            ],
            "default": "720p"
          },
          "aspect_ratio": {
            "type": "string",
            "enum": [
              "16:9",
              "9:16",
              "4:5",
              "5:4",
              "1:1",
              "auto"
            ],
            "default": "16:9"
          },
          "talking_style": {
            "type": "string",
            "enum": [
              "stable",
              "expressive"
            ],
            "default": "stable"
          },
          "quote_only": {
            "type": "boolean",
            "default": false
          },
          "quote_id": {
            "type": "string",
            "format": "uuid"
          },
          "webhook_url": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "wait_timeout_seconds": {
            "type": "integer",
            "minimum": 0,
            "maximum": 60,
            "default": 0
          }
        },
        "required": [
          "audio_url",
          "media_rights"
        ],
        "additionalProperties": false
      },
      "AudioElevenlabsV3Request": {
        "type": "object",
        "properties": {
          "text": {
            "type": "string",
            "minLength": 1,
            "maxLength": 5000
          },
          "voice": {
            "type": "string",
            "default": "Rachel"
          },
          "stability": {
            "type": "number",
            "minimum": 0,
            "maximum": 1,
            "default": 0.5
          },
          "similarity_boost": {
            "type": "number",
            "minimum": 0,
            "maximum": 1
          },
          "language_code": {
            "type": "string",
            "pattern": "^[a-z]{2}$"
          },
          "timestamps": {
            "type": "boolean",
            "default": false
          },
          "apply_text_normalization": {
            "type": "string",
            "enum": [
              "auto",
              "on",
              "off"
            ],
            "default": "auto"
          },
          "quote_only": {
            "type": "boolean",
            "default": false
          },
          "quote_id": {
            "type": "string",
            "format": "uuid"
          },
          "webhook_url": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "wait_timeout_seconds": {
            "type": "integer",
            "minimum": 0,
            "maximum": 60,
            "default": 0
          }
        },
        "required": [
          "text"
        ],
        "additionalProperties": false
      },
      "AudioGemini31FlashTtsRequest": {
        "type": "object",
        "properties": {
          "text": {
            "type": "string",
            "minLength": 1,
            "maxLength": 5000
          },
          "voice": {
            "type": "string",
            "enum": [
              "Kore",
              "Puck",
              "Charon",
              "Zephyr",
              "Aoede",
              "Fenrir",
              "Leda",
              "Orus",
              "Callirrhoe",
              "Autonoe",
              "Enceladus",
              "Iapetus",
              "Umbriel",
              "Algieba",
              "Despina",
              "Erinome",
              "Algenib",
              "Rasalgethi",
              "Laomedeia",
              "Achernar",
              "Alnilam",
              "Schedar",
              "Gacrux",
              "Pulcherrima",
              "Achird",
              "Zubenelgenubi",
              "Vindemiatrix",
              "Sadachbia",
              "Sadaltager",
              "Sulafat"
            ]
          },
          "speakers": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "speaker_id": {
                  "type": "string",
                  "pattern": "^[A-Za-z0-9_-]{1,32}$"
                },
                "voice": {
                  "type": "string",
                  "enum": [
                    "Kore",
                    "Puck",
                    "Charon",
                    "Zephyr",
                    "Aoede",
                    "Fenrir",
                    "Leda",
                    "Orus",
                    "Callirrhoe",
                    "Autonoe",
                    "Enceladus",
                    "Iapetus",
                    "Umbriel",
                    "Algieba",
                    "Despina",
                    "Erinome",
                    "Algenib",
                    "Rasalgethi",
                    "Laomedeia",
                    "Achernar",
                    "Alnilam",
                    "Schedar",
                    "Gacrux",
                    "Pulcherrima",
                    "Achird",
                    "Zubenelgenubi",
                    "Vindemiatrix",
                    "Sadachbia",
                    "Sadaltager",
                    "Sulafat"
                  ]
                }
              },
              "required": [
                "speaker_id",
                "voice"
              ],
              "additionalProperties": false
            },
            "minItems": 1,
            "maxItems": 2
          },
          "style_instruction": {
            "type": "string",
            "minLength": 1,
            "maxLength": 2000
          },
          "language": {
            "type": "string",
            "enum": [
              "ar-EG",
              "bn-BD",
              "nl-NL",
              "en-IN",
              "en-US",
              "fr-FR",
              "de-DE",
              "hi-IN",
              "id-ID",
              "it-IT",
              "ja-JP",
              "ko-KR",
              "mr-IN",
              "pl-PL",
              "pt-BR",
              "ro-RO",
              "ru-RU",
              "es-ES",
              "ta-IN",
              "te-IN",
              "th-TH",
              "tr-TR",
              "uk-UA",
              "vi-VN",
              "af-ZA",
              "sq-AL",
              "am-ET",
              "ar-001",
              "hy-AM",
              "az-AZ",
              "eu-ES",
              "be-BY",
              "bg-BG",
              "my-MM",
              "ca-ES",
              "ceb-PH",
              "cmn-CN",
              "cmn-TW",
              "hr-HR",
              "cs-CZ",
              "da-DK",
              "en-AU",
              "en-GB",
              "et-EE",
              "fil-PH",
              "fi-FI",
              "fr-CA",
              "gl-ES",
              "ka-GE",
              "el-GR",
              "gu-IN",
              "ht-HT",
              "he-IL",
              "hu-HU",
              "is-IS",
              "jv-JV",
              "kn-IN",
              "kok-IN",
              "lo-LA",
              "la-VA",
              "lv-LV",
              "lt-LT",
              "lb-LU",
              "mk-MK",
              "mai-IN",
              "mg-MG",
              "ms-MY",
              "ml-IN",
              "mn-MN",
              "ne-NP",
              "nb-NO",
              "nn-NO",
              "or-IN",
              "ps-AF",
              "fa-IR",
              "pt-PT",
              "pa-IN",
              "sr-RS",
              "sd-IN",
              "si-LK",
              "sk-SK",
              "sl-SI",
              "es-419",
              "es-MX",
              "sw-KE",
              "sv-SE",
              "ur-PK"
            ]
          },
          "temperature": {
            "type": "number",
            "minimum": 0,
            "maximum": 2
          },
          "output_format": {
            "type": "string",
            "enum": [
              "mp3",
              "wav",
              "ogg_opus"
            ]
          },
          "quote_only": {
            "type": "boolean",
            "default": false
          },
          "quote_id": {
            "type": "string",
            "format": "uuid"
          },
          "webhook_url": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "wait_timeout_seconds": {
            "type": "integer",
            "minimum": 0,
            "maximum": 60,
            "default": 0
          }
        },
        "required": [
          "text"
        ],
        "additionalProperties": false
      },
      "AudioMaya1Request": {
        "type": "object",
        "properties": {
          "text": {
            "type": "string",
            "minLength": 1,
            "maxLength": 5000
          },
          "voice": {
            "type": "string",
            "enum": [
              "maya-female-warm",
              "maya-female-professional",
              "maya-female-young",
              "maya-female-narrator",
              "maya-male-warm",
              "maya-male-deep",
              "maya-male-young",
              "maya-male-narrator",
              "maya-villain",
              "maya-hero"
            ]
          },
          "voice_prompt": {
            "type": "string",
            "minLength": 1,
            "maxLength": 500
          },
          "temperature": {
            "type": "number",
            "minimum": 0,
            "maximum": 2
          },
          "sample_rate": {
            "type": "string",
            "enum": [
              "48 kHz",
              "24 kHz"
            ]
          },
          "quote_only": {
            "type": "boolean",
            "default": false
          },
          "quote_id": {
            "type": "string",
            "format": "uuid"
          },
          "webhook_url": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "wait_timeout_seconds": {
            "type": "integer",
            "minimum": 0,
            "maximum": 60,
            "default": 0
          }
        },
        "required": [
          "text"
        ],
        "additionalProperties": false
      },
      "AudioMinimaxSpeechHdRequest": {
        "type": "object",
        "properties": {
          "text": {
            "type": "string",
            "minLength": 1,
            "maxLength": 10000
          },
          "voice": {
            "type": "string",
            "enum": [
              "English_expressive_narrator",
              "English_radiant_girl",
              "English_magnetic_voiced_man",
              "English_compelling_lady1",
              "English_Aussie_Bloke",
              "English_captivating_female1",
              "English_Upbeat_Woman",
              "English_Trustworth_Man",
              "English_CalmWoman",
              "English_UpsetGirl",
              "English_Gentle-voiced_man",
              "English_Whispering_girl",
              "English_Diligent_Man",
              "English_Graceful_Lady",
              "English_ReservedYoungMan",
              "English_PlayfulGirl",
              "English_ManWithDeepVoice",
              "English_MaturePartner",
              "English_FriendlyPerson",
              "English_MatureBoss",
              "English_Debator",
              "English_LovelyGirl",
              "English_Steadymentor",
              "English_Deep-VoicedGentleman",
              "English_Wiselady",
              "English_CaptivatingStoryteller",
              "English_DecentYoungMan",
              "English_SentimentalLady",
              "English_ImposingManner",
              "English_SadTeen",
              "English_PassionateWarrior",
              "English_WiseScholar",
              "English_Soft-spokenGirl",
              "English_SereneWoman",
              "English_ConfidentWoman",
              "English_PatientMan",
              "English_Comedian",
              "English_BossyLeader",
              "English_Strong-WilledBoy",
              "English_StressedLady",
              "English_AssertiveQueen",
              "English_AnimeCharacter",
              "English_Jovialman",
              "English_WhimsicalGirl",
              "English_Kind-heartedGirl",
              "Chinese (Mandarin)_Reliable_Executive",
              "Chinese (Mandarin)_News_Anchor",
              "Chinese (Mandarin)_Unrestrained_Young_Man",
              "Chinese (Mandarin)_Mature_Woman",
              "Arrogant_Miss",
              "Robot_Armor",
              "Chinese (Mandarin)_Kind-hearted_Antie",
              "Chinese (Mandarin)_HK_Flight_Attendant",
              "Chinese (Mandarin)_Humorous_Elder",
              "Chinese (Mandarin)_Gentleman",
              "Chinese (Mandarin)_Warm_Bestie",
              "Chinese (Mandarin)_Stubborn_Friend",
              "Chinese (Mandarin)_Sweet_Lady",
              "Chinese (Mandarin)_Southern_Young_Man",
              "Chinese (Mandarin)_Wise_Women",
              "Chinese (Mandarin)_Gentle_Youth",
              "Chinese (Mandarin)_Warm_Girl",
              "Chinese (Mandarin)_Male_Announcer",
              "Chinese (Mandarin)_Kind-hearted_Elder",
              "Chinese (Mandarin)_Cute_Spirit",
              "Chinese (Mandarin)_Radio_Host",
              "Chinese (Mandarin)_Lyrical_Voice",
              "Chinese (Mandarin)_Straightforward_Boy",
              "Chinese (Mandarin)_Sincere_Adult",
              "Chinese (Mandarin)_Gentle_Senior",
              "Chinese (Mandarin)_Crisp_Girl",
              "Chinese (Mandarin)_Pure-hearted_Boy",
              "Chinese (Mandarin)_Soft_Girl",
              "Chinese (Mandarin)_IntellectualGirl",
              "Chinese (Mandarin)_Warm_HeartedGirl",
              "Chinese (Mandarin)_Laid_BackGirl",
              "Chinese (Mandarin)_ExplorativeGirl",
              "Chinese (Mandarin)_Warm-HeartedAunt",
              "Chinese (Mandarin)_BashfulGirl",
              "Japanese_IntellectualSenior",
              "Japanese_DecisivePrincess",
              "Japanese_LoyalKnight",
              "Japanese_DominantMan",
              "Japanese_SeriousCommander",
              "Japanese_ColdQueen",
              "Japanese_DependableWoman",
              "Japanese_GentleButler",
              "Japanese_KindLady",
              "Japanese_CalmLady",
              "Japanese_OptimisticYouth",
              "Japanese_GenerousIzakayaOwner",
              "Japanese_SportyStudent",
              "Japanese_InnocentBoy",
              "Japanese_GracefulMaiden",
              "Cantonese_GentleLady",
              "Cantonese_PlayfulMan",
              "Cantonese_CuteGirl",
              "Cantonese_KindWoman",
              "Korean_AirheadedGirl",
              "Korean_AthleticGirl",
              "Korean_AthleticStudent",
              "Korean_BraveAdventurer",
              "Korean_BraveFemaleWarrior",
              "Korean_BraveYouth",
              "Korean_CalmGentleman",
              "Korean_CalmLady",
              "Korean_CaringWoman",
              "Korean_CharmingElderSister",
              "Korean_CharmingSister",
              "Korean_CheerfulBoyfriend",
              "Korean_CheerfulCoolJunior",
              "Korean_CheerfulLittleSister",
              "Korean_ChildhoodFriendGirl",
              "Korean_CockyGuy",
              "Korean_ColdGirl",
              "Korean_ColdYoungMan",
              "Korean_ConfidentBoss",
              "Korean_ConsiderateSenior",
              "Korean_DecisiveQueen",
              "Korean_DominantMan",
              "Korean_ElegantPrincess",
              "Korean_EnchantingSister",
              "Korean_EnthusiasticTeen",
              "Korean_FriendlyBigSister",
              "Korean_GentleBoss",
              "Korean_GentleWoman",
              "Korean_HaughtyLady",
              "Korean_InnocentBoy",
              "Korean_IntellectualMan",
              "Korean_IntellectualSenior",
              "Korean_LonelyWarrior",
              "Korean_MatureLady",
              "Korean_MysteriousGirl",
              "Korean_OptimisticYouth",
              "Korean_PlayboyCharmer",
              "Korean_PossessiveMan",
              "Korean_QuirkyGirl",
              "Korean_ReliableSister",
              "Korean_ReliableYouth",
              "Korean_SassyGirl",
              "Korean_ShyGirl",
              "Korean_SoothingLady",
              "Korean_StrictBoss",
              "Korean_SweetGirl",
              "Korean_ThoughtfulWoman",
              "Korean_WiseElf",
              "Korean_WiseTeacher",
              "Spanish_SereneWoman",
              "Spanish_MaturePartner",
              "Spanish_CaptivatingStoryteller",
              "Spanish_Narrator",
              "Spanish_WiseScholar",
              "Spanish_Kind-heartedGirl",
              "Spanish_DeterminedManager",
              "Spanish_BossyLeader",
              "Spanish_ReservedYoungMan",
              "Spanish_ConfidentWoman",
              "Spanish_ThoughtfulMan",
              "Spanish_Strong-WilledBoy",
              "Spanish_SophisticatedLady",
              "Spanish_RationalMan",
              "Spanish_AnimeCharacter",
              "Spanish_Deep-tonedMan",
              "Spanish_Fussyhostess",
              "Spanish_SincereTeen",
              "Spanish_FrankLady",
              "Spanish_Comedian",
              "Spanish_Debator",
              "Spanish_ToughBoss",
              "Spanish_Wiselady",
              "Spanish_Steadymentor",
              "Spanish_Jovialman",
              "Spanish_SantaClaus",
              "Spanish_Rudolph",
              "Spanish_Intonategirl",
              "Spanish_Arnold",
              "Spanish_Ghost",
              "Spanish_HumorousElder",
              "Spanish_EnergeticBoy",
              "Spanish_WhimsicalGirl",
              "Spanish_StrictBoss",
              "Spanish_ReliableMan",
              "Spanish_SereneElder",
              "Spanish_AngryMan",
              "Spanish_AssertiveQueen",
              "Spanish_CaringGirlfriend",
              "Spanish_PowerfulSoldier",
              "Spanish_PassionateWarrior",
              "Spanish_ChattyGirl",
              "Spanish_RomanticHusband",
              "Spanish_CompellingGirl",
              "Spanish_PowerfulVeteran",
              "Spanish_SensibleManager",
              "Spanish_ThoughtfulLady",
              "Portuguese_SentimentalLady",
              "Portuguese_BossyLeader",
              "Portuguese_Wiselady",
              "Portuguese_Strong-WilledBoy",
              "Portuguese_Deep-VoicedGentleman",
              "Portuguese_UpsetGirl",
              "Portuguese_PassionateWarrior",
              "Portuguese_AnimeCharacter",
              "Portuguese_ConfidentWoman",
              "Portuguese_AngryMan",
              "Portuguese_CaptivatingStoryteller",
              "Portuguese_Godfather",
              "Portuguese_ReservedYoungMan",
              "Portuguese_SmartYoungGirl",
              "Portuguese_Kind-heartedGirl",
              "Portuguese_Pompouslady",
              "Portuguese_Grinch",
              "Portuguese_Debator",
              "Portuguese_SweetGirl",
              "Portuguese_AttractiveGirl",
              "Portuguese_ThoughtfulMan",
              "Portuguese_PlayfulGirl",
              "Portuguese_GorgeousLady",
              "Portuguese_LovelyLady",
              "Portuguese_SereneWoman",
              "Portuguese_SadTeen",
              "Portuguese_MaturePartner",
              "Portuguese_Comedian",
              "Portuguese_Narrator",
              "Portuguese_ToughBoss",
              "Portuguese_Fussyhostess",
              "Portuguese_Dramatist",
              "Portuguese_Steadymentor",
              "Portuguese_Jovialman",
              "Portuguese_CharmingQueen",
              "Portuguese_SantaClaus",
              "Portuguese_Rudolph",
              "Portuguese_Arnold",
              "Portuguese_CharmingSanta",
              "Portuguese_CharmingLady",
              "Portuguese_Ghost",
              "Portuguese_HumorousElder",
              "Portuguese_CalmLeader",
              "Portuguese_GentleTeacher",
              "Portuguese_EnergeticBoy",
              "Portuguese_ReliableMan",
              "Portuguese_SereneElder",
              "Portuguese_GrimReaper",
              "Portuguese_AssertiveQueen",
              "Portuguese_WhimsicalGirl",
              "Portuguese_StressedLady",
              "Portuguese_FriendlyNeighbor",
              "Portuguese_CaringGirlfriend",
              "Portuguese_PowerfulSoldier",
              "Portuguese_FascinatingBoy",
              "Portuguese_RomanticHusband",
              "Portuguese_StrictBoss",
              "Portuguese_InspiringLady",
              "Portuguese_PlayfulSpirit",
              "Portuguese_ElegantGirl",
              "Portuguese_CompellingGirl",
              "Portuguese_PowerfulVeteran",
              "Portuguese_SensibleManager",
              "Portuguese_ThoughtfulLady",
              "Portuguese_TheatricalActor",
              "Portuguese_FragileBoy",
              "Portuguese_ChattyGirl",
              "Portuguese_Conscientiousinstructor",
              "Portuguese_RationalMan",
              "Portuguese_WiseScholar",
              "Portuguese_FrankLady",
              "Portuguese_DeterminedManager",
              "French_Male_Speech_New",
              "French_Female_News Anchor",
              "French_CasualMan",
              "French_MovieLeadFemale",
              "French_FemaleAnchor",
              "French_MaleNarrator",
              "Indonesian_SweetGirl",
              "Indonesian_ReservedYoungMan",
              "Indonesian_CharmingGirl",
              "Indonesian_CalmWoman",
              "Indonesian_ConfidentWoman",
              "Indonesian_CaringMan",
              "Indonesian_BossyLeader",
              "Indonesian_DeterminedBoy",
              "Indonesian_GentleGirl",
              "German_FriendlyMan",
              "German_SweetLady",
              "German_PlayfulMan",
              "Russian_HandsomeChildhoodFriend",
              "Russian_BrightHeroine",
              "Russian_AmbitiousWoman",
              "Russian_ReliableMan",
              "Russian_CrazyQueen",
              "Russian_PessimisticGirl",
              "Russian_AttractiveGuy",
              "Russian_Bad-temperedBoy",
              "Italian_BraveHeroine",
              "Italian_Narrator",
              "Italian_WanderingSorcerer",
              "Italian_DiligentLeader",
              "Dutch_kindhearted_girl",
              "Dutch_bossy_leader",
              "Vietnamese_kindhearted_girl",
              "Arabic_CalmWoman",
              "Arabic_FriendlyGuy",
              "Turkish_CalmWoman",
              "Turkish_Trustworthyman",
              "Ukrainian_CalmWoman",
              "Ukrainian_WiseScholar",
              "Thai_male_1_sample8",
              "Thai_male_2_sample2",
              "Thai_female_1_sample1",
              "Thai_female_2_sample2",
              "Polish_male_1_sample4",
              "Polish_male_2_sample3",
              "Polish_female_1_sample1",
              "Polish_female_2_sample3",
              "Romanian_male_1_sample2",
              "Romanian_male_2_sample1",
              "Romanian_female_1_sample4",
              "Romanian_female_2_sample1",
              "greek_male_1a_v1",
              "Greek_female_1_sample1",
              "Greek_female_2_sample3",
              "czech_male_1_v1",
              "czech_female_5_v7",
              "czech_female_2_v2",
              "finnish_male_3_v1",
              "finnish_male_1_v2",
              "finnish_female_4_v1",
              "hindi_male_1_v2",
              "hindi_female_2_v1",
              "hindi_female_1_v2"
            ]
          },
          "voice_id": {
            "type": "string",
            "format": "uuid"
          },
          "speed": {
            "type": "number",
            "minimum": 0.5,
            "maximum": 2
          },
          "pitch": {
            "type": "integer",
            "minimum": -12,
            "maximum": 12
          },
          "emotion": {
            "type": "string",
            "enum": [
              "auto",
              "neutral",
              "happy",
              "sad",
              "angry",
              "fearful",
              "disgusted",
              "surprised"
            ]
          },
          "english_normalization": {
            "type": "boolean"
          },
          "language": {
            "type": "string",
            "enum": [
              "af",
              "ar",
              "bg",
              "ca",
              "cs",
              "da",
              "de",
              "el",
              "en",
              "es",
              "fi",
              "fr",
              "he",
              "hi",
              "hr",
              "hu",
              "id",
              "it",
              "ja",
              "ko",
              "ms",
              "nl",
              "no",
              "pl",
              "pt",
              "ro",
              "ru",
              "sk",
              "sl",
              "sv",
              "th",
              "tr",
              "uk",
              "vi",
              "yue",
              "zh",
              "zh-yue"
            ]
          },
          "quote_only": {
            "type": "boolean",
            "default": false
          },
          "quote_id": {
            "type": "string",
            "format": "uuid"
          },
          "webhook_url": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "wait_timeout_seconds": {
            "type": "integer",
            "minimum": 0,
            "maximum": 60,
            "default": 0
          }
        },
        "required": [
          "text"
        ],
        "additionalProperties": false
      },
      "AudioMinimaxSpeechTurboRequest": {
        "type": "object",
        "properties": {
          "text": {
            "type": "string",
            "minLength": 1,
            "maxLength": 10000
          },
          "voice": {
            "type": "string",
            "enum": [
              "English_expressive_narrator",
              "English_radiant_girl",
              "English_magnetic_voiced_man",
              "English_compelling_lady1",
              "English_Aussie_Bloke",
              "English_captivating_female1",
              "English_Upbeat_Woman",
              "English_Trustworth_Man",
              "English_CalmWoman",
              "English_UpsetGirl",
              "English_Gentle-voiced_man",
              "English_Whispering_girl",
              "English_Diligent_Man",
              "English_Graceful_Lady",
              "English_ReservedYoungMan",
              "English_PlayfulGirl",
              "English_ManWithDeepVoice",
              "English_MaturePartner",
              "English_FriendlyPerson",
              "English_MatureBoss",
              "English_Debator",
              "English_LovelyGirl",
              "English_Steadymentor",
              "English_Deep-VoicedGentleman",
              "English_Wiselady",
              "English_CaptivatingStoryteller",
              "English_DecentYoungMan",
              "English_SentimentalLady",
              "English_ImposingManner",
              "English_SadTeen",
              "English_PassionateWarrior",
              "English_WiseScholar",
              "English_Soft-spokenGirl",
              "English_SereneWoman",
              "English_ConfidentWoman",
              "English_PatientMan",
              "English_Comedian",
              "English_BossyLeader",
              "English_Strong-WilledBoy",
              "English_StressedLady",
              "English_AssertiveQueen",
              "English_AnimeCharacter",
              "English_Jovialman",
              "English_WhimsicalGirl",
              "English_Kind-heartedGirl",
              "Chinese (Mandarin)_Reliable_Executive",
              "Chinese (Mandarin)_News_Anchor",
              "Chinese (Mandarin)_Unrestrained_Young_Man",
              "Chinese (Mandarin)_Mature_Woman",
              "Arrogant_Miss",
              "Robot_Armor",
              "Chinese (Mandarin)_Kind-hearted_Antie",
              "Chinese (Mandarin)_HK_Flight_Attendant",
              "Chinese (Mandarin)_Humorous_Elder",
              "Chinese (Mandarin)_Gentleman",
              "Chinese (Mandarin)_Warm_Bestie",
              "Chinese (Mandarin)_Stubborn_Friend",
              "Chinese (Mandarin)_Sweet_Lady",
              "Chinese (Mandarin)_Southern_Young_Man",
              "Chinese (Mandarin)_Wise_Women",
              "Chinese (Mandarin)_Gentle_Youth",
              "Chinese (Mandarin)_Warm_Girl",
              "Chinese (Mandarin)_Male_Announcer",
              "Chinese (Mandarin)_Kind-hearted_Elder",
              "Chinese (Mandarin)_Cute_Spirit",
              "Chinese (Mandarin)_Radio_Host",
              "Chinese (Mandarin)_Lyrical_Voice",
              "Chinese (Mandarin)_Straightforward_Boy",
              "Chinese (Mandarin)_Sincere_Adult",
              "Chinese (Mandarin)_Gentle_Senior",
              "Chinese (Mandarin)_Crisp_Girl",
              "Chinese (Mandarin)_Pure-hearted_Boy",
              "Chinese (Mandarin)_Soft_Girl",
              "Chinese (Mandarin)_IntellectualGirl",
              "Chinese (Mandarin)_Warm_HeartedGirl",
              "Chinese (Mandarin)_Laid_BackGirl",
              "Chinese (Mandarin)_ExplorativeGirl",
              "Chinese (Mandarin)_Warm-HeartedAunt",
              "Chinese (Mandarin)_BashfulGirl",
              "Japanese_IntellectualSenior",
              "Japanese_DecisivePrincess",
              "Japanese_LoyalKnight",
              "Japanese_DominantMan",
              "Japanese_SeriousCommander",
              "Japanese_ColdQueen",
              "Japanese_DependableWoman",
              "Japanese_GentleButler",
              "Japanese_KindLady",
              "Japanese_CalmLady",
              "Japanese_OptimisticYouth",
              "Japanese_GenerousIzakayaOwner",
              "Japanese_SportyStudent",
              "Japanese_InnocentBoy",
              "Japanese_GracefulMaiden",
              "Cantonese_GentleLady",
              "Cantonese_PlayfulMan",
              "Cantonese_CuteGirl",
              "Cantonese_KindWoman",
              "Korean_AirheadedGirl",
              "Korean_AthleticGirl",
              "Korean_AthleticStudent",
              "Korean_BraveAdventurer",
              "Korean_BraveFemaleWarrior",
              "Korean_BraveYouth",
              "Korean_CalmGentleman",
              "Korean_CalmLady",
              "Korean_CaringWoman",
              "Korean_CharmingElderSister",
              "Korean_CharmingSister",
              "Korean_CheerfulBoyfriend",
              "Korean_CheerfulCoolJunior",
              "Korean_CheerfulLittleSister",
              "Korean_ChildhoodFriendGirl",
              "Korean_CockyGuy",
              "Korean_ColdGirl",
              "Korean_ColdYoungMan",
              "Korean_ConfidentBoss",
              "Korean_ConsiderateSenior",
              "Korean_DecisiveQueen",
              "Korean_DominantMan",
              "Korean_ElegantPrincess",
              "Korean_EnchantingSister",
              "Korean_EnthusiasticTeen",
              "Korean_FriendlyBigSister",
              "Korean_GentleBoss",
              "Korean_GentleWoman",
              "Korean_HaughtyLady",
              "Korean_InnocentBoy",
              "Korean_IntellectualMan",
              "Korean_IntellectualSenior",
              "Korean_LonelyWarrior",
              "Korean_MatureLady",
              "Korean_MysteriousGirl",
              "Korean_OptimisticYouth",
              "Korean_PlayboyCharmer",
              "Korean_PossessiveMan",
              "Korean_QuirkyGirl",
              "Korean_ReliableSister",
              "Korean_ReliableYouth",
              "Korean_SassyGirl",
              "Korean_ShyGirl",
              "Korean_SoothingLady",
              "Korean_StrictBoss",
              "Korean_SweetGirl",
              "Korean_ThoughtfulWoman",
              "Korean_WiseElf",
              "Korean_WiseTeacher",
              "Spanish_SereneWoman",
              "Spanish_MaturePartner",
              "Spanish_CaptivatingStoryteller",
              "Spanish_Narrator",
              "Spanish_WiseScholar",
              "Spanish_Kind-heartedGirl",
              "Spanish_DeterminedManager",
              "Spanish_BossyLeader",
              "Spanish_ReservedYoungMan",
              "Spanish_ConfidentWoman",
              "Spanish_ThoughtfulMan",
              "Spanish_Strong-WilledBoy",
              "Spanish_SophisticatedLady",
              "Spanish_RationalMan",
              "Spanish_AnimeCharacter",
              "Spanish_Deep-tonedMan",
              "Spanish_Fussyhostess",
              "Spanish_SincereTeen",
              "Spanish_FrankLady",
              "Spanish_Comedian",
              "Spanish_Debator",
              "Spanish_ToughBoss",
              "Spanish_Wiselady",
              "Spanish_Steadymentor",
              "Spanish_Jovialman",
              "Spanish_SantaClaus",
              "Spanish_Rudolph",
              "Spanish_Intonategirl",
              "Spanish_Arnold",
              "Spanish_Ghost",
              "Spanish_HumorousElder",
              "Spanish_EnergeticBoy",
              "Spanish_WhimsicalGirl",
              "Spanish_StrictBoss",
              "Spanish_ReliableMan",
              "Spanish_SereneElder",
              "Spanish_AngryMan",
              "Spanish_AssertiveQueen",
              "Spanish_CaringGirlfriend",
              "Spanish_PowerfulSoldier",
              "Spanish_PassionateWarrior",
              "Spanish_ChattyGirl",
              "Spanish_RomanticHusband",
              "Spanish_CompellingGirl",
              "Spanish_PowerfulVeteran",
              "Spanish_SensibleManager",
              "Spanish_ThoughtfulLady",
              "Portuguese_SentimentalLady",
              "Portuguese_BossyLeader",
              "Portuguese_Wiselady",
              "Portuguese_Strong-WilledBoy",
              "Portuguese_Deep-VoicedGentleman",
              "Portuguese_UpsetGirl",
              "Portuguese_PassionateWarrior",
              "Portuguese_AnimeCharacter",
              "Portuguese_ConfidentWoman",
              "Portuguese_AngryMan",
              "Portuguese_CaptivatingStoryteller",
              "Portuguese_Godfather",
              "Portuguese_ReservedYoungMan",
              "Portuguese_SmartYoungGirl",
              "Portuguese_Kind-heartedGirl",
              "Portuguese_Pompouslady",
              "Portuguese_Grinch",
              "Portuguese_Debator",
              "Portuguese_SweetGirl",
              "Portuguese_AttractiveGirl",
              "Portuguese_ThoughtfulMan",
              "Portuguese_PlayfulGirl",
              "Portuguese_GorgeousLady",
              "Portuguese_LovelyLady",
              "Portuguese_SereneWoman",
              "Portuguese_SadTeen",
              "Portuguese_MaturePartner",
              "Portuguese_Comedian",
              "Portuguese_Narrator",
              "Portuguese_ToughBoss",
              "Portuguese_Fussyhostess",
              "Portuguese_Dramatist",
              "Portuguese_Steadymentor",
              "Portuguese_Jovialman",
              "Portuguese_CharmingQueen",
              "Portuguese_SantaClaus",
              "Portuguese_Rudolph",
              "Portuguese_Arnold",
              "Portuguese_CharmingSanta",
              "Portuguese_CharmingLady",
              "Portuguese_Ghost",
              "Portuguese_HumorousElder",
              "Portuguese_CalmLeader",
              "Portuguese_GentleTeacher",
              "Portuguese_EnergeticBoy",
              "Portuguese_ReliableMan",
              "Portuguese_SereneElder",
              "Portuguese_GrimReaper",
              "Portuguese_AssertiveQueen",
              "Portuguese_WhimsicalGirl",
              "Portuguese_StressedLady",
              "Portuguese_FriendlyNeighbor",
              "Portuguese_CaringGirlfriend",
              "Portuguese_PowerfulSoldier",
              "Portuguese_FascinatingBoy",
              "Portuguese_RomanticHusband",
              "Portuguese_StrictBoss",
              "Portuguese_InspiringLady",
              "Portuguese_PlayfulSpirit",
              "Portuguese_ElegantGirl",
              "Portuguese_CompellingGirl",
              "Portuguese_PowerfulVeteran",
              "Portuguese_SensibleManager",
              "Portuguese_ThoughtfulLady",
              "Portuguese_TheatricalActor",
              "Portuguese_FragileBoy",
              "Portuguese_ChattyGirl",
              "Portuguese_Conscientiousinstructor",
              "Portuguese_RationalMan",
              "Portuguese_WiseScholar",
              "Portuguese_FrankLady",
              "Portuguese_DeterminedManager",
              "French_Male_Speech_New",
              "French_Female_News Anchor",
              "French_CasualMan",
              "French_MovieLeadFemale",
              "French_FemaleAnchor",
              "French_MaleNarrator",
              "Indonesian_SweetGirl",
              "Indonesian_ReservedYoungMan",
              "Indonesian_CharmingGirl",
              "Indonesian_CalmWoman",
              "Indonesian_ConfidentWoman",
              "Indonesian_CaringMan",
              "Indonesian_BossyLeader",
              "Indonesian_DeterminedBoy",
              "Indonesian_GentleGirl",
              "German_FriendlyMan",
              "German_SweetLady",
              "German_PlayfulMan",
              "Russian_HandsomeChildhoodFriend",
              "Russian_BrightHeroine",
              "Russian_AmbitiousWoman",
              "Russian_ReliableMan",
              "Russian_CrazyQueen",
              "Russian_PessimisticGirl",
              "Russian_AttractiveGuy",
              "Russian_Bad-temperedBoy",
              "Italian_BraveHeroine",
              "Italian_Narrator",
              "Italian_WanderingSorcerer",
              "Italian_DiligentLeader",
              "Dutch_kindhearted_girl",
              "Dutch_bossy_leader",
              "Vietnamese_kindhearted_girl",
              "Arabic_CalmWoman",
              "Arabic_FriendlyGuy",
              "Turkish_CalmWoman",
              "Turkish_Trustworthyman",
              "Ukrainian_CalmWoman",
              "Ukrainian_WiseScholar",
              "Thai_male_1_sample8",
              "Thai_male_2_sample2",
              "Thai_female_1_sample1",
              "Thai_female_2_sample2",
              "Polish_male_1_sample4",
              "Polish_male_2_sample3",
              "Polish_female_1_sample1",
              "Polish_female_2_sample3",
              "Romanian_male_1_sample2",
              "Romanian_male_2_sample1",
              "Romanian_female_1_sample4",
              "Romanian_female_2_sample1",
              "greek_male_1a_v1",
              "Greek_female_1_sample1",
              "Greek_female_2_sample3",
              "czech_male_1_v1",
              "czech_female_5_v7",
              "czech_female_2_v2",
              "finnish_male_3_v1",
              "finnish_male_1_v2",
              "finnish_female_4_v1",
              "hindi_male_1_v2",
              "hindi_female_2_v1",
              "hindi_female_1_v2"
            ]
          },
          "voice_id": {
            "type": "string",
            "format": "uuid"
          },
          "speed": {
            "type": "number",
            "minimum": 0.5,
            "maximum": 2
          },
          "pitch": {
            "type": "integer",
            "minimum": -12,
            "maximum": 12
          },
          "emotion": {
            "type": "string",
            "enum": [
              "auto",
              "neutral",
              "happy",
              "sad",
              "angry",
              "fearful",
              "disgusted",
              "surprised"
            ]
          },
          "english_normalization": {
            "type": "boolean"
          },
          "language": {
            "type": "string",
            "enum": [
              "af",
              "ar",
              "bg",
              "ca",
              "cs",
              "da",
              "de",
              "el",
              "en",
              "es",
              "fi",
              "fr",
              "he",
              "hi",
              "hr",
              "hu",
              "id",
              "it",
              "ja",
              "ko",
              "ms",
              "nl",
              "no",
              "pl",
              "pt",
              "ro",
              "ru",
              "sk",
              "sl",
              "sv",
              "th",
              "tr",
              "uk",
              "vi",
              "yue",
              "zh",
              "zh-yue"
            ]
          },
          "quote_only": {
            "type": "boolean",
            "default": false
          },
          "quote_id": {
            "type": "string",
            "format": "uuid"
          },
          "webhook_url": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "wait_timeout_seconds": {
            "type": "integer",
            "minimum": 0,
            "maximum": 60,
            "default": 0
          }
        },
        "required": [
          "text"
        ],
        "additionalProperties": false
      },
      "AudioQwen3TtsRequest": {
        "type": "object",
        "properties": {
          "text": {
            "type": "string",
            "minLength": 1,
            "maxLength": 10000
          },
          "voice": {
            "type": "string",
            "enum": [
              "Aiden",
              "Dylan",
              "Ryan",
              "Eric",
              "Vivian",
              "Serena",
              "Sohee",
              "Ono_Anna",
              "Uncle_Fu"
            ]
          },
          "voice_id": {
            "type": "string",
            "format": "uuid"
          },
          "reference_text": {
            "type": "string",
            "minLength": 1,
            "maxLength": 10000
          },
          "style_instruction": {
            "type": "string",
            "minLength": 1,
            "maxLength": 2000
          },
          "language": {
            "type": "string",
            "enum": [
              "auto",
              "en",
              "zh",
              "es",
              "fr",
              "de",
              "it",
              "ja",
              "ko",
              "pt",
              "ru"
            ]
          },
          "temperature": {
            "type": "number",
            "minimum": 0,
            "maximum": 1
          },
          "quote_only": {
            "type": "boolean",
            "default": false
          },
          "quote_id": {
            "type": "string",
            "format": "uuid"
          },
          "webhook_url": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "wait_timeout_seconds": {
            "type": "integer",
            "minimum": 0,
            "maximum": 60,
            "default": 0
          }
        },
        "required": [
          "text"
        ],
        "additionalProperties": false
      },
      "AudioSeedAudio10Request": {
        "type": "object",
        "properties": {
          "text": {
            "type": "string",
            "minLength": 1,
            "maxLength": 10000
          },
          "voice": {
            "type": "string",
            "enum": [
              "vivi_mixed_en_zh_ja_es_id",
              "mindy_en_es_id_pt_zh",
              "kian_en_zh",
              "cedric_en_zh",
              "sophie_en_zh",
              "jean_en_zh",
              "magnus_en_zh",
              "mabel_en_zh",
              "nadia_en_zh",
              "opal_en_zh",
              "pearl_en_zh",
              "quentin_en_zh",
              "corinne_mixed_en_zh",
              "esther_mixed_en_zh",
              "lyla_mixed_en_zh",
              "tracy_es_zh",
              "sandy_es_mixed_en_zh",
              "felix_zh",
              "celeste_zh",
              "monkey_king_zh"
            ]
          },
          "audio_urls": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uri",
              "maxLength": 4096
            },
            "maxItems": 3
          },
          "image_url": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "output_format": {
            "type": "string",
            "enum": [
              "wav",
              "mp3",
              "pcm",
              "ogg_opus"
            ]
          },
          "sample_rate": {
            "type": "string",
            "enum": [
              "8000",
              "16000",
              "24000",
              "32000",
              "44100",
              "48000"
            ]
          },
          "speed": {
            "type": "number",
            "minimum": 0.5,
            "maximum": 2
          },
          "volume": {
            "type": "number",
            "minimum": 0.5,
            "maximum": 2
          },
          "pitch": {
            "type": "integer",
            "minimum": -12,
            "maximum": 12
          },
          "quote_only": {
            "type": "boolean",
            "default": false
          },
          "quote_id": {
            "type": "string",
            "format": "uuid"
          },
          "webhook_url": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "wait_timeout_seconds": {
            "type": "integer",
            "minimum": 0,
            "maximum": 60,
            "default": 0
          }
        },
        "required": [
          "text"
        ],
        "additionalProperties": false
      },
      "AudioElevenlabsSfxV2Request": {
        "type": "object",
        "properties": {
          "prompt": {
            "type": "string",
            "minLength": 1,
            "maxLength": 1000
          },
          "duration_seconds": {
            "type": "number",
            "minimum": 0.5,
            "maximum": 22
          },
          "prompt_influence": {
            "type": "number",
            "minimum": 0,
            "maximum": 1,
            "default": 0.3
          },
          "loop": {
            "type": "boolean",
            "default": false
          },
          "quote_only": {
            "type": "boolean",
            "default": false
          },
          "quote_id": {
            "type": "string",
            "format": "uuid"
          },
          "webhook_url": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "wait_timeout_seconds": {
            "type": "integer",
            "minimum": 0,
            "maximum": 60,
            "default": 0
          }
        },
        "required": [
          "prompt"
        ],
        "additionalProperties": false
      },
      "DubElevenlabsDubbingRequest": {
        "type": "object",
        "properties": {
          "video_url": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "language": {
            "type": "string",
            "pattern": "^[a-z]{2}$"
          },
          "source_language": {
            "type": "string",
            "pattern": "^[a-z]{2}$"
          },
          "speaker_count": {
            "type": "integer",
            "minimum": 1,
            "maximum": 50
          },
          "highest_resolution": {
            "type": "boolean",
            "default": true
          },
          "quote_only": {
            "type": "boolean",
            "default": false
          },
          "quote_id": {
            "type": "string",
            "format": "uuid"
          },
          "webhook_url": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "wait_timeout_seconds": {
            "type": "integer",
            "minimum": 0,
            "maximum": 60,
            "default": 0
          }
        },
        "required": [
          "video_url",
          "language"
        ],
        "additionalProperties": false
      },
      "DubHeygenSpeedRequest": {
        "type": "object",
        "properties": {
          "video_url": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "language": {
            "type": "string",
            "enum": [
              "English",
              "Spanish",
              "French",
              "Hindi",
              "Italian",
              "German",
              "Polish",
              "Portuguese",
              "Chinese",
              "Japanese",
              "Dutch",
              "Turkish",
              "Korean",
              "Danish",
              "Arabic",
              "Romanian",
              "Mandarin",
              "Filipino",
              "Swedish",
              "Indonesian",
              "Ukrainian",
              "Greek",
              "Czech",
              "Bulgarian",
              "Malay",
              "Slovak",
              "Croatian",
              "Tamil",
              "Finnish",
              "Russian",
              "Afrikaans (South Africa)",
              "Albanian (Albania)",
              "Amharic (Ethiopia)",
              "Arabic (Algeria)",
              "Arabic (Bahrain)",
              "Arabic (Egypt)",
              "Arabic (Iraq)",
              "Arabic (Jordan)",
              "Arabic (Kuwait)",
              "Arabic (Lebanon)",
              "Arabic (Libya)",
              "Arabic (Morocco)",
              "Arabic (Oman)",
              "Arabic (Qatar)",
              "Arabic (Saudi Arabia)",
              "Arabic (Syria)",
              "Arabic (Tunisia)",
              "Arabic (United Arab Emirates)",
              "Arabic (Yemen)",
              "Armenian (Armenia)",
              "Azerbaijani (Latin, Azerbaijan)",
              "Bangla (Bangladesh)",
              "Basque",
              "Bengali (India)",
              "Bosnian (Bosnia and Herzegovina)",
              "Bulgarian (Bulgaria)",
              "Burmese (Myanmar)",
              "Catalan",
              "Chinese (Cantonese, Traditional)",
              "Chinese (Jilu Mandarin, Simplified)",
              "Chinese (Mandarin, Simplified)",
              "Chinese (Northeastern Mandarin, Simplified)",
              "Chinese (Southwestern Mandarin, Simplified)",
              "Chinese (Taiwanese Mandarin, Traditional)",
              "Chinese (Wu, Simplified)",
              "Chinese (Zhongyuan Mandarin Henan, Simplified)",
              "Chinese (Zhongyuan Mandarin Shaanxi, Simplified)",
              "Croatian (Croatia)",
              "Czech (Czechia)",
              "Danish (Denmark)",
              "Dutch (Belgium)",
              "Dutch (Netherlands)",
              "English (Australia)",
              "English (Canada)",
              "English (Hong Kong SAR)",
              "English (India)",
              "English (Ireland)",
              "English (Kenya)",
              "English (New Zealand)",
              "English (Nigeria)",
              "English (Philippines)",
              "English (Singapore)",
              "English (South Africa)",
              "English (Tanzania)",
              "English (UK)",
              "English (United States)",
              "Estonian (Estonia)",
              "Filipino (Philippines)",
              "Finnish (Finland)",
              "French (Belgium)",
              "French (Canada)",
              "French (France)",
              "French (Switzerland)",
              "Galician",
              "Georgian (Georgia)",
              "German (Austria)",
              "German (Germany)",
              "German (Switzerland)",
              "Greek (Greece)",
              "Gujarati (India)",
              "Hebrew (Israel)",
              "Hindi (India)",
              "Hungarian (Hungary)",
              "Icelandic (Iceland)",
              "Indonesian (Indonesia)",
              "Irish (Ireland)",
              "Italian (Italy)",
              "Japanese (Japan)",
              "Javanese (Latin, Indonesia)",
              "Kannada (India)",
              "Kazakh (Kazakhstan)",
              "Khmer (Cambodia)",
              "Korean (Korea)",
              "Lao (Laos)",
              "Latvian (Latvia)",
              "Lithuanian (Lithuania)",
              "Macedonian (North Macedonia)",
              "Malay (Malaysia)",
              "Malayalam (India)",
              "Maltese (Malta)",
              "Marathi (India)",
              "Mongolian (Mongolia)",
              "Nepali (Nepal)",
              "Norwegian Bokmål (Norway)",
              "Pashto (Afghanistan)",
              "Persian (Iran)",
              "Polish (Poland)",
              "Portuguese (Brazil)",
              "Portuguese (Portugal)",
              "Romanian (Romania)",
              "Russian (Russia)",
              "Serbian (Latin, Serbia)",
              "Sinhala (Sri Lanka)",
              "Slovak (Slovakia)",
              "Slovenian (Slovenia)",
              "Somali (Somalia)",
              "Spanish (Argentina)",
              "Spanish (Bolivia)",
              "Spanish (Chile)",
              "Spanish (Colombia)",
              "Spanish (Costa Rica)",
              "Spanish (Cuba)",
              "Spanish (Dominican Republic)",
              "Spanish (Ecuador)",
              "Spanish (El Salvador)",
              "Spanish (Equatorial Guinea)",
              "Spanish (Guatemala)",
              "Spanish (Honduras)",
              "Spanish (Mexico)",
              "Spanish (Nicaragua)",
              "Spanish (Panama)",
              "Spanish (Paraguay)",
              "Spanish (Peru)",
              "Spanish (Puerto Rico)",
              "Spanish (Spain)",
              "Spanish (United States)",
              "Spanish (Uruguay)",
              "Spanish (Venezuela)",
              "Sundanese (Indonesia)",
              "Swahili (Kenya)",
              "Swahili (Tanzania)",
              "Swedish (Sweden)",
              "Tamil (India)",
              "Tamil (Malaysia)",
              "Tamil (Singapore)",
              "Tamil (Sri Lanka)",
              "Telugu (India)",
              "Thai (Thailand)",
              "Turkish (Türkiye)",
              "Ukrainian (Ukraine)",
              "Urdu (India)",
              "Urdu (Pakistan)",
              "Uzbek (Latin, Uzbekistan)",
              "Vietnamese (Vietnam)",
              "Welsh (United Kingdom)",
              "Zulu (South Africa)",
              "English - Your Accent",
              "English - American Accent"
            ]
          },
          "speaker_count": {
            "type": "integer",
            "minimum": 1,
            "maximum": 50
          },
          "translate_audio_only": {
            "type": "boolean",
            "default": false
          },
          "enable_dynamic_duration": {
            "type": "boolean",
            "default": false
          },
          "quote_only": {
            "type": "boolean",
            "default": false
          },
          "quote_id": {
            "type": "string",
            "format": "uuid"
          },
          "webhook_url": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "wait_timeout_seconds": {
            "type": "integer",
            "minimum": 0,
            "maximum": 60,
            "default": 0
          }
        },
        "required": [
          "video_url",
          "language"
        ],
        "additionalProperties": false
      },
      "DubHeygenPrecisionRequest": {
        "type": "object",
        "properties": {
          "video_url": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "language": {
            "type": "string",
            "enum": [
              "English",
              "Spanish",
              "French",
              "Hindi",
              "Italian",
              "German",
              "Polish",
              "Portuguese",
              "Chinese",
              "Japanese",
              "Dutch",
              "Turkish",
              "Korean",
              "Danish",
              "Arabic",
              "Romanian",
              "Mandarin",
              "Filipino",
              "Swedish",
              "Indonesian",
              "Ukrainian",
              "Greek",
              "Czech",
              "Bulgarian",
              "Malay",
              "Slovak",
              "Croatian",
              "Tamil",
              "Finnish",
              "Russian",
              "Afrikaans (South Africa)",
              "Albanian (Albania)",
              "Amharic (Ethiopia)",
              "Arabic (Algeria)",
              "Arabic (Bahrain)",
              "Arabic (Egypt)",
              "Arabic (Iraq)",
              "Arabic (Jordan)",
              "Arabic (Kuwait)",
              "Arabic (Lebanon)",
              "Arabic (Libya)",
              "Arabic (Morocco)",
              "Arabic (Oman)",
              "Arabic (Qatar)",
              "Arabic (Saudi Arabia)",
              "Arabic (Syria)",
              "Arabic (Tunisia)",
              "Arabic (United Arab Emirates)",
              "Arabic (Yemen)",
              "Armenian (Armenia)",
              "Azerbaijani (Latin, Azerbaijan)",
              "Bangla (Bangladesh)",
              "Basque",
              "Bengali (India)",
              "Bosnian (Bosnia and Herzegovina)",
              "Bulgarian (Bulgaria)",
              "Burmese (Myanmar)",
              "Catalan",
              "Chinese (Cantonese, Traditional)",
              "Chinese (Jilu Mandarin, Simplified)",
              "Chinese (Mandarin, Simplified)",
              "Chinese (Northeastern Mandarin, Simplified)",
              "Chinese (Southwestern Mandarin, Simplified)",
              "Chinese (Taiwanese Mandarin, Traditional)",
              "Chinese (Wu, Simplified)",
              "Chinese (Zhongyuan Mandarin Henan, Simplified)",
              "Chinese (Zhongyuan Mandarin Shaanxi, Simplified)",
              "Croatian (Croatia)",
              "Czech (Czechia)",
              "Danish (Denmark)",
              "Dutch (Belgium)",
              "Dutch (Netherlands)",
              "English (Australia)",
              "English (Canada)",
              "English (Hong Kong SAR)",
              "English (India)",
              "English (Ireland)",
              "English (Kenya)",
              "English (New Zealand)",
              "English (Nigeria)",
              "English (Philippines)",
              "English (Singapore)",
              "English (South Africa)",
              "English (Tanzania)",
              "English (UK)",
              "English (United States)",
              "Estonian (Estonia)",
              "Filipino (Philippines)",
              "Finnish (Finland)",
              "French (Belgium)",
              "French (Canada)",
              "French (France)",
              "French (Switzerland)",
              "Galician",
              "Georgian (Georgia)",
              "German (Austria)",
              "German (Germany)",
              "German (Switzerland)",
              "Greek (Greece)",
              "Gujarati (India)",
              "Hebrew (Israel)",
              "Hindi (India)",
              "Hungarian (Hungary)",
              "Icelandic (Iceland)",
              "Indonesian (Indonesia)",
              "Irish (Ireland)",
              "Italian (Italy)",
              "Japanese (Japan)",
              "Javanese (Latin, Indonesia)",
              "Kannada (India)",
              "Kazakh (Kazakhstan)",
              "Khmer (Cambodia)",
              "Korean (Korea)",
              "Lao (Laos)",
              "Latvian (Latvia)",
              "Lithuanian (Lithuania)",
              "Macedonian (North Macedonia)",
              "Malay (Malaysia)",
              "Malayalam (India)",
              "Maltese (Malta)",
              "Marathi (India)",
              "Mongolian (Mongolia)",
              "Nepali (Nepal)",
              "Norwegian Bokmål (Norway)",
              "Pashto (Afghanistan)",
              "Persian (Iran)",
              "Polish (Poland)",
              "Portuguese (Brazil)",
              "Portuguese (Portugal)",
              "Romanian (Romania)",
              "Russian (Russia)",
              "Serbian (Latin, Serbia)",
              "Sinhala (Sri Lanka)",
              "Slovak (Slovakia)",
              "Slovenian (Slovenia)",
              "Somali (Somalia)",
              "Spanish (Argentina)",
              "Spanish (Bolivia)",
              "Spanish (Chile)",
              "Spanish (Colombia)",
              "Spanish (Costa Rica)",
              "Spanish (Cuba)",
              "Spanish (Dominican Republic)",
              "Spanish (Ecuador)",
              "Spanish (El Salvador)",
              "Spanish (Equatorial Guinea)",
              "Spanish (Guatemala)",
              "Spanish (Honduras)",
              "Spanish (Mexico)",
              "Spanish (Nicaragua)",
              "Spanish (Panama)",
              "Spanish (Paraguay)",
              "Spanish (Peru)",
              "Spanish (Puerto Rico)",
              "Spanish (Spain)",
              "Spanish (United States)",
              "Spanish (Uruguay)",
              "Spanish (Venezuela)",
              "Sundanese (Indonesia)",
              "Swahili (Kenya)",
              "Swahili (Tanzania)",
              "Swedish (Sweden)",
              "Tamil (India)",
              "Tamil (Malaysia)",
              "Tamil (Singapore)",
              "Tamil (Sri Lanka)",
              "Telugu (India)",
              "Thai (Thailand)",
              "Turkish (Türkiye)",
              "Ukrainian (Ukraine)",
              "Urdu (India)",
              "Urdu (Pakistan)",
              "Uzbek (Latin, Uzbekistan)",
              "Vietnamese (Vietnam)",
              "Welsh (United Kingdom)",
              "Zulu (South Africa)",
              "English - Your Accent",
              "English - American Accent"
            ]
          },
          "speaker_count": {
            "type": "integer",
            "minimum": 1,
            "maximum": 50
          },
          "translate_audio_only": {
            "type": "boolean",
            "default": false
          },
          "enable_dynamic_duration": {
            "type": "boolean",
            "default": false
          },
          "quote_only": {
            "type": "boolean",
            "default": false
          },
          "quote_id": {
            "type": "string",
            "format": "uuid"
          },
          "webhook_url": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "wait_timeout_seconds": {
            "type": "integer",
            "minimum": 0,
            "maximum": 60,
            "default": 0
          }
        },
        "required": [
          "video_url",
          "language"
        ],
        "additionalProperties": false
      },
      "AssemblyComposeRequest": {
        "type": "object",
        "properties": {
          "tracks": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "pattern": "^[A-Za-z0-9_-]{1,64}$"
                },
                "type": {
                  "type": "string",
                  "enum": [
                    "video",
                    "audio",
                    "image"
                  ]
                },
                "keyframes": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "timestamp": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 180000
                      },
                      "duration": {
                        "type": "integer",
                        "minimum": 1,
                        "maximum": 180000
                      },
                      "url": {
                        "type": "string",
                        "format": "uri",
                        "maxLength": 4096
                      }
                    },
                    "required": [
                      "timestamp",
                      "duration",
                      "url"
                    ],
                    "additionalProperties": false
                  },
                  "minItems": 1,
                  "maxItems": 64
                }
              },
              "required": [
                "id",
                "type",
                "keyframes"
              ],
              "additionalProperties": false
            },
            "minItems": 1,
            "maxItems": 8
          },
          "quote_only": {
            "type": "boolean",
            "default": false
          },
          "quote_id": {
            "type": "string",
            "format": "uuid"
          },
          "webhook_url": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "wait_timeout_seconds": {
            "type": "integer",
            "minimum": 0,
            "maximum": 60,
            "default": 0
          }
        },
        "required": [
          "tracks"
        ],
        "additionalProperties": false
      },
      "AssemblyMergeVideosRequest": {
        "type": "object",
        "properties": {
          "video_urls": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uri",
              "maxLength": 4096
            },
            "minItems": 2,
            "maxItems": 12
          },
          "target_fps": {
            "type": "number",
            "minimum": 1,
            "maximum": 60
          },
          "quote_only": {
            "type": "boolean",
            "default": false
          },
          "quote_id": {
            "type": "string",
            "format": "uuid"
          },
          "webhook_url": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "wait_timeout_seconds": {
            "type": "integer",
            "minimum": 0,
            "maximum": 60,
            "default": 0
          }
        },
        "required": [
          "video_urls"
        ],
        "additionalProperties": false
      },
      "AssemblyMergeAudioVideoRequest": {
        "type": "object",
        "properties": {
          "video_url": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "audio_url": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "start_offset_seconds": {
            "type": "number",
            "minimum": 0,
            "maximum": 600,
            "default": 0
          },
          "quote_only": {
            "type": "boolean",
            "default": false
          },
          "quote_id": {
            "type": "string",
            "format": "uuid"
          },
          "webhook_url": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "wait_timeout_seconds": {
            "type": "integer",
            "minimum": 0,
            "maximum": 60,
            "default": 0
          }
        },
        "required": [
          "video_url",
          "audio_url"
        ],
        "additionalProperties": false
      },
      "AssemblyImagesToVideoRequest": {
        "type": "object",
        "properties": {
          "images": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "url": {
                  "type": "string",
                  "format": "uri",
                  "maxLength": 4096
                },
                "frames": {
                  "type": "integer",
                  "minimum": 1,
                  "maximum": 600
                }
              },
              "required": [
                "url",
                "frames"
              ],
              "additionalProperties": false
            },
            "minItems": 1,
            "maxItems": 12
          },
          "fps": {
            "type": "number",
            "minimum": 1,
            "maximum": 120,
            "default": 24
          },
          "quote_only": {
            "type": "boolean",
            "default": false
          },
          "quote_id": {
            "type": "string",
            "format": "uuid"
          },
          "webhook_url": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "wait_timeout_seconds": {
            "type": "integer",
            "minimum": 0,
            "maximum": 60,
            "default": 0
          }
        },
        "required": [
          "images"
        ],
        "additionalProperties": false
      },
      "AssemblyExtractFrameRequest": {
        "type": "object",
        "properties": {
          "video_url": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "frame_type": {
            "type": "string",
            "enum": [
              "first",
              "middle",
              "last"
            ],
            "default": "first"
          },
          "quote_only": {
            "type": "boolean",
            "default": false
          },
          "quote_id": {
            "type": "string",
            "format": "uuid"
          },
          "webhook_url": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "wait_timeout_seconds": {
            "type": "integer",
            "minimum": 0,
            "maximum": 60,
            "default": 0
          }
        },
        "required": [
          "video_url"
        ],
        "additionalProperties": false
      },
      "AssemblyTrimVideoRequest": {
        "type": "object",
        "properties": {
          "video_url": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "start_time_seconds": {
            "type": "number",
            "minimum": 0,
            "maximum": 180
          },
          "end_time_seconds": {
            "type": "number",
            "minimum": 0,
            "maximum": 180
          },
          "duration_seconds": {
            "type": "number",
            "minimum": 0.1,
            "maximum": 180
          },
          "quote_only": {
            "type": "boolean",
            "default": false
          },
          "quote_id": {
            "type": "string",
            "format": "uuid"
          },
          "webhook_url": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "wait_timeout_seconds": {
            "type": "integer",
            "minimum": 0,
            "maximum": 60,
            "default": 0
          }
        },
        "required": [
          "video_url",
          "start_time_seconds"
        ],
        "additionalProperties": false
      },
      "AssemblyTextOverlayRequest": {
        "type": "object",
        "properties": {
          "video_url": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "text": {
            "type": "string",
            "minLength": 1,
            "maxLength": 120
          },
          "position": {
            "type": "string",
            "enum": [
              "top",
              "center",
              "bottom"
            ],
            "default": "top"
          },
          "start_seconds": {
            "type": "number",
            "minimum": 0,
            "maximum": 180
          },
          "end_seconds": {
            "type": "number",
            "minimum": 0,
            "maximum": 180
          },
          "quote_only": {
            "type": "boolean",
            "default": false
          },
          "quote_id": {
            "type": "string",
            "format": "uuid"
          },
          "webhook_url": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "wait_timeout_seconds": {
            "type": "integer",
            "minimum": 0,
            "maximum": 60,
            "default": 0
          }
        },
        "required": [
          "video_url",
          "text"
        ],
        "additionalProperties": false
      },
      "AssemblyMusicBedRequest": {
        "type": "object",
        "properties": {
          "video_url": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "audio_url": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "speech_spans": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "start_seconds": {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 180
                },
                "end_seconds": {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 180
                }
              },
              "required": [
                "start_seconds",
                "end_seconds"
              ],
              "additionalProperties": false
            },
            "minItems": 1,
            "maxItems": 200
          },
          "quote_only": {
            "type": "boolean",
            "default": false
          },
          "quote_id": {
            "type": "string",
            "format": "uuid"
          },
          "webhook_url": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "wait_timeout_seconds": {
            "type": "integer",
            "minimum": 0,
            "maximum": 60,
            "default": 0
          }
        },
        "required": [
          "video_url",
          "audio_url"
        ],
        "additionalProperties": false
      },
      "AssemblyLoudnormRequest": {
        "type": "object",
        "properties": {
          "audio_url": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "integrated_loudness": {
            "type": "number",
            "minimum": -70,
            "maximum": -5
          },
          "true_peak": {
            "type": "number",
            "minimum": -9,
            "maximum": 0
          },
          "loudness_range": {
            "type": "number",
            "minimum": 1,
            "maximum": 20
          },
          "quote_only": {
            "type": "boolean",
            "default": false
          },
          "quote_id": {
            "type": "string",
            "format": "uuid"
          },
          "webhook_url": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "wait_timeout_seconds": {
            "type": "integer",
            "minimum": 0,
            "maximum": 60,
            "default": 0
          }
        },
        "required": [
          "audio_url"
        ],
        "additionalProperties": false
      },
      "CaptionsVeedSubtitlesRequest": {
        "type": "object",
        "properties": {
          "video_url": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "preset": {
            "type": "string",
            "enum": [
              "glass",
              "whisper",
              "glide2",
              "fusion",
              "glide",
              "terminal",
              "handwritten",
              "backdrop",
              "backdrop2",
              "simple",
              "plain",
              "beans",
              "corpo",
              "boo",
              "shadeplay",
              "casper",
              "capri",
              "lowkey",
              "vinta",
              "diego",
              "ali",
              "slay",
              "kitty",
              "hustle",
              "karl",
              "sprout",
              "flex",
              "mint",
              "rizz",
              "vegas"
            ]
          },
          "language": {
            "type": "string",
            "minLength": 2,
            "maxLength": 35
          },
          "translation_language": {
            "type": "string",
            "minLength": 2,
            "maxLength": 35
          },
          "vocabulary": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "word": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 100
                },
                "replaces": {
                  "type": "array",
                  "items": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 100
                  },
                  "minItems": 1,
                  "maxItems": 20
                }
              },
              "required": [
                "word",
                "replaces"
              ],
              "additionalProperties": false
            },
            "minItems": 1,
            "maxItems": 100
          },
          "position": {
            "type": "string",
            "enum": [
              "top",
              "center",
              "bottom"
            ]
          },
          "quote_only": {
            "type": "boolean",
            "default": false
          },
          "quote_id": {
            "type": "string",
            "format": "uuid"
          },
          "webhook_url": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "wait_timeout_seconds": {
            "type": "integer",
            "minimum": 0,
            "maximum": 60,
            "default": 0
          }
        },
        "required": [
          "video_url",
          "preset"
        ],
        "additionalProperties": false
      },
      "CaptionsAutoSubtitleRequest": {
        "type": "object",
        "properties": {
          "video_url": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "audio_url": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "language": {
            "type": "string",
            "minLength": 2,
            "maxLength": 35
          },
          "font_name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 64
          },
          "font_size": {
            "type": "integer",
            "minimum": 20,
            "maximum": 150
          },
          "font_weight": {
            "type": "string",
            "enum": [
              "normal",
              "bold",
              "black"
            ]
          },
          "font_color": {
            "type": "string",
            "enum": [
              "white",
              "black",
              "red",
              "green",
              "blue",
              "yellow",
              "orange",
              "purple",
              "pink",
              "brown",
              "gray",
              "cyan",
              "magenta"
            ]
          },
          "stroke_width": {
            "type": "integer",
            "minimum": 0,
            "maximum": 10
          },
          "stroke_color": {
            "type": "string",
            "enum": [
              "white",
              "black",
              "red",
              "green",
              "blue",
              "yellow",
              "orange",
              "purple",
              "pink",
              "brown",
              "gray",
              "cyan",
              "magenta"
            ]
          },
          "background_color": {
            "type": "string",
            "enum": [
              "white",
              "black",
              "red",
              "green",
              "blue",
              "yellow",
              "orange",
              "purple",
              "pink",
              "brown",
              "gray",
              "cyan",
              "magenta",
              "none",
              "transparent"
            ]
          },
          "position": {
            "type": "string",
            "enum": [
              "top",
              "center",
              "bottom"
            ]
          },
          "y_offset": {
            "type": "integer",
            "minimum": -200,
            "maximum": 200
          },
          "words_per_subtitle": {
            "type": "integer",
            "minimum": 1,
            "maximum": 12
          },
          "enable_animation": {
            "type": "boolean"
          },
          "quote_only": {
            "type": "boolean",
            "default": false
          },
          "quote_id": {
            "type": "string",
            "format": "uuid"
          },
          "webhook_url": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "wait_timeout_seconds": {
            "type": "integer",
            "minimum": 0,
            "maximum": 60,
            "default": 0
          }
        },
        "additionalProperties": false
      },
      "ReframeLtx23Request": {
        "type": "object",
        "properties": {
          "video_url": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "aspect_ratio": {
            "type": "string",
            "enum": [
              "1:1",
              "4:5",
              "5:4",
              "9:16",
              "16:9"
            ]
          },
          "resolution": {
            "type": "string",
            "enum": [
              "720p",
              "1080p"
            ]
          },
          "quote_only": {
            "type": "boolean",
            "default": false
          },
          "quote_id": {
            "type": "string",
            "format": "uuid"
          },
          "webhook_url": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "wait_timeout_seconds": {
            "type": "integer",
            "minimum": 0,
            "maximum": 60,
            "default": 0
          }
        },
        "required": [
          "video_url",
          "aspect_ratio",
          "resolution"
        ],
        "additionalProperties": false
      },
      "ReframeIdeogramV3Request": {
        "type": "object",
        "properties": {
          "image_url": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "image_size": {
            "type": "string",
            "enum": [
              "square_hd",
              "square",
              "portrait_4_3",
              "portrait_16_9",
              "landscape_4_3",
              "landscape_16_9",
              "736x1312",
              "896x1120",
              "832x1248",
              "864x1152",
              "1024x1024",
              "1120x896",
              "1152x864",
              "1248x832",
              "1312x736",
              "1472x640"
            ]
          },
          "rendering_speed": {
            "type": "string",
            "enum": [
              "TURBO",
              "BALANCED",
              "QUALITY"
            ]
          },
          "num_images": {
            "type": "integer",
            "minimum": 1,
            "maximum": 4,
            "default": 1
          },
          "seed": {
            "type": "integer",
            "minimum": 0,
            "maximum": 2147483647
          },
          "quote_only": {
            "type": "boolean",
            "default": false
          },
          "quote_id": {
            "type": "string",
            "format": "uuid"
          },
          "webhook_url": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "wait_timeout_seconds": {
            "type": "integer",
            "minimum": 0,
            "maximum": 60,
            "default": 0
          }
        },
        "required": [
          "image_url",
          "image_size",
          "rendering_speed"
        ],
        "additionalProperties": false
      },
      "MusicLyria3Request": {
        "type": "object",
        "properties": {
          "prompt": {
            "type": "string",
            "minLength": 1,
            "maxLength": 5000
          },
          "image_url": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "quote_only": {
            "type": "boolean",
            "default": false
          },
          "quote_id": {
            "type": "string",
            "format": "uuid"
          },
          "webhook_url": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "wait_timeout_seconds": {
            "type": "integer",
            "minimum": 0,
            "maximum": 60,
            "default": 0
          }
        },
        "required": [
          "prompt"
        ],
        "additionalProperties": false
      },
      "MusicLyria35Request": {
        "type": "object",
        "properties": {
          "prompt": {
            "type": "string",
            "minLength": 1,
            "maxLength": 5000
          },
          "image_url": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "quote_only": {
            "type": "boolean",
            "default": false
          },
          "quote_id": {
            "type": "string",
            "format": "uuid"
          },
          "webhook_url": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "wait_timeout_seconds": {
            "type": "integer",
            "minimum": 0,
            "maximum": 60,
            "default": 0
          }
        },
        "required": [
          "prompt"
        ],
        "additionalProperties": false
      },
      "MusicMinimaxMusic3Request": {
        "type": "object",
        "properties": {
          "prompt": {
            "type": "string",
            "minLength": 1,
            "maxLength": 5000
          },
          "lyrics": {
            "type": "string",
            "minLength": 1,
            "maxLength": 10000
          },
          "duration_seconds": {
            "type": "number",
            "minimum": 1,
            "maximum": 300,
            "default": 60
          },
          "seed": {
            "type": "integer",
            "minimum": -2147483648,
            "maximum": 2147483647
          },
          "quote_only": {
            "type": "boolean",
            "default": false
          },
          "quote_id": {
            "type": "string",
            "format": "uuid"
          },
          "webhook_url": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "wait_timeout_seconds": {
            "type": "integer",
            "minimum": 0,
            "maximum": 60,
            "default": 0
          }
        },
        "required": [
          "prompt",
          "lyrics"
        ],
        "additionalProperties": false
      },
      "MusicElevenlabsMusicRequest": {
        "type": "object",
        "properties": {
          "prompt": {
            "type": "string",
            "minLength": 1,
            "maxLength": 4100
          },
          "duration_seconds": {
            "type": "integer",
            "minimum": 3,
            "maximum": 600,
            "default": 120
          },
          "instrumental": {
            "type": "boolean",
            "default": true
          },
          "quote_only": {
            "type": "boolean",
            "default": false
          },
          "quote_id": {
            "type": "string",
            "format": "uuid"
          },
          "webhook_url": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "wait_timeout_seconds": {
            "type": "integer",
            "minimum": 0,
            "maximum": 60,
            "default": 0
          }
        },
        "required": [
          "prompt"
        ],
        "additionalProperties": false
      },
      "MusicSoniloV11Request": {
        "type": "object",
        "properties": {
          "video_url": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "duration_seconds": {
            "type": "number",
            "minimum": 1,
            "maximum": 180
          },
          "prompt": {
            "type": "string",
            "minLength": 1,
            "maxLength": 2000
          },
          "prompt_influence": {
            "type": "number",
            "minimum": 0,
            "maximum": 1
          },
          "keep_speech_vocal": {
            "type": "boolean",
            "default": false
          },
          "start_offset_seconds": {
            "type": "number",
            "minimum": 0,
            "maximum": 600
          },
          "quote_only": {
            "type": "boolean",
            "default": false
          },
          "quote_id": {
            "type": "string",
            "format": "uuid"
          },
          "webhook_url": {
            "type": "string",
            "format": "uri",
            "maxLength": 4096
          },
          "wait_timeout_seconds": {
            "type": "integer",
            "minimum": 0,
            "maximum": 60,
            "default": 0
          }
        },
        "required": [
          "video_url",
          "duration_seconds"
        ],
        "additionalProperties": false
      }
    },
    "parameters": {
      "cursor": {
        "name": "cursor",
        "in": "query",
        "schema": {
          "type": "string"
        },
        "description": "Opaque composite pagination cursor from the previous response. Do not parse or construct it."
      },
      "limit": {
        "name": "limit",
        "in": "query",
        "schema": {
          "type": "integer",
          "minimum": 1,
          "maximum": 100,
          "default": 20
        },
        "description": "Number of items to return"
      },
      "idempotencyKey": {
        "name": "Idempotency-Key",
        "in": "header",
        "required": true,
        "schema": {
          "type": "string",
          "minLength": 16,
          "maxLength": 255,
          "pattern": "^[A-Za-z0-9._:-]+$"
        },
        "description": "A unique string that makes retries safe. Any value 16-255 characters; reuse it only when retrying the exact same request."
      },
      "usageProject": {
        "name": "X-RoasOS-Project",
        "in": "header",
        "required": false,
        "schema": {
          "type": "string",
          "minLength": 1,
          "maxLength": 64,
          "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{0,63}$"
        },
        "description": "Optional label to group this request under one of your projects. Appears in your usage records."
      },
      "usageCostCenter": {
        "name": "X-RoasOS-Cost-Center",
        "in": "header",
        "required": false,
        "schema": {
          "type": "string",
          "minLength": 1,
          "maxLength": 64,
          "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{0,63}$"
        },
        "description": "Optional label to attribute this request to a cost center. Appears in your usage records."
      }
    }
  },
  "paths": {
    "/v1/discover/items": {
      "get": {
        "operationId": "listDiscoverItems",
        "summary": "Search the ad library",
        "description": "Search ad creatives we have already indexed. Fast, cached, and read-only.",
        "tags": [
          "Discover"
        ],
        "parameters": [
          {
            "name": "view",
            "in": "query",
            "schema": {
              "type": "string",
              "enum": [
                "feed",
                "following",
                "saved"
              ],
              "default": "feed"
            }
          },
          {
            "name": "sources",
            "in": "query",
            "schema": {
              "type": "array",
              "maxItems": 3,
              "items": {
                "type": "string",
                "enum": [
                  "meta_ad",
                  "instagram_post",
                  "tiktok_post"
                ]
              }
            },
            "style": "form",
            "explode": true
          },
          {
            "name": "brand_ids",
            "in": "query",
            "schema": {
              "type": "array",
              "maxItems": 100,
              "items": {
                "type": "string",
                "format": "uuid"
              }
            },
            "style": "form",
            "explode": true
          },
          {
            "name": "media_types",
            "in": "query",
            "schema": {
              "type": "array",
              "maxItems": 3,
              "items": {
                "type": "string",
                "enum": [
                  "image",
                  "video",
                  "carousel"
                ]
              }
            },
            "style": "form",
            "explode": true
          },
          {
            "name": "since",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "query",
            "in": "query",
            "schema": {
              "type": "string",
              "maxLength": 500
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "enum": [
                "newest",
                "oldest"
              ],
              "default": "newest"
            }
          },
          {
            "$ref": "#/components/parameters/cursor"
          },
          {
            "$ref": "#/components/parameters/limit"
          }
        ],
        "responses": {
          "200": {
            "description": "One bounded page of normalized cached creatives",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DiscoverListResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid or unsupported filter or cursor",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "API key no longer has exact Discover read authority",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Discover read authority or normalized projection is unavailable",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-roasos-capability-id": "discover.cached-search@1",
        "x-roasos-runtime-status": "available",
        "x-roasos-launch-readiness": "ready",
        "x-roasos-exposure": "public"
      }
    },
    "/v1/discover/items/{id}": {
      "get": {
        "operationId": "getDiscoverItem",
        "summary": "Get one ad",
        "description": "Get one cached ad creative by its ID.",
        "tags": [
          "Discover"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Normalized cached creative",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DiscoverDetailResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid Discover item ID",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "API key no longer has exact Discover read authority",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Item absent or outside the workspace-visible corpus",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Discover read authority or normalized projection is unavailable",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-roasos-capability-id": "discover.cached-detail@1",
        "x-roasos-runtime-status": "available",
        "x-roasos-launch-readiness": "ready",
        "x-roasos-exposure": "public"
      }
    },
    "/v1/capabilities": {
      "get": {
        "operationId": "listCapabilities",
        "summary": "List platform capabilities",
        "description": "Returns the canonical public-API capability manifest. By default only currently available operations are returned.",
        "tags": [
          "Capabilities"
        ],
        "parameters": [
          {
            "name": "include",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "public",
                "available",
                "all"
              ],
              "default": "public"
            },
            "description": "Public returns launch-ready operations. Available includes runtime-callable internal operations. All also includes planned, blocked, and unavailable operations."
          }
        ],
        "responses": {
          "200": {
            "description": "Versioned capability manifest",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CapabilityManifestResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid include filter",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-roasos-capability-id": "platform.capabilities.list@1",
        "x-roasos-runtime-status": "available",
        "x-roasos-launch-readiness": "ready",
        "x-roasos-exposure": "public"
      }
    },
    "/v1/research/jobs": {
      "post": {
        "operationId": "createResearchJob",
        "summary": "Quote or submit a Research job",
        "description": "Quote or run a Research job. Set `quote_only: true` to see the price without being charged, then send the same request with its `quote_id` to run it (costs at most 1 credit). Two capabilities are live, each one page and up to 30 results: Facebook company ads by Page ID, and a Meta Ad Library keyword search.",
        "tags": [
          "Research"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/idempotencyKey"
          },
          {
            "$ref": "#/components/parameters/usageProject"
          },
          {
            "$ref": "#/components/parameters/usageCostCenter"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ResearchJobRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Immutable quote or free cache-hit job",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResearchCreateResponse"
                }
              }
            }
          },
          "202": {
            "description": "Durably queued live acquisition or free cache join",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResearchJobSubmissionResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request, idempotency key, or attribution",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "Insufficient credits",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Explicit spend approval is required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Quote conflict, expiry, or non-terminal retry",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Quote, billing, projection, or queue authority is unavailable",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-roasos-capability-id": "research.facebook-company-ads@1",
        "x-roasos-runtime-status": "available",
        "x-roasos-launch-readiness": "ready",
        "x-roasos-exposure": "public"
      }
    },
    "/v1/research/jobs/{id}": {
      "get": {
        "operationId": "getResearchJob",
        "summary": "Get a Research job",
        "tags": [
          "Research"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Safe Research lifecycle projection",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResearchJobDetailResponse"
                }
              }
            }
          },
          "404": {
            "description": "Job absent or outside the exact API-key workspace boundary",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Research authority or projection unavailable",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-roasos-capability-id": "research.facebook-company-ads@1",
        "x-roasos-runtime-status": "available",
        "x-roasos-launch-readiness": "ready",
        "x-roasos-exposure": "public"
      }
    },
    "/v1/research/jobs/{id}/status": {
      "get": {
        "operationId": "getResearchJobStatus",
        "summary": "Get Research job status",
        "tags": [
          "Research"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Safe Research lifecycle projection",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResearchJobStatusResponse"
                }
              }
            }
          },
          "404": {
            "description": "Job absent or outside the exact API-key workspace boundary",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Research authority or projection unavailable",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-roasos-capability-id": "research.facebook-company-ads@1",
        "x-roasos-runtime-status": "available",
        "x-roasos-launch-readiness": "ready",
        "x-roasos-exposure": "public"
      }
    },
    "/v1/research/jobs/{id}/result": {
      "get": {
        "operationId": "getResearchResult",
        "summary": "Get research results",
        "description": "Returns the finished, normalized ad records with their source and provenance. Raw provider data and billing details are never included.",
        "tags": [
          "Research"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Closed normalized Facebook ad result",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResearchResultResponse"
                }
              }
            }
          },
          "404": {
            "description": "Job absent or outside the exact API-key workspace boundary",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Job is not yet safely terminal",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Research authority or normalized projection unavailable",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-roasos-capability-id": "research.facebook-company-ads@1",
        "x-roasos-runtime-status": "available",
        "x-roasos-launch-readiness": "ready",
        "x-roasos-exposure": "public"
      }
    },
    "/v1/workflows/analyze": {
      "post": {
        "operationId": "runWorkflowAnalyze",
        "summary": "Analyze an ad",
        "description": "Break one ad down into its structure. A video returns numbered shots with timings, camera, action, per-shot dialogue, on-screen text and product moments, plus a transcript, a character sheet, the global style and the insights. A still returns the layout, the copy by role, the product placement, the person, the style and a recreate prompt with {PRODUCT} and {PERSON} placeholders.\n\nSend exactly one source: `video_url`, `image_url` or `discover_item_id`. Set `quote_only: true` to see the price for free, then send the same body with the returned `quote_id` to run it. A still costs 1 credit and a video costs 2. An analysis this workspace can already reuse is a cache hit and costs nothing.\n\nThe run is asynchronous: read it at `/v1/workflows/analyses/{id}`.",
        "tags": [
          "Workflows"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/idempotencyKey"
          },
          {
            "$ref": "#/components/parameters/usageProject"
          },
          {
            "$ref": "#/components/parameters/usageCostCenter"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WorkflowAnalyzeRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "An immutable quote, or a free cache hit that is already finished",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WorkflowAnalysisResponse"
                }
              }
            }
          },
          "202": {
            "description": "Analysis queued. Poll /v1/workflows/analyses/{id}/status.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WorkflowAnalysisResponse"
                }
              }
            }
          },
          "400": {
            "description": "validation_error, a missing Idempotency-Key, or a source this workspace may not read",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "insufficient_credits",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "The API key spend policy denied the analysis",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "The idempotency key was reused with different request data",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "410": {
            "description": "quote_expired: the quote must be replaced under a new idempotency key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "rate_limit_exceeded, or a daily or monthly credit budget",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "The analysis could not be claimed safely",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-roasos-capability-id": "workflow.analyze@1",
        "x-roasos-runtime-status": "available",
        "x-roasos-launch-readiness": "ready",
        "x-roasos-exposure": "public"
      }
    },
    "/v1/workflows/analyses/{id}": {
      "get": {
        "operationId": "getWorkflowAnalysis",
        "summary": "Get an ad analysis",
        "description": "Read one analysis run and its credit state. The analysis document itself is at /result.",
        "tags": [
          "Workflows"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Analysis lifecycle projection",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WorkflowAnalysisResponse"
                }
              }
            }
          },
          "400": {
            "description": "The analysis ID is not a UUID",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Analysis not found in this workspace",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "The analysis projection is temporarily unavailable",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-roasos-capability-id": "workflow.analyze@1",
        "x-roasos-runtime-status": "available",
        "x-roasos-launch-readiness": "ready",
        "x-roasos-exposure": "public"
      }
    },
    "/v1/workflows/analyses/{id}/status": {
      "get": {
        "operationId": "getWorkflowAnalysisStatus",
        "summary": "Get ad analysis status",
        "description": "The light poll: the same envelope, read while the analysis runs.",
        "tags": [
          "Workflows"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Analysis lifecycle projection",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WorkflowAnalysisResponse"
                }
              }
            }
          },
          "400": {
            "description": "The analysis ID is not a UUID",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Analysis not found in this workspace",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "The analysis projection is temporarily unavailable",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-roasos-capability-id": "workflow.analyze@1",
        "x-roasos-runtime-status": "available",
        "x-roasos-launch-readiness": "ready",
        "x-roasos-exposure": "public"
      }
    },
    "/v1/workflows/analyses/{id}/result": {
      "get": {
        "operationId": "getWorkflowAnalysisResult",
        "summary": "Get the finished ad analysis",
        "description": "The analysis document. An analysis that is not finished answers 409 analysis_not_completed.",
        "tags": [
          "Workflows"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The finished analysis document",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WorkflowAnalysisResultResponse"
                }
              }
            }
          },
          "400": {
            "description": "The analysis ID is not a UUID",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Analysis not found in this workspace",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "analysis_not_completed: the analysis is not terminal yet",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "The analysis projection is temporarily unavailable",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-roasos-capability-id": "workflow.analyze@1",
        "x-roasos-runtime-status": "available",
        "x-roasos-launch-readiness": "ready",
        "x-roasos-exposure": "public"
      }
    },
    "/v1/workflows/recast": {
      "post": {
        "operationId": "runWorkflowRecast",
        "summary": "Recast a video",
        "description": "Recast one video with your own person and product. Send exactly one source (`source_video_url` or `source_generation_id`), a `prompt`, and at least one target: `avatar_id`, `product_id`, `references` (on the seedance-2.5-edit lane) or `elements` (Kling only). Without a target this is a plain video edit and the call is refused with `recast_target_required`.\n\nThe source must be workspace-owned media or a Discover creative (`discover/items/v2/...`): a Discover ad can be recast on purpose. Any other URL is refused with `reference_media_not_workspace_owned`.\n\nThe default model is seedance-2.5-edit (the preserve-video role). A body that sends `elements` and no `model` runs on kling-4, because only Kling takes elements. Other choices: kling-4, seedance-2.5-edit. Quoting, idempotency, the job envelope, webhooks and refunds are the same as the chosen model's own endpoint.",
        "tags": [
          "Workflows"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/idempotencyKey"
          },
          {
            "$ref": "#/components/parameters/usageProject"
          },
          {
            "$ref": "#/components/parameters/usageCostCenter"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WorkflowRecastRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "A quote (`quote_only: true`), or the terminal job when it finished inside `wait_timeout_seconds`. A quote spends nothing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModelQuoteResponse"
                }
              }
            }
          },
          "201": {
            "description": "Job created. Poll `links.status`, or pass a `webhook_url` to be told when it finishes.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobResponse"
                }
              }
            }
          },
          "202": {
            "description": "Job created and still running when `wait_timeout_seconds` elapsed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobResponse"
                }
              }
            }
          },
          "400": {
            "description": "invalid_request, recast_target_required, unsupported_parameter (elements on a lane that takes none), or reference_media_not_workspace_owned",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "insufficient_credits",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "The API key is not authorized for this credit ceiling",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "The avatar, product, or source generation was not found in this workspace",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "The idempotency key was reused with different request data",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "410": {
            "description": "quote_expired: the quote must be replaced under a new idempotency key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "rate_limit_exceeded, or a concurrency or budget ceiling",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "The paid request could not be claimed safely",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-roasos-capability-id": "workflow.recast@1",
        "x-roasos-runtime-status": "available",
        "x-roasos-launch-readiness": "ready",
        "x-roasos-exposure": "public"
      }
    },
    "/v1/workflows/static-to-video": {
      "post": {
        "operationId": "runWorkflowStaticToVideo",
        "summary": "Animate a still",
        "description": "Turn one still your workspace owns into one video. Send exactly one source (`image_url` or `upload_id`) and a `prompt`, or set `auto_prompt: true` to analyze the still first and derive the prompt from it — that analysis is billed on top of the video.\n\nThe default model is seedance-2.5 (the animate-still role); `kling-4` is the other choice. roasOS never switches the model for you.\n\nOne call makes one video. There is no fan-out.",
        "tags": [
          "Workflows"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/idempotencyKey"
          },
          {
            "$ref": "#/components/parameters/usageProject"
          },
          {
            "$ref": "#/components/parameters/usageCostCenter"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WorkflowStaticToVideoRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "A quote (`quote_only: true`), or the terminal job when it finished inside `wait_timeout_seconds`. A quote spends nothing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModelQuoteResponse"
                }
              }
            }
          },
          "201": {
            "description": "Job created. Poll `links.status`, or pass a `webhook_url` to be told when it finishes.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobResponse"
                }
              }
            }
          },
          "202": {
            "description": "Job created and still running when `wait_timeout_seconds` elapsed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobResponse"
                }
              }
            }
          },
          "400": {
            "description": "invalid_request, or reference_media_not_workspace_owned",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "insufficient_credits",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "The API key is not authorized for this model or credit ceiling",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "The upload or product was not found in this workspace",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "The idempotency key was reused with different request data, or the upload is not ready",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "410": {
            "description": "quote_expired: the quote must be replaced under a new idempotency key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "rate_limit_exceeded, or a concurrency or budget ceiling",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "The paid request could not be claimed safely",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-roasos-capability-id": "workflow.static-to-video@1",
        "x-roasos-runtime-status": "available",
        "x-roasos-launch-readiness": "ready",
        "x-roasos-exposure": "public"
      }
    },
    "/v1/workflows/extend": {
      "post": {
        "operationId": "runWorkflowExtend",
        "summary": "Extend a video",
        "description": "Continue one video from its last frame and get ONE longer clip: the source, then the new footage. Send exactly one source (`video_url` or `source_generation_id`), a `prompt` for what happens next, and `duration_seconds` for the added length (one of the model's own lengths).\n\nThe default model is seedance-2.5 (the animate-still role). Any image-to-video model is allowed: kling-4, seedance-2.5, gemini-omni-flash, wan-2.7, veo-3.1, seedance-2, seedance-2-pro, grok-imagine, h3-max, flux-3-max. The shape follows the source, so there is no `aspect_ratio`. When you send no `resolution`, the model resolution closest to the source is used.\n\nThe server makes two ordinary jobs: the continuation (this response) and, when the continuation completes, one merge that joins the source and the continuation. The quote is both: the continuation plus one merge credit, in `credits_breakdown`. The source plus the continuation must fit in 180 seconds. A `webhook_url` is delivered for the stitched clip.\n\nRead the run, and the stitched clip, at `/v1/workflows/extend/{id}` with the job id this call returns. If the merge cannot start, the continuation stays charged and usable, and the stage is `merge_failed`.",
        "tags": [
          "Workflows"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/idempotencyKey"
          },
          {
            "$ref": "#/components/parameters/usageProject"
          },
          {
            "$ref": "#/components/parameters/usageCostCenter"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WorkflowExtendRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "A quote (`quote_only: true`). A quote spends nothing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModelQuoteResponse"
                }
              }
            }
          },
          "201": {
            "description": "The continuation job was created. Read the run at `/v1/workflows/extend/{id}`.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobResponse"
                }
              }
            }
          },
          "202": {
            "description": "The continuation job was created and is still running when `wait_timeout_seconds` elapsed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobResponse"
                }
              }
            }
          },
          "400": {
            "description": "invalid_request, extend_duration_not_supported, extend_resolution_not_supported, extend_generate_audio_not_supported, extend_too_long, or reference_media_not_workspace_owned",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "insufficient_credits",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "The API key is not authorized for this model, for merge-videos, or for this credit ceiling",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "The source generation was not found in this workspace",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "The idempotency key was reused with different request data, or the source generation is not a finished video",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "410": {
            "description": "quote_expired: the quote must be replaced under a new idempotency key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "rate_limit_exceeded, or a concurrency or budget ceiling",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "The source could not be measured, the last frame could not be extracted, or the paid request could not be claimed safely",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-roasos-capability-id": "workflow.extend@1",
        "x-roasos-runtime-status": "available",
        "x-roasos-launch-readiness": "ready",
        "x-roasos-exposure": "public"
      }
    },
    "/v1/workflows/extend/{id}": {
      "get": {
        "operationId": "getWorkflowExtend",
        "summary": "Get a video extend",
        "description": "Read one extend run by the continuation job id. `merged` is the stitched clip (the deliverable); it is null until the continuation completes and the merge starts. Free.",
        "tags": [
          "Workflows"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The extend run",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WorkflowExtendResponse"
                }
              }
            }
          },
          "400": {
            "description": "The ID is not a UUID",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "No extend run with this continuation job id in this workspace",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "The run is temporarily unavailable",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-roasos-capability-id": "workflow.extend@1",
        "x-roasos-runtime-status": "available",
        "x-roasos-launch-readiness": "ready",
        "x-roasos-exposure": "public"
      }
    },
    "/v1/workflows/remix": {
      "post": {
        "operationId": "runWorkflowRemix",
        "summary": "Remix an ad",
        "description": "Analyze one ad, storyboard the same structure with your own product and person, and render it.\n\nSend exactly one source (`ad_url`, `discover_item_id` or `source_generation_id`) and the `product_id` the remix must sell. Add `avatar_id` to cast your own person, `variants` to render two takes instead of one, and `note` to steer it.\n\n`discover_item_id` is how a Discover creative enters a remix: it is the analysis source, and it is the only field that admits one. The same creative sent as `ad_url`, or reached through `source_generation_id`, is refused with `discover_source_not_allowed` — a competitor ad is something you read and re-create, never something you edit.\n\nThis is the typed door onto the `roasos:remix-ad` skill, so it is an agent run and not a job. `generation_spend_cap_credits` is what lets the run render without asking a person; it defaults to 0, so a remix you say nothing about quotes the board and waits. Send `quote_only: true` to see the ceiling for free, then send the same body with the returned `quote_id`.\n\nRead the run at `/v1/agent-runs/{id}`. Anything the run could not auto-approve waits in `pending_approvals`; release it at `/v1/agent-runs/{id}/gates/{gate_id}/approve`.",
        "tags": [
          "Workflows"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/idempotencyKey"
          },
          {
            "$ref": "#/components/parameters/usageProject"
          },
          {
            "$ref": "#/components/parameters/usageCostCenter"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WorkflowRemixRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "A ceiling quote. Nothing is reserved and nothing runs.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AgentRunResponse"
                }
              }
            }
          },
          "202": {
            "description": "Run accepted. Poll /v1/agent-runs/{id}/status.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AgentRunResponse"
                }
              }
            }
          },
          "400": {
            "description": "validation_error, quote_required, a missing Idempotency-Key, discover_source_not_allowed, or spend_cap_exceeds_policy",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "insufficient_credits, or approval_required when a cap exceeds this key's unattended limit",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "The API key is not authorized to start agent runs",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "The product, avatar, or source generation was not found in this workspace",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "The idempotency key was reused with different request data",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "410": {
            "description": "quote_expired: the quote must be replaced under a new idempotency key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "rate_limit_exceeded, or a daily or monthly credit budget",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "The run could not be recorded or started safely",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-roasos-capability-id": "workflow.remix@1",
        "x-roasos-runtime-status": "available",
        "x-roasos-launch-readiness": "ready",
        "x-roasos-exposure": "public"
      }
    },
    "/v1/workflows/statics": {
      "post": {
        "operationId": "runWorkflowStatics",
        "summary": "Make statics",
        "description": "Turn one product into a set of static ads.\n\nSend the `product_id` the ads must sell. Add `brief` to steer the angle, `variants` to render more than three takes, `aspect_ratio` to pick the frame, `lane` to choose how the image is built, and `avatar_id` to put your own person in the picture.\n\nThe two lanes differ in how the product reaches the canvas. `scene` renders the whole static in one call. `product` places your product kit's verified cutout into the scene, which holds the product's shape and label exactly.\n\nThe headline, the sub-head and the call to action are rendered **by the image model** from exact strings, with your logo passed as a reference and your brand colours passed as hex values. Read that limit before you build on it: the model cannot guarantee your exact typeface, and a wrong glyph is a regenerate, not a refund.\n\nThis is the typed door onto the `roasos:statics-factory` skill, so it is an agent run and not a job. `generation_spend_cap_credits` is what lets the run render without asking a person; it defaults to 0, so a statics call you say nothing about quotes the work and waits. `variants` stops at 8, because that is how many quotes one approval card can carry. Send `quote_only: true` to see the ceiling for free, then send the same body with the returned `quote_id`.\n\nRead the run at `/v1/agent-runs/{id}`. Anything the run could not auto-approve waits in `pending_approvals`; release it at `/v1/agent-runs/{id}/gates/{gate_id}/approve`.",
        "tags": [
          "Workflows"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/idempotencyKey"
          },
          {
            "$ref": "#/components/parameters/usageProject"
          },
          {
            "$ref": "#/components/parameters/usageCostCenter"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WorkflowStaticsRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "A ceiling quote. Nothing is reserved and nothing runs.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AgentRunResponse"
                }
              }
            }
          },
          "202": {
            "description": "Run accepted. Poll /v1/agent-runs/{id}/status.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AgentRunResponse"
                }
              }
            }
          },
          "400": {
            "description": "validation_error, quote_required, a missing Idempotency-Key, more than 8 variants, or spend_cap_exceeds_policy",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "insufficient_credits, or approval_required when a cap exceeds this key's unattended limit",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "The API key is not authorized to start agent runs",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "The product or avatar was not found in this workspace",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "The idempotency key was reused with different request data",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "410": {
            "description": "quote_expired: the quote must be replaced under a new idempotency key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "rate_limit_exceeded, or a daily or monthly credit budget",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "501": {
            "description": "not_implemented: the statics factory is contracted and not live yet",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "The run could not be claimed safely",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-roasos-capability-id": "workflow.statics@1",
        "x-roasos-runtime-status": "available",
        "x-roasos-launch-readiness": "ready",
        "x-roasos-exposure": "public"
      }
    },
    "/v1/workflows/extract-brand": {
      "post": {
        "operationId": "runWorkflowExtractBrand",
        "summary": "Extract a brand",
        "description": "Read one brand from its own website and keep what you find.\n\nroasOS renders the homepage, discovers the rest of the site through its sitemap and its own links, reads up to twelve pages, and returns one structured profile: the products, the offer, the promise, the proof, the customers it talks to and the way it talks. Every field carries a confidence label — `stated` when the site says it, `inferred` when the model concluded it, and `verified` only when a reviews page backs it up.\n\nSend the site as `website_url`. Every crawl bound is ours: twelve pages, eight seconds a page, one minute for the whole crawl, and `robots.txt` is honoured. A site that says stay out is not read.\n\nIt costs 2 credits. Set `quote_only: true` to see the price for free, then send the same body with the returned `quote_id` to run it. An extraction this workspace already ran in the last seven days is a cache hit and costs nothing.\n\nThe run is asynchronous and is read where every analysis is read: `/v1/workflows/analyses/{id}`.",
        "tags": [
          "Workflows"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/idempotencyKey"
          },
          {
            "$ref": "#/components/parameters/usageProject"
          },
          {
            "$ref": "#/components/parameters/usageCostCenter"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WorkflowExtractBrandRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "An immutable quote, or a free cache hit that is already finished",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WorkflowAnalysisResponse"
                }
              }
            }
          },
          "202": {
            "description": "Extraction queued. Poll /v1/workflows/analyses/{id}/status.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WorkflowAnalysisResponse"
                }
              }
            }
          },
          "400": {
            "description": "validation_error, a missing Idempotency-Key, or a website URL that is not a public https address",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "insufficient_credits",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "The API key spend policy denied the extraction",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "The idempotency key was reused with different request data",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "410": {
            "description": "quote_expired: the quote must be replaced under a new idempotency key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "rate_limit_exceeded, a daily or monthly credit budget, or included_ancillary_ai_window_exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "501": {
            "description": "not_implemented: the extraction is contracted and not live yet",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "The extraction could not be claimed safely",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-roasos-capability-id": "workflow.extract-brand@1",
        "x-roasos-runtime-status": "available",
        "x-roasos-launch-readiness": "ready",
        "x-roasos-exposure": "public"
      }
    },
    "/v1/brand-kit": {
      "get": {
        "operationId": "getBrandKit",
        "summary": "Get the brand kit",
        "description": "Read this workspace's brand kit: the logo, the five colour roles, the two font names and the call to action.\n\nFree, and there is no quote: this is a metadata read.",
        "tags": [
          "Brand kit"
        ],
        "responses": {
          "200": {
            "description": "The brand kit",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BrandKitResponse"
                }
              }
            }
          },
          "404": {
            "description": "This workspace has no brand kit yet",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "501": {
            "description": "not_implemented: the brand kit is contracted and not live yet",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "The brand kit store is temporarily unavailable",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-roasos-capability-id": "brand-kit.get@1",
        "x-roasos-runtime-status": "available",
        "x-roasos-launch-readiness": "ready",
        "x-roasos-exposure": "public"
      },
      "put": {
        "operationId": "updateBrandKit",
        "summary": "Replace the brand kit",
        "description": "Replace the whole brand kit. There is no PATCH: an omitted field clears that part of the kit.\n\nThe logo must be media this workspace owns, named by its immutable `cdn.roasos.com` URL — upload it at `POST /v1/uploads` first. A URL from another workspace is refused with `reference_media_not_workspace_owned`, and a Discover creative is refused by name with `discover_source_not_allowed`.\n\nColours are lower-case six-digit hex, one per role. Fonts are NAMES, not files: roasOS hosts no font and embeds none, so a later render maps the name onto a bundled fallback. That is a real limit, not a placeholder.\n\nFree, and there is no quote: proving your logo does not buy it.",
        "tags": [
          "Brand kit"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BrandKitUpdateRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The replaced brand kit",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BrandKitResponse"
                }
              }
            }
          },
          "400": {
            "description": "validation_error, reference_media_not_workspace_owned, or discover_source_not_allowed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "501": {
            "description": "not_implemented: the brand kit is contracted and not live yet",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "The brand kit could not be written",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-roasos-capability-id": "brand-kit.update@1",
        "x-roasos-runtime-status": "available",
        "x-roasos-launch-readiness": "ready",
        "x-roasos-exposure": "public"
      }
    },
    "/v1/memory/pins": {
      "get": {
        "operationId": "listMemoryPins",
        "summary": "List pinned facts",
        "description": "Read the creative-direction facts this workspace has pinned: brand voice, audience, hooks, banned phrases, wins and notes. These are the same rows the agent reads in chat.\n\nFree, and there is no quote.",
        "tags": [
          "Memory"
        ],
        "parameters": [
          {
            "name": "category",
            "in": "query",
            "schema": {
              "type": "string",
              "enum": [
                "brand_voice",
                "audience",
                "hook",
                "banned",
                "win",
                "note"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/cursor"
          },
          {
            "$ref": "#/components/parameters/limit"
          }
        ],
        "responses": {
          "200": {
            "description": "One page of pinned facts",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MemoryPinListResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid cursor, limit or category",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "501": {
            "description": "not_implemented: the memory API is contracted and not live yet",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "The memory store is temporarily unavailable",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-roasos-capability-id": "memory.pins.list@1",
        "x-roasos-runtime-status": "available",
        "x-roasos-launch-readiness": "ready",
        "x-roasos-exposure": "public"
      },
      "post": {
        "operationId": "createMemoryPin",
        "summary": "Pin a fact",
        "description": "Teach the agent one confirmed fact about this brand.\n\nPin confirmed facts only, never speculation — the agent treats a pin as true. A category holds fifty pins; the oldest is dropped when the fifty-first arrives, and the marketing brief is never dropped that way.\n\nFree, and there is no quote.",
        "tags": [
          "Memory"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MemoryPinCreateRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "The pinned fact",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MemoryPinResponse"
                }
              }
            }
          },
          "400": {
            "description": "validation_error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "501": {
            "description": "not_implemented: the memory API is contracted and not live yet",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "The pin could not be written",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-roasos-capability-id": "memory.pins.create@1",
        "x-roasos-runtime-status": "available",
        "x-roasos-launch-readiness": "ready",
        "x-roasos-exposure": "public"
      }
    },
    "/v1/memory/pins/{id}": {
      "delete": {
        "operationId": "deleteMemoryPin",
        "summary": "Unpin a fact",
        "description": "Delete one pinned fact by id. A pin in another workspace is a 404, never a silent success.",
        "tags": [
          "Memory"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The pin is deleted",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeleteResponse"
                }
              }
            }
          },
          "400": {
            "description": "The pin ID is not a UUID",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Pin not found in this workspace",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "501": {
            "description": "not_implemented: the memory API is contracted and not live yet",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "The pin could not be deleted",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-roasos-capability-id": "memory.pins.delete@1",
        "x-roasos-runtime-status": "available",
        "x-roasos-launch-readiness": "ready",
        "x-roasos-exposure": "public"
      }
    },
    "/v1/memory/brief": {
      "get": {
        "operationId": "getMemoryBrief",
        "summary": "Get the marketing brief",
        "description": "Read the structured marketing brief: personas, the four JTBD forces, objections with their responses, the anti-persona, the words to use and avoid, proof points and voice notes.\n\nA workspace that has written no brief reads as an empty object, never as an error.\n\nFree, and there is no quote.",
        "tags": [
          "Memory"
        ],
        "responses": {
          "200": {
            "description": "The marketing brief",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MemoryBriefResponse"
                }
              }
            }
          },
          "501": {
            "description": "not_implemented: the memory API is contracted and not live yet",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "The memory store is temporarily unavailable",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-roasos-capability-id": "memory.brief.get@1",
        "x-roasos-runtime-status": "available",
        "x-roasos-launch-readiness": "ready",
        "x-roasos-exposure": "public"
      },
      "put": {
        "operationId": "updateMemoryBrief",
        "summary": "Replace the marketing brief",
        "description": "Replace the stored marketing brief.\n\nSend confirmed values only, in your customers' own words: the words-to-use and the proof points anchor every script the agent writes. This door REPLACES the brief, so send the whole thing; the in-app agent merge-patches instead, which is why the two behave differently.\n\nSend at least one field. Free, and there is no quote.",
        "tags": [
          "Memory"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MemoryBriefUpdateRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The stored marketing brief",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MemoryBriefResponse"
                }
              }
            }
          },
          "400": {
            "description": "validation_error, or no brief field was sent",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "501": {
            "description": "not_implemented: the memory API is contracted and not live yet",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "The brief could not be written",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-roasos-capability-id": "memory.brief.update@1",
        "x-roasos-runtime-status": "available",
        "x-roasos-launch-readiness": "ready",
        "x-roasos-exposure": "public"
      }
    },
    "/v1/intelligence/context": {
      "get": {
        "operationId": "getIntelligenceContext",
        "summary": "Get the intelligence context",
        "description": "Everything this workspace knows, compiled and bounded, in one read.\n\nIt returns every active document in a fixed order, capped at 18,000 characters each and 72,000 in total. A document cut to fit says so with `truncated`.\n\nFree, and there is no quote: the compiler runs no model.",
        "tags": [
          "Intelligence"
        ],
        "responses": {
          "200": {
            "description": "The bounded context",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/IntelligenceContextResponse"
                }
              }
            }
          },
          "501": {
            "description": "not_implemented: the intelligence API is contracted and not live yet",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "The intelligence store is temporarily unavailable",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-roasos-capability-id": "intelligence.context.get@1",
        "x-roasos-runtime-status": "available",
        "x-roasos-launch-readiness": "ready",
        "x-roasos-exposure": "public"
      }
    },
    "/v1/intelligence/documents": {
      "get": {
        "operationId": "listIntelligenceDocuments",
        "summary": "List intelligence documents",
        "description": "The compiled documents this workspace has: the slug, the title, the version, a one-line summary and when each was last compiled.\n\nA slug with no source data has no document at all. An absent document is the honest answer; roasOS does not return a stub that says \"learning\".\n\nFree, and there is no quote.",
        "tags": [
          "Intelligence"
        ],
        "responses": {
          "200": {
            "description": "The compiled documents",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/IntelligenceDocumentListResponse"
                }
              }
            }
          },
          "501": {
            "description": "not_implemented: the intelligence API is contracted and not live yet",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "The intelligence store is temporarily unavailable",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-roasos-capability-id": "intelligence.documents.list@1",
        "x-roasos-runtime-status": "available",
        "x-roasos-launch-readiness": "ready",
        "x-roasos-exposure": "public"
      }
    },
    "/v1/intelligence/documents/{slug}": {
      "get": {
        "operationId": "getIntelligenceDocument",
        "summary": "Get an intelligence document",
        "description": "Read one compiled document by slug, with its markdown body and the structured facts it was compiled from.\n\nFree, and there is no quote.",
        "tags": [
          "Intelligence"
        ],
        "parameters": [
          {
            "name": "slug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "brand-truth",
                "products",
                "customer-profiles",
                "voice-of-customer",
                "competitors",
                "creative-patterns"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "One compiled document",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/IntelligenceDocumentResponse"
                }
              }
            }
          },
          "400": {
            "description": "Unknown intelligence document slug",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "This workspace has not compiled that document",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "501": {
            "description": "not_implemented: the intelligence API is contracted and not live yet",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "The intelligence store is temporarily unavailable",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-roasos-capability-id": "intelligence.documents.get@1",
        "x-roasos-runtime-status": "available",
        "x-roasos-launch-readiness": "ready",
        "x-roasos-exposure": "public"
      }
    },
    "/v1/intelligence/refresh": {
      "post": {
        "operationId": "refreshIntelligence",
        "summary": "Refresh the intelligence documents",
        "description": "Recompile every document now from what this workspace already stores.\n\nThe compiler runs no model, so a refresh is free, deterministic and repeatable: identical inputs write no new version, and `changed` says which documents actually moved.\n\nFree, and there is no quote. There is no schedule in this version — you refresh when you want it refreshed.",
        "tags": [
          "Intelligence"
        ],
        "responses": {
          "200": {
            "description": "What the recompile wrote",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/IntelligenceRefreshResponse"
                }
              }
            }
          },
          "501": {
            "description": "not_implemented: the intelligence API is contracted and not live yet",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "The documents could not be recompiled",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-roasos-capability-id": "intelligence.refresh@1",
        "x-roasos-runtime-status": "available",
        "x-roasos-launch-readiness": "ready",
        "x-roasos-exposure": "public"
      }
    },
    "/v1/agent/completions": {
      "post": {
        "operationId": "createAgentCompletion",
        "summary": "Ask the agent",
        "description": "Start one agent run without a browser. The agent plans, calls tools, and can start paid generations on its own up to the cap you set.\n\nTwo caps govern the run and neither replaces the other. `max_credits` bounds what the run's own thinking may cost. `generation_spend_cap_credits` bounds what the run may spend on renders, voices and other paid work without asking a person — it defaults to 0, so a run you say nothing about can never charge you for a render. Both caps are bounded again by this API key's own spend policy, and the policy always wins.\n\nSend `quote_only: true` to see the ceiling for free; the ceiling is `max_credits + generation_spend_cap_credits`. Send the same body with the returned `quote_id` to run it. Confirming reserves the ceiling, and the unused part is refunded when the run ends, so you are never charged more than the number you saw.\n\nThe run is asynchronous: read it at `/v1/agent-runs/{id}`. Anything the run could not auto-approve waits as a card in `pending_approvals`; approve it in roasOS, or decline it here.",
        "tags": [
          "Agent"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/idempotencyKey"
          },
          {
            "$ref": "#/components/parameters/usageProject"
          },
          {
            "$ref": "#/components/parameters/usageCostCenter"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AgentCompletionRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "A ceiling quote. Nothing is reserved and nothing runs.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AgentRunResponse"
                }
              }
            }
          },
          "202": {
            "description": "Run accepted. Poll /v1/agent-runs/{id}/status.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AgentRunResponse"
                }
              }
            }
          },
          "400": {
            "description": "validation_error, quote_required, a missing Idempotency-Key, or spend_cap_exceeds_policy",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "insufficient_credits, or approval_required when a cap exceeds this key's unattended limit",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "The API key is not authorized to start agent runs",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "The idempotency key was reused with different request data",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "410": {
            "description": "quote_expired: the quote must be replaced under a new idempotency key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "rate_limit_exceeded, or a daily or monthly credit budget",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "The run could not be recorded or started safely",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-roasos-capability-id": "agent.completion.create@1",
        "x-roasos-runtime-status": "available",
        "x-roasos-launch-readiness": "ready",
        "x-roasos-exposure": "public"
      }
    },
    "/v1/agent-runs/{id}": {
      "get": {
        "operationId": "getAgentRun",
        "summary": "Get an agent run",
        "description": "Read one run: what started it, its caps, the approvals it is waiting on, and — once it is terminal — what it cost. Every brain run is read here: an ask, a skill run, a routine run.",
        "tags": [
          "Agent"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Agent run projection",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AgentRunResponse"
                }
              }
            }
          },
          "400": {
            "description": "The run ID is not a UUID",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Run not found in this workspace",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "The run projection is temporarily unavailable",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-roasos-capability-id": "agent.run.get@1",
        "x-roasos-runtime-status": "available",
        "x-roasos-launch-readiness": "ready",
        "x-roasos-exposure": "public"
      }
    },
    "/v1/agent-runs/{id}/status": {
      "get": {
        "operationId": "getAgentRunStatus",
        "summary": "Get agent run status",
        "description": "The light poll: the run id, its status, and when it last changed.",
        "tags": [
          "Agent"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Agent run status",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AgentRunStatusResponse"
                }
              }
            }
          },
          "400": {
            "description": "The run ID is not a UUID",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Run not found in this workspace",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "The run projection is temporarily unavailable",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-roasos-capability-id": "agent.run.status@1",
        "x-roasos-runtime-status": "available",
        "x-roasos-launch-readiness": "ready",
        "x-roasos-exposure": "public"
      }
    },
    "/v1/agent-runs/{id}/result": {
      "get": {
        "operationId": "getAgentRunResult",
        "summary": "Get an agent run result",
        "description": "What the agent answered, the thread it wrote it in, and what the run cost. A run that is not terminal answers 409 run_not_completed.",
        "tags": [
          "Agent"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The finished run",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AgentRunResultResponse"
                }
              }
            }
          },
          "400": {
            "description": "The run ID is not a UUID",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Run not found in this workspace",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "run_not_completed: the run is not terminal yet",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "The run projection is temporarily unavailable",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-roasos-capability-id": "agent.run.result@1",
        "x-roasos-runtime-status": "available",
        "x-roasos-launch-readiness": "ready",
        "x-roasos-exposure": "public"
      }
    },
    "/v1/agent-runs/{id}/events": {
      "get": {
        "operationId": "getAgentRunEvents",
        "summary": "Get agent run events",
        "description": "The ordered lifecycle of one run: accepted, started, tool_called, gate_opened, gate_auto_approved, generation_started, settled, failed, cancelled. A run older than the timeline falls back to the steps its own timestamps can prove.",
        "tags": [
          "Agent"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Ordered run events",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AgentRunEventsResponse"
                }
              }
            }
          },
          "400": {
            "description": "The run ID is not a UUID",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Run not found in this workspace",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "The run projection is temporarily unavailable",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-roasos-capability-id": "agent.run.events@1",
        "x-roasos-runtime-status": "available",
        "x-roasos-launch-readiness": "ready",
        "x-roasos-exposure": "public"
      }
    },
    "/v1/agent-runs/{id}/cancel": {
      "post": {
        "operationId": "cancelAgentRun",
        "summary": "Cancel an agent run",
        "description": "Ask a run that has not finished to stop. The unused reservation is refunded. A generation the run already started keeps its own lifecycle — cancel that at POST /v1/jobs/{id}/cancel. A run that already finished answers 409 run_not_cancelable.",
        "tags": [
          "Agent"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Cancellation recorded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AgentRunResponse"
                }
              }
            }
          },
          "400": {
            "description": "The run ID is not a UUID",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Run not found in this workspace",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "run_not_cancelable: the run has already finished",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "The cancellation could not be recorded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-roasos-capability-id": "agent.run.cancel@1",
        "x-roasos-runtime-status": "available",
        "x-roasos-launch-readiness": "ready",
        "x-roasos-exposure": "public"
      }
    },
    "/v1/agent-runs/{id}/gates/{gate_id}/decline": {
      "post": {
        "operationId": "declineAgentRunGate",
        "summary": "Decline an approval",
        "description": "Refuse one approval card the run opened, so the work behind it never starts and nothing is charged for it.\n\nApproving is a separate operation at `/approve`. It is deliberately absent from the MCP tool list: a connected model may refuse spend, and must never approve its own.",
        "tags": [
          "Agent"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "gate_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AgentGateDeclineRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The approval is declined, or was already decided",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AgentGateDecisionResponse"
                }
              }
            }
          },
          "400": {
            "description": "The run ID or gate ID is not a UUID",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Run or approval not found in this workspace",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "The decision could not be recorded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-roasos-capability-id": "agent.run.gate.decline@1",
        "x-roasos-runtime-status": "available",
        "x-roasos-launch-readiness": "ready",
        "x-roasos-exposure": "public"
      }
    },
    "/v1/agent-runs/{id}/gates/{gate_id}/approve": {
      "post": {
        "operationId": "approveAgentRunGate",
        "summary": "Approve an approval",
        "description": "Approve one approval card the run opened, and start the follow-up run that renders it.\n\nA run started from a skill or a workflow writes no thread, so there is no card in roasOS for you to press. This is the door that releases that work.\n\nIt spends on this API key: an `Idempotency-Key` is required, the amount is bounded by the key's per-request ceiling and by its daily and monthly budgets, and `max_credits` / `generation_spend_cap_credits` bound the follow-up run the same way they bound the first one.\n\nThe follow-up run's text is composed by roasOS from the approved card, never by the caller, and the run id comes back as `follow_up_run_id`.\n\nOn a batch card, send `drop` with the `index` of each item in `pending_approvals[].items` that must not run. The dropped items do not run and cost nothing, and the per-request ceiling is checked against the kept items only. The list must leave at least one item; to refuse the whole card, decline it.\n\nThis operation is deliberately absent from the MCP tool list. A connected model may decline; it must never approve its own spend.",
        "tags": [
          "Agent"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "gate_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "$ref": "#/components/parameters/idempotencyKey"
          },
          {
            "$ref": "#/components/parameters/usageProject"
          },
          {
            "$ref": "#/components/parameters/usageCostCenter"
          }
        ],
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AgentGateApproveRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The approval is recorded, or was already decided",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AgentGateApprovalResponse"
                }
              }
            }
          },
          "400": {
            "description": "The run ID or gate ID is not a UUID, a missing Idempotency-Key, spend_cap_exceeds_policy, or gate_drop_invalid: `drop` names an item the card does not carry, or all of them",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "insufficient_credits",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "request_credit_limit_exceeded: the approved amount is above this key's per-request ceiling",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "agent_run_not_found or agent_gate_not_found: the run or the approval card is not in this workspace",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "The idempotency key was reused with different request data, or agent_gate_not_approvable: the card is a question, not a render",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "rate_limit_exceeded, or a daily or monthly credit budget",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "The decision could not be recorded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-roasos-capability-id": "agent.run.gate.approve@1",
        "x-roasos-runtime-status": "available",
        "x-roasos-launch-readiness": "ready",
        "x-roasos-exposure": "public"
      }
    },
    "/v1/skills": {
      "get": {
        "operationId": "listSkills",
        "summary": "List skills",
        "description": "Every saved skill this workspace owns: a named, reusable ask the agent runs as written.",
        "tags": [
          "Skills"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/cursor"
          },
          {
            "$ref": "#/components/parameters/limit"
          }
        ],
        "responses": {
          "200": {
            "description": "One page of saved skills",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SkillListResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid cursor or limit",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "The skill store is temporarily unavailable",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-roasos-capability-id": "skill.list@1",
        "x-roasos-runtime-status": "available",
        "x-roasos-launch-readiness": "ready",
        "x-roasos-exposure": "public"
      }
    },
    "/v1/skills/{id}": {
      "get": {
        "operationId": "getSkill",
        "summary": "Get a skill",
        "description": "Read one saved skill, including the prompt it runs.",
        "tags": [
          "Skills"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "One saved skill",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SkillDetailResponse"
                }
              }
            }
          },
          "400": {
            "description": "The skill ID is not a UUID",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Skill not found in this workspace",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "The skill store is temporarily unavailable",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-roasos-capability-id": "skill.get@1",
        "x-roasos-runtime-status": "available",
        "x-roasos-launch-readiness": "ready",
        "x-roasos-exposure": "public"
      }
    },
    "/v1/skills/{id}/runs": {
      "post": {
        "operationId": "runSkill",
        "summary": "Run a skill",
        "description": "Run one saved skill. It starts the same agent run POST /v1/agent/completions starts, over the skill's own prompt, under the same two caps, and it is read at /v1/agent-runs/{id}.\n\nSend `quote_only: true` first to see the ceiling for free.",
        "tags": [
          "Skills"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "$ref": "#/components/parameters/idempotencyKey"
          },
          {
            "$ref": "#/components/parameters/usageProject"
          },
          {
            "$ref": "#/components/parameters/usageCostCenter"
          }
        ],
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SkillRunRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "A ceiling quote. Nothing is reserved and nothing runs.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AgentRunResponse"
                }
              }
            }
          },
          "202": {
            "description": "Run accepted. Poll /v1/agent-runs/{id}/status.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AgentRunResponse"
                }
              }
            }
          },
          "400": {
            "description": "validation_error, quote_required, a missing Idempotency-Key, or spend_cap_exceeds_policy",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "insufficient_credits, or approval_required when a cap exceeds this key's unattended limit",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Skill not found in this workspace",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "The idempotency key was reused with different request data",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "410": {
            "description": "quote_expired: the quote must be replaced under a new idempotency key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "rate_limit_exceeded, or a daily or monthly credit budget",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "The run could not be recorded or started safely",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-roasos-capability-id": "skill.run@1",
        "x-roasos-runtime-status": "available",
        "x-roasos-launch-readiness": "ready",
        "x-roasos-exposure": "public"
      }
    },
    "/v1/generation-batches/quotes": {
      "post": {
        "operationId": "quoteGenerationBatch",
        "summary": "Quote a batch",
        "description": "Price a whole batch of generations at once. No credits are charged and nothing runs yet. Sending the same batch again returns the same quote; changing or reordering items creates a new one.",
        "tags": [
          "Generations"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/idempotencyKey"
          },
          {
            "$ref": "#/components/parameters/usageProject"
          },
          {
            "$ref": "#/components/parameters/usageCostCenter"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/GenerationBatchQuoteRequest"
              },
              "example": {
                "items": [
                  {
                    "item_id": "hero-image",
                    "request": {
                      "type": "image",
                      "prompt": "Studio product photograph of a cobalt hydration bottle",
                      "model": "nano-banana-pro",
                      "options": {
                        "aspect_ratio": "1:1",
                        "resolution": "1K",
                        "num_outputs": 1
                      }
                    }
                  },
                  {
                    "item_id": "hero-video",
                    "request": {
                      "type": "video",
                      "prompt": "Slow push-in on a skincare bottle in soft morning light",
                      "model": "kling-4",
                      "options": {
                        "aspect_ratio": "9:16",
                        "resolution": "720p",
                        "duration": 5
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Side-effect-free all-items-valid batch quote",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenerationBatchQuoteResponse"
                }
              }
            }
          },
          "400": {
            "description": "The batch or one indexed item is invalid; no quote is issued",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "The API key is not authorized for one or more requested models",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "The parent idempotency key was reused for a different ordered batch",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Write rate limit exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Generation preparation, media evidence, pricing, or quote authority is unavailable",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-roasos-capability-id": "generation.batch@1",
        "x-roasos-runtime-status": "available",
        "x-roasos-launch-readiness": "ready",
        "x-roasos-exposure": "public"
      }
    },
    "/v1/generation-batches": {
      "post": {
        "operationId": "createGenerationBatch",
        "summary": "Run a batch",
        "description": "Confirm a batch quote to run it. Reserves the batch credits and starts every generation together. Retrying with the same idempotency key returns the same result.",
        "tags": [
          "Generations"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/idempotencyKey"
          },
          {
            "$ref": "#/components/parameters/usageProject"
          },
          {
            "$ref": "#/components/parameters/usageCostCenter"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/GenerationBatchCreateRequest"
              },
              "example": {
                "batch_quote_id": "99999999-9999-4999-8999-999999999999"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Atomically admitted generation batch",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenerationBatchCreateResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid confirmation request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "Insufficient credits",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Quote approval or API key spend policy denied the batch",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Batch quote not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Quote, idempotency, materialization, or dispatch authority conflict",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Write rate or active-generation quota exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Billing, database authority, or recovery outcome is temporarily unavailable",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-roasos-capability-id": "generation.batch@1",
        "x-roasos-runtime-status": "available",
        "x-roasos-launch-readiness": "ready",
        "x-roasos-exposure": "public"
      }
    },
    "/v1/generations": {
      "get": {
        "operationId": "listGenerations",
        "summary": "List generations",
        "tags": [
          "Generations"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/cursor"
          },
          {
            "$ref": "#/components/parameters/limit"
          },
          {
            "name": "type",
            "in": "query",
            "schema": {
              "type": "string",
              "enum": [
                "image",
                "video",
                "audio",
                "lipsync",
                "avatar",
                "scene"
              ]
            },
            "description": "Filter by generation type. Avatars and scenes (created via /v1/avatars and /v1/scenes) are stored in the same table and are returned here too, so they can be filtered as `avatar` / `scene`."
          },
          {
            "name": "status",
            "in": "query",
            "schema": {
              "type": "string",
              "enum": [
                "pending",
                "processing",
                "completed",
                "failed"
              ]
            },
            "description": "Filter by status"
          }
        ],
        "responses": {
          "200": {
            "description": "List of generations with pagination",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenerationListResponse"
                }
              }
            }
          },
          "401": {
            "description": "Invalid or missing API key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-roasos-capability-id": "generation.list@1",
        "x-roasos-runtime-status": "available",
        "x-roasos-launch-readiness": "ready",
        "x-roasos-exposure": "public"
      },
      "post": {
        "operationId": "createGeneration",
        "summary": "Create a generation",
        "description": "Start an async generation job. Generate one Idempotency-Key for the request and reuse it only when retrying the exact same payload. Poll `GET /v1/generations/{id}` for status, or provide a `webhook_url` to be notified on completion.",
        "tags": [
          "Generations"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/idempotencyKey"
          },
          {
            "$ref": "#/components/parameters/usageProject"
          },
          {
            "$ref": "#/components/parameters/usageCostCenter"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/ImageGenerationCreateRequest"
                  },
                  {
                    "$ref": "#/components/schemas/VideoGenerationCreateRequest"
                  },
                  {
                    "$ref": "#/components/schemas/AudioGenerationCreateRequest"
                  },
                  {
                    "$ref": "#/components/schemas/LipsyncGenerationCreateRequest"
                  }
                ],
                "discriminator": {
                  "propertyName": "type"
                }
              },
              "examples": {
                "image": {
                  "summary": "Generate an image",
                  "value": {
                    "type": "image",
                    "prompt": "Studio product photograph of a cobalt hydration bottle",
                    "model": "nano-banana-pro",
                    "options": {
                      "aspect_ratio": "1:1",
                      "resolution": "1K",
                      "num_outputs": 1
                    }
                  }
                },
                "video": {
                  "summary": "Generate a video",
                  "value": {
                    "type": "video",
                    "prompt": "Slow push-in on a skincare bottle in soft morning light",
                    "model": "kling-4",
                    "options": {
                      "aspect_ratio": "9:16",
                      "resolution": "720p",
                      "duration": 5
                    }
                  }
                },
                "audio": {
                  "summary": "Generate narration",
                  "value": {
                    "type": "audio",
                    "prompt": "Meet the everyday bottle designed to keep up with you.",
                    "model": "elevenlabs-v3",
                    "options": {}
                  }
                },
                "lipsync": {
                  "summary": "Generate lipsync video",
                  "value": {
                    "type": "lipsync",
                    "prompt": "Natural presenter delivery",
                    "model": "ltx-lipsync",
                    "options": {
                      "image": "https://cdn.roasos.com/examples/presenter.png",
                      "audio_url": "https://cdn.roasos.com/examples/presenter.wav"
                    }
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Side-effect-free generation quote. If authorization.status is approval_required, open authorize_url, approve as a workspace owner/admin, then resubmit quote_id with the same Idempotency-Key. No credits are reserved and no provider work starts.",
            "headers": {
              "X-RoasOS-Approval-Required": {
                "description": "True when owner/admin authorization is required before claim",
                "schema": {
                  "type": "boolean"
                }
              },
              "Deprecation": {
                "description": "Always `true` on this operation. It is replaced by the per-model endpoints under /v1/<family>/<model>.",
                "schema": {
                  "type": "string"
                }
              },
              "Sunset": {
                "description": "HTTP-date after which this operation can stop answering. Read it before you build on this path. The current value is `Mon, 30 Nov 2026 00:00:00 GMT` — one minor version out.",
                "schema": {
                  "type": "string"
                }
              },
              "Link": {
                "description": "Always `</v1/catalog>; rel=\"successor-version\"`. Read GET /v1/catalog to find the per-model endpoint that replaces this call.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenerationQuoteResponse"
                }
              }
            }
          },
          "201": {
            "description": "Generation created and processing",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobSubmissionResponse"
                }
              }
            },
            "headers": {
              "Deprecation": {
                "description": "Always `true` on this operation. It is replaced by the per-model endpoints under /v1/<family>/<model>.",
                "schema": {
                  "type": "string"
                }
              },
              "Sunset": {
                "description": "HTTP-date after which this operation can stop answering. Read it before you build on this path. The current value is `Mon, 30 Nov 2026 00:00:00 GMT` — one minor version out.",
                "schema": {
                  "type": "string"
                }
              },
              "Link": {
                "description": "Always `</v1/catalog>; rel=\"successor-version\"`. Read GET /v1/catalog to find the per-model endpoint that replaces this call.",
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "400": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "headers": {
              "Deprecation": {
                "description": "Always `true` on this operation. It is replaced by the per-model endpoints under /v1/<family>/<model>.",
                "schema": {
                  "type": "string"
                }
              },
              "Sunset": {
                "description": "HTTP-date after which this operation can stop answering. Read it before you build on this path. The current value is `Mon, 30 Nov 2026 00:00:00 GMT` — one minor version out.",
                "schema": {
                  "type": "string"
                }
              },
              "Link": {
                "description": "Always `</v1/catalog>; rel=\"successor-version\"`. Read GET /v1/catalog to find the per-model endpoint that replaces this call.",
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "402": {
            "description": "Insufficient credits",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "headers": {
              "Deprecation": {
                "description": "Always `true` on this operation. It is replaced by the per-model endpoints under /v1/<family>/<model>.",
                "schema": {
                  "type": "string"
                }
              },
              "Sunset": {
                "description": "HTTP-date after which this operation can stop answering. Read it before you build on this path. The current value is `Mon, 30 Nov 2026 00:00:00 GMT` — one minor version out.",
                "schema": {
                  "type": "string"
                }
              },
              "Link": {
                "description": "Always `</v1/catalog>; rel=\"successor-version\"`. Read GET /v1/catalog to find the per-model endpoint that replaces this call.",
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "403": {
            "description": "The API key is not authorized for this model or request credit ceiling",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "headers": {
              "Deprecation": {
                "description": "Always `true` on this operation. It is replaced by the per-model endpoints under /v1/<family>/<model>.",
                "schema": {
                  "type": "string"
                }
              },
              "Sunset": {
                "description": "HTTP-date after which this operation can stop answering. Read it before you build on this path. The current value is `Mon, 30 Nov 2026 00:00:00 GMT` — one minor version out.",
                "schema": {
                  "type": "string"
                }
              },
              "Link": {
                "description": "Always `</v1/catalog>; rel=\"successor-version\"`. Read GET /v1/catalog to find the per-model endpoint that replaces this call.",
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "409": {
            "description": "The idempotency key is already processing, has an unknown outcome, or was reused with different request data",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "headers": {
              "Deprecation": {
                "description": "Always `true` on this operation. It is replaced by the per-model endpoints under /v1/<family>/<model>.",
                "schema": {
                  "type": "string"
                }
              },
              "Sunset": {
                "description": "HTTP-date after which this operation can stop answering. Read it before you build on this path. The current value is `Mon, 30 Nov 2026 00:00:00 GMT` — one minor version out.",
                "schema": {
                  "type": "string"
                }
              },
              "Link": {
                "description": "Always `</v1/catalog>; rel=\"successor-version\"`. Read GET /v1/catalog to find the per-model endpoint that replaces this call.",
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "410": {
            "description": "The supplied authoritative quote expired and must be replaced using a new idempotency key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "headers": {
              "Deprecation": {
                "description": "Always `true` on this operation. It is replaced by the per-model endpoints under /v1/<family>/<model>.",
                "schema": {
                  "type": "string"
                }
              },
              "Sunset": {
                "description": "HTTP-date after which this operation can stop answering. Read it before you build on this path. The current value is `Mon, 30 Nov 2026 00:00:00 GMT` — one minor version out.",
                "schema": {
                  "type": "string"
                }
              },
              "Link": {
                "description": "Always `</v1/catalog>; rel=\"successor-version\"`. Read GET /v1/catalog to find the per-model endpoint that replaces this call.",
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "428": {
            "description": "The supplied quote requires owner/admin spend authorization",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "headers": {
              "Deprecation": {
                "description": "Always `true` on this operation. It is replaced by the per-model endpoints under /v1/<family>/<model>.",
                "schema": {
                  "type": "string"
                }
              },
              "Sunset": {
                "description": "HTTP-date after which this operation can stop answering. Read it before you build on this path. The current value is `Mon, 30 Nov 2026 00:00:00 GMT` — one minor version out.",
                "schema": {
                  "type": "string"
                }
              },
              "Link": {
                "description": "Always `</v1/catalog>; rel=\"successor-version\"`. Read GET /v1/catalog to find the per-model endpoint that replaces this call.",
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit, concurrency limit, or daily/monthly credit budget exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "headers": {
              "Deprecation": {
                "description": "Always `true` on this operation. It is replaced by the per-model endpoints under /v1/<family>/<model>.",
                "schema": {
                  "type": "string"
                }
              },
              "Sunset": {
                "description": "HTTP-date after which this operation can stop answering. Read it before you build on this path. The current value is `Mon, 30 Nov 2026 00:00:00 GMT` — one minor version out.",
                "schema": {
                  "type": "string"
                }
              },
              "Link": {
                "description": "Always `</v1/catalog>; rel=\"successor-version\"`. Read GET /v1/catalog to find the per-model endpoint that replaces this call.",
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "503": {
            "description": "The paid request could not be claimed safely or an external billing outcome is unknown",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "headers": {
              "Deprecation": {
                "description": "Always `true` on this operation. It is replaced by the per-model endpoints under /v1/<family>/<model>.",
                "schema": {
                  "type": "string"
                }
              },
              "Sunset": {
                "description": "HTTP-date after which this operation can stop answering. Read it before you build on this path. The current value is `Mon, 30 Nov 2026 00:00:00 GMT` — one minor version out.",
                "schema": {
                  "type": "string"
                }
              },
              "Link": {
                "description": "Always `</v1/catalog>; rel=\"successor-version\"`. Read GET /v1/catalog to find the per-model endpoint that replaces this call.",
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        },
        "deprecated": true,
        "x-roasos-deprecated": true,
        "x-roasos-replaced-by": [
          "/v1/image/nano-banana-pro",
          "/v1/image/nano-banana-2.1",
          "/v1/image/gpt-image-2.5",
          "/v1/image/gpt-image-2.5-sunburst",
          "/v1/image/flux-2-max",
          "/v1/image/grok-imagine-image",
          "/v1/image-edit/bria-bg-remove",
          "/v1/image-edit/bria-product-shot",
          "/v1/image-edit/topaz-image",
          "/v1/image-edit/gpt-image-2.5",
          "/v1/scene/nano-banana-pro",
          "/v1/avatar/nano-banana-pro",
          "/v1/video/kling-4",
          "/v1/video/seedance-2.5",
          "/v1/video/gemini-omni-flash",
          "/v1/video/wan-2.7",
          "/v1/video/veo-3.1",
          "/v1/video/seedance-2",
          "/v1/video/seedance-2-pro",
          "/v1/video/grok-imagine",
          "/v1/video/h3-max",
          "/v1/video/flux-3-max",
          "/v1/video/h3-max-extend",
          "/v1/video/gemini-omni-flash-extend",
          "/v1/video/h3-max-insert",
          "/v1/video/seedance-2.5-edit",
          "/v1/video/h3-max-style",
          "/v1/video-edit/kling-4",
          "/v1/video-edit/gemini-omni-flash",
          "/v1/video-edit/h3-max-recast",
          "/v1/video-edit/veed-fast",
          "/v1/video-edit/veed-standard",
          "/v1/video-edit/bria",
          "/v1/video-edit/topaz-video",
          "/v1/video/kling-3-motion",
          "/v1/ugc/kling-4",
          "/v1/ugc/seedance-2.5",
          "/v1/ugc/seedance-2",
          "/v1/ugc/seedance-2-pro",
          "/v1/ugc/gemini-omni-flash",
          "/v1/ugc/wan-2.7",
          "/v1/ugc/veo-3.1",
          "/v1/ugc/grok-imagine",
          "/v1/lipsync/ltx-lipsync",
          "/v1/lipsync/h3-max-lipsync",
          "/v1/lipsync/sync-lipsync-v3",
          "/v1/lipsync/veed-lipsync-v2",
          "/v1/lipsync/kling-avatar-v2-pro",
          "/v1/lipsync/heygen-avatar-4",
          "/v1/audio/elevenlabs-v3",
          "/v1/audio/gemini-3.1-flash-tts",
          "/v1/audio/maya-1",
          "/v1/audio/minimax-speech-hd",
          "/v1/audio/minimax-speech-turbo",
          "/v1/audio/qwen3-tts",
          "/v1/audio/seed-audio-1.0",
          "/v1/audio/elevenlabs-sfx-v2",
          "/v1/dub/elevenlabs-dubbing",
          "/v1/dub/heygen-speed",
          "/v1/dub/heygen-precision",
          "/v1/assembly/compose",
          "/v1/assembly/merge-videos",
          "/v1/assembly/merge-audio-video",
          "/v1/assembly/images-to-video",
          "/v1/assembly/extract-frame",
          "/v1/assembly/trim-video",
          "/v1/assembly/text-overlay",
          "/v1/assembly/music-bed",
          "/v1/assembly/loudnorm",
          "/v1/captions/veed-subtitles",
          "/v1/captions/auto-subtitle",
          "/v1/reframe/ltx-2.3",
          "/v1/reframe/ideogram-v3",
          "/v1/music/lyria3",
          "/v1/music/lyria-3.5",
          "/v1/music/minimax-music-3",
          "/v1/music/elevenlabs-music",
          "/v1/music/sonilo-v1.1"
        ],
        "x-roasos-capability-id": "generation.image.create@1",
        "x-roasos-runtime-status": "available",
        "x-roasos-launch-readiness": "ready",
        "x-roasos-exposure": "public"
      }
    },
    "/v1/generations/{id}": {
      "get": {
        "operationId": "getGeneration",
        "summary": "Get generation details",
        "description": "Poll this endpoint to check generation status. When `status` is `completed`, the `output` field contains the result URLs.",
        "tags": [
          "Generations"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Generation details with status and public artifact output",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenerationDetailResponse"
                }
              }
            }
          },
          "404": {
            "description": "Generation not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-roasos-capability-id": "generation.get@1",
        "x-roasos-runtime-status": "available",
        "x-roasos-launch-readiness": "ready",
        "x-roasos-exposure": "public"
      },
      "delete": {
        "operationId": "deleteGeneration",
        "summary": "Delete a generation",
        "tags": [
          "Generations"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Generation deleted",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeleteResponse"
                }
              }
            }
          }
        },
        "x-roasos-capability-id": "generation.delete@1",
        "x-roasos-runtime-status": "available",
        "x-roasos-launch-readiness": "ready",
        "x-roasos-exposure": "public"
      }
    },
    "/v1/avatars": {
      "get": {
        "operationId": "listAvatars",
        "summary": "List avatars",
        "tags": [
          "Avatars"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/cursor"
          },
          {
            "$ref": "#/components/parameters/limit"
          }
        ],
        "responses": {
          "200": {
            "description": "List of avatars",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AvatarListResponse"
                }
              }
            }
          }
        },
        "x-roasos-capability-id": "avatar.list@1",
        "x-roasos-runtime-status": "available",
        "x-roasos-launch-readiness": "ready",
        "x-roasos-exposure": "public"
      }
    },
    "/v1/avatars/{id}": {
      "get": {
        "operationId": "getAvatar",
        "summary": "Get avatar details",
        "tags": [
          "Avatars"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Avatar details",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AvatarDetailResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-roasos-capability-id": "avatar.get@1",
        "x-roasos-runtime-status": "available",
        "x-roasos-launch-readiness": "ready",
        "x-roasos-exposure": "public"
      },
      "delete": {
        "operationId": "deleteAvatar",
        "summary": "Delete an avatar",
        "tags": [
          "Avatars"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Avatar deleted",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeleteResponse"
                }
              }
            }
          }
        },
        "x-roasos-capability-id": "avatar.delete@1",
        "x-roasos-runtime-status": "available",
        "x-roasos-launch-readiness": "ready",
        "x-roasos-exposure": "public"
      }
    },
    "/v1/scenes": {
      "get": {
        "operationId": "listScenes",
        "summary": "List scenes",
        "tags": [
          "Scenes"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/cursor"
          },
          {
            "$ref": "#/components/parameters/limit"
          }
        ],
        "responses": {
          "200": {
            "description": "List of scenes",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SceneListResponse"
                }
              }
            }
          }
        },
        "x-roasos-capability-id": "scene.list@1",
        "x-roasos-runtime-status": "available",
        "x-roasos-launch-readiness": "ready",
        "x-roasos-exposure": "public"
      },
      "post": {
        "operationId": "createScene",
        "summary": "Create a scene",
        "tags": [
          "Scenes"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/idempotencyKey"
          },
          {
            "$ref": "#/components/parameters/usageProject"
          },
          {
            "$ref": "#/components/parameters/usageCostCenter"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SceneCreateRequest"
              },
              "example": {
                "name": "Morning vanity",
                "prompt": "Premium skincare bottle on a warm stone vanity",
                "model": "nano-banana-pro",
                "resolution": "1K",
                "options": {
                  "aspect_ratio": "9:16",
                  "mode": "product"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Side-effect-free scene quote. If authorization.status is approval_required, open authorize_url, approve as a workspace owner/admin, then resubmit quote_id with the same Idempotency-Key. No credits are reserved and no provider work starts.",
            "headers": {
              "X-RoasOS-Approval-Required": {
                "description": "True when owner/admin authorization is required before claim",
                "schema": {
                  "type": "boolean"
                }
              },
              "Deprecation": {
                "description": "Always `true` on this operation. It is replaced by the per-model endpoints under /v1/<family>/<model>.",
                "schema": {
                  "type": "string"
                }
              },
              "Sunset": {
                "description": "HTTP-date after which this operation can stop answering. Read it before you build on this path. The current value is `Mon, 30 Nov 2026 00:00:00 GMT` — one minor version out.",
                "schema": {
                  "type": "string"
                }
              },
              "Link": {
                "description": "Always `</v1/catalog>; rel=\"successor-version\"`. Read GET /v1/catalog to find the per-model endpoint that replaces this call.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenerationQuoteResponse"
                }
              }
            }
          },
          "201": {
            "description": "Scene creation started",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobSubmissionResponse"
                }
              }
            },
            "headers": {
              "Deprecation": {
                "description": "Always `true` on this operation. It is replaced by the per-model endpoints under /v1/<family>/<model>.",
                "schema": {
                  "type": "string"
                }
              },
              "Sunset": {
                "description": "HTTP-date after which this operation can stop answering. Read it before you build on this path. The current value is `Mon, 30 Nov 2026 00:00:00 GMT` — one minor version out.",
                "schema": {
                  "type": "string"
                }
              },
              "Link": {
                "description": "Always `</v1/catalog>; rel=\"successor-version\"`. Read GET /v1/catalog to find the per-model endpoint that replaces this call.",
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "402": {
            "description": "Insufficient credits",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "headers": {
              "Deprecation": {
                "description": "Always `true` on this operation. It is replaced by the per-model endpoints under /v1/<family>/<model>.",
                "schema": {
                  "type": "string"
                }
              },
              "Sunset": {
                "description": "HTTP-date after which this operation can stop answering. Read it before you build on this path. The current value is `Mon, 30 Nov 2026 00:00:00 GMT` — one minor version out.",
                "schema": {
                  "type": "string"
                }
              },
              "Link": {
                "description": "Always `</v1/catalog>; rel=\"successor-version\"`. Read GET /v1/catalog to find the per-model endpoint that replaces this call.",
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "403": {
            "description": "The API key is not authorized for this model or request credit ceiling",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "headers": {
              "Deprecation": {
                "description": "Always `true` on this operation. It is replaced by the per-model endpoints under /v1/<family>/<model>.",
                "schema": {
                  "type": "string"
                }
              },
              "Sunset": {
                "description": "HTTP-date after which this operation can stop answering. Read it before you build on this path. The current value is `Mon, 30 Nov 2026 00:00:00 GMT` — one minor version out.",
                "schema": {
                  "type": "string"
                }
              },
              "Link": {
                "description": "Always `</v1/catalog>; rel=\"successor-version\"`. Read GET /v1/catalog to find the per-model endpoint that replaces this call.",
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "409": {
            "description": "The idempotency key is already processing, has an unknown outcome, or was reused with different request data",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "headers": {
              "Deprecation": {
                "description": "Always `true` on this operation. It is replaced by the per-model endpoints under /v1/<family>/<model>.",
                "schema": {
                  "type": "string"
                }
              },
              "Sunset": {
                "description": "HTTP-date after which this operation can stop answering. Read it before you build on this path. The current value is `Mon, 30 Nov 2026 00:00:00 GMT` — one minor version out.",
                "schema": {
                  "type": "string"
                }
              },
              "Link": {
                "description": "Always `</v1/catalog>; rel=\"successor-version\"`. Read GET /v1/catalog to find the per-model endpoint that replaces this call.",
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "410": {
            "description": "The supplied authoritative quote expired and must be replaced using a new idempotency key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "headers": {
              "Deprecation": {
                "description": "Always `true` on this operation. It is replaced by the per-model endpoints under /v1/<family>/<model>.",
                "schema": {
                  "type": "string"
                }
              },
              "Sunset": {
                "description": "HTTP-date after which this operation can stop answering. Read it before you build on this path. The current value is `Mon, 30 Nov 2026 00:00:00 GMT` — one minor version out.",
                "schema": {
                  "type": "string"
                }
              },
              "Link": {
                "description": "Always `</v1/catalog>; rel=\"successor-version\"`. Read GET /v1/catalog to find the per-model endpoint that replaces this call.",
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "428": {
            "description": "The supplied quote requires owner/admin spend authorization",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "headers": {
              "Deprecation": {
                "description": "Always `true` on this operation. It is replaced by the per-model endpoints under /v1/<family>/<model>.",
                "schema": {
                  "type": "string"
                }
              },
              "Sunset": {
                "description": "HTTP-date after which this operation can stop answering. Read it before you build on this path. The current value is `Mon, 30 Nov 2026 00:00:00 GMT` — one minor version out.",
                "schema": {
                  "type": "string"
                }
              },
              "Link": {
                "description": "Always `</v1/catalog>; rel=\"successor-version\"`. Read GET /v1/catalog to find the per-model endpoint that replaces this call.",
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit, concurrency limit, or daily/monthly credit budget exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "headers": {
              "Deprecation": {
                "description": "Always `true` on this operation. It is replaced by the per-model endpoints under /v1/<family>/<model>.",
                "schema": {
                  "type": "string"
                }
              },
              "Sunset": {
                "description": "HTTP-date after which this operation can stop answering. Read it before you build on this path. The current value is `Mon, 30 Nov 2026 00:00:00 GMT` — one minor version out.",
                "schema": {
                  "type": "string"
                }
              },
              "Link": {
                "description": "Always `</v1/catalog>; rel=\"successor-version\"`. Read GET /v1/catalog to find the per-model endpoint that replaces this call.",
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "503": {
            "description": "The paid request could not be claimed safely or an external billing outcome is unknown",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "headers": {
              "Deprecation": {
                "description": "Always `true` on this operation. It is replaced by the per-model endpoints under /v1/<family>/<model>.",
                "schema": {
                  "type": "string"
                }
              },
              "Sunset": {
                "description": "HTTP-date after which this operation can stop answering. Read it before you build on this path. The current value is `Mon, 30 Nov 2026 00:00:00 GMT` — one minor version out.",
                "schema": {
                  "type": "string"
                }
              },
              "Link": {
                "description": "Always `</v1/catalog>; rel=\"successor-version\"`. Read GET /v1/catalog to find the per-model endpoint that replaces this call.",
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        },
        "deprecated": true,
        "x-roasos-deprecated": true,
        "x-roasos-replaced-by": [
          "/v1/scene/nano-banana-pro"
        ],
        "x-roasos-capability-id": "scene.create@1",
        "x-roasos-runtime-status": "available",
        "x-roasos-launch-readiness": "ready",
        "x-roasos-exposure": "public"
      }
    },
    "/v1/scenes/{id}": {
      "get": {
        "operationId": "getScene",
        "summary": "Get scene details",
        "tags": [
          "Scenes"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Scene details",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SceneDetailResponse"
                }
              }
            }
          }
        },
        "x-roasos-capability-id": "scene.get@1",
        "x-roasos-runtime-status": "available",
        "x-roasos-launch-readiness": "ready",
        "x-roasos-exposure": "public"
      },
      "delete": {
        "operationId": "deleteScene",
        "summary": "Delete a scene",
        "tags": [
          "Scenes"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Scene deleted",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeleteResponse"
                }
              }
            }
          }
        },
        "x-roasos-capability-id": "scene.delete@1",
        "x-roasos-runtime-status": "available",
        "x-roasos-launch-readiness": "ready",
        "x-roasos-exposure": "public"
      }
    },
    "/v1/edits": {
      "get": {
        "operationId": "listEdits",
        "summary": "List saved edits",
        "tags": [
          "Edits"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/cursor"
          },
          {
            "$ref": "#/components/parameters/limit"
          }
        ],
        "responses": {
          "200": {
            "description": "One page of saved edits",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EditListResponse"
                }
              }
            }
          }
        },
        "x-roasos-capability-id": "edit.list@1",
        "x-roasos-runtime-status": "available",
        "x-roasos-launch-readiness": "ready",
        "x-roasos-exposure": "public"
      },
      "post": {
        "operationId": "createEdit",
        "summary": "Create a saved edit",
        "description": "Creates a saved edit from finished generations or workspace files, in order. This is version 1. Free.",
        "tags": [
          "Edits"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EditCreateRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Edit created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EditDetailResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "A file is not in this workspace or cannot be used. The message says what to send.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Saved edits are temporarily unavailable",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-roasos-capability-id": "edit.create@1",
        "x-roasos-runtime-status": "available",
        "x-roasos-launch-readiness": "ready",
        "x-roasos-exposure": "public"
      }
    },
    "/v1/edits/{id}": {
      "get": {
        "operationId": "getEdit",
        "summary": "Inspect a saved edit",
        "description": "Returns every clip, audio item, caption and overlay with the number that commands use.",
        "tags": [
          "Edits"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "version",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The edit at this version",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EditDetailResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-roasos-capability-id": "edit.get@1",
        "x-roasos-runtime-status": "available",
        "x-roasos-launch-readiness": "ready",
        "x-roasos-exposure": "public"
      }
    },
    "/v1/edits/{id}/commands": {
      "post": {
        "operationId": "changeEdit",
        "summary": "Apply edit commands",
        "description": "Applies a batch of commands and saves a new version. The batch applies whole or not at all. A bad command changes nothing and answers 422 with what to send instead. Free.",
        "tags": [
          "Edits"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EditCommandsRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The new version",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EditDetailResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "The edit changed since expected_version. Nothing was changed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "A command is not valid. The message says what to send. Nothing was changed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-roasos-capability-id": "edit.change@1",
        "x-roasos-runtime-status": "available",
        "x-roasos-launch-readiness": "ready",
        "x-roasos-exposure": "public"
      }
    },
    "/v1/edits/{id}/render": {
      "post": {
        "operationId": "renderEdit",
        "summary": "Render a saved edit",
        "description": "Starts the one render job of this version, or returns it. Call it again to read the status. A finished job holds the video and one QA result. Free.",
        "tags": [
          "Edits"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EditRenderRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "A finished job",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EditRenderResponse"
                }
              }
            }
          },
          "202": {
            "description": "A job that is queued, running or failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EditRenderResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "This version cannot be rendered",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Too many new renders this hour",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Rendering is temporarily unavailable",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-roasos-capability-id": "edit.render@1",
        "x-roasos-runtime-status": "available",
        "x-roasos-launch-readiness": "ready",
        "x-roasos-exposure": "public"
      }
    },
    "/v1/products": {
      "get": {
        "operationId": "listProducts",
        "summary": "List products",
        "tags": [
          "Products"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/cursor"
          },
          {
            "$ref": "#/components/parameters/limit"
          }
        ],
        "responses": {
          "200": {
            "description": "One page of workspace products",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProductListResponse"
                }
              }
            }
          }
        },
        "x-roasos-capability-id": "product.list@1",
        "x-roasos-runtime-status": "available",
        "x-roasos-launch-readiness": "ready",
        "x-roasos-exposure": "public"
      },
      "post": {
        "operationId": "createProduct",
        "summary": "Create a product",
        "description": "Create a product from images your workspace already owns on cdn.roasos.com, or from public https URLs that are imported through /v1/uploads first. Products are workspace resources: every member of the workspace can read, update, and delete them.\n\n`kind` is `physical` (default) or `app`. An app product's images are REAL screenshots taken on the phone, up to 8; every render shows one of them on a phone exactly as given and never redraws the screen. An app never gets a kit. `app_store_url` (app kind only) is information: roasOS reads the public listing for the seller, category, price, rating, description and icon. It never takes screenshots from the listing, because listing images are marketing slides, not the real screen.",
        "tags": [
          "Products"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ProductCreateRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Product created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProductDetailResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request, or an image is not an immutable object this workspace owns",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Write rate limit exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Upload or storage authority is temporarily unavailable",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-roasos-capability-id": "product.create@1",
        "x-roasos-runtime-status": "available",
        "x-roasos-launch-readiness": "ready",
        "x-roasos-exposure": "public"
      }
    },
    "/v1/products/{id}": {
      "get": {
        "operationId": "getProduct",
        "summary": "Get product details",
        "tags": [
          "Products"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Product with its raw photos, facts, and product kit",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProductDetailResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-roasos-capability-id": "product.get@1",
        "x-roasos-runtime-status": "available",
        "x-roasos-launch-readiness": "ready",
        "x-roasos-exposure": "public"
      },
      "patch": {
        "operationId": "updateProduct",
        "summary": "Update a product",
        "tags": [
          "Products"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ProductUpdateRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Updated product",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProductDetailResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request, or an image is not an immutable object this workspace owns",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "The requested hero is neither a kit angle of this product nor one of its images",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-roasos-capability-id": "product.update@1",
        "x-roasos-runtime-status": "available",
        "x-roasos-launch-readiness": "ready",
        "x-roasos-exposure": "public"
      },
      "delete": {
        "operationId": "deleteProduct",
        "summary": "Delete a product",
        "tags": [
          "Products"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Product deleted",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeleteResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-roasos-capability-id": "product.delete@1",
        "x-roasos-runtime-status": "available",
        "x-roasos-launch-readiness": "ready",
        "x-roasos-exposure": "public"
      }
    },
    "/v1/products/{id}/kit": {
      "post": {
        "operationId": "buildProductKit",
        "summary": "Build or rebuild the product kit",
        "description": "Builds or rebuilds the product kit: cutouts from the raw photos, the generated angle set (`full: true` = 8, or an explicit `angles` list), the fidelity check and the structured facts. Asynchronous — returns a queued job whose result publishes onto the product. Requires an Idempotency-Key. The first 5 kits per workspace are included; the reservation is still made and refunded on settlement. An empty body asks for the free reference sheet and answers 202 `{ status: queued, kind: reference_sheet }`. Quote first: send `quote_only: true` to get a `quote_id` and the credits (200, no charge, valid for 10 minutes), then send the same body with that `quote_id` and the same Idempotency-Key. The confirm charges exactly the quoted credits. A confirm whose input, price or kit version differs from the quote is refused, and a retried confirm returns the first answer and is never charged twice. With `quote_only` or `quote_id` and neither `full` nor `angles`, the call builds the 4 core angles. A body with no quote field still builds in one step.",
        "tags": [
          "Products"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "$ref": "#/components/parameters/idempotencyKey"
          }
        ],
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ProductKitBuildRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "quote_only: the quote. Confirm it with quote_id.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProductKitBuildResponse"
                }
              }
            }
          },
          "202": {
            "description": "Kit job queued. Poll the product until its kit status is ready.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "additionalProperties": false,
                      "required": [
                        "id",
                        "kind",
                        "status",
                        "credits_reserved",
                        "included",
                        "kit_version"
                      ],
                      "properties": {
                        "id": {
                          "type": "string",
                          "format": "uuid",
                          "description": "The generation id of the kit job."
                        },
                        "kind": {
                          "type": "string",
                          "enum": [
                            "product_kit"
                          ]
                        },
                        "status": {
                          "type": "string",
                          "enum": [
                            "queued"
                          ]
                        },
                        "credits_reserved": {
                          "type": "integer",
                          "minimum": 0
                        },
                        "included": {
                          "type": "boolean",
                          "description": "True while the workspace is inside its 5 included kits."
                        },
                        "kit_version": {
                          "type": "integer",
                          "minimum": 0
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Invalid request body, unknown angle, quote_only together with quote_id, or a missing or malformed Idempotency-Key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "Insufficient credits",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "The API key request credit ceiling denied the kit job",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Product not found in this workspace",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "kit_job_running, the product has no photos to build from, a quote that was already confirmed, or the idempotency key was reused with different request data",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "410": {
            "description": "The quote expired. Quote again.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "The kit job could not be claimed safely",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-roasos-capability-id": "product.kit.build@1",
        "x-roasos-runtime-status": "available",
        "x-roasos-launch-readiness": "ready",
        "x-roasos-exposure": "public"
      }
    },
    "/v1/voices": {
      "get": {
        "operationId": "listVoices",
        "summary": "List voices",
        "description": "Every saved voice this workspace owns, newest first. A MiniMax voice carries the date the provider deletes it unless a MiniMax text-to-speech call uses it; a Qwen voice never expires.",
        "tags": [
          "Voices"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/cursor"
          },
          {
            "$ref": "#/components/parameters/limit"
          }
        ],
        "responses": {
          "200": {
            "description": "One page of saved voices",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VoiceListResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid cursor or limit",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-roasos-capability-id": "voice.list@1",
        "x-roasos-runtime-status": "available",
        "x-roasos-launch-readiness": "ready",
        "x-roasos-exposure": "public"
      },
      "post": {
        "operationId": "createVoice",
        "summary": "Create a voice clone",
        "description": "Clone a voice from a workspace-owned audio sample and save it. The result is a voice_id that POST /v1/audio/minimax-speech-hd, POST /v1/audio/minimax-speech-turbo, and POST /v1/audio/qwen3-tts accept. You must accept the current media-rights statement in the body: roasOS records that consent before it prices, reserves, or runs anything. Choose minimax-voice-clone for the widest language coverage; the provider holds the voice and deletes it after 7 days unless a MiniMax call uses it. Choose qwen3-voice-clone when you do not want a provider-held voice: roasOS stores the speaker embedding, and nothing expires.",
        "tags": [
          "Voices"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/idempotencyKey"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/VoiceCreateRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Quote for this clone (quote_only)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModelQuoteResponse"
                }
              }
            }
          },
          "201": {
            "description": "Clone started; poll the job for the saved voice",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request, stale or missing media-rights terms, or the sample is not an immutable object this workspace owns",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "Not enough credits",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "The sample could not be measured, or the consent store or provider contract is temporarily unavailable",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-roasos-capability-id": "voice.create@1",
        "x-roasos-runtime-status": "available",
        "x-roasos-launch-readiness": "ready",
        "x-roasos-exposure": "public"
      }
    },
    "/v1/voices/{id}": {
      "delete": {
        "operationId": "deleteVoice",
        "summary": "Delete a voice",
        "description": "Delete a saved MiniMax voice and its preview clip. A Qwen voice is removed together with its private speaker embedding by the engine deletion lifecycle, so this endpoint refuses it rather than delete the record and leave the embedding.",
        "tags": [
          "Voices"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Voice deleted",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeleteResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "This voice is removed by the engine deletion lifecycle",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-roasos-capability-id": "voice.delete@1",
        "x-roasos-runtime-status": "available",
        "x-roasos-launch-readiness": "ready",
        "x-roasos-exposure": "public"
      }
    },
    "/v1/uploads": {
      "post": {
        "operationId": "createUpload",
        "summary": "Create an upload",
        "description": "Direct mode returns a one-use write target: POST the exact bytes to put_url with put_headers, then poll GET /v1/uploads/{id} until status is ready. Import mode gives a public https source_url instead; the worker fetches, checks, and stores the object and returns it ready.",
        "tags": [
          "Uploads"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UploadCreateRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Upload authorized (direct) or stored (import)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UploadDetailResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request, unsupported content type, oversized object, or an unsafe source_url",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "The upload identity conflicts with an existing authorization, or the workspace is unavailable for uploads",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Write rate limit exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Upload authorization or storage is temporarily unavailable",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-roasos-capability-id": "upload.create@1",
        "x-roasos-runtime-status": "available",
        "x-roasos-launch-readiness": "ready",
        "x-roasos-exposure": "public"
      }
    },
    "/v1/uploads/{id}": {
      "get": {
        "operationId": "getUpload",
        "summary": "Get upload status",
        "tags": [
          "Uploads"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Authoritative upload state and CDN URL",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UploadDetailResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-roasos-capability-id": "upload.get@1",
        "x-roasos-runtime-status": "available",
        "x-roasos-launch-readiness": "ready",
        "x-roasos-exposure": "public"
      }
    },
    "/v1/jobs": {
      "get": {
        "operationId": "listJobs",
        "summary": "List jobs",
        "description": "List every job this workspace has run, of every kind, through one envelope.",
        "tags": [
          "Jobs"
        ],
        "parameters": [
          {
            "name": "kind",
            "in": "query",
            "schema": {
              "type": "string",
              "enum": [
                "image",
                "scene",
                "avatar",
                "video",
                "ugc",
                "audio",
                "voice",
                "lipsync",
                "batch",
                "research"
              ]
            },
            "description": "Filter by job kind."
          },
          {
            "name": "status",
            "in": "query",
            "schema": {
              "type": "string",
              "enum": [
                "queued",
                "processing",
                "completed",
                "failed",
                "canceled"
              ]
            },
            "description": "Filter by job status."
          },
          {
            "$ref": "#/components/parameters/cursor"
          },
          {
            "$ref": "#/components/parameters/limit"
          }
        ],
        "responses": {
          "200": {
            "description": "One page of job envelopes",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobListResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid kind, status, or cursor",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-roasos-capability-id": "job.list@1",
        "x-roasos-runtime-status": "available",
        "x-roasos-launch-readiness": "ready",
        "x-roasos-exposure": "public"
      }
    },
    "/v1/jobs/wait": {
      "get": {
        "operationId": "waitForJobs",
        "summary": "Wait for jobs",
        "description": "The long poll. Wait for 1 to 12 jobs to finish in one call. The call reads the jobs every 2 to 5 seconds. It returns when all the jobs are completed, failed or canceled, or when `timeout_seconds` is over. Each item of `jobs` is the same object that `GET /v1/jobs/{id}/status` returns, in the order of `ids`. A job ID that is not in this workspace gives `{ id, error: { code: job_not_found } }` in its place. When `all_terminal` is false, send the call again with the IDs that are not finished. This call is free.",
        "tags": [
          "Jobs"
        ],
        "parameters": [
          {
            "name": "ids",
            "in": "query",
            "required": true,
            "style": "form",
            "explode": false,
            "schema": {
              "type": "array",
              "minItems": 1,
              "maxItems": 12,
              "uniqueItems": true,
              "items": {
                "type": "string",
                "format": "uuid"
              }
            },
            "description": "1 to 12 different job IDs, separated by commas. Repeated `ids` keys are also accepted."
          },
          {
            "name": "timeout_seconds",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 55,
              "default": 50
            },
            "description": "The maximum time to wait, in seconds. The call returns before this time is over."
          }
        ],
        "responses": {
          "200": {
            "description": "The status of each job, and whether all of them are terminal",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobWaitResponse"
                }
              }
            }
          },
          "400": {
            "description": "validation_error: ids or timeout_seconds is not valid",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-roasos-capability-id": "job.wait@1",
        "x-roasos-runtime-status": "available",
        "x-roasos-launch-readiness": "ready",
        "x-roasos-exposure": "public"
      }
    },
    "/v1/jobs/{id}": {
      "get": {
        "operationId": "getJob",
        "summary": "Get a job",
        "description": "Read one job. When the job is completed the envelope carries its result; when it failed it carries the error.",
        "tags": [
          "Jobs"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Job envelope",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobResponse"
                }
              }
            }
          },
          "400": {
            "description": "The job ID is not a UUID",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Job not found in this workspace",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-roasos-capability-id": "job.get@1",
        "x-roasos-runtime-status": "available",
        "x-roasos-launch-readiness": "ready",
        "x-roasos-exposure": "public"
      }
    },
    "/v1/jobs/{id}/status": {
      "get": {
        "operationId": "getJobStatus",
        "summary": "Get job status",
        "description": "The light poll: id, status, and when it last changed.",
        "tags": [
          "Jobs"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Job status",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobStatusResponse"
                }
              }
            }
          },
          "400": {
            "description": "The job ID is not a UUID",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Job not found in this workspace",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-roasos-capability-id": "job.status@1",
        "x-roasos-runtime-status": "available",
        "x-roasos-launch-readiness": "ready",
        "x-roasos-exposure": "public"
      }
    },
    "/v1/jobs/{id}/result": {
      "get": {
        "operationId": "getJobResult",
        "summary": "Get a job result",
        "description": "The result of a completed job. A job that is still running answers 409 run_not_completed.",
        "tags": [
          "Jobs"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Job result",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobResultResponse"
                }
              }
            }
          },
          "400": {
            "description": "The job ID is not a UUID",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Job not found in this workspace",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "run_not_completed: the job is not terminal yet",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-roasos-capability-id": "job.result@1",
        "x-roasos-runtime-status": "available",
        "x-roasos-launch-readiness": "ready",
        "x-roasos-exposure": "public"
      }
    },
    "/v1/jobs/{id}/events": {
      "get": {
        "operationId": "getJobEvents",
        "summary": "Get job events",
        "description": "The ordered lifecycle of one job: queued, provider_submitted, provider_completed, settled, failed, canceled, webhook_delivered, webhook_failed. The engine appends these while the job runs. A job that ran before the timeline existed falls back to the steps its own row timestamps can prove, and therefore shows no webhook events.",
        "tags": [
          "Jobs"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Ordered job events",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobEventsResponse"
                }
              }
            }
          },
          "400": {
            "description": "The job ID is not a UUID",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Job not found in this workspace",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-roasos-capability-id": "job.events@1",
        "x-roasos-runtime-status": "available",
        "x-roasos-launch-readiness": "ready",
        "x-roasos-exposure": "public"
      }
    },
    "/v1/jobs/{id}/cancel": {
      "post": {
        "operationId": "cancelJob",
        "summary": "Cancel a job",
        "description": "Cancel a job that has not finished. The engine reads the cancellation immediately before it submits the request to the model provider. When the job has not been submitted, the run stops, the whole credit reservation is refunded, the job becomes canceled, and the response returns cancel_honoured: true. When the provider already holds the request it cannot be recalled: the cancellation is recorded, the run finishes, the job is billed normally, and the response returns cancel_honoured: false. A job that already finished answers 409 job_not_cancelable.",
        "tags": [
          "Jobs"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Cancellation recorded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobResponse"
                }
              }
            }
          },
          "400": {
            "description": "The job ID is not a UUID",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "job_not_cancelable_by_caller: the roasos_cancel_job MCP tool cancels only a job that the same API key or connection started. The person can cancel the job in the roasOS app.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Job not found in this workspace",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "job_not_cancelable: the job has already finished",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "The cancellation could not be recorded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-roasos-capability-id": "job.cancel@1",
        "x-roasos-runtime-status": "available",
        "x-roasos-launch-readiness": "ready",
        "x-roasos-exposure": "public"
      }
    },
    "/v1/jobs/{id}/rerun": {
      "post": {
        "operationId": "rerunJob",
        "summary": "Rerun a job from its exact recorded request",
        "tags": [
          "Jobs"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "prompt": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 10000
                  },
                  "webhook_url": {
                    "type": "string",
                    "format": "uri",
                    "maxLength": 2048
                  },
                  "quote_only": {
                    "type": "boolean"
                  },
                  "quote_id": {
                    "type": "string",
                    "format": "uuid"
                  }
                },
                "additionalProperties": false
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The answer",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "object",
                      "additionalProperties": {}
                    }
                  },
                  "required": [
                    "data"
                  ],
                  "additionalProperties": false
                }
              }
            }
          },
          "400": {
            "description": "The request is not valid",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-roasos-capability-id": "job.rerun@1",
        "x-roasos-runtime-status": "available",
        "x-roasos-launch-readiness": "ready",
        "x-roasos-exposure": "public"
      }
    },
    "/v1/voices/designs": {
      "post": {
        "operationId": "designVoice",
        "summary": "Make a speech sample in a new voice from a brief",
        "tags": [
          "Voices"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "brief": {
                    "type": "string",
                    "minLength": 3,
                    "maxLength": 500
                  },
                  "sample_text": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 500
                  },
                  "quote_only": {
                    "type": "boolean"
                  },
                  "quote_id": {
                    "type": "string",
                    "format": "uuid"
                  }
                },
                "required": [
                  "brief"
                ],
                "additionalProperties": false
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The answer",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "object",
                      "additionalProperties": {}
                    }
                  },
                  "required": [
                    "data"
                  ],
                  "additionalProperties": false
                }
              }
            }
          },
          "400": {
            "description": "The request is not valid",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-roasos-capability-id": "voice.design@1",
        "x-roasos-runtime-status": "available",
        "x-roasos-launch-readiness": "ready",
        "x-roasos-exposure": "public"
      }
    },
    "/v1/voices/search": {
      "get": {
        "operationId": "searchVoices",
        "summary": "Search voices by purpose and traits",
        "tags": [
          "Voices"
        ],
        "responses": {
          "200": {
            "description": "The answer",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "voice": {
                            "type": "string",
                            "minLength": 1,
                            "maxLength": 128
                          },
                          "source": {
                            "type": "string",
                            "enum": [
                              "library",
                              "workspace"
                            ]
                          },
                          "name": {
                            "type": "string",
                            "maxLength": 200
                          },
                          "description": {
                            "type": "string",
                            "maxLength": 600,
                            "nullable": true
                          },
                          "model": {
                            "type": "string",
                            "minLength": 1,
                            "maxLength": 64
                          },
                          "preview_url": {
                            "type": "string",
                            "format": "uri",
                            "nullable": true
                          },
                          "gender": {
                            "type": "string",
                            "nullable": true
                          },
                          "age": {
                            "type": "string",
                            "nullable": true
                          },
                          "language": {
                            "type": "string",
                            "nullable": true
                          },
                          "accent": {
                            "type": "string",
                            "nullable": true
                          },
                          "use_case": {
                            "type": "string",
                            "nullable": true
                          },
                          "score": {
                            "type": "number",
                            "minimum": 0
                          }
                        },
                        "required": [
                          "voice",
                          "source",
                          "name",
                          "description",
                          "model",
                          "preview_url",
                          "gender",
                          "age",
                          "language",
                          "accent",
                          "use_case",
                          "score"
                        ],
                        "additionalProperties": false
                      },
                      "maxItems": 25
                    }
                  },
                  "required": [
                    "data"
                  ],
                  "additionalProperties": false
                }
              }
            }
          }
        },
        "x-roasos-capability-id": "voice.search@1",
        "x-roasos-runtime-status": "available",
        "x-roasos-launch-readiness": "ready",
        "x-roasos-exposure": "public"
      }
    },
    "/v1/projects": {
      "get": {
        "operationId": "listProjects",
        "summary": "List projects (one chat is one project)",
        "tags": [
          "Projects"
        ],
        "responses": {
          "200": {
            "description": "The answer",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string",
                            "format": "uuid"
                          },
                          "title": {
                            "type": "string",
                            "maxLength": 200
                          },
                          "created_at": {
                            "type": "string"
                          },
                          "updated_at": {
                            "type": "string"
                          },
                          "conversation_id": {
                            "type": "string",
                            "format": "uuid"
                          }
                        },
                        "required": [
                          "id",
                          "title",
                          "created_at",
                          "updated_at",
                          "conversation_id"
                        ],
                        "additionalProperties": false
                      },
                      "maxItems": 100
                    },
                    "meta": {
                      "type": "object",
                      "properties": {
                        "cursor": {
                          "type": "string"
                        },
                        "has_more": {
                          "type": "boolean"
                        }
                      },
                      "required": [
                        "has_more"
                      ],
                      "additionalProperties": false
                    }
                  },
                  "required": [
                    "data",
                    "meta"
                  ],
                  "additionalProperties": false
                }
              }
            }
          }
        },
        "x-roasos-capability-id": "project.list@1",
        "x-roasos-runtime-status": "available",
        "x-roasos-launch-readiness": "ready",
        "x-roasos-exposure": "public"
      },
      "post": {
        "operationId": "createProject",
        "summary": "Start a project",
        "tags": [
          "Projects"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "title": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 200
                  }
                },
                "additionalProperties": false
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The answer",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string",
                          "format": "uuid"
                        },
                        "title": {
                          "type": "string",
                          "maxLength": 200
                        },
                        "created_at": {
                          "type": "string"
                        },
                        "updated_at": {
                          "type": "string"
                        },
                        "conversation_id": {
                          "type": "string",
                          "format": "uuid"
                        }
                      },
                      "required": [
                        "id",
                        "title",
                        "created_at",
                        "updated_at",
                        "conversation_id"
                      ],
                      "additionalProperties": false
                    }
                  },
                  "required": [
                    "data"
                  ],
                  "additionalProperties": false
                }
              }
            }
          },
          "400": {
            "description": "The request is not valid",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-roasos-capability-id": "project.create@1",
        "x-roasos-runtime-status": "available",
        "x-roasos-launch-readiness": "ready",
        "x-roasos-exposure": "public"
      }
    },
    "/v1/uploads/social": {
      "post": {
        "operationId": "importSocialPost",
        "summary": "Import the media of one social post",
        "tags": [
          "Uploads"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "url": {
                    "type": "string",
                    "format": "uri",
                    "maxLength": 2048
                  },
                  "media_rights": {
                    "type": "object",
                    "properties": {
                      "accepted": {
                        "type": "boolean",
                        "enum": [
                          true
                        ]
                      },
                      "statement_version": {
                        "type": "integer"
                      },
                      "policy_version": {
                        "type": "string",
                        "minLength": 1,
                        "maxLength": 64
                      }
                    },
                    "required": [
                      "accepted",
                      "statement_version",
                      "policy_version"
                    ],
                    "additionalProperties": false
                  }
                },
                "required": [
                  "url",
                  "media_rights"
                ],
                "additionalProperties": false
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The answer",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "platform": {
                          "type": "string",
                          "enum": [
                            "tiktok",
                            "instagram",
                            "x",
                            "meta"
                          ]
                        },
                        "source_url": {
                          "type": "string",
                          "format": "uri"
                        },
                        "author": {
                          "type": "string",
                          "maxLength": 200,
                          "nullable": true
                        },
                        "caption": {
                          "type": "string",
                          "maxLength": 4000,
                          "nullable": true
                        },
                        "items": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "upload_id": {
                                "type": "string",
                                "format": "uuid"
                              },
                              "kind": {
                                "type": "string",
                                "enum": [
                                  "image",
                                  "video"
                                ]
                              },
                              "url": {
                                "type": "string",
                                "format": "uri"
                              },
                              "content_type": {
                                "type": "string",
                                "nullable": true
                              },
                              "byte_length": {
                                "type": "integer",
                                "minimum": 0
                              }
                            },
                            "required": [
                              "upload_id",
                              "kind",
                              "url",
                              "content_type",
                              "byte_length"
                            ],
                            "additionalProperties": false
                          },
                          "minItems": 1,
                          "maxItems": 20
                        },
                        "skipped": {
                          "type": "integer",
                          "minimum": 0
                        }
                      },
                      "required": [
                        "platform",
                        "source_url",
                        "author",
                        "caption",
                        "items",
                        "skipped"
                      ],
                      "additionalProperties": false
                    }
                  },
                  "required": [
                    "data"
                  ],
                  "additionalProperties": false
                }
              }
            }
          },
          "400": {
            "description": "The request is not valid",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-roasos-capability-id": "upload.import-social@1",
        "x-roasos-runtime-status": "available",
        "x-roasos-launch-readiness": "ready",
        "x-roasos-exposure": "public"
      }
    },
    "/v1/media/frames": {
      "post": {
        "operationId": "captureFrames",
        "summary": "Save frames at exact times",
        "tags": [
          "Media"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "video_url": {
                    "type": "string",
                    "format": "uri",
                    "maxLength": 2048
                  },
                  "at_seconds": {
                    "type": "array",
                    "items": {
                      "type": "number",
                      "minimum": 0,
                      "maximum": 600
                    },
                    "minItems": 1,
                    "maxItems": 12
                  }
                },
                "required": [
                  "video_url",
                  "at_seconds"
                ],
                "additionalProperties": false
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The answer",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "video_url": {
                          "type": "string",
                          "format": "uri"
                        },
                        "frames": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "at_seconds": {
                                "type": "number",
                                "minimum": 0
                              },
                              "upload_id": {
                                "type": "string",
                                "format": "uuid"
                              },
                              "url": {
                                "type": "string",
                                "format": "uri"
                              }
                            },
                            "required": [
                              "at_seconds",
                              "upload_id",
                              "url"
                            ],
                            "additionalProperties": false
                          },
                          "maxItems": 12
                        },
                        "credits_charged": {
                          "type": "number",
                          "enum": [
                            0
                          ]
                        }
                      },
                      "required": [
                        "video_url",
                        "frames",
                        "credits_charged"
                      ],
                      "additionalProperties": false
                    }
                  },
                  "required": [
                    "data"
                  ],
                  "additionalProperties": false
                }
              }
            }
          },
          "400": {
            "description": "The request is not valid",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-roasos-capability-id": "media.frames@1",
        "x-roasos-runtime-status": "available",
        "x-roasos-launch-readiness": "ready",
        "x-roasos-exposure": "public"
      }
    },
    "/v1/media/filmstrip": {
      "post": {
        "operationId": "viewFilmstrip",
        "summary": "Measure cuts and save one frame per shot",
        "tags": [
          "Media"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "video_url": {
                    "type": "string",
                    "format": "uri",
                    "maxLength": 2048
                  },
                  "start_seconds": {
                    "type": "number",
                    "minimum": 0,
                    "maximum": 600
                  },
                  "end_seconds": {
                    "type": "number",
                    "minimum": 0,
                    "maximum": 600
                  },
                  "max_frames": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 12
                  }
                },
                "required": [
                  "video_url"
                ],
                "additionalProperties": false
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The answer",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "video_url": {
                          "type": "string",
                          "format": "uri"
                        },
                        "duration_seconds": {
                          "type": "number",
                          "minimum": 0
                        },
                        "start_seconds": {
                          "type": "number",
                          "minimum": 0
                        },
                        "end_seconds": {
                          "type": "number",
                          "minimum": 0
                        },
                        "measured": {
                          "type": "object",
                          "properties": {
                            "method": {
                              "type": "string",
                              "enum": [
                                "frame-difference"
                              ]
                            },
                            "sample_interval_seconds": {
                              "type": "number",
                              "exclusiveMinimum": true,
                              "minimum": 0
                            },
                            "samples": {
                              "type": "integer",
                              "minimum": 0
                            },
                            "cuts": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "at_seconds": {
                                    "type": "number",
                                    "minimum": 0
                                  },
                                  "strength": {
                                    "type": "number",
                                    "minimum": 0,
                                    "maximum": 1
                                  }
                                },
                                "required": [
                                  "at_seconds",
                                  "strength"
                                ],
                                "additionalProperties": false
                              }
                            }
                          },
                          "required": [
                            "method",
                            "sample_interval_seconds",
                            "samples",
                            "cuts"
                          ],
                          "additionalProperties": false
                        },
                        "shots": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "start_seconds": {
                                "type": "number",
                                "minimum": 0
                              },
                              "end_seconds": {
                                "type": "number",
                                "minimum": 0
                              }
                            },
                            "required": [
                              "start_seconds",
                              "end_seconds"
                            ],
                            "additionalProperties": false
                          }
                        },
                        "frames": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "at_seconds": {
                                "type": "number",
                                "minimum": 0
                              },
                              "upload_id": {
                                "type": "string",
                                "format": "uuid"
                              },
                              "url": {
                                "type": "string",
                                "format": "uri"
                              }
                            },
                            "required": [
                              "at_seconds",
                              "upload_id",
                              "url"
                            ],
                            "additionalProperties": false
                          },
                          "maxItems": 12
                        },
                        "reused": {
                          "type": "boolean"
                        },
                        "credits_charged": {
                          "type": "number",
                          "enum": [
                            0
                          ]
                        }
                      },
                      "required": [
                        "video_url",
                        "duration_seconds",
                        "start_seconds",
                        "end_seconds",
                        "measured",
                        "shots",
                        "frames",
                        "reused",
                        "credits_charged"
                      ],
                      "additionalProperties": false
                    }
                  },
                  "required": [
                    "data"
                  ],
                  "additionalProperties": false
                }
              }
            }
          },
          "400": {
            "description": "The request is not valid",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-roasos-capability-id": "media.filmstrip@1",
        "x-roasos-runtime-status": "available",
        "x-roasos-launch-readiness": "ready",
        "x-roasos-exposure": "public"
      }
    },
    "/v1/media/transcribe": {
      "post": {
        "operationId": "transcribeMedia",
        "summary": "Words with times for one file",
        "tags": [
          "Media"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "video_url": {
                    "type": "string",
                    "format": "uri",
                    "maxLength": 2048
                  },
                  "audio_url": {
                    "type": "string",
                    "format": "uri",
                    "maxLength": 2048
                  },
                  "language": {
                    "type": "string",
                    "minLength": 2,
                    "maxLength": 8
                  },
                  "quote_only": {
                    "type": "boolean"
                  },
                  "quote_id": {
                    "type": "string",
                    "format": "uuid"
                  }
                },
                "additionalProperties": false
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The answer",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "object",
                      "additionalProperties": {}
                    }
                  },
                  "required": [
                    "data"
                  ],
                  "additionalProperties": false
                }
              }
            }
          },
          "400": {
            "description": "The request is not valid",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-roasos-capability-id": "media.transcribe@1",
        "x-roasos-runtime-status": "available",
        "x-roasos-launch-readiness": "ready",
        "x-roasos-exposure": "public"
      }
    },
    "/v1/media/ask": {
      "post": {
        "operationId": "askMedia",
        "summary": "Ask one question about a time range",
        "tags": [
          "Media"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "video_url": {
                    "type": "string",
                    "format": "uri",
                    "maxLength": 2048
                  },
                  "audio_url": {
                    "type": "string",
                    "format": "uri",
                    "maxLength": 2048
                  },
                  "question": {
                    "type": "string",
                    "minLength": 3,
                    "maxLength": 400
                  },
                  "start_seconds": {
                    "type": "number",
                    "minimum": 0,
                    "maximum": 600
                  },
                  "end_seconds": {
                    "type": "number",
                    "minimum": 0,
                    "maximum": 600
                  },
                  "quote_only": {
                    "type": "boolean"
                  },
                  "quote_id": {
                    "type": "string",
                    "format": "uuid"
                  }
                },
                "required": [
                  "question"
                ],
                "additionalProperties": false
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The answer",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "object",
                      "additionalProperties": {}
                    }
                  },
                  "required": [
                    "data"
                  ],
                  "additionalProperties": false
                }
              }
            }
          },
          "400": {
            "description": "The request is not valid",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-roasos-capability-id": "media.ask@1",
        "x-roasos-runtime-status": "available",
        "x-roasos-launch-readiness": "ready",
        "x-roasos-exposure": "public"
      }
    },
    "/v1/media/sound": {
      "post": {
        "operationId": "describeSound",
        "summary": "Describe the sound over time",
        "tags": [
          "Media"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "video_url": {
                    "type": "string",
                    "format": "uri",
                    "maxLength": 2048
                  },
                  "audio_url": {
                    "type": "string",
                    "format": "uri",
                    "maxLength": 2048
                  },
                  "start_seconds": {
                    "type": "number",
                    "minimum": 0,
                    "maximum": 600
                  },
                  "end_seconds": {
                    "type": "number",
                    "minimum": 0,
                    "maximum": 600
                  },
                  "quote_only": {
                    "type": "boolean"
                  },
                  "quote_id": {
                    "type": "string",
                    "format": "uuid"
                  }
                },
                "additionalProperties": false
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The answer",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "object",
                      "additionalProperties": {}
                    }
                  },
                  "required": [
                    "data"
                  ],
                  "additionalProperties": false
                }
              }
            }
          },
          "400": {
            "description": "The request is not valid",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-roasos-capability-id": "media.sound@1",
        "x-roasos-runtime-status": "available",
        "x-roasos-launch-readiness": "ready",
        "x-roasos-exposure": "public"
      }
    },
    "/v1/catalog": {
      "get": {
        "operationId": "getCatalog",
        "summary": "Get the model catalog",
        "description": "Every model roasOS can run, with its modes, request fields, credit examples, provider endpoints, and prompt guide. This is the source of truth for enums and prices.",
        "tags": [
          "Catalog"
        ],
        "parameters": [
          {
            "name": "include",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "public",
                "hidden"
              ],
              "default": "public"
            },
            "description": "Public returns the models in the pickers. Hidden also returns models kept out of the pickers but still priced and runnable."
          }
        ],
        "responses": {
          "200": {
            "description": "The model catalog",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CatalogResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid include filter",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-roasos-capability-id": "catalog.list@1",
        "x-roasos-runtime-status": "available",
        "x-roasos-launch-readiness": "ready",
        "x-roasos-exposure": "public"
      }
    },
    "/v1/formats": {
      "get": {
        "operationId": "listFormats",
        "summary": "List ad formats",
        "description": "Every ad format roasOS makes: video formats, product effects, TikTok slideshows and statics. Each format has its premise, its beats, how to shoot it, what breaks it, what it needs, its default model roles (resolve them in `GET /v1/catalog` roles) and the pack skill that runs it. Ask for a format by name in `POST /v1/agent/completions`. This call is free.",
        "tags": [
          "Catalog"
        ],
        "responses": {
          "200": {
            "description": "The format registry",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FormatsResponse"
                }
              }
            }
          }
        },
        "x-roasos-capability-id": "format.list@1",
        "x-roasos-runtime-status": "available",
        "x-roasos-launch-readiness": "ready",
        "x-roasos-exposure": "public"
      }
    },
    "/v1/catalog/{model}": {
      "get": {
        "operationId": "getCatalogModel",
        "summary": "Get one catalog model",
        "description": "One model from the catalog. A few model ids exist in several families (nano-banana-pro is an image, a scene, and an avatar model); read those as /v1/catalog/{family}/{model}.",
        "tags": [
          "Catalog"
        ],
        "parameters": [
          {
            "name": "model",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "One catalog model",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CatalogModelResponse"
                }
              }
            }
          },
          "400": {
            "description": "ambiguous_model: this model id exists in several families",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Model not found in the catalog",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-roasos-capability-id": "catalog.get@1",
        "x-roasos-runtime-status": "available",
        "x-roasos-launch-readiness": "ready",
        "x-roasos-exposure": "public"
      }
    },
    "/v1/account": {
      "get": {
        "operationId": "getAccount",
        "summary": "Get account info and credit balance",
        "tags": [
          "Account"
        ],
        "responses": {
          "200": {
            "description": "Workspace info, confirmed credit balance, and subscription status",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AccountResponse"
                }
              }
            }
          }
        },
        "x-roasos-capability-id": "account.get@1",
        "x-roasos-runtime-status": "available",
        "x-roasos-launch-readiness": "ready",
        "x-roasos-exposure": "public"
      }
    },
    "/v1/limits": {
      "get": {
        "operationId": "getLimits",
        "summary": "Get API key spend limits",
        "description": "Returns your spending limits for this API key, plus how much of your daily and monthly budget you have used.",
        "tags": [
          "Account"
        ],
        "responses": {
          "200": {
            "description": "Current API key spend policy and budget-window usage",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LimitsResponse"
                }
              }
            }
          },
          "503": {
            "description": "The authoritative spend-limit snapshot is unavailable",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-roasos-capability-id": "account.limits.get@1",
        "x-roasos-runtime-status": "available",
        "x-roasos-launch-readiness": "ready",
        "x-roasos-exposure": "public"
      }
    },
    "/v1/account/usage": {
      "get": {
        "operationId": "listCreditUsage",
        "summary": "Get credit usage history",
        "tags": [
          "Account"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/cursor"
          },
          {
            "$ref": "#/components/parameters/limit"
          }
        ],
        "responses": {
          "200": {
            "description": "Secondary workspace credit audit history",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreditUsageListResponse"
                }
              }
            }
          }
        },
        "x-roasos-capability-id": "account.usage.list@1",
        "x-roasos-runtime-status": "available",
        "x-roasos-launch-readiness": "ready",
        "x-roasos-exposure": "public"
      }
    },
    "/v1/account/ledger": {
      "get": {
        "operationId": "listBillingLedger",
        "summary": "List billing history",
        "tags": [
          "Account"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/cursor"
          },
          {
            "$ref": "#/components/parameters/limit"
          }
        ],
        "responses": {
          "200": {
            "description": "Confirmed immutable workspace credit events",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BillingLedgerListResponse"
                }
              }
            }
          }
        },
        "x-roasos-capability-id": "account.billing-ledger.list@1",
        "x-roasos-runtime-status": "available",
        "x-roasos-launch-readiness": "ready",
        "x-roasos-exposure": "public"
      }
    },
    "/v1/account/usage/summary": {
      "get": {
        "operationId": "summarizeUsage",
        "summary": "Summarize usage",
        "tags": [
          "Account"
        ],
        "parameters": [
          {
            "name": "from",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "to",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "group_by",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "day",
                "api_key",
                "model",
                "capability",
                "project",
                "cost_center"
              ],
              "default": "day"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Completed consumption grouped by one bounded dimension",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UsageSummaryResponse"
                }
              }
            }
          }
        },
        "x-roasos-capability-id": "account.usage.summary@1",
        "x-roasos-runtime-status": "available",
        "x-roasos-launch-readiness": "ready",
        "x-roasos-exposure": "public"
      }
    },
    "/v1/image/nano-banana-pro": {
      "post": {
        "operationId": "createImageNanoBananaPro",
        "summary": "Run nano-banana-pro (image)",
        "description": "Submit a image job to nano-banana-pro. The request carries the real fields of this model; there is no hidden switch on a model parameter.\n\nSend `quote_only: true` to price the request for free, then send the same body with the returned `quote_id` to run it.\n\nAttach identity, product, or a first frame by resource id (`avatar_id`, `product_id`, `scene_id`) or by a workspace-owned `cdn.roasos.com` URL. Any other URL is `400 reference_media_not_workspace_owned`.\n\nPass a `webhook_url` and roasOS POSTs you the same job envelope `GET /v1/jobs/{id}` returns when the job finishes, signed with `X-RoasOS-Signature` and retried on failure. The URL must be HTTPS and reachable (`400 invalid_url` otherwise), and first-party keys cannot register webhooks (`400 webhook_url_not_supported_for_key`). See **Webhooks** above for verification. Polling `links.status` works too.",
        "tags": [
          "Models"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/idempotencyKey"
          },
          {
            "$ref": "#/components/parameters/usageProject"
          },
          {
            "$ref": "#/components/parameters/usageCostCenter"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ImageNanoBananaProRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "A quote (`quote_only: true`), or the terminal job when it finished inside `wait_timeout_seconds`. A quote spends nothing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModelQuoteResponse"
                }
              }
            }
          },
          "201": {
            "description": "Job created. Poll `links.status`, or pass a `webhook_url` to be told when it finishes.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobResponse"
                }
              }
            }
          },
          "202": {
            "description": "Job created and still running when `wait_timeout_seconds` elapsed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobResponse"
                }
              }
            }
          },
          "400": {
            "description": "invalid_request, unsupported_option, prompt_too_long, or reference_media_not_workspace_owned",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "insufficient_credits",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "The API key is not authorized for this model or credit ceiling",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "The idempotency key was reused with different request data",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "410": {
            "description": "quote_expired: the quote must be replaced under a new idempotency key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "rate_limit_exceeded, or a concurrency or budget ceiling",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "501": {
            "description": "not_implemented: this model endpoint is not live yet",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "The paid request could not be claimed safely",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-roasos-capability-id": "generation.image.nano-banana-pro@1",
        "x-roasos-runtime-status": "available",
        "x-roasos-launch-readiness": "ready",
        "x-roasos-exposure": "public"
      }
    },
    "/v1/image/nano-banana-2.1": {
      "post": {
        "operationId": "createImageNanoBanana21",
        "summary": "Run nano-banana-2.1 (image)",
        "description": "Submit a image job to nano-banana-2.1. The request carries the real fields of this model; there is no hidden switch on a model parameter.\n\nSend `quote_only: true` to price the request for free, then send the same body with the returned `quote_id` to run it.\n\nAttach identity, product, or a first frame by resource id (`avatar_id`, `product_id`, `scene_id`) or by a workspace-owned `cdn.roasos.com` URL. Any other URL is `400 reference_media_not_workspace_owned`.\n\nPass a `webhook_url` and roasOS POSTs you the same job envelope `GET /v1/jobs/{id}` returns when the job finishes, signed with `X-RoasOS-Signature` and retried on failure. The URL must be HTTPS and reachable (`400 invalid_url` otherwise), and first-party keys cannot register webhooks (`400 webhook_url_not_supported_for_key`). See **Webhooks** above for verification. Polling `links.status` works too.",
        "tags": [
          "Models"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/idempotencyKey"
          },
          {
            "$ref": "#/components/parameters/usageProject"
          },
          {
            "$ref": "#/components/parameters/usageCostCenter"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ImageNanoBanana21Request"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "A quote (`quote_only: true`), or the terminal job when it finished inside `wait_timeout_seconds`. A quote spends nothing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModelQuoteResponse"
                }
              }
            }
          },
          "201": {
            "description": "Job created. Poll `links.status`, or pass a `webhook_url` to be told when it finishes.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobResponse"
                }
              }
            }
          },
          "202": {
            "description": "Job created and still running when `wait_timeout_seconds` elapsed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobResponse"
                }
              }
            }
          },
          "400": {
            "description": "invalid_request, unsupported_option, prompt_too_long, or reference_media_not_workspace_owned",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "insufficient_credits",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "The API key is not authorized for this model or credit ceiling",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "The idempotency key was reused with different request data",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "410": {
            "description": "quote_expired: the quote must be replaced under a new idempotency key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "rate_limit_exceeded, or a concurrency or budget ceiling",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "501": {
            "description": "not_implemented: this model endpoint is not live yet",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "The paid request could not be claimed safely",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-roasos-capability-id": "generation.image.nano-banana-2.1@1",
        "x-roasos-runtime-status": "available",
        "x-roasos-launch-readiness": "ready",
        "x-roasos-exposure": "public"
      }
    },
    "/v1/image/gpt-image-2.5": {
      "post": {
        "operationId": "createImageGptImage25",
        "summary": "Run gpt-image-2.5 (image)",
        "description": "Submit a image job to gpt-image-2.5. The request carries the real fields of this model; there is no hidden switch on a model parameter.\n\nSend `quote_only: true` to price the request for free, then send the same body with the returned `quote_id` to run it.\n\nAttach identity, product, or a first frame by resource id (`avatar_id`, `product_id`, `scene_id`) or by a workspace-owned `cdn.roasos.com` URL. Any other URL is `400 reference_media_not_workspace_owned`.\n\nPass a `webhook_url` and roasOS POSTs you the same job envelope `GET /v1/jobs/{id}` returns when the job finishes, signed with `X-RoasOS-Signature` and retried on failure. The URL must be HTTPS and reachable (`400 invalid_url` otherwise), and first-party keys cannot register webhooks (`400 webhook_url_not_supported_for_key`). See **Webhooks** above for verification. Polling `links.status` works too.",
        "tags": [
          "Models"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/idempotencyKey"
          },
          {
            "$ref": "#/components/parameters/usageProject"
          },
          {
            "$ref": "#/components/parameters/usageCostCenter"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ImageGptImage25Request"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "A quote (`quote_only: true`), or the terminal job when it finished inside `wait_timeout_seconds`. A quote spends nothing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModelQuoteResponse"
                }
              }
            }
          },
          "201": {
            "description": "Job created. Poll `links.status`, or pass a `webhook_url` to be told when it finishes.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobResponse"
                }
              }
            }
          },
          "202": {
            "description": "Job created and still running when `wait_timeout_seconds` elapsed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobResponse"
                }
              }
            }
          },
          "400": {
            "description": "invalid_request, unsupported_option, prompt_too_long, or reference_media_not_workspace_owned",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "insufficient_credits",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "The API key is not authorized for this model or credit ceiling",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "The idempotency key was reused with different request data",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "410": {
            "description": "quote_expired: the quote must be replaced under a new idempotency key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "rate_limit_exceeded, or a concurrency or budget ceiling",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "501": {
            "description": "not_implemented: this model endpoint is not live yet",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "The paid request could not be claimed safely",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-roasos-capability-id": "generation.image.gpt-image-2.5@1",
        "x-roasos-runtime-status": "available",
        "x-roasos-launch-readiness": "ready",
        "x-roasos-exposure": "public"
      }
    },
    "/v1/image/gpt-image-2.5-sunburst": {
      "post": {
        "operationId": "createImageGptImage25Sunburst",
        "summary": "Run gpt-image-2.5-sunburst (image)",
        "description": "Submit a image job to gpt-image-2.5-sunburst. The request carries the real fields of this model; there is no hidden switch on a model parameter.\n\nSend `quote_only: true` to price the request for free, then send the same body with the returned `quote_id` to run it.\n\nAttach identity, product, or a first frame by resource id (`avatar_id`, `product_id`, `scene_id`) or by a workspace-owned `cdn.roasos.com` URL. Any other URL is `400 reference_media_not_workspace_owned`.\n\nPass a `webhook_url` and roasOS POSTs you the same job envelope `GET /v1/jobs/{id}` returns when the job finishes, signed with `X-RoasOS-Signature` and retried on failure. The URL must be HTTPS and reachable (`400 invalid_url` otherwise), and first-party keys cannot register webhooks (`400 webhook_url_not_supported_for_key`). See **Webhooks** above for verification. Polling `links.status` works too.",
        "tags": [
          "Models"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/idempotencyKey"
          },
          {
            "$ref": "#/components/parameters/usageProject"
          },
          {
            "$ref": "#/components/parameters/usageCostCenter"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ImageGptImage25SunburstRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "A quote (`quote_only: true`), or the terminal job when it finished inside `wait_timeout_seconds`. A quote spends nothing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModelQuoteResponse"
                }
              }
            }
          },
          "201": {
            "description": "Job created. Poll `links.status`, or pass a `webhook_url` to be told when it finishes.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobResponse"
                }
              }
            }
          },
          "202": {
            "description": "Job created and still running when `wait_timeout_seconds` elapsed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobResponse"
                }
              }
            }
          },
          "400": {
            "description": "invalid_request, unsupported_option, prompt_too_long, or reference_media_not_workspace_owned",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "insufficient_credits",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "The API key is not authorized for this model or credit ceiling",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "The idempotency key was reused with different request data",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "410": {
            "description": "quote_expired: the quote must be replaced under a new idempotency key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "rate_limit_exceeded, or a concurrency or budget ceiling",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "501": {
            "description": "not_implemented: this model endpoint is not live yet",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "The paid request could not be claimed safely",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-roasos-capability-id": "generation.image.gpt-image-2.5-sunburst@1",
        "x-roasos-runtime-status": "available",
        "x-roasos-launch-readiness": "ready",
        "x-roasos-exposure": "public"
      }
    },
    "/v1/image/flux-2-max": {
      "post": {
        "operationId": "createImageFlux2Max",
        "summary": "Run flux-2-max (image)",
        "description": "Submit a image job to flux-2-max. The request carries the real fields of this model; there is no hidden switch on a model parameter.\n\nSend `quote_only: true` to price the request for free, then send the same body with the returned `quote_id` to run it.\n\nAttach identity, product, or a first frame by resource id (`avatar_id`, `product_id`, `scene_id`) or by a workspace-owned `cdn.roasos.com` URL. Any other URL is `400 reference_media_not_workspace_owned`.\n\nPass a `webhook_url` and roasOS POSTs you the same job envelope `GET /v1/jobs/{id}` returns when the job finishes, signed with `X-RoasOS-Signature` and retried on failure. The URL must be HTTPS and reachable (`400 invalid_url` otherwise), and first-party keys cannot register webhooks (`400 webhook_url_not_supported_for_key`). See **Webhooks** above for verification. Polling `links.status` works too.",
        "tags": [
          "Models"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/idempotencyKey"
          },
          {
            "$ref": "#/components/parameters/usageProject"
          },
          {
            "$ref": "#/components/parameters/usageCostCenter"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ImageFlux2MaxRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "A quote (`quote_only: true`), or the terminal job when it finished inside `wait_timeout_seconds`. A quote spends nothing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModelQuoteResponse"
                }
              }
            }
          },
          "201": {
            "description": "Job created. Poll `links.status`, or pass a `webhook_url` to be told when it finishes.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobResponse"
                }
              }
            }
          },
          "202": {
            "description": "Job created and still running when `wait_timeout_seconds` elapsed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobResponse"
                }
              }
            }
          },
          "400": {
            "description": "invalid_request, unsupported_option, prompt_too_long, or reference_media_not_workspace_owned",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "insufficient_credits",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "The API key is not authorized for this model or credit ceiling",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "The idempotency key was reused with different request data",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "410": {
            "description": "quote_expired: the quote must be replaced under a new idempotency key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "rate_limit_exceeded, or a concurrency or budget ceiling",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "501": {
            "description": "not_implemented: this model endpoint is not live yet",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "The paid request could not be claimed safely",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-roasos-capability-id": "generation.image.flux-2-max@1",
        "x-roasos-runtime-status": "available",
        "x-roasos-launch-readiness": "ready",
        "x-roasos-exposure": "public"
      }
    },
    "/v1/image/grok-imagine-image": {
      "post": {
        "operationId": "createImageGrokImagineImage",
        "summary": "Run grok-imagine-image (image)",
        "description": "Submit a image job to grok-imagine-image. The request carries the real fields of this model; there is no hidden switch on a model parameter.\n\nSend `quote_only: true` to price the request for free, then send the same body with the returned `quote_id` to run it.\n\nAttach identity, product, or a first frame by resource id (`avatar_id`, `product_id`, `scene_id`) or by a workspace-owned `cdn.roasos.com` URL. Any other URL is `400 reference_media_not_workspace_owned`.\n\nPass a `webhook_url` and roasOS POSTs you the same job envelope `GET /v1/jobs/{id}` returns when the job finishes, signed with `X-RoasOS-Signature` and retried on failure. The URL must be HTTPS and reachable (`400 invalid_url` otherwise), and first-party keys cannot register webhooks (`400 webhook_url_not_supported_for_key`). See **Webhooks** above for verification. Polling `links.status` works too.",
        "tags": [
          "Models"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/idempotencyKey"
          },
          {
            "$ref": "#/components/parameters/usageProject"
          },
          {
            "$ref": "#/components/parameters/usageCostCenter"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ImageGrokImagineImageRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "A quote (`quote_only: true`), or the terminal job when it finished inside `wait_timeout_seconds`. A quote spends nothing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModelQuoteResponse"
                }
              }
            }
          },
          "201": {
            "description": "Job created. Poll `links.status`, or pass a `webhook_url` to be told when it finishes.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobResponse"
                }
              }
            }
          },
          "202": {
            "description": "Job created and still running when `wait_timeout_seconds` elapsed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobResponse"
                }
              }
            }
          },
          "400": {
            "description": "invalid_request, unsupported_option, prompt_too_long, or reference_media_not_workspace_owned",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "insufficient_credits",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "The API key is not authorized for this model or credit ceiling",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "The idempotency key was reused with different request data",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "410": {
            "description": "quote_expired: the quote must be replaced under a new idempotency key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "rate_limit_exceeded, or a concurrency or budget ceiling",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "501": {
            "description": "not_implemented: this model endpoint is not live yet",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "The paid request could not be claimed safely",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-roasos-capability-id": "generation.image.grok-imagine-image@1",
        "x-roasos-runtime-status": "available",
        "x-roasos-launch-readiness": "ready",
        "x-roasos-exposure": "public"
      }
    },
    "/v1/image-edit/bria-bg-remove": {
      "post": {
        "operationId": "createImageEditBriaBgRemove",
        "summary": "Run bria-bg-remove (image-edit)",
        "description": "Submit a image-edit job to bria-bg-remove. The request carries the real fields of this model; there is no hidden switch on a model parameter.\n\nSend `quote_only: true` to price the request for free, then send the same body with the returned `quote_id` to run it.\n\nAttach identity, product, or a first frame by resource id (`avatar_id`, `product_id`, `scene_id`) or by a workspace-owned `cdn.roasos.com` URL. Any other URL is `400 reference_media_not_workspace_owned`.\n\nPass a `webhook_url` and roasOS POSTs you the same job envelope `GET /v1/jobs/{id}` returns when the job finishes, signed with `X-RoasOS-Signature` and retried on failure. The URL must be HTTPS and reachable (`400 invalid_url` otherwise), and first-party keys cannot register webhooks (`400 webhook_url_not_supported_for_key`). See **Webhooks** above for verification. Polling `links.status` works too.",
        "tags": [
          "Models"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/idempotencyKey"
          },
          {
            "$ref": "#/components/parameters/usageProject"
          },
          {
            "$ref": "#/components/parameters/usageCostCenter"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ImageEditBriaBgRemoveRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "A quote (`quote_only: true`), or the terminal job when it finished inside `wait_timeout_seconds`. A quote spends nothing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModelQuoteResponse"
                }
              }
            }
          },
          "201": {
            "description": "Job created. Poll `links.status`, or pass a `webhook_url` to be told when it finishes.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobResponse"
                }
              }
            }
          },
          "202": {
            "description": "Job created and still running when `wait_timeout_seconds` elapsed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobResponse"
                }
              }
            }
          },
          "400": {
            "description": "invalid_request, unsupported_option, prompt_too_long, or reference_media_not_workspace_owned",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "insufficient_credits",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "The API key is not authorized for this model or credit ceiling",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "The idempotency key was reused with different request data",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "410": {
            "description": "quote_expired: the quote must be replaced under a new idempotency key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "rate_limit_exceeded, or a concurrency or budget ceiling",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "501": {
            "description": "not_implemented: this model endpoint is not live yet",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "The paid request could not be claimed safely",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-roasos-capability-id": "generation.image-edit.bria-bg-remove@1",
        "x-roasos-runtime-status": "available",
        "x-roasos-launch-readiness": "ready",
        "x-roasos-exposure": "public"
      }
    },
    "/v1/image-edit/bria-product-shot": {
      "post": {
        "operationId": "createImageEditBriaProductShot",
        "summary": "Run bria-product-shot (image-edit)",
        "description": "Submit a image-edit job to bria-product-shot. The request carries the real fields of this model; there is no hidden switch on a model parameter.\n\nSend `quote_only: true` to price the request for free, then send the same body with the returned `quote_id` to run it.\n\nAttach identity, product, or a first frame by resource id (`avatar_id`, `product_id`, `scene_id`) or by a workspace-owned `cdn.roasos.com` URL. Any other URL is `400 reference_media_not_workspace_owned`.\n\nPass a `webhook_url` and roasOS POSTs you the same job envelope `GET /v1/jobs/{id}` returns when the job finishes, signed with `X-RoasOS-Signature` and retried on failure. The URL must be HTTPS and reachable (`400 invalid_url` otherwise), and first-party keys cannot register webhooks (`400 webhook_url_not_supported_for_key`). See **Webhooks** above for verification. Polling `links.status` works too.",
        "tags": [
          "Models"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/idempotencyKey"
          },
          {
            "$ref": "#/components/parameters/usageProject"
          },
          {
            "$ref": "#/components/parameters/usageCostCenter"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ImageEditBriaProductShotRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "A quote (`quote_only: true`), or the terminal job when it finished inside `wait_timeout_seconds`. A quote spends nothing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModelQuoteResponse"
                }
              }
            }
          },
          "201": {
            "description": "Job created. Poll `links.status`, or pass a `webhook_url` to be told when it finishes.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobResponse"
                }
              }
            }
          },
          "202": {
            "description": "Job created and still running when `wait_timeout_seconds` elapsed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobResponse"
                }
              }
            }
          },
          "400": {
            "description": "invalid_request, unsupported_option, prompt_too_long, or reference_media_not_workspace_owned",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "insufficient_credits",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "The API key is not authorized for this model or credit ceiling",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "The idempotency key was reused with different request data",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "410": {
            "description": "quote_expired: the quote must be replaced under a new idempotency key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "rate_limit_exceeded, or a concurrency or budget ceiling",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "501": {
            "description": "not_implemented: this model endpoint is not live yet",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "The paid request could not be claimed safely",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-roasos-capability-id": "generation.image-edit.bria-product-shot@1",
        "x-roasos-runtime-status": "available",
        "x-roasos-launch-readiness": "ready",
        "x-roasos-exposure": "public"
      }
    },
    "/v1/image-edit/topaz-image": {
      "post": {
        "operationId": "createImageEditTopazImage",
        "summary": "Run topaz-image (image-edit)",
        "description": "Submit a image-edit job to topaz-image. The request carries the real fields of this model; there is no hidden switch on a model parameter.\n\nSend `quote_only: true` to price the request for free, then send the same body with the returned `quote_id` to run it.\n\nAttach identity, product, or a first frame by resource id (`avatar_id`, `product_id`, `scene_id`) or by a workspace-owned `cdn.roasos.com` URL. Any other URL is `400 reference_media_not_workspace_owned`.\n\nPass a `webhook_url` and roasOS POSTs you the same job envelope `GET /v1/jobs/{id}` returns when the job finishes, signed with `X-RoasOS-Signature` and retried on failure. The URL must be HTTPS and reachable (`400 invalid_url` otherwise), and first-party keys cannot register webhooks (`400 webhook_url_not_supported_for_key`). See **Webhooks** above for verification. Polling `links.status` works too.",
        "tags": [
          "Models"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/idempotencyKey"
          },
          {
            "$ref": "#/components/parameters/usageProject"
          },
          {
            "$ref": "#/components/parameters/usageCostCenter"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ImageEditTopazImageRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "A quote (`quote_only: true`), or the terminal job when it finished inside `wait_timeout_seconds`. A quote spends nothing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModelQuoteResponse"
                }
              }
            }
          },
          "201": {
            "description": "Job created. Poll `links.status`, or pass a `webhook_url` to be told when it finishes.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobResponse"
                }
              }
            }
          },
          "202": {
            "description": "Job created and still running when `wait_timeout_seconds` elapsed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobResponse"
                }
              }
            }
          },
          "400": {
            "description": "invalid_request, unsupported_option, prompt_too_long, or reference_media_not_workspace_owned",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "insufficient_credits",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "The API key is not authorized for this model or credit ceiling",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "The idempotency key was reused with different request data",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "410": {
            "description": "quote_expired: the quote must be replaced under a new idempotency key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "rate_limit_exceeded, or a concurrency or budget ceiling",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "501": {
            "description": "not_implemented: this model endpoint is not live yet",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "The paid request could not be claimed safely",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-roasos-capability-id": "generation.image-edit.topaz-image@1",
        "x-roasos-runtime-status": "available",
        "x-roasos-launch-readiness": "ready",
        "x-roasos-exposure": "public"
      }
    },
    "/v1/image-edit/gpt-image-2.5": {
      "post": {
        "operationId": "createImageEditGptImage25",
        "summary": "Run gpt-image-2.5 (image-edit)",
        "description": "Submit a image-edit job to gpt-image-2.5. The request carries the real fields of this model; there is no hidden switch on a model parameter.\n\nSend `quote_only: true` to price the request for free, then send the same body with the returned `quote_id` to run it.\n\nAttach identity, product, or a first frame by resource id (`avatar_id`, `product_id`, `scene_id`) or by a workspace-owned `cdn.roasos.com` URL. Any other URL is `400 reference_media_not_workspace_owned`.\n\nPass a `webhook_url` and roasOS POSTs you the same job envelope `GET /v1/jobs/{id}` returns when the job finishes, signed with `X-RoasOS-Signature` and retried on failure. The URL must be HTTPS and reachable (`400 invalid_url` otherwise), and first-party keys cannot register webhooks (`400 webhook_url_not_supported_for_key`). See **Webhooks** above for verification. Polling `links.status` works too.",
        "tags": [
          "Models"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/idempotencyKey"
          },
          {
            "$ref": "#/components/parameters/usageProject"
          },
          {
            "$ref": "#/components/parameters/usageCostCenter"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ImageEditGptImage25Request"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "A quote (`quote_only: true`), or the terminal job when it finished inside `wait_timeout_seconds`. A quote spends nothing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModelQuoteResponse"
                }
              }
            }
          },
          "201": {
            "description": "Job created. Poll `links.status`, or pass a `webhook_url` to be told when it finishes.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobResponse"
                }
              }
            }
          },
          "202": {
            "description": "Job created and still running when `wait_timeout_seconds` elapsed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobResponse"
                }
              }
            }
          },
          "400": {
            "description": "invalid_request, unsupported_option, prompt_too_long, or reference_media_not_workspace_owned",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "insufficient_credits",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "The API key is not authorized for this model or credit ceiling",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "The idempotency key was reused with different request data",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "410": {
            "description": "quote_expired: the quote must be replaced under a new idempotency key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "rate_limit_exceeded, or a concurrency or budget ceiling",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "501": {
            "description": "not_implemented: this model endpoint is not live yet",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "The paid request could not be claimed safely",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-roasos-capability-id": "generation.image-edit.gpt-image-2.5@1",
        "x-roasos-runtime-status": "available",
        "x-roasos-launch-readiness": "ready",
        "x-roasos-exposure": "public"
      }
    },
    "/v1/scene/nano-banana-pro": {
      "post": {
        "operationId": "createSceneNanoBananaPro",
        "summary": "Run nano-banana-pro (scene)",
        "description": "Submit a scene job to nano-banana-pro. The request carries the real fields of this model; there is no hidden switch on a model parameter.\n\nSend `quote_only: true` to price the request for free, then send the same body with the returned `quote_id` to run it.\n\nAttach identity, product, or a first frame by resource id (`avatar_id`, `product_id`, `scene_id`) or by a workspace-owned `cdn.roasos.com` URL. Any other URL is `400 reference_media_not_workspace_owned`.\n\nPass a `webhook_url` and roasOS POSTs you the same job envelope `GET /v1/jobs/{id}` returns when the job finishes, signed with `X-RoasOS-Signature` and retried on failure. The URL must be HTTPS and reachable (`400 invalid_url` otherwise), and first-party keys cannot register webhooks (`400 webhook_url_not_supported_for_key`). See **Webhooks** above for verification. Polling `links.status` works too.",
        "tags": [
          "Models"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/idempotencyKey"
          },
          {
            "$ref": "#/components/parameters/usageProject"
          },
          {
            "$ref": "#/components/parameters/usageCostCenter"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SceneNanoBananaProRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "A quote (`quote_only: true`), or the terminal job when it finished inside `wait_timeout_seconds`. A quote spends nothing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModelQuoteResponse"
                }
              }
            }
          },
          "201": {
            "description": "Job created. Poll `links.status`, or pass a `webhook_url` to be told when it finishes.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobResponse"
                }
              }
            }
          },
          "202": {
            "description": "Job created and still running when `wait_timeout_seconds` elapsed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobResponse"
                }
              }
            }
          },
          "400": {
            "description": "invalid_request, unsupported_option, prompt_too_long, or reference_media_not_workspace_owned",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "insufficient_credits",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "The API key is not authorized for this model or credit ceiling",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "The idempotency key was reused with different request data",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "410": {
            "description": "quote_expired: the quote must be replaced under a new idempotency key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "rate_limit_exceeded, or a concurrency or budget ceiling",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "501": {
            "description": "not_implemented: this model endpoint is not live yet",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "The paid request could not be claimed safely",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-roasos-capability-id": "generation.scene.nano-banana-pro@1",
        "x-roasos-runtime-status": "available",
        "x-roasos-launch-readiness": "ready",
        "x-roasos-exposure": "public"
      }
    },
    "/v1/avatar/nano-banana-pro": {
      "post": {
        "operationId": "createAvatarNanoBananaPro",
        "summary": "Run nano-banana-pro (avatar)",
        "description": "Submit a avatar job to nano-banana-pro. The request carries the real fields of this model; there is no hidden switch on a model parameter.\n\nSend `quote_only: true` to price the request for free, then send the same body with the returned `quote_id` to run it.\n\nAttach identity, product, or a first frame by resource id (`avatar_id`, `product_id`, `scene_id`) or by a workspace-owned `cdn.roasos.com` URL. Any other URL is `400 reference_media_not_workspace_owned`.\n\nPass a `webhook_url` and roasOS POSTs you the same job envelope `GET /v1/jobs/{id}` returns when the job finishes, signed with `X-RoasOS-Signature` and retried on failure. The URL must be HTTPS and reachable (`400 invalid_url` otherwise), and first-party keys cannot register webhooks (`400 webhook_url_not_supported_for_key`). See **Webhooks** above for verification. Polling `links.status` works too.",
        "tags": [
          "Models"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/idempotencyKey"
          },
          {
            "$ref": "#/components/parameters/usageProject"
          },
          {
            "$ref": "#/components/parameters/usageCostCenter"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AvatarNanoBananaProRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "A quote (`quote_only: true`), or the terminal job when it finished inside `wait_timeout_seconds`. A quote spends nothing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModelQuoteResponse"
                }
              }
            }
          },
          "201": {
            "description": "Job created. Poll `links.status`, or pass a `webhook_url` to be told when it finishes.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobResponse"
                }
              }
            }
          },
          "202": {
            "description": "Job created and still running when `wait_timeout_seconds` elapsed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobResponse"
                }
              }
            }
          },
          "400": {
            "description": "invalid_request, unsupported_option, prompt_too_long, or reference_media_not_workspace_owned",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "insufficient_credits",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "The API key is not authorized for this model or credit ceiling",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "The idempotency key was reused with different request data",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "410": {
            "description": "quote_expired: the quote must be replaced under a new idempotency key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "rate_limit_exceeded, or a concurrency or budget ceiling",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "501": {
            "description": "not_implemented: this model endpoint is not live yet",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "The paid request could not be claimed safely",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-roasos-capability-id": "generation.avatar.nano-banana-pro@1",
        "x-roasos-runtime-status": "available",
        "x-roasos-launch-readiness": "ready",
        "x-roasos-exposure": "public"
      }
    },
    "/v1/video/kling-4": {
      "post": {
        "operationId": "createVideoKling4",
        "summary": "Run kling-4 (video)",
        "description": "Submit a video job to kling-4. The request carries the real fields of this model; there is no hidden switch on a model parameter.\n\nSend `quote_only: true` to price the request for free, then send the same body with the returned `quote_id` to run it.\n\nAttach identity, product, or a first frame by resource id (`avatar_id`, `product_id`, `scene_id`) or by a workspace-owned `cdn.roasos.com` URL. Any other URL is `400 reference_media_not_workspace_owned`.\n\nPass a `webhook_url` and roasOS POSTs you the same job envelope `GET /v1/jobs/{id}` returns when the job finishes, signed with `X-RoasOS-Signature` and retried on failure. The URL must be HTTPS and reachable (`400 invalid_url` otherwise), and first-party keys cannot register webhooks (`400 webhook_url_not_supported_for_key`). See **Webhooks** above for verification. Polling `links.status` works too.",
        "tags": [
          "Models"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/idempotencyKey"
          },
          {
            "$ref": "#/components/parameters/usageProject"
          },
          {
            "$ref": "#/components/parameters/usageCostCenter"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/VideoKling4Request"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "A quote (`quote_only: true`), or the terminal job when it finished inside `wait_timeout_seconds`. A quote spends nothing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModelQuoteResponse"
                }
              }
            }
          },
          "201": {
            "description": "Job created. Poll `links.status`, or pass a `webhook_url` to be told when it finishes.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobResponse"
                }
              }
            }
          },
          "202": {
            "description": "Job created and still running when `wait_timeout_seconds` elapsed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobResponse"
                }
              }
            }
          },
          "400": {
            "description": "invalid_request, unsupported_option, prompt_too_long, or reference_media_not_workspace_owned",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "insufficient_credits",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "The API key is not authorized for this model or credit ceiling",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "The idempotency key was reused with different request data",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "410": {
            "description": "quote_expired: the quote must be replaced under a new idempotency key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "rate_limit_exceeded, or a concurrency or budget ceiling",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "501": {
            "description": "not_implemented: this model endpoint is not live yet",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "The paid request could not be claimed safely",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-roasos-capability-id": "generation.video.kling-4@1",
        "x-roasos-runtime-status": "available",
        "x-roasos-launch-readiness": "ready",
        "x-roasos-exposure": "public"
      }
    },
    "/v1/video/seedance-2.5": {
      "post": {
        "operationId": "createVideoSeedance25",
        "summary": "Run seedance-2.5 (video)",
        "description": "Submit a video job to seedance-2.5. The request carries the real fields of this model; there is no hidden switch on a model parameter.\n\nSend `quote_only: true` to price the request for free, then send the same body with the returned `quote_id` to run it.\n\nAttach identity, product, or a first frame by resource id (`avatar_id`, `product_id`, `scene_id`) or by a workspace-owned `cdn.roasos.com` URL. Any other URL is `400 reference_media_not_workspace_owned`.\n\nPass a `webhook_url` and roasOS POSTs you the same job envelope `GET /v1/jobs/{id}` returns when the job finishes, signed with `X-RoasOS-Signature` and retried on failure. The URL must be HTTPS and reachable (`400 invalid_url` otherwise), and first-party keys cannot register webhooks (`400 webhook_url_not_supported_for_key`). See **Webhooks** above for verification. Polling `links.status` works too.",
        "tags": [
          "Models"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/idempotencyKey"
          },
          {
            "$ref": "#/components/parameters/usageProject"
          },
          {
            "$ref": "#/components/parameters/usageCostCenter"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/VideoSeedance25Request"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "A quote (`quote_only: true`), or the terminal job when it finished inside `wait_timeout_seconds`. A quote spends nothing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModelQuoteResponse"
                }
              }
            }
          },
          "201": {
            "description": "Job created. Poll `links.status`, or pass a `webhook_url` to be told when it finishes.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobResponse"
                }
              }
            }
          },
          "202": {
            "description": "Job created and still running when `wait_timeout_seconds` elapsed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobResponse"
                }
              }
            }
          },
          "400": {
            "description": "invalid_request, unsupported_option, prompt_too_long, or reference_media_not_workspace_owned",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "insufficient_credits",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "The API key is not authorized for this model or credit ceiling",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "The idempotency key was reused with different request data",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "410": {
            "description": "quote_expired: the quote must be replaced under a new idempotency key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "rate_limit_exceeded, or a concurrency or budget ceiling",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "501": {
            "description": "not_implemented: this model endpoint is not live yet",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "The paid request could not be claimed safely",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-roasos-capability-id": "generation.video.seedance-2.5@1",
        "x-roasos-runtime-status": "available",
        "x-roasos-launch-readiness": "ready",
        "x-roasos-exposure": "public"
      }
    },
    "/v1/video/gemini-omni-flash": {
      "post": {
        "operationId": "createVideoGeminiOmniFlash",
        "summary": "Run gemini-omni-flash (video)",
        "description": "Submit a video job to gemini-omni-flash. The request carries the real fields of this model; there is no hidden switch on a model parameter.\n\nSend `quote_only: true` to price the request for free, then send the same body with the returned `quote_id` to run it.\n\nAttach identity, product, or a first frame by resource id (`avatar_id`, `product_id`, `scene_id`) or by a workspace-owned `cdn.roasos.com` URL. Any other URL is `400 reference_media_not_workspace_owned`.\n\nPass a `webhook_url` and roasOS POSTs you the same job envelope `GET /v1/jobs/{id}` returns when the job finishes, signed with `X-RoasOS-Signature` and retried on failure. The URL must be HTTPS and reachable (`400 invalid_url` otherwise), and first-party keys cannot register webhooks (`400 webhook_url_not_supported_for_key`). See **Webhooks** above for verification. Polling `links.status` works too.",
        "tags": [
          "Models"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/idempotencyKey"
          },
          {
            "$ref": "#/components/parameters/usageProject"
          },
          {
            "$ref": "#/components/parameters/usageCostCenter"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/VideoGeminiOmniFlashRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "A quote (`quote_only: true`), or the terminal job when it finished inside `wait_timeout_seconds`. A quote spends nothing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModelQuoteResponse"
                }
              }
            }
          },
          "201": {
            "description": "Job created. Poll `links.status`, or pass a `webhook_url` to be told when it finishes.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobResponse"
                }
              }
            }
          },
          "202": {
            "description": "Job created and still running when `wait_timeout_seconds` elapsed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobResponse"
                }
              }
            }
          },
          "400": {
            "description": "invalid_request, unsupported_option, prompt_too_long, or reference_media_not_workspace_owned",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "insufficient_credits",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "The API key is not authorized for this model or credit ceiling",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "The idempotency key was reused with different request data",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "410": {
            "description": "quote_expired: the quote must be replaced under a new idempotency key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "rate_limit_exceeded, or a concurrency or budget ceiling",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "501": {
            "description": "not_implemented: this model endpoint is not live yet",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "The paid request could not be claimed safely",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-roasos-capability-id": "generation.video.gemini-omni-flash@1",
        "x-roasos-runtime-status": "available",
        "x-roasos-launch-readiness": "ready",
        "x-roasos-exposure": "public"
      }
    },
    "/v1/video/wan-2.7": {
      "post": {
        "operationId": "createVideoWan27",
        "summary": "Run wan-2.7 (video)",
        "description": "Submit a video job to wan-2.7. The request carries the real fields of this model; there is no hidden switch on a model parameter.\n\nSend `quote_only: true` to price the request for free, then send the same body with the returned `quote_id` to run it.\n\nAttach identity, product, or a first frame by resource id (`avatar_id`, `product_id`, `scene_id`) or by a workspace-owned `cdn.roasos.com` URL. Any other URL is `400 reference_media_not_workspace_owned`.\n\nPass a `webhook_url` and roasOS POSTs you the same job envelope `GET /v1/jobs/{id}` returns when the job finishes, signed with `X-RoasOS-Signature` and retried on failure. The URL must be HTTPS and reachable (`400 invalid_url` otherwise), and first-party keys cannot register webhooks (`400 webhook_url_not_supported_for_key`). See **Webhooks** above for verification. Polling `links.status` works too.",
        "tags": [
          "Models"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/idempotencyKey"
          },
          {
            "$ref": "#/components/parameters/usageProject"
          },
          {
            "$ref": "#/components/parameters/usageCostCenter"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/VideoWan27Request"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "A quote (`quote_only: true`), or the terminal job when it finished inside `wait_timeout_seconds`. A quote spends nothing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModelQuoteResponse"
                }
              }
            }
          },
          "201": {
            "description": "Job created. Poll `links.status`, or pass a `webhook_url` to be told when it finishes.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobResponse"
                }
              }
            }
          },
          "202": {
            "description": "Job created and still running when `wait_timeout_seconds` elapsed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobResponse"
                }
              }
            }
          },
          "400": {
            "description": "invalid_request, unsupported_option, prompt_too_long, or reference_media_not_workspace_owned",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "insufficient_credits",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "The API key is not authorized for this model or credit ceiling",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "The idempotency key was reused with different request data",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "410": {
            "description": "quote_expired: the quote must be replaced under a new idempotency key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "rate_limit_exceeded, or a concurrency or budget ceiling",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "501": {
            "description": "not_implemented: this model endpoint is not live yet",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "The paid request could not be claimed safely",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-roasos-capability-id": "generation.video.wan-2.7@1",
        "x-roasos-runtime-status": "available",
        "x-roasos-launch-readiness": "ready",
        "x-roasos-exposure": "public"
      }
    },
    "/v1/video/veo-3.1": {
      "post": {
        "operationId": "createVideoVeo31",
        "summary": "Run veo-3.1 (video)",
        "description": "Submit a video job to veo-3.1. The request carries the real fields of this model; there is no hidden switch on a model parameter.\n\nSend `quote_only: true` to price the request for free, then send the same body with the returned `quote_id` to run it.\n\nAttach identity, product, or a first frame by resource id (`avatar_id`, `product_id`, `scene_id`) or by a workspace-owned `cdn.roasos.com` URL. Any other URL is `400 reference_media_not_workspace_owned`.\n\nPass a `webhook_url` and roasOS POSTs you the same job envelope `GET /v1/jobs/{id}` returns when the job finishes, signed with `X-RoasOS-Signature` and retried on failure. The URL must be HTTPS and reachable (`400 invalid_url` otherwise), and first-party keys cannot register webhooks (`400 webhook_url_not_supported_for_key`). See **Webhooks** above for verification. Polling `links.status` works too.",
        "tags": [
          "Models"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/idempotencyKey"
          },
          {
            "$ref": "#/components/parameters/usageProject"
          },
          {
            "$ref": "#/components/parameters/usageCostCenter"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/VideoVeo31Request"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "A quote (`quote_only: true`), or the terminal job when it finished inside `wait_timeout_seconds`. A quote spends nothing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModelQuoteResponse"
                }
              }
            }
          },
          "201": {
            "description": "Job created. Poll `links.status`, or pass a `webhook_url` to be told when it finishes.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobResponse"
                }
              }
            }
          },
          "202": {
            "description": "Job created and still running when `wait_timeout_seconds` elapsed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobResponse"
                }
              }
            }
          },
          "400": {
            "description": "invalid_request, unsupported_option, prompt_too_long, or reference_media_not_workspace_owned",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "insufficient_credits",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "The API key is not authorized for this model or credit ceiling",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "The idempotency key was reused with different request data",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "410": {
            "description": "quote_expired: the quote must be replaced under a new idempotency key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "rate_limit_exceeded, or a concurrency or budget ceiling",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "501": {
            "description": "not_implemented: this model endpoint is not live yet",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "The paid request could not be claimed safely",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-roasos-capability-id": "generation.video.veo-3.1@1",
        "x-roasos-runtime-status": "available",
        "x-roasos-launch-readiness": "ready",
        "x-roasos-exposure": "public"
      }
    },
    "/v1/video/seedance-2": {
      "post": {
        "operationId": "createVideoSeedance2",
        "summary": "Run seedance-2 (video)",
        "description": "Submit a video job to seedance-2. The request carries the real fields of this model; there is no hidden switch on a model parameter.\n\nSend `quote_only: true` to price the request for free, then send the same body with the returned `quote_id` to run it.\n\nAttach identity, product, or a first frame by resource id (`avatar_id`, `product_id`, `scene_id`) or by a workspace-owned `cdn.roasos.com` URL. Any other URL is `400 reference_media_not_workspace_owned`.\n\nPass a `webhook_url` and roasOS POSTs you the same job envelope `GET /v1/jobs/{id}` returns when the job finishes, signed with `X-RoasOS-Signature` and retried on failure. The URL must be HTTPS and reachable (`400 invalid_url` otherwise), and first-party keys cannot register webhooks (`400 webhook_url_not_supported_for_key`). See **Webhooks** above for verification. Polling `links.status` works too.",
        "tags": [
          "Models"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/idempotencyKey"
          },
          {
            "$ref": "#/components/parameters/usageProject"
          },
          {
            "$ref": "#/components/parameters/usageCostCenter"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/VideoSeedance2Request"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "A quote (`quote_only: true`), or the terminal job when it finished inside `wait_timeout_seconds`. A quote spends nothing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModelQuoteResponse"
                }
              }
            }
          },
          "201": {
            "description": "Job created. Poll `links.status`, or pass a `webhook_url` to be told when it finishes.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobResponse"
                }
              }
            }
          },
          "202": {
            "description": "Job created and still running when `wait_timeout_seconds` elapsed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobResponse"
                }
              }
            }
          },
          "400": {
            "description": "invalid_request, unsupported_option, prompt_too_long, or reference_media_not_workspace_owned",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "insufficient_credits",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "The API key is not authorized for this model or credit ceiling",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "The idempotency key was reused with different request data",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "410": {
            "description": "quote_expired: the quote must be replaced under a new idempotency key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "rate_limit_exceeded, or a concurrency or budget ceiling",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "501": {
            "description": "not_implemented: this model endpoint is not live yet",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "The paid request could not be claimed safely",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-roasos-capability-id": "generation.video.seedance-2@1",
        "x-roasos-runtime-status": "available",
        "x-roasos-launch-readiness": "ready",
        "x-roasos-exposure": "public"
      }
    },
    "/v1/video/seedance-2-pro": {
      "post": {
        "operationId": "createVideoSeedance2Pro",
        "summary": "Run seedance-2-pro (video)",
        "description": "Submit a video job to seedance-2-pro. The request carries the real fields of this model; there is no hidden switch on a model parameter.\n\nSend `quote_only: true` to price the request for free, then send the same body with the returned `quote_id` to run it.\n\nAttach identity, product, or a first frame by resource id (`avatar_id`, `product_id`, `scene_id`) or by a workspace-owned `cdn.roasos.com` URL. Any other URL is `400 reference_media_not_workspace_owned`.\n\nPass a `webhook_url` and roasOS POSTs you the same job envelope `GET /v1/jobs/{id}` returns when the job finishes, signed with `X-RoasOS-Signature` and retried on failure. The URL must be HTTPS and reachable (`400 invalid_url` otherwise), and first-party keys cannot register webhooks (`400 webhook_url_not_supported_for_key`). See **Webhooks** above for verification. Polling `links.status` works too.",
        "tags": [
          "Models"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/idempotencyKey"
          },
          {
            "$ref": "#/components/parameters/usageProject"
          },
          {
            "$ref": "#/components/parameters/usageCostCenter"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/VideoSeedance2ProRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "A quote (`quote_only: true`), or the terminal job when it finished inside `wait_timeout_seconds`. A quote spends nothing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModelQuoteResponse"
                }
              }
            }
          },
          "201": {
            "description": "Job created. Poll `links.status`, or pass a `webhook_url` to be told when it finishes.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobResponse"
                }
              }
            }
          },
          "202": {
            "description": "Job created and still running when `wait_timeout_seconds` elapsed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobResponse"
                }
              }
            }
          },
          "400": {
            "description": "invalid_request, unsupported_option, prompt_too_long, or reference_media_not_workspace_owned",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "insufficient_credits",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "The API key is not authorized for this model or credit ceiling",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "The idempotency key was reused with different request data",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "410": {
            "description": "quote_expired: the quote must be replaced under a new idempotency key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "rate_limit_exceeded, or a concurrency or budget ceiling",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "501": {
            "description": "not_implemented: this model endpoint is not live yet",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "The paid request could not be claimed safely",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-roasos-capability-id": "generation.video.seedance-2-pro@1",
        "x-roasos-runtime-status": "available",
        "x-roasos-launch-readiness": "ready",
        "x-roasos-exposure": "public"
      }
    },
    "/v1/video/grok-imagine": {
      "post": {
        "operationId": "createVideoGrokImagine",
        "summary": "Run grok-imagine (video)",
        "description": "Submit a video job to grok-imagine. The request carries the real fields of this model; there is no hidden switch on a model parameter.\n\nSend `quote_only: true` to price the request for free, then send the same body with the returned `quote_id` to run it.\n\nAttach identity, product, or a first frame by resource id (`avatar_id`, `product_id`, `scene_id`) or by a workspace-owned `cdn.roasos.com` URL. Any other URL is `400 reference_media_not_workspace_owned`.\n\nPass a `webhook_url` and roasOS POSTs you the same job envelope `GET /v1/jobs/{id}` returns when the job finishes, signed with `X-RoasOS-Signature` and retried on failure. The URL must be HTTPS and reachable (`400 invalid_url` otherwise), and first-party keys cannot register webhooks (`400 webhook_url_not_supported_for_key`). See **Webhooks** above for verification. Polling `links.status` works too.",
        "tags": [
          "Models"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/idempotencyKey"
          },
          {
            "$ref": "#/components/parameters/usageProject"
          },
          {
            "$ref": "#/components/parameters/usageCostCenter"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/VideoGrokImagineRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "A quote (`quote_only: true`), or the terminal job when it finished inside `wait_timeout_seconds`. A quote spends nothing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModelQuoteResponse"
                }
              }
            }
          },
          "201": {
            "description": "Job created. Poll `links.status`, or pass a `webhook_url` to be told when it finishes.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobResponse"
                }
              }
            }
          },
          "202": {
            "description": "Job created and still running when `wait_timeout_seconds` elapsed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobResponse"
                }
              }
            }
          },
          "400": {
            "description": "invalid_request, unsupported_option, prompt_too_long, or reference_media_not_workspace_owned",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "insufficient_credits",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "The API key is not authorized for this model or credit ceiling",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "The idempotency key was reused with different request data",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "410": {
            "description": "quote_expired: the quote must be replaced under a new idempotency key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "rate_limit_exceeded, or a concurrency or budget ceiling",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "501": {
            "description": "not_implemented: this model endpoint is not live yet",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "The paid request could not be claimed safely",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-roasos-capability-id": "generation.video.grok-imagine@1",
        "x-roasos-runtime-status": "available",
        "x-roasos-launch-readiness": "ready",
        "x-roasos-exposure": "public"
      }
    },
    "/v1/video/h3-max": {
      "post": {
        "operationId": "createVideoH3Max",
        "summary": "Run h3-max (video)",
        "description": "Submit a video job to h3-max. The request carries the real fields of this model; there is no hidden switch on a model parameter.\n\nSend `quote_only: true` to price the request for free, then send the same body with the returned `quote_id` to run it.\n\nAttach identity, product, or a first frame by resource id (`avatar_id`, `product_id`, `scene_id`) or by a workspace-owned `cdn.roasos.com` URL. Any other URL is `400 reference_media_not_workspace_owned`.\n\nPass a `webhook_url` and roasOS POSTs you the same job envelope `GET /v1/jobs/{id}` returns when the job finishes, signed with `X-RoasOS-Signature` and retried on failure. The URL must be HTTPS and reachable (`400 invalid_url` otherwise), and first-party keys cannot register webhooks (`400 webhook_url_not_supported_for_key`). See **Webhooks** above for verification. Polling `links.status` works too.",
        "tags": [
          "Models"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/idempotencyKey"
          },
          {
            "$ref": "#/components/parameters/usageProject"
          },
          {
            "$ref": "#/components/parameters/usageCostCenter"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/VideoH3MaxRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "A quote (`quote_only: true`), or the terminal job when it finished inside `wait_timeout_seconds`. A quote spends nothing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModelQuoteResponse"
                }
              }
            }
          },
          "201": {
            "description": "Job created. Poll `links.status`, or pass a `webhook_url` to be told when it finishes.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobResponse"
                }
              }
            }
          },
          "202": {
            "description": "Job created and still running when `wait_timeout_seconds` elapsed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobResponse"
                }
              }
            }
          },
          "400": {
            "description": "invalid_request, unsupported_option, prompt_too_long, or reference_media_not_workspace_owned",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "insufficient_credits",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "The API key is not authorized for this model or credit ceiling",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "The idempotency key was reused with different request data",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "410": {
            "description": "quote_expired: the quote must be replaced under a new idempotency key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "rate_limit_exceeded, or a concurrency or budget ceiling",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "501": {
            "description": "not_implemented: this model endpoint is not live yet",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "The paid request could not be claimed safely",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-roasos-capability-id": "generation.video.h3-max@1",
        "x-roasos-runtime-status": "available",
        "x-roasos-launch-readiness": "ready",
        "x-roasos-exposure": "public"
      }
    },
    "/v1/video/flux-3-max": {
      "post": {
        "operationId": "createVideoFlux3Max",
        "summary": "Run flux-3-max (video)",
        "description": "Submit a video job to flux-3-max. The request carries the real fields of this model; there is no hidden switch on a model parameter.\n\nSend `quote_only: true` to price the request for free, then send the same body with the returned `quote_id` to run it.\n\nAttach identity, product, or a first frame by resource id (`avatar_id`, `product_id`, `scene_id`) or by a workspace-owned `cdn.roasos.com` URL. Any other URL is `400 reference_media_not_workspace_owned`.\n\nPass a `webhook_url` and roasOS POSTs you the same job envelope `GET /v1/jobs/{id}` returns when the job finishes, signed with `X-RoasOS-Signature` and retried on failure. The URL must be HTTPS and reachable (`400 invalid_url` otherwise), and first-party keys cannot register webhooks (`400 webhook_url_not_supported_for_key`). See **Webhooks** above for verification. Polling `links.status` works too.",
        "tags": [
          "Models"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/idempotencyKey"
          },
          {
            "$ref": "#/components/parameters/usageProject"
          },
          {
            "$ref": "#/components/parameters/usageCostCenter"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/VideoFlux3MaxRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "A quote (`quote_only: true`), or the terminal job when it finished inside `wait_timeout_seconds`. A quote spends nothing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModelQuoteResponse"
                }
              }
            }
          },
          "201": {
            "description": "Job created. Poll `links.status`, or pass a `webhook_url` to be told when it finishes.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobResponse"
                }
              }
            }
          },
          "202": {
            "description": "Job created and still running when `wait_timeout_seconds` elapsed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobResponse"
                }
              }
            }
          },
          "400": {
            "description": "invalid_request, unsupported_option, prompt_too_long, or reference_media_not_workspace_owned",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "insufficient_credits",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "The API key is not authorized for this model or credit ceiling",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "The idempotency key was reused with different request data",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "410": {
            "description": "quote_expired: the quote must be replaced under a new idempotency key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "rate_limit_exceeded, or a concurrency or budget ceiling",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "501": {
            "description": "not_implemented: this model endpoint is not live yet",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "The paid request could not be claimed safely",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-roasos-capability-id": "generation.video.flux-3-max@1",
        "x-roasos-runtime-status": "available",
        "x-roasos-launch-readiness": "ready",
        "x-roasos-exposure": "public"
      }
    },
    "/v1/video/h3-max-extend": {
      "post": {
        "operationId": "createVideoH3MaxExtend",
        "summary": "Run h3-max-extend (video)",
        "description": "Submit a video job to h3-max-extend. The request carries the real fields of this model; there is no hidden switch on a model parameter.\n\nSend `quote_only: true` to price the request for free, then send the same body with the returned `quote_id` to run it.\n\nAttach identity, product, or a first frame by resource id (`avatar_id`, `product_id`, `scene_id`) or by a workspace-owned `cdn.roasos.com` URL. Any other URL is `400 reference_media_not_workspace_owned`.\n\nPass a `webhook_url` and roasOS POSTs you the same job envelope `GET /v1/jobs/{id}` returns when the job finishes, signed with `X-RoasOS-Signature` and retried on failure. The URL must be HTTPS and reachable (`400 invalid_url` otherwise), and first-party keys cannot register webhooks (`400 webhook_url_not_supported_for_key`). See **Webhooks** above for verification. Polling `links.status` works too.",
        "tags": [
          "Models"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/idempotencyKey"
          },
          {
            "$ref": "#/components/parameters/usageProject"
          },
          {
            "$ref": "#/components/parameters/usageCostCenter"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/VideoH3MaxExtendRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "A quote (`quote_only: true`), or the terminal job when it finished inside `wait_timeout_seconds`. A quote spends nothing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModelQuoteResponse"
                }
              }
            }
          },
          "201": {
            "description": "Job created. Poll `links.status`, or pass a `webhook_url` to be told when it finishes.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobResponse"
                }
              }
            }
          },
          "202": {
            "description": "Job created and still running when `wait_timeout_seconds` elapsed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobResponse"
                }
              }
            }
          },
          "400": {
            "description": "invalid_request, unsupported_option, prompt_too_long, or reference_media_not_workspace_owned",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "insufficient_credits",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "The API key is not authorized for this model or credit ceiling",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "The idempotency key was reused with different request data",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "410": {
            "description": "quote_expired: the quote must be replaced under a new idempotency key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "rate_limit_exceeded, or a concurrency or budget ceiling",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "501": {
            "description": "not_implemented: this model endpoint is not live yet",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "The paid request could not be claimed safely",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-roasos-capability-id": "generation.video.h3-max-extend@1",
        "x-roasos-runtime-status": "available",
        "x-roasos-launch-readiness": "ready",
        "x-roasos-exposure": "public"
      }
    },
    "/v1/video/gemini-omni-flash-extend": {
      "post": {
        "operationId": "createVideoGeminiOmniFlashExtend",
        "summary": "Run gemini-omni-flash-extend (video)",
        "description": "Submit a video job to gemini-omni-flash-extend. The request carries the real fields of this model; there is no hidden switch on a model parameter.\n\nSend `quote_only: true` to price the request for free, then send the same body with the returned `quote_id` to run it.\n\nAttach identity, product, or a first frame by resource id (`avatar_id`, `product_id`, `scene_id`) or by a workspace-owned `cdn.roasos.com` URL. Any other URL is `400 reference_media_not_workspace_owned`.\n\nPass a `webhook_url` and roasOS POSTs you the same job envelope `GET /v1/jobs/{id}` returns when the job finishes, signed with `X-RoasOS-Signature` and retried on failure. The URL must be HTTPS and reachable (`400 invalid_url` otherwise), and first-party keys cannot register webhooks (`400 webhook_url_not_supported_for_key`). See **Webhooks** above for verification. Polling `links.status` works too.",
        "tags": [
          "Models"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/idempotencyKey"
          },
          {
            "$ref": "#/components/parameters/usageProject"
          },
          {
            "$ref": "#/components/parameters/usageCostCenter"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/VideoGeminiOmniFlashExtendRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "A quote (`quote_only: true`), or the terminal job when it finished inside `wait_timeout_seconds`. A quote spends nothing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModelQuoteResponse"
                }
              }
            }
          },
          "201": {
            "description": "Job created. Poll `links.status`, or pass a `webhook_url` to be told when it finishes.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobResponse"
                }
              }
            }
          },
          "202": {
            "description": "Job created and still running when `wait_timeout_seconds` elapsed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobResponse"
                }
              }
            }
          },
          "400": {
            "description": "invalid_request, unsupported_option, prompt_too_long, or reference_media_not_workspace_owned",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "insufficient_credits",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "The API key is not authorized for this model or credit ceiling",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "The idempotency key was reused with different request data",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "410": {
            "description": "quote_expired: the quote must be replaced under a new idempotency key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "rate_limit_exceeded, or a concurrency or budget ceiling",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "501": {
            "description": "not_implemented: this model endpoint is not live yet",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "The paid request could not be claimed safely",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-roasos-capability-id": "generation.video.gemini-omni-flash-extend@1",
        "x-roasos-runtime-status": "available",
        "x-roasos-launch-readiness": "ready",
        "x-roasos-exposure": "public"
      }
    },
    "/v1/video/h3-max-insert": {
      "post": {
        "operationId": "createVideoH3MaxInsert",
        "summary": "Run h3-max-insert (video)",
        "description": "Submit a video job to h3-max-insert. The request carries the real fields of this model; there is no hidden switch on a model parameter.\n\nSend `quote_only: true` to price the request for free, then send the same body with the returned `quote_id` to run it.\n\nAttach identity, product, or a first frame by resource id (`avatar_id`, `product_id`, `scene_id`) or by a workspace-owned `cdn.roasos.com` URL. Any other URL is `400 reference_media_not_workspace_owned`.\n\nPass a `webhook_url` and roasOS POSTs you the same job envelope `GET /v1/jobs/{id}` returns when the job finishes, signed with `X-RoasOS-Signature` and retried on failure. The URL must be HTTPS and reachable (`400 invalid_url` otherwise), and first-party keys cannot register webhooks (`400 webhook_url_not_supported_for_key`). See **Webhooks** above for verification. Polling `links.status` works too.",
        "tags": [
          "Models"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/idempotencyKey"
          },
          {
            "$ref": "#/components/parameters/usageProject"
          },
          {
            "$ref": "#/components/parameters/usageCostCenter"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/VideoH3MaxInsertRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "A quote (`quote_only: true`), or the terminal job when it finished inside `wait_timeout_seconds`. A quote spends nothing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModelQuoteResponse"
                }
              }
            }
          },
          "201": {
            "description": "Job created. Poll `links.status`, or pass a `webhook_url` to be told when it finishes.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobResponse"
                }
              }
            }
          },
          "202": {
            "description": "Job created and still running when `wait_timeout_seconds` elapsed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobResponse"
                }
              }
            }
          },
          "400": {
            "description": "invalid_request, unsupported_option, prompt_too_long, or reference_media_not_workspace_owned",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "insufficient_credits",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "The API key is not authorized for this model or credit ceiling",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "The idempotency key was reused with different request data",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "410": {
            "description": "quote_expired: the quote must be replaced under a new idempotency key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "rate_limit_exceeded, or a concurrency or budget ceiling",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "501": {
            "description": "not_implemented: this model endpoint is not live yet",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "The paid request could not be claimed safely",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-roasos-capability-id": "generation.video.h3-max-insert@1",
        "x-roasos-runtime-status": "available",
        "x-roasos-launch-readiness": "ready",
        "x-roasos-exposure": "public"
      }
    },
    "/v1/video/seedance-2.5-edit": {
      "post": {
        "operationId": "createVideoSeedance25Edit",
        "summary": "Run seedance-2.5-edit (video)",
        "description": "Submit a video job to seedance-2.5-edit. The request carries the real fields of this model; there is no hidden switch on a model parameter.\n\nSend `quote_only: true` to price the request for free, then send the same body with the returned `quote_id` to run it.\n\nAttach identity, product, or a first frame by resource id (`avatar_id`, `product_id`, `scene_id`) or by a workspace-owned `cdn.roasos.com` URL. Any other URL is `400 reference_media_not_workspace_owned`.\n\nPass a `webhook_url` and roasOS POSTs you the same job envelope `GET /v1/jobs/{id}` returns when the job finishes, signed with `X-RoasOS-Signature` and retried on failure. The URL must be HTTPS and reachable (`400 invalid_url` otherwise), and first-party keys cannot register webhooks (`400 webhook_url_not_supported_for_key`). See **Webhooks** above for verification. Polling `links.status` works too.",
        "tags": [
          "Models"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/idempotencyKey"
          },
          {
            "$ref": "#/components/parameters/usageProject"
          },
          {
            "$ref": "#/components/parameters/usageCostCenter"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/VideoSeedance25EditRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "A quote (`quote_only: true`), or the terminal job when it finished inside `wait_timeout_seconds`. A quote spends nothing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModelQuoteResponse"
                }
              }
            }
          },
          "201": {
            "description": "Job created. Poll `links.status`, or pass a `webhook_url` to be told when it finishes.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobResponse"
                }
              }
            }
          },
          "202": {
            "description": "Job created and still running when `wait_timeout_seconds` elapsed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobResponse"
                }
              }
            }
          },
          "400": {
            "description": "invalid_request, unsupported_option, prompt_too_long, or reference_media_not_workspace_owned",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "insufficient_credits",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "The API key is not authorized for this model or credit ceiling",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "The idempotency key was reused with different request data",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "410": {
            "description": "quote_expired: the quote must be replaced under a new idempotency key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "rate_limit_exceeded, or a concurrency or budget ceiling",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "501": {
            "description": "not_implemented: this model endpoint is not live yet",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "The paid request could not be claimed safely",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-roasos-capability-id": "generation.video.seedance-2.5-edit@1",
        "x-roasos-runtime-status": "available",
        "x-roasos-launch-readiness": "ready",
        "x-roasos-exposure": "public"
      }
    },
    "/v1/video/h3-max-style": {
      "post": {
        "operationId": "createVideoH3MaxStyle",
        "summary": "Run h3-max-style (video)",
        "description": "Submit a video job to h3-max-style. The request carries the real fields of this model; there is no hidden switch on a model parameter.\n\nSend `quote_only: true` to price the request for free, then send the same body with the returned `quote_id` to run it.\n\nAttach identity, product, or a first frame by resource id (`avatar_id`, `product_id`, `scene_id`) or by a workspace-owned `cdn.roasos.com` URL. Any other URL is `400 reference_media_not_workspace_owned`.\n\nPass a `webhook_url` and roasOS POSTs you the same job envelope `GET /v1/jobs/{id}` returns when the job finishes, signed with `X-RoasOS-Signature` and retried on failure. The URL must be HTTPS and reachable (`400 invalid_url` otherwise), and first-party keys cannot register webhooks (`400 webhook_url_not_supported_for_key`). See **Webhooks** above for verification. Polling `links.status` works too.",
        "tags": [
          "Models"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/idempotencyKey"
          },
          {
            "$ref": "#/components/parameters/usageProject"
          },
          {
            "$ref": "#/components/parameters/usageCostCenter"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/VideoH3MaxStyleRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "A quote (`quote_only: true`), or the terminal job when it finished inside `wait_timeout_seconds`. A quote spends nothing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModelQuoteResponse"
                }
              }
            }
          },
          "201": {
            "description": "Job created. Poll `links.status`, or pass a `webhook_url` to be told when it finishes.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobResponse"
                }
              }
            }
          },
          "202": {
            "description": "Job created and still running when `wait_timeout_seconds` elapsed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobResponse"
                }
              }
            }
          },
          "400": {
            "description": "invalid_request, unsupported_option, prompt_too_long, or reference_media_not_workspace_owned",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "insufficient_credits",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "The API key is not authorized for this model or credit ceiling",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "The idempotency key was reused with different request data",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "410": {
            "description": "quote_expired: the quote must be replaced under a new idempotency key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "rate_limit_exceeded, or a concurrency or budget ceiling",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "501": {
            "description": "not_implemented: this model endpoint is not live yet",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "The paid request could not be claimed safely",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-roasos-capability-id": "generation.video.h3-max-style@1",
        "x-roasos-runtime-status": "available",
        "x-roasos-launch-readiness": "ready",
        "x-roasos-exposure": "public"
      }
    },
    "/v1/video-edit/kling-4": {
      "post": {
        "operationId": "createVideoEditKling4",
        "summary": "Run kling-4 (video-edit)",
        "description": "Submit a video-edit job to kling-4. The request carries the real fields of this model; there is no hidden switch on a model parameter.\n\nSend `quote_only: true` to price the request for free, then send the same body with the returned `quote_id` to run it.\n\nAttach identity, product, or a first frame by resource id (`avatar_id`, `product_id`, `scene_id`) or by a workspace-owned `cdn.roasos.com` URL. Any other URL is `400 reference_media_not_workspace_owned`.\n\nPass a `webhook_url` and roasOS POSTs you the same job envelope `GET /v1/jobs/{id}` returns when the job finishes, signed with `X-RoasOS-Signature` and retried on failure. The URL must be HTTPS and reachable (`400 invalid_url` otherwise), and first-party keys cannot register webhooks (`400 webhook_url_not_supported_for_key`). See **Webhooks** above for verification. Polling `links.status` works too.",
        "tags": [
          "Models"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/idempotencyKey"
          },
          {
            "$ref": "#/components/parameters/usageProject"
          },
          {
            "$ref": "#/components/parameters/usageCostCenter"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/VideoEditKling4Request"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "A quote (`quote_only: true`), or the terminal job when it finished inside `wait_timeout_seconds`. A quote spends nothing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModelQuoteResponse"
                }
              }
            }
          },
          "201": {
            "description": "Job created. Poll `links.status`, or pass a `webhook_url` to be told when it finishes.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobResponse"
                }
              }
            }
          },
          "202": {
            "description": "Job created and still running when `wait_timeout_seconds` elapsed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobResponse"
                }
              }
            }
          },
          "400": {
            "description": "invalid_request, unsupported_option, prompt_too_long, or reference_media_not_workspace_owned",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "insufficient_credits",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "The API key is not authorized for this model or credit ceiling",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "The idempotency key was reused with different request data",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "410": {
            "description": "quote_expired: the quote must be replaced under a new idempotency key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "rate_limit_exceeded, or a concurrency or budget ceiling",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "501": {
            "description": "not_implemented: this model endpoint is not live yet",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "The paid request could not be claimed safely",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-roasos-capability-id": "generation.video-edit.kling-4@1",
        "x-roasos-runtime-status": "available",
        "x-roasos-launch-readiness": "ready",
        "x-roasos-exposure": "public"
      }
    },
    "/v1/video-edit/gemini-omni-flash": {
      "post": {
        "operationId": "createVideoEditGeminiOmniFlash",
        "summary": "Run gemini-omni-flash (video-edit)",
        "description": "Submit a video-edit job to gemini-omni-flash. The request carries the real fields of this model; there is no hidden switch on a model parameter.\n\nSend `quote_only: true` to price the request for free, then send the same body with the returned `quote_id` to run it.\n\nAttach identity, product, or a first frame by resource id (`avatar_id`, `product_id`, `scene_id`) or by a workspace-owned `cdn.roasos.com` URL. Any other URL is `400 reference_media_not_workspace_owned`.\n\nPass a `webhook_url` and roasOS POSTs you the same job envelope `GET /v1/jobs/{id}` returns when the job finishes, signed with `X-RoasOS-Signature` and retried on failure. The URL must be HTTPS and reachable (`400 invalid_url` otherwise), and first-party keys cannot register webhooks (`400 webhook_url_not_supported_for_key`). See **Webhooks** above for verification. Polling `links.status` works too.",
        "tags": [
          "Models"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/idempotencyKey"
          },
          {
            "$ref": "#/components/parameters/usageProject"
          },
          {
            "$ref": "#/components/parameters/usageCostCenter"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/VideoEditGeminiOmniFlashRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "A quote (`quote_only: true`), or the terminal job when it finished inside `wait_timeout_seconds`. A quote spends nothing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModelQuoteResponse"
                }
              }
            }
          },
          "201": {
            "description": "Job created. Poll `links.status`, or pass a `webhook_url` to be told when it finishes.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobResponse"
                }
              }
            }
          },
          "202": {
            "description": "Job created and still running when `wait_timeout_seconds` elapsed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobResponse"
                }
              }
            }
          },
          "400": {
            "description": "invalid_request, unsupported_option, prompt_too_long, or reference_media_not_workspace_owned",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "insufficient_credits",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "The API key is not authorized for this model or credit ceiling",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "The idempotency key was reused with different request data",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "410": {
            "description": "quote_expired: the quote must be replaced under a new idempotency key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "rate_limit_exceeded, or a concurrency or budget ceiling",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "501": {
            "description": "not_implemented: this model endpoint is not live yet",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "The paid request could not be claimed safely",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-roasos-capability-id": "generation.video-edit.gemini-omni-flash@1",
        "x-roasos-runtime-status": "available",
        "x-roasos-launch-readiness": "ready",
        "x-roasos-exposure": "public"
      }
    },
    "/v1/video-edit/h3-max-recast": {
      "post": {
        "operationId": "createVideoEditH3MaxRecast",
        "summary": "Run h3-max-recast (video-edit)",
        "description": "Submit a video-edit job to h3-max-recast. The request carries the real fields of this model; there is no hidden switch on a model parameter.\n\nSend `quote_only: true` to price the request for free, then send the same body with the returned `quote_id` to run it.\n\nAttach identity, product, or a first frame by resource id (`avatar_id`, `product_id`, `scene_id`) or by a workspace-owned `cdn.roasos.com` URL. Any other URL is `400 reference_media_not_workspace_owned`.\n\nPass a `webhook_url` and roasOS POSTs you the same job envelope `GET /v1/jobs/{id}` returns when the job finishes, signed with `X-RoasOS-Signature` and retried on failure. The URL must be HTTPS and reachable (`400 invalid_url` otherwise), and first-party keys cannot register webhooks (`400 webhook_url_not_supported_for_key`). See **Webhooks** above for verification. Polling `links.status` works too.",
        "tags": [
          "Models"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/idempotencyKey"
          },
          {
            "$ref": "#/components/parameters/usageProject"
          },
          {
            "$ref": "#/components/parameters/usageCostCenter"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/VideoEditH3MaxRecastRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "A quote (`quote_only: true`), or the terminal job when it finished inside `wait_timeout_seconds`. A quote spends nothing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModelQuoteResponse"
                }
              }
            }
          },
          "201": {
            "description": "Job created. Poll `links.status`, or pass a `webhook_url` to be told when it finishes.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobResponse"
                }
              }
            }
          },
          "202": {
            "description": "Job created and still running when `wait_timeout_seconds` elapsed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobResponse"
                }
              }
            }
          },
          "400": {
            "description": "invalid_request, unsupported_option, prompt_too_long, or reference_media_not_workspace_owned",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "insufficient_credits",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "The API key is not authorized for this model or credit ceiling",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "The idempotency key was reused with different request data",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "410": {
            "description": "quote_expired: the quote must be replaced under a new idempotency key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "rate_limit_exceeded, or a concurrency or budget ceiling",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "501": {
            "description": "not_implemented: this model endpoint is not live yet",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "The paid request could not be claimed safely",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-roasos-capability-id": "generation.video-edit.h3-max-recast@1",
        "x-roasos-runtime-status": "available",
        "x-roasos-launch-readiness": "ready",
        "x-roasos-exposure": "public"
      }
    },
    "/v1/video-edit/veed-fast": {
      "post": {
        "operationId": "createVideoEditVeedFast",
        "summary": "Run veed-fast (video-edit)",
        "description": "Submit a video-edit job to veed-fast. The request carries the real fields of this model; there is no hidden switch on a model parameter.\n\nSend `quote_only: true` to price the request for free, then send the same body with the returned `quote_id` to run it.\n\nAttach identity, product, or a first frame by resource id (`avatar_id`, `product_id`, `scene_id`) or by a workspace-owned `cdn.roasos.com` URL. Any other URL is `400 reference_media_not_workspace_owned`.\n\nPass a `webhook_url` and roasOS POSTs you the same job envelope `GET /v1/jobs/{id}` returns when the job finishes, signed with `X-RoasOS-Signature` and retried on failure. The URL must be HTTPS and reachable (`400 invalid_url` otherwise), and first-party keys cannot register webhooks (`400 webhook_url_not_supported_for_key`). See **Webhooks** above for verification. Polling `links.status` works too.",
        "tags": [
          "Models"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/idempotencyKey"
          },
          {
            "$ref": "#/components/parameters/usageProject"
          },
          {
            "$ref": "#/components/parameters/usageCostCenter"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/VideoEditVeedFastRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "A quote (`quote_only: true`), or the terminal job when it finished inside `wait_timeout_seconds`. A quote spends nothing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModelQuoteResponse"
                }
              }
            }
          },
          "201": {
            "description": "Job created. Poll `links.status`, or pass a `webhook_url` to be told when it finishes.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobResponse"
                }
              }
            }
          },
          "202": {
            "description": "Job created and still running when `wait_timeout_seconds` elapsed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobResponse"
                }
              }
            }
          },
          "400": {
            "description": "invalid_request, unsupported_option, prompt_too_long, or reference_media_not_workspace_owned",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "insufficient_credits",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "The API key is not authorized for this model or credit ceiling",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "The idempotency key was reused with different request data",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "410": {
            "description": "quote_expired: the quote must be replaced under a new idempotency key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "rate_limit_exceeded, or a concurrency or budget ceiling",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "501": {
            "description": "not_implemented: this model endpoint is not live yet",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "The paid request could not be claimed safely",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-roasos-capability-id": "generation.video-edit.veed-fast@1",
        "x-roasos-runtime-status": "available",
        "x-roasos-launch-readiness": "ready",
        "x-roasos-exposure": "public"
      }
    },
    "/v1/video-edit/veed-standard": {
      "post": {
        "operationId": "createVideoEditVeedStandard",
        "summary": "Run veed-standard (video-edit)",
        "description": "Submit a video-edit job to veed-standard. The request carries the real fields of this model; there is no hidden switch on a model parameter.\n\nSend `quote_only: true` to price the request for free, then send the same body with the returned `quote_id` to run it.\n\nAttach identity, product, or a first frame by resource id (`avatar_id`, `product_id`, `scene_id`) or by a workspace-owned `cdn.roasos.com` URL. Any other URL is `400 reference_media_not_workspace_owned`.\n\nPass a `webhook_url` and roasOS POSTs you the same job envelope `GET /v1/jobs/{id}` returns when the job finishes, signed with `X-RoasOS-Signature` and retried on failure. The URL must be HTTPS and reachable (`400 invalid_url` otherwise), and first-party keys cannot register webhooks (`400 webhook_url_not_supported_for_key`). See **Webhooks** above for verification. Polling `links.status` works too.",
        "tags": [
          "Models"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/idempotencyKey"
          },
          {
            "$ref": "#/components/parameters/usageProject"
          },
          {
            "$ref": "#/components/parameters/usageCostCenter"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/VideoEditVeedStandardRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "A quote (`quote_only: true`), or the terminal job when it finished inside `wait_timeout_seconds`. A quote spends nothing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModelQuoteResponse"
                }
              }
            }
          },
          "201": {
            "description": "Job created. Poll `links.status`, or pass a `webhook_url` to be told when it finishes.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobResponse"
                }
              }
            }
          },
          "202": {
            "description": "Job created and still running when `wait_timeout_seconds` elapsed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobResponse"
                }
              }
            }
          },
          "400": {
            "description": "invalid_request, unsupported_option, prompt_too_long, or reference_media_not_workspace_owned",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "insufficient_credits",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "The API key is not authorized for this model or credit ceiling",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "The idempotency key was reused with different request data",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "410": {
            "description": "quote_expired: the quote must be replaced under a new idempotency key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "rate_limit_exceeded, or a concurrency or budget ceiling",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "501": {
            "description": "not_implemented: this model endpoint is not live yet",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "The paid request could not be claimed safely",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-roasos-capability-id": "generation.video-edit.veed-standard@1",
        "x-roasos-runtime-status": "available",
        "x-roasos-launch-readiness": "ready",
        "x-roasos-exposure": "public"
      }
    },
    "/v1/video-edit/bria": {
      "post": {
        "operationId": "createVideoEditBria",
        "summary": "Run bria (video-edit)",
        "description": "Submit a video-edit job to bria. The request carries the real fields of this model; there is no hidden switch on a model parameter.\n\nSend `quote_only: true` to price the request for free, then send the same body with the returned `quote_id` to run it.\n\nAttach identity, product, or a first frame by resource id (`avatar_id`, `product_id`, `scene_id`) or by a workspace-owned `cdn.roasos.com` URL. Any other URL is `400 reference_media_not_workspace_owned`.\n\nPass a `webhook_url` and roasOS POSTs you the same job envelope `GET /v1/jobs/{id}` returns when the job finishes, signed with `X-RoasOS-Signature` and retried on failure. The URL must be HTTPS and reachable (`400 invalid_url` otherwise), and first-party keys cannot register webhooks (`400 webhook_url_not_supported_for_key`). See **Webhooks** above for verification. Polling `links.status` works too.",
        "tags": [
          "Models"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/idempotencyKey"
          },
          {
            "$ref": "#/components/parameters/usageProject"
          },
          {
            "$ref": "#/components/parameters/usageCostCenter"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/VideoEditBriaRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "A quote (`quote_only: true`), or the terminal job when it finished inside `wait_timeout_seconds`. A quote spends nothing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModelQuoteResponse"
                }
              }
            }
          },
          "201": {
            "description": "Job created. Poll `links.status`, or pass a `webhook_url` to be told when it finishes.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobResponse"
                }
              }
            }
          },
          "202": {
            "description": "Job created and still running when `wait_timeout_seconds` elapsed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobResponse"
                }
              }
            }
          },
          "400": {
            "description": "invalid_request, unsupported_option, prompt_too_long, or reference_media_not_workspace_owned",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "insufficient_credits",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "The API key is not authorized for this model or credit ceiling",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "The idempotency key was reused with different request data",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "410": {
            "description": "quote_expired: the quote must be replaced under a new idempotency key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "rate_limit_exceeded, or a concurrency or budget ceiling",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "501": {
            "description": "not_implemented: this model endpoint is not live yet",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "The paid request could not be claimed safely",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-roasos-capability-id": "generation.video-edit.bria@1",
        "x-roasos-runtime-status": "available",
        "x-roasos-launch-readiness": "ready",
        "x-roasos-exposure": "public"
      }
    },
    "/v1/video-edit/topaz-video": {
      "post": {
        "operationId": "createVideoEditTopazVideo",
        "summary": "Run topaz-video (video-edit)",
        "description": "Submit a video-edit job to topaz-video. The request carries the real fields of this model; there is no hidden switch on a model parameter.\n\nSend `quote_only: true` to price the request for free, then send the same body with the returned `quote_id` to run it.\n\nAttach identity, product, or a first frame by resource id (`avatar_id`, `product_id`, `scene_id`) or by a workspace-owned `cdn.roasos.com` URL. Any other URL is `400 reference_media_not_workspace_owned`.\n\nPass a `webhook_url` and roasOS POSTs you the same job envelope `GET /v1/jobs/{id}` returns when the job finishes, signed with `X-RoasOS-Signature` and retried on failure. The URL must be HTTPS and reachable (`400 invalid_url` otherwise), and first-party keys cannot register webhooks (`400 webhook_url_not_supported_for_key`). See **Webhooks** above for verification. Polling `links.status` works too.",
        "tags": [
          "Models"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/idempotencyKey"
          },
          {
            "$ref": "#/components/parameters/usageProject"
          },
          {
            "$ref": "#/components/parameters/usageCostCenter"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/VideoEditTopazVideoRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "A quote (`quote_only: true`), or the terminal job when it finished inside `wait_timeout_seconds`. A quote spends nothing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModelQuoteResponse"
                }
              }
            }
          },
          "201": {
            "description": "Job created. Poll `links.status`, or pass a `webhook_url` to be told when it finishes.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobResponse"
                }
              }
            }
          },
          "202": {
            "description": "Job created and still running when `wait_timeout_seconds` elapsed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobResponse"
                }
              }
            }
          },
          "400": {
            "description": "invalid_request, unsupported_option, prompt_too_long, or reference_media_not_workspace_owned",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "insufficient_credits",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "The API key is not authorized for this model or credit ceiling",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "The idempotency key was reused with different request data",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "410": {
            "description": "quote_expired: the quote must be replaced under a new idempotency key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "rate_limit_exceeded, or a concurrency or budget ceiling",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "501": {
            "description": "not_implemented: this model endpoint is not live yet",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "The paid request could not be claimed safely",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-roasos-capability-id": "generation.video-edit.topaz-video@1",
        "x-roasos-runtime-status": "available",
        "x-roasos-launch-readiness": "ready",
        "x-roasos-exposure": "public"
      }
    },
    "/v1/video/kling-3-motion": {
      "post": {
        "operationId": "createVideoKling3Motion",
        "summary": "Run kling-3-motion (video)",
        "description": "Submit a video job to kling-3-motion. The request carries the real fields of this model; there is no hidden switch on a model parameter.\n\nSend `quote_only: true` to price the request for free, then send the same body with the returned `quote_id` to run it.\n\nAttach identity, product, or a first frame by resource id (`avatar_id`, `product_id`, `scene_id`) or by a workspace-owned `cdn.roasos.com` URL. Any other URL is `400 reference_media_not_workspace_owned`.\n\nPass a `webhook_url` and roasOS POSTs you the same job envelope `GET /v1/jobs/{id}` returns when the job finishes, signed with `X-RoasOS-Signature` and retried on failure. The URL must be HTTPS and reachable (`400 invalid_url` otherwise), and first-party keys cannot register webhooks (`400 webhook_url_not_supported_for_key`). See **Webhooks** above for verification. Polling `links.status` works too.",
        "tags": [
          "Models"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/idempotencyKey"
          },
          {
            "$ref": "#/components/parameters/usageProject"
          },
          {
            "$ref": "#/components/parameters/usageCostCenter"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/VideoKling3MotionRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "A quote (`quote_only: true`), or the terminal job when it finished inside `wait_timeout_seconds`. A quote spends nothing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModelQuoteResponse"
                }
              }
            }
          },
          "201": {
            "description": "Job created. Poll `links.status`, or pass a `webhook_url` to be told when it finishes.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobResponse"
                }
              }
            }
          },
          "202": {
            "description": "Job created and still running when `wait_timeout_seconds` elapsed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobResponse"
                }
              }
            }
          },
          "400": {
            "description": "invalid_request, unsupported_option, prompt_too_long, or reference_media_not_workspace_owned",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "insufficient_credits",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "The API key is not authorized for this model or credit ceiling",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "The idempotency key was reused with different request data",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "410": {
            "description": "quote_expired: the quote must be replaced under a new idempotency key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "rate_limit_exceeded, or a concurrency or budget ceiling",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "501": {
            "description": "not_implemented: this model endpoint is not live yet",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "The paid request could not be claimed safely",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-roasos-capability-id": "generation.video.kling-3-motion@1",
        "x-roasos-runtime-status": "available",
        "x-roasos-launch-readiness": "ready",
        "x-roasos-exposure": "public"
      }
    },
    "/v1/ugc/kling-4": {
      "post": {
        "operationId": "createUgcKling4",
        "summary": "Run kling-4 (ugc)",
        "description": "Submit a ugc job to kling-4. The request carries the real fields of this model; there is no hidden switch on a model parameter.\n\nSend `quote_only: true` to price the request for free, then send the same body with the returned `quote_id` to run it.\n\nAttach identity, product, or a first frame by resource id (`avatar_id`, `product_id`, `scene_id`) or by a workspace-owned `cdn.roasos.com` URL. Any other URL is `400 reference_media_not_workspace_owned`.\n\nPass a `webhook_url` and roasOS POSTs you the same job envelope `GET /v1/jobs/{id}` returns when the job finishes, signed with `X-RoasOS-Signature` and retried on failure. The URL must be HTTPS and reachable (`400 invalid_url` otherwise), and first-party keys cannot register webhooks (`400 webhook_url_not_supported_for_key`). See **Webhooks** above for verification. Polling `links.status` works too.",
        "tags": [
          "Models"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/idempotencyKey"
          },
          {
            "$ref": "#/components/parameters/usageProject"
          },
          {
            "$ref": "#/components/parameters/usageCostCenter"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UgcKling4Request"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "A quote (`quote_only: true`), or the terminal job when it finished inside `wait_timeout_seconds`. A quote spends nothing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModelQuoteResponse"
                }
              }
            }
          },
          "201": {
            "description": "Job created. Poll `links.status`, or pass a `webhook_url` to be told when it finishes.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobResponse"
                }
              }
            }
          },
          "202": {
            "description": "Job created and still running when `wait_timeout_seconds` elapsed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobResponse"
                }
              }
            }
          },
          "400": {
            "description": "invalid_request, unsupported_option, prompt_too_long, or reference_media_not_workspace_owned",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "insufficient_credits",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "The API key is not authorized for this model or credit ceiling",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "The idempotency key was reused with different request data",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "410": {
            "description": "quote_expired: the quote must be replaced under a new idempotency key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "rate_limit_exceeded, or a concurrency or budget ceiling",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "501": {
            "description": "not_implemented: this model endpoint is not live yet",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "The paid request could not be claimed safely",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-roasos-capability-id": "generation.ugc.kling-4@1",
        "x-roasos-runtime-status": "available",
        "x-roasos-launch-readiness": "ready",
        "x-roasos-exposure": "public"
      }
    },
    "/v1/ugc/seedance-2.5": {
      "post": {
        "operationId": "createUgcSeedance25",
        "summary": "Run seedance-2.5 (ugc)",
        "description": "Submit a ugc job to seedance-2.5. The request carries the real fields of this model; there is no hidden switch on a model parameter.\n\nSend `quote_only: true` to price the request for free, then send the same body with the returned `quote_id` to run it.\n\nAttach identity, product, or a first frame by resource id (`avatar_id`, `product_id`, `scene_id`) or by a workspace-owned `cdn.roasos.com` URL. Any other URL is `400 reference_media_not_workspace_owned`.\n\nPass a `webhook_url` and roasOS POSTs you the same job envelope `GET /v1/jobs/{id}` returns when the job finishes, signed with `X-RoasOS-Signature` and retried on failure. The URL must be HTTPS and reachable (`400 invalid_url` otherwise), and first-party keys cannot register webhooks (`400 webhook_url_not_supported_for_key`). See **Webhooks** above for verification. Polling `links.status` works too.",
        "tags": [
          "Models"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/idempotencyKey"
          },
          {
            "$ref": "#/components/parameters/usageProject"
          },
          {
            "$ref": "#/components/parameters/usageCostCenter"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UgcSeedance25Request"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "A quote (`quote_only: true`), or the terminal job when it finished inside `wait_timeout_seconds`. A quote spends nothing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModelQuoteResponse"
                }
              }
            }
          },
          "201": {
            "description": "Job created. Poll `links.status`, or pass a `webhook_url` to be told when it finishes.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobResponse"
                }
              }
            }
          },
          "202": {
            "description": "Job created and still running when `wait_timeout_seconds` elapsed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobResponse"
                }
              }
            }
          },
          "400": {
            "description": "invalid_request, unsupported_option, prompt_too_long, or reference_media_not_workspace_owned",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "insufficient_credits",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "The API key is not authorized for this model or credit ceiling",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "The idempotency key was reused with different request data",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "410": {
            "description": "quote_expired: the quote must be replaced under a new idempotency key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "rate_limit_exceeded, or a concurrency or budget ceiling",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "501": {
            "description": "not_implemented: this model endpoint is not live yet",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "The paid request could not be claimed safely",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-roasos-capability-id": "generation.ugc.seedance-2.5@1",
        "x-roasos-runtime-status": "available",
        "x-roasos-launch-readiness": "ready",
        "x-roasos-exposure": "public"
      }
    },
    "/v1/ugc/seedance-2": {
      "post": {
        "operationId": "createUgcSeedance2",
        "summary": "Run seedance-2 (ugc)",
        "description": "Submit a ugc job to seedance-2. The request carries the real fields of this model; there is no hidden switch on a model parameter.\n\nSend `quote_only: true` to price the request for free, then send the same body with the returned `quote_id` to run it.\n\nAttach identity, product, or a first frame by resource id (`avatar_id`, `product_id`, `scene_id`) or by a workspace-owned `cdn.roasos.com` URL. Any other URL is `400 reference_media_not_workspace_owned`.\n\nPass a `webhook_url` and roasOS POSTs you the same job envelope `GET /v1/jobs/{id}` returns when the job finishes, signed with `X-RoasOS-Signature` and retried on failure. The URL must be HTTPS and reachable (`400 invalid_url` otherwise), and first-party keys cannot register webhooks (`400 webhook_url_not_supported_for_key`). See **Webhooks** above for verification. Polling `links.status` works too.",
        "tags": [
          "Models"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/idempotencyKey"
          },
          {
            "$ref": "#/components/parameters/usageProject"
          },
          {
            "$ref": "#/components/parameters/usageCostCenter"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UgcSeedance2Request"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "A quote (`quote_only: true`), or the terminal job when it finished inside `wait_timeout_seconds`. A quote spends nothing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModelQuoteResponse"
                }
              }
            }
          },
          "201": {
            "description": "Job created. Poll `links.status`, or pass a `webhook_url` to be told when it finishes.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobResponse"
                }
              }
            }
          },
          "202": {
            "description": "Job created and still running when `wait_timeout_seconds` elapsed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobResponse"
                }
              }
            }
          },
          "400": {
            "description": "invalid_request, unsupported_option, prompt_too_long, or reference_media_not_workspace_owned",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "insufficient_credits",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "The API key is not authorized for this model or credit ceiling",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "The idempotency key was reused with different request data",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "410": {
            "description": "quote_expired: the quote must be replaced under a new idempotency key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "rate_limit_exceeded, or a concurrency or budget ceiling",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "501": {
            "description": "not_implemented: this model endpoint is not live yet",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "The paid request could not be claimed safely",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-roasos-capability-id": "generation.ugc.seedance-2@1",
        "x-roasos-runtime-status": "available",
        "x-roasos-launch-readiness": "ready",
        "x-roasos-exposure": "public"
      }
    },
    "/v1/ugc/seedance-2-pro": {
      "post": {
        "operationId": "createUgcSeedance2Pro",
        "summary": "Run seedance-2-pro (ugc)",
        "description": "Submit a ugc job to seedance-2-pro. The request carries the real fields of this model; there is no hidden switch on a model parameter.\n\nSend `quote_only: true` to price the request for free, then send the same body with the returned `quote_id` to run it.\n\nAttach identity, product, or a first frame by resource id (`avatar_id`, `product_id`, `scene_id`) or by a workspace-owned `cdn.roasos.com` URL. Any other URL is `400 reference_media_not_workspace_owned`.\n\nPass a `webhook_url` and roasOS POSTs you the same job envelope `GET /v1/jobs/{id}` returns when the job finishes, signed with `X-RoasOS-Signature` and retried on failure. The URL must be HTTPS and reachable (`400 invalid_url` otherwise), and first-party keys cannot register webhooks (`400 webhook_url_not_supported_for_key`). See **Webhooks** above for verification. Polling `links.status` works too.",
        "tags": [
          "Models"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/idempotencyKey"
          },
          {
            "$ref": "#/components/parameters/usageProject"
          },
          {
            "$ref": "#/components/parameters/usageCostCenter"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UgcSeedance2ProRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "A quote (`quote_only: true`), or the terminal job when it finished inside `wait_timeout_seconds`. A quote spends nothing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModelQuoteResponse"
                }
              }
            }
          },
          "201": {
            "description": "Job created. Poll `links.status`, or pass a `webhook_url` to be told when it finishes.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobResponse"
                }
              }
            }
          },
          "202": {
            "description": "Job created and still running when `wait_timeout_seconds` elapsed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobResponse"
                }
              }
            }
          },
          "400": {
            "description": "invalid_request, unsupported_option, prompt_too_long, or reference_media_not_workspace_owned",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "insufficient_credits",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "The API key is not authorized for this model or credit ceiling",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "The idempotency key was reused with different request data",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "410": {
            "description": "quote_expired: the quote must be replaced under a new idempotency key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "rate_limit_exceeded, or a concurrency or budget ceiling",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "501": {
            "description": "not_implemented: this model endpoint is not live yet",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "The paid request could not be claimed safely",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-roasos-capability-id": "generation.ugc.seedance-2-pro@1",
        "x-roasos-runtime-status": "available",
        "x-roasos-launch-readiness": "ready",
        "x-roasos-exposure": "public"
      }
    },
    "/v1/ugc/gemini-omni-flash": {
      "post": {
        "operationId": "createUgcGeminiOmniFlash",
        "summary": "Run gemini-omni-flash (ugc)",
        "description": "Submit a ugc job to gemini-omni-flash. The request carries the real fields of this model; there is no hidden switch on a model parameter.\n\nSend `quote_only: true` to price the request for free, then send the same body with the returned `quote_id` to run it.\n\nAttach identity, product, or a first frame by resource id (`avatar_id`, `product_id`, `scene_id`) or by a workspace-owned `cdn.roasos.com` URL. Any other URL is `400 reference_media_not_workspace_owned`.\n\nPass a `webhook_url` and roasOS POSTs you the same job envelope `GET /v1/jobs/{id}` returns when the job finishes, signed with `X-RoasOS-Signature` and retried on failure. The URL must be HTTPS and reachable (`400 invalid_url` otherwise), and first-party keys cannot register webhooks (`400 webhook_url_not_supported_for_key`). See **Webhooks** above for verification. Polling `links.status` works too.",
        "tags": [
          "Models"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/idempotencyKey"
          },
          {
            "$ref": "#/components/parameters/usageProject"
          },
          {
            "$ref": "#/components/parameters/usageCostCenter"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UgcGeminiOmniFlashRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "A quote (`quote_only: true`), or the terminal job when it finished inside `wait_timeout_seconds`. A quote spends nothing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModelQuoteResponse"
                }
              }
            }
          },
          "201": {
            "description": "Job created. Poll `links.status`, or pass a `webhook_url` to be told when it finishes.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobResponse"
                }
              }
            }
          },
          "202": {
            "description": "Job created and still running when `wait_timeout_seconds` elapsed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobResponse"
                }
              }
            }
          },
          "400": {
            "description": "invalid_request, unsupported_option, prompt_too_long, or reference_media_not_workspace_owned",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "insufficient_credits",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "The API key is not authorized for this model or credit ceiling",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "The idempotency key was reused with different request data",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "410": {
            "description": "quote_expired: the quote must be replaced under a new idempotency key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "rate_limit_exceeded, or a concurrency or budget ceiling",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "501": {
            "description": "not_implemented: this model endpoint is not live yet",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "The paid request could not be claimed safely",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-roasos-capability-id": "generation.ugc.gemini-omni-flash@1",
        "x-roasos-runtime-status": "available",
        "x-roasos-launch-readiness": "ready",
        "x-roasos-exposure": "public"
      }
    },
    "/v1/ugc/wan-2.7": {
      "post": {
        "operationId": "createUgcWan27",
        "summary": "Run wan-2.7 (ugc)",
        "description": "Submit a ugc job to wan-2.7. The request carries the real fields of this model; there is no hidden switch on a model parameter.\n\nSend `quote_only: true` to price the request for free, then send the same body with the returned `quote_id` to run it.\n\nAttach identity, product, or a first frame by resource id (`avatar_id`, `product_id`, `scene_id`) or by a workspace-owned `cdn.roasos.com` URL. Any other URL is `400 reference_media_not_workspace_owned`.\n\nPass a `webhook_url` and roasOS POSTs you the same job envelope `GET /v1/jobs/{id}` returns when the job finishes, signed with `X-RoasOS-Signature` and retried on failure. The URL must be HTTPS and reachable (`400 invalid_url` otherwise), and first-party keys cannot register webhooks (`400 webhook_url_not_supported_for_key`). See **Webhooks** above for verification. Polling `links.status` works too.",
        "tags": [
          "Models"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/idempotencyKey"
          },
          {
            "$ref": "#/components/parameters/usageProject"
          },
          {
            "$ref": "#/components/parameters/usageCostCenter"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UgcWan27Request"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "A quote (`quote_only: true`), or the terminal job when it finished inside `wait_timeout_seconds`. A quote spends nothing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModelQuoteResponse"
                }
              }
            }
          },
          "201": {
            "description": "Job created. Poll `links.status`, or pass a `webhook_url` to be told when it finishes.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobResponse"
                }
              }
            }
          },
          "202": {
            "description": "Job created and still running when `wait_timeout_seconds` elapsed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobResponse"
                }
              }
            }
          },
          "400": {
            "description": "invalid_request, unsupported_option, prompt_too_long, or reference_media_not_workspace_owned",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "insufficient_credits",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "The API key is not authorized for this model or credit ceiling",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "The idempotency key was reused with different request data",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "410": {
            "description": "quote_expired: the quote must be replaced under a new idempotency key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "rate_limit_exceeded, or a concurrency or budget ceiling",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "501": {
            "description": "not_implemented: this model endpoint is not live yet",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "The paid request could not be claimed safely",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-roasos-capability-id": "generation.ugc.wan-2.7@1",
        "x-roasos-runtime-status": "available",
        "x-roasos-launch-readiness": "ready",
        "x-roasos-exposure": "public"
      }
    },
    "/v1/ugc/veo-3.1": {
      "post": {
        "operationId": "createUgcVeo31",
        "summary": "Run veo-3.1 (ugc)",
        "description": "Submit a ugc job to veo-3.1. The request carries the real fields of this model; there is no hidden switch on a model parameter.\n\nSend `quote_only: true` to price the request for free, then send the same body with the returned `quote_id` to run it.\n\nAttach identity, product, or a first frame by resource id (`avatar_id`, `product_id`, `scene_id`) or by a workspace-owned `cdn.roasos.com` URL. Any other URL is `400 reference_media_not_workspace_owned`.\n\nPass a `webhook_url` and roasOS POSTs you the same job envelope `GET /v1/jobs/{id}` returns when the job finishes, signed with `X-RoasOS-Signature` and retried on failure. The URL must be HTTPS and reachable (`400 invalid_url` otherwise), and first-party keys cannot register webhooks (`400 webhook_url_not_supported_for_key`). See **Webhooks** above for verification. Polling `links.status` works too.",
        "tags": [
          "Models"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/idempotencyKey"
          },
          {
            "$ref": "#/components/parameters/usageProject"
          },
          {
            "$ref": "#/components/parameters/usageCostCenter"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UgcVeo31Request"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "A quote (`quote_only: true`), or the terminal job when it finished inside `wait_timeout_seconds`. A quote spends nothing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModelQuoteResponse"
                }
              }
            }
          },
          "201": {
            "description": "Job created. Poll `links.status`, or pass a `webhook_url` to be told when it finishes.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobResponse"
                }
              }
            }
          },
          "202": {
            "description": "Job created and still running when `wait_timeout_seconds` elapsed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobResponse"
                }
              }
            }
          },
          "400": {
            "description": "invalid_request, unsupported_option, prompt_too_long, or reference_media_not_workspace_owned",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "insufficient_credits",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "The API key is not authorized for this model or credit ceiling",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "The idempotency key was reused with different request data",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "410": {
            "description": "quote_expired: the quote must be replaced under a new idempotency key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "rate_limit_exceeded, or a concurrency or budget ceiling",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "501": {
            "description": "not_implemented: this model endpoint is not live yet",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "The paid request could not be claimed safely",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-roasos-capability-id": "generation.ugc.veo-3.1@1",
        "x-roasos-runtime-status": "available",
        "x-roasos-launch-readiness": "ready",
        "x-roasos-exposure": "public"
      }
    },
    "/v1/ugc/grok-imagine": {
      "post": {
        "operationId": "createUgcGrokImagine",
        "summary": "Run grok-imagine (ugc)",
        "description": "Submit a ugc job to grok-imagine. The request carries the real fields of this model; there is no hidden switch on a model parameter.\n\nSend `quote_only: true` to price the request for free, then send the same body with the returned `quote_id` to run it.\n\nAttach identity, product, or a first frame by resource id (`avatar_id`, `product_id`, `scene_id`) or by a workspace-owned `cdn.roasos.com` URL. Any other URL is `400 reference_media_not_workspace_owned`.\n\nPass a `webhook_url` and roasOS POSTs you the same job envelope `GET /v1/jobs/{id}` returns when the job finishes, signed with `X-RoasOS-Signature` and retried on failure. The URL must be HTTPS and reachable (`400 invalid_url` otherwise), and first-party keys cannot register webhooks (`400 webhook_url_not_supported_for_key`). See **Webhooks** above for verification. Polling `links.status` works too.",
        "tags": [
          "Models"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/idempotencyKey"
          },
          {
            "$ref": "#/components/parameters/usageProject"
          },
          {
            "$ref": "#/components/parameters/usageCostCenter"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UgcGrokImagineRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "A quote (`quote_only: true`), or the terminal job when it finished inside `wait_timeout_seconds`. A quote spends nothing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModelQuoteResponse"
                }
              }
            }
          },
          "201": {
            "description": "Job created. Poll `links.status`, or pass a `webhook_url` to be told when it finishes.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobResponse"
                }
              }
            }
          },
          "202": {
            "description": "Job created and still running when `wait_timeout_seconds` elapsed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobResponse"
                }
              }
            }
          },
          "400": {
            "description": "invalid_request, unsupported_option, prompt_too_long, or reference_media_not_workspace_owned",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "insufficient_credits",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "The API key is not authorized for this model or credit ceiling",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "The idempotency key was reused with different request data",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "410": {
            "description": "quote_expired: the quote must be replaced under a new idempotency key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "rate_limit_exceeded, or a concurrency or budget ceiling",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "501": {
            "description": "not_implemented: this model endpoint is not live yet",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "The paid request could not be claimed safely",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-roasos-capability-id": "generation.ugc.grok-imagine@1",
        "x-roasos-runtime-status": "available",
        "x-roasos-launch-readiness": "ready",
        "x-roasos-exposure": "public"
      }
    },
    "/v1/lipsync/ltx-lipsync": {
      "post": {
        "operationId": "createLipsyncLtxLipsync",
        "summary": "Run ltx-lipsync (lipsync)",
        "description": "Submit a lipsync job to ltx-lipsync. The request carries the real fields of this model; there is no hidden switch on a model parameter.\n\nSend `quote_only: true` to price the request for free, then send the same body with the returned `quote_id` to run it.\n\nAttach identity, product, or a first frame by resource id (`avatar_id`, `product_id`, `scene_id`) or by a workspace-owned `cdn.roasos.com` URL. Any other URL is `400 reference_media_not_workspace_owned`.\n\nPass a `webhook_url` and roasOS POSTs you the same job envelope `GET /v1/jobs/{id}` returns when the job finishes, signed with `X-RoasOS-Signature` and retried on failure. The URL must be HTTPS and reachable (`400 invalid_url` otherwise), and first-party keys cannot register webhooks (`400 webhook_url_not_supported_for_key`). See **Webhooks** above for verification. Polling `links.status` works too.",
        "tags": [
          "Models"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/idempotencyKey"
          },
          {
            "$ref": "#/components/parameters/usageProject"
          },
          {
            "$ref": "#/components/parameters/usageCostCenter"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LipsyncLtxLipsyncRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "A quote (`quote_only: true`), or the terminal job when it finished inside `wait_timeout_seconds`. A quote spends nothing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModelQuoteResponse"
                }
              }
            }
          },
          "201": {
            "description": "Job created. Poll `links.status`, or pass a `webhook_url` to be told when it finishes.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobResponse"
                }
              }
            }
          },
          "202": {
            "description": "Job created and still running when `wait_timeout_seconds` elapsed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobResponse"
                }
              }
            }
          },
          "400": {
            "description": "invalid_request, unsupported_option, prompt_too_long, or reference_media_not_workspace_owned",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "insufficient_credits",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "The API key is not authorized for this model or credit ceiling",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "The idempotency key was reused with different request data",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "410": {
            "description": "quote_expired: the quote must be replaced under a new idempotency key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "rate_limit_exceeded, or a concurrency or budget ceiling",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "501": {
            "description": "not_implemented: this model endpoint is not live yet",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "The paid request could not be claimed safely",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-roasos-capability-id": "generation.lipsync.ltx-lipsync@1",
        "x-roasos-runtime-status": "available",
        "x-roasos-launch-readiness": "ready",
        "x-roasos-exposure": "public"
      }
    },
    "/v1/lipsync/h3-max-lipsync": {
      "post": {
        "operationId": "createLipsyncH3MaxLipsync",
        "summary": "Run h3-max-lipsync (lipsync)",
        "description": "Submit a lipsync job to h3-max-lipsync. The request carries the real fields of this model; there is no hidden switch on a model parameter.\n\nSend `quote_only: true` to price the request for free, then send the same body with the returned `quote_id` to run it.\n\nAttach identity, product, or a first frame by resource id (`avatar_id`, `product_id`, `scene_id`) or by a workspace-owned `cdn.roasos.com` URL. Any other URL is `400 reference_media_not_workspace_owned`.\n\nPass a `webhook_url` and roasOS POSTs you the same job envelope `GET /v1/jobs/{id}` returns when the job finishes, signed with `X-RoasOS-Signature` and retried on failure. The URL must be HTTPS and reachable (`400 invalid_url` otherwise), and first-party keys cannot register webhooks (`400 webhook_url_not_supported_for_key`). See **Webhooks** above for verification. Polling `links.status` works too.",
        "tags": [
          "Models"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/idempotencyKey"
          },
          {
            "$ref": "#/components/parameters/usageProject"
          },
          {
            "$ref": "#/components/parameters/usageCostCenter"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LipsyncH3MaxLipsyncRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "A quote (`quote_only: true`), or the terminal job when it finished inside `wait_timeout_seconds`. A quote spends nothing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModelQuoteResponse"
                }
              }
            }
          },
          "201": {
            "description": "Job created. Poll `links.status`, or pass a `webhook_url` to be told when it finishes.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobResponse"
                }
              }
            }
          },
          "202": {
            "description": "Job created and still running when `wait_timeout_seconds` elapsed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobResponse"
                }
              }
            }
          },
          "400": {
            "description": "invalid_request, unsupported_option, prompt_too_long, or reference_media_not_workspace_owned",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "insufficient_credits",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "The API key is not authorized for this model or credit ceiling",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "The idempotency key was reused with different request data",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "410": {
            "description": "quote_expired: the quote must be replaced under a new idempotency key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "rate_limit_exceeded, or a concurrency or budget ceiling",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "501": {
            "description": "not_implemented: this model endpoint is not live yet",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "The paid request could not be claimed safely",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-roasos-capability-id": "generation.lipsync.h3-max-lipsync@1",
        "x-roasos-runtime-status": "available",
        "x-roasos-launch-readiness": "ready",
        "x-roasos-exposure": "public"
      }
    },
    "/v1/lipsync/sync-lipsync-v3": {
      "post": {
        "operationId": "createLipsyncSyncLipsyncV3",
        "summary": "Run sync-lipsync-v3 (lipsync)",
        "description": "Submit a lipsync job to sync-lipsync-v3. The request carries the real fields of this model; there is no hidden switch on a model parameter.\n\nSend `quote_only: true` to price the request for free, then send the same body with the returned `quote_id` to run it.\n\nAttach identity, product, or a first frame by resource id (`avatar_id`, `product_id`, `scene_id`) or by a workspace-owned `cdn.roasos.com` URL. Any other URL is `400 reference_media_not_workspace_owned`.\n\nPass a `webhook_url` and roasOS POSTs you the same job envelope `GET /v1/jobs/{id}` returns when the job finishes, signed with `X-RoasOS-Signature` and retried on failure. The URL must be HTTPS and reachable (`400 invalid_url` otherwise), and first-party keys cannot register webhooks (`400 webhook_url_not_supported_for_key`). See **Webhooks** above for verification. Polling `links.status` works too.",
        "tags": [
          "Models"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/idempotencyKey"
          },
          {
            "$ref": "#/components/parameters/usageProject"
          },
          {
            "$ref": "#/components/parameters/usageCostCenter"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LipsyncSyncLipsyncV3Request"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "A quote (`quote_only: true`), or the terminal job when it finished inside `wait_timeout_seconds`. A quote spends nothing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModelQuoteResponse"
                }
              }
            }
          },
          "201": {
            "description": "Job created. Poll `links.status`, or pass a `webhook_url` to be told when it finishes.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobResponse"
                }
              }
            }
          },
          "202": {
            "description": "Job created and still running when `wait_timeout_seconds` elapsed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobResponse"
                }
              }
            }
          },
          "400": {
            "description": "invalid_request, unsupported_option, prompt_too_long, or reference_media_not_workspace_owned",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "insufficient_credits",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "The API key is not authorized for this model or credit ceiling",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "The idempotency key was reused with different request data",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "410": {
            "description": "quote_expired: the quote must be replaced under a new idempotency key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "rate_limit_exceeded, or a concurrency or budget ceiling",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "501": {
            "description": "not_implemented: this model endpoint is not live yet",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "The paid request could not be claimed safely",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-roasos-capability-id": "generation.lipsync.sync-lipsync-v3@1",
        "x-roasos-runtime-status": "available",
        "x-roasos-launch-readiness": "ready",
        "x-roasos-exposure": "public"
      }
    },
    "/v1/lipsync/veed-lipsync-v2": {
      "post": {
        "operationId": "createLipsyncVeedLipsyncV2",
        "summary": "Run veed-lipsync-v2 (lipsync)",
        "description": "Submit a lipsync job to veed-lipsync-v2. The request carries the real fields of this model; there is no hidden switch on a model parameter.\n\nSend `quote_only: true` to price the request for free, then send the same body with the returned `quote_id` to run it.\n\nAttach identity, product, or a first frame by resource id (`avatar_id`, `product_id`, `scene_id`) or by a workspace-owned `cdn.roasos.com` URL. Any other URL is `400 reference_media_not_workspace_owned`.\n\nPass a `webhook_url` and roasOS POSTs you the same job envelope `GET /v1/jobs/{id}` returns when the job finishes, signed with `X-RoasOS-Signature` and retried on failure. The URL must be HTTPS and reachable (`400 invalid_url` otherwise), and first-party keys cannot register webhooks (`400 webhook_url_not_supported_for_key`). See **Webhooks** above for verification. Polling `links.status` works too.",
        "tags": [
          "Models"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/idempotencyKey"
          },
          {
            "$ref": "#/components/parameters/usageProject"
          },
          {
            "$ref": "#/components/parameters/usageCostCenter"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LipsyncVeedLipsyncV2Request"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "A quote (`quote_only: true`), or the terminal job when it finished inside `wait_timeout_seconds`. A quote spends nothing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModelQuoteResponse"
                }
              }
            }
          },
          "201": {
            "description": "Job created. Poll `links.status`, or pass a `webhook_url` to be told when it finishes.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobResponse"
                }
              }
            }
          },
          "202": {
            "description": "Job created and still running when `wait_timeout_seconds` elapsed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobResponse"
                }
              }
            }
          },
          "400": {
            "description": "invalid_request, unsupported_option, prompt_too_long, or reference_media_not_workspace_owned",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "insufficient_credits",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "The API key is not authorized for this model or credit ceiling",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "The idempotency key was reused with different request data",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "410": {
            "description": "quote_expired: the quote must be replaced under a new idempotency key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "rate_limit_exceeded, or a concurrency or budget ceiling",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "501": {
            "description": "not_implemented: this model endpoint is not live yet",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "The paid request could not be claimed safely",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-roasos-capability-id": "generation.lipsync.veed-lipsync-v2@1",
        "x-roasos-runtime-status": "available",
        "x-roasos-launch-readiness": "ready",
        "x-roasos-exposure": "public"
      }
    },
    "/v1/lipsync/kling-avatar-v2-pro": {
      "post": {
        "operationId": "createLipsyncKlingAvatarV2Pro",
        "summary": "Run kling-avatar-v2-pro (lipsync)",
        "description": "Submit a lipsync job to kling-avatar-v2-pro. The request carries the real fields of this model; there is no hidden switch on a model parameter.\n\nSend `quote_only: true` to price the request for free, then send the same body with the returned `quote_id` to run it.\n\nAttach identity, product, or a first frame by resource id (`avatar_id`, `product_id`, `scene_id`) or by a workspace-owned `cdn.roasos.com` URL. Any other URL is `400 reference_media_not_workspace_owned`.\n\nPass a `webhook_url` and roasOS POSTs you the same job envelope `GET /v1/jobs/{id}` returns when the job finishes, signed with `X-RoasOS-Signature` and retried on failure. The URL must be HTTPS and reachable (`400 invalid_url` otherwise), and first-party keys cannot register webhooks (`400 webhook_url_not_supported_for_key`). See **Webhooks** above for verification. Polling `links.status` works too.",
        "tags": [
          "Models"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/idempotencyKey"
          },
          {
            "$ref": "#/components/parameters/usageProject"
          },
          {
            "$ref": "#/components/parameters/usageCostCenter"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LipsyncKlingAvatarV2ProRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "A quote (`quote_only: true`), or the terminal job when it finished inside `wait_timeout_seconds`. A quote spends nothing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModelQuoteResponse"
                }
              }
            }
          },
          "201": {
            "description": "Job created. Poll `links.status`, or pass a `webhook_url` to be told when it finishes.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobResponse"
                }
              }
            }
          },
          "202": {
            "description": "Job created and still running when `wait_timeout_seconds` elapsed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobResponse"
                }
              }
            }
          },
          "400": {
            "description": "invalid_request, unsupported_option, prompt_too_long, or reference_media_not_workspace_owned",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "insufficient_credits",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "The API key is not authorized for this model or credit ceiling",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "The idempotency key was reused with different request data",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "410": {
            "description": "quote_expired: the quote must be replaced under a new idempotency key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "rate_limit_exceeded, or a concurrency or budget ceiling",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "501": {
            "description": "not_implemented: this model endpoint is not live yet",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "The paid request could not be claimed safely",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-roasos-capability-id": "generation.lipsync.kling-avatar-v2-pro@1",
        "x-roasos-runtime-status": "available",
        "x-roasos-launch-readiness": "ready",
        "x-roasos-exposure": "public"
      }
    },
    "/v1/lipsync/heygen-avatar-4": {
      "post": {
        "operationId": "createLipsyncHeygenAvatar4",
        "summary": "Run heygen-avatar-4 (lipsync)",
        "description": "Submit a lipsync job to heygen-avatar-4. The request carries the real fields of this model; there is no hidden switch on a model parameter.\n\nSend `quote_only: true` to price the request for free, then send the same body with the returned `quote_id` to run it.\n\nAttach identity, product, or a first frame by resource id (`avatar_id`, `product_id`, `scene_id`) or by a workspace-owned `cdn.roasos.com` URL. Any other URL is `400 reference_media_not_workspace_owned`.\n\nPass a `webhook_url` and roasOS POSTs you the same job envelope `GET /v1/jobs/{id}` returns when the job finishes, signed with `X-RoasOS-Signature` and retried on failure. The URL must be HTTPS and reachable (`400 invalid_url` otherwise), and first-party keys cannot register webhooks (`400 webhook_url_not_supported_for_key`). See **Webhooks** above for verification. Polling `links.status` works too.",
        "tags": [
          "Models"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/idempotencyKey"
          },
          {
            "$ref": "#/components/parameters/usageProject"
          },
          {
            "$ref": "#/components/parameters/usageCostCenter"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LipsyncHeygenAvatar4Request"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "A quote (`quote_only: true`), or the terminal job when it finished inside `wait_timeout_seconds`. A quote spends nothing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModelQuoteResponse"
                }
              }
            }
          },
          "201": {
            "description": "Job created. Poll `links.status`, or pass a `webhook_url` to be told when it finishes.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobResponse"
                }
              }
            }
          },
          "202": {
            "description": "Job created and still running when `wait_timeout_seconds` elapsed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobResponse"
                }
              }
            }
          },
          "400": {
            "description": "invalid_request, unsupported_option, prompt_too_long, or reference_media_not_workspace_owned",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "insufficient_credits",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "The API key is not authorized for this model or credit ceiling",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "The idempotency key was reused with different request data",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "410": {
            "description": "quote_expired: the quote must be replaced under a new idempotency key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "rate_limit_exceeded, or a concurrency or budget ceiling",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "501": {
            "description": "not_implemented: this model endpoint is not live yet",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "The paid request could not be claimed safely",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-roasos-capability-id": "generation.lipsync.heygen-avatar-4@1",
        "x-roasos-runtime-status": "available",
        "x-roasos-launch-readiness": "ready",
        "x-roasos-exposure": "public"
      }
    },
    "/v1/audio/elevenlabs-v3": {
      "post": {
        "operationId": "createAudioElevenlabsV3",
        "summary": "Run elevenlabs-v3 (audio)",
        "description": "Submit a audio job to elevenlabs-v3. The request carries the real fields of this model; there is no hidden switch on a model parameter.\n\nSend `quote_only: true` to price the request for free, then send the same body with the returned `quote_id` to run it.\n\nAttach identity, product, or a first frame by resource id (`avatar_id`, `product_id`, `scene_id`) or by a workspace-owned `cdn.roasos.com` URL. Any other URL is `400 reference_media_not_workspace_owned`.\n\nPass a `webhook_url` and roasOS POSTs you the same job envelope `GET /v1/jobs/{id}` returns when the job finishes, signed with `X-RoasOS-Signature` and retried on failure. The URL must be HTTPS and reachable (`400 invalid_url` otherwise), and first-party keys cannot register webhooks (`400 webhook_url_not_supported_for_key`). See **Webhooks** above for verification. Polling `links.status` works too.",
        "tags": [
          "Models"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/idempotencyKey"
          },
          {
            "$ref": "#/components/parameters/usageProject"
          },
          {
            "$ref": "#/components/parameters/usageCostCenter"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AudioElevenlabsV3Request"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "A quote (`quote_only: true`), or the terminal job when it finished inside `wait_timeout_seconds`. A quote spends nothing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModelQuoteResponse"
                }
              }
            }
          },
          "201": {
            "description": "Job created. Poll `links.status`, or pass a `webhook_url` to be told when it finishes.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobResponse"
                }
              }
            }
          },
          "202": {
            "description": "Job created and still running when `wait_timeout_seconds` elapsed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobResponse"
                }
              }
            }
          },
          "400": {
            "description": "invalid_request, unsupported_option, prompt_too_long, or reference_media_not_workspace_owned",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "insufficient_credits",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "The API key is not authorized for this model or credit ceiling",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "The idempotency key was reused with different request data",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "410": {
            "description": "quote_expired: the quote must be replaced under a new idempotency key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "rate_limit_exceeded, or a concurrency or budget ceiling",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "501": {
            "description": "not_implemented: this model endpoint is not live yet",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "The paid request could not be claimed safely",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-roasos-capability-id": "generation.audio.elevenlabs-v3@1",
        "x-roasos-runtime-status": "available",
        "x-roasos-launch-readiness": "ready",
        "x-roasos-exposure": "public"
      }
    },
    "/v1/audio/gemini-3.1-flash-tts": {
      "post": {
        "operationId": "createAudioGemini31FlashTts",
        "summary": "Run gemini-3.1-flash-tts (audio)",
        "description": "Submit a audio job to gemini-3.1-flash-tts. The request carries the real fields of this model; there is no hidden switch on a model parameter.\n\nSend `quote_only: true` to price the request for free, then send the same body with the returned `quote_id` to run it.\n\nAttach identity, product, or a first frame by resource id (`avatar_id`, `product_id`, `scene_id`) or by a workspace-owned `cdn.roasos.com` URL. Any other URL is `400 reference_media_not_workspace_owned`.\n\nPass a `webhook_url` and roasOS POSTs you the same job envelope `GET /v1/jobs/{id}` returns when the job finishes, signed with `X-RoasOS-Signature` and retried on failure. The URL must be HTTPS and reachable (`400 invalid_url` otherwise), and first-party keys cannot register webhooks (`400 webhook_url_not_supported_for_key`). See **Webhooks** above for verification. Polling `links.status` works too.",
        "tags": [
          "Models"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/idempotencyKey"
          },
          {
            "$ref": "#/components/parameters/usageProject"
          },
          {
            "$ref": "#/components/parameters/usageCostCenter"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AudioGemini31FlashTtsRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "A quote (`quote_only: true`), or the terminal job when it finished inside `wait_timeout_seconds`. A quote spends nothing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModelQuoteResponse"
                }
              }
            }
          },
          "201": {
            "description": "Job created. Poll `links.status`, or pass a `webhook_url` to be told when it finishes.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobResponse"
                }
              }
            }
          },
          "202": {
            "description": "Job created and still running when `wait_timeout_seconds` elapsed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobResponse"
                }
              }
            }
          },
          "400": {
            "description": "invalid_request, unsupported_option, prompt_too_long, or reference_media_not_workspace_owned",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "insufficient_credits",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "The API key is not authorized for this model or credit ceiling",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "The idempotency key was reused with different request data",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "410": {
            "description": "quote_expired: the quote must be replaced under a new idempotency key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "rate_limit_exceeded, or a concurrency or budget ceiling",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "501": {
            "description": "not_implemented: this model endpoint is not live yet",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "The paid request could not be claimed safely",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-roasos-capability-id": "generation.audio.gemini-3.1-flash-tts@1",
        "x-roasos-runtime-status": "available",
        "x-roasos-launch-readiness": "ready",
        "x-roasos-exposure": "public"
      }
    },
    "/v1/audio/maya-1": {
      "post": {
        "operationId": "createAudioMaya1",
        "summary": "Run maya-1 (audio)",
        "description": "Submit a audio job to maya-1. The request carries the real fields of this model; there is no hidden switch on a model parameter.\n\nSend `quote_only: true` to price the request for free, then send the same body with the returned `quote_id` to run it.\n\nAttach identity, product, or a first frame by resource id (`avatar_id`, `product_id`, `scene_id`) or by a workspace-owned `cdn.roasos.com` URL. Any other URL is `400 reference_media_not_workspace_owned`.\n\nPass a `webhook_url` and roasOS POSTs you the same job envelope `GET /v1/jobs/{id}` returns when the job finishes, signed with `X-RoasOS-Signature` and retried on failure. The URL must be HTTPS and reachable (`400 invalid_url` otherwise), and first-party keys cannot register webhooks (`400 webhook_url_not_supported_for_key`). See **Webhooks** above for verification. Polling `links.status` works too.",
        "tags": [
          "Models"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/idempotencyKey"
          },
          {
            "$ref": "#/components/parameters/usageProject"
          },
          {
            "$ref": "#/components/parameters/usageCostCenter"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AudioMaya1Request"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "A quote (`quote_only: true`), or the terminal job when it finished inside `wait_timeout_seconds`. A quote spends nothing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModelQuoteResponse"
                }
              }
            }
          },
          "201": {
            "description": "Job created. Poll `links.status`, or pass a `webhook_url` to be told when it finishes.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobResponse"
                }
              }
            }
          },
          "202": {
            "description": "Job created and still running when `wait_timeout_seconds` elapsed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobResponse"
                }
              }
            }
          },
          "400": {
            "description": "invalid_request, unsupported_option, prompt_too_long, or reference_media_not_workspace_owned",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "insufficient_credits",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "The API key is not authorized for this model or credit ceiling",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "The idempotency key was reused with different request data",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "410": {
            "description": "quote_expired: the quote must be replaced under a new idempotency key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "rate_limit_exceeded, or a concurrency or budget ceiling",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "501": {
            "description": "not_implemented: this model endpoint is not live yet",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "The paid request could not be claimed safely",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-roasos-capability-id": "generation.audio.maya-1@1",
        "x-roasos-runtime-status": "available",
        "x-roasos-launch-readiness": "ready",
        "x-roasos-exposure": "public"
      }
    },
    "/v1/audio/minimax-speech-hd": {
      "post": {
        "operationId": "createAudioMinimaxSpeechHd",
        "summary": "Run minimax-speech-hd (audio)",
        "description": "Submit a audio job to minimax-speech-hd. The request carries the real fields of this model; there is no hidden switch on a model parameter.\n\nSend `quote_only: true` to price the request for free, then send the same body with the returned `quote_id` to run it.\n\nAttach identity, product, or a first frame by resource id (`avatar_id`, `product_id`, `scene_id`) or by a workspace-owned `cdn.roasos.com` URL. Any other URL is `400 reference_media_not_workspace_owned`.\n\nPass a `webhook_url` and roasOS POSTs you the same job envelope `GET /v1/jobs/{id}` returns when the job finishes, signed with `X-RoasOS-Signature` and retried on failure. The URL must be HTTPS and reachable (`400 invalid_url` otherwise), and first-party keys cannot register webhooks (`400 webhook_url_not_supported_for_key`). See **Webhooks** above for verification. Polling `links.status` works too.",
        "tags": [
          "Models"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/idempotencyKey"
          },
          {
            "$ref": "#/components/parameters/usageProject"
          },
          {
            "$ref": "#/components/parameters/usageCostCenter"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AudioMinimaxSpeechHdRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "A quote (`quote_only: true`), or the terminal job when it finished inside `wait_timeout_seconds`. A quote spends nothing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModelQuoteResponse"
                }
              }
            }
          },
          "201": {
            "description": "Job created. Poll `links.status`, or pass a `webhook_url` to be told when it finishes.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobResponse"
                }
              }
            }
          },
          "202": {
            "description": "Job created and still running when `wait_timeout_seconds` elapsed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobResponse"
                }
              }
            }
          },
          "400": {
            "description": "invalid_request, unsupported_option, prompt_too_long, or reference_media_not_workspace_owned",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "insufficient_credits",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "The API key is not authorized for this model or credit ceiling",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "The idempotency key was reused with different request data",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "410": {
            "description": "quote_expired: the quote must be replaced under a new idempotency key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "rate_limit_exceeded, or a concurrency or budget ceiling",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "501": {
            "description": "not_implemented: this model endpoint is not live yet",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "The paid request could not be claimed safely",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-roasos-capability-id": "generation.audio.minimax-speech-hd@1",
        "x-roasos-runtime-status": "available",
        "x-roasos-launch-readiness": "ready",
        "x-roasos-exposure": "public"
      }
    },
    "/v1/audio/minimax-speech-turbo": {
      "post": {
        "operationId": "createAudioMinimaxSpeechTurbo",
        "summary": "Run minimax-speech-turbo (audio)",
        "description": "Submit a audio job to minimax-speech-turbo. The request carries the real fields of this model; there is no hidden switch on a model parameter.\n\nSend `quote_only: true` to price the request for free, then send the same body with the returned `quote_id` to run it.\n\nAttach identity, product, or a first frame by resource id (`avatar_id`, `product_id`, `scene_id`) or by a workspace-owned `cdn.roasos.com` URL. Any other URL is `400 reference_media_not_workspace_owned`.\n\nPass a `webhook_url` and roasOS POSTs you the same job envelope `GET /v1/jobs/{id}` returns when the job finishes, signed with `X-RoasOS-Signature` and retried on failure. The URL must be HTTPS and reachable (`400 invalid_url` otherwise), and first-party keys cannot register webhooks (`400 webhook_url_not_supported_for_key`). See **Webhooks** above for verification. Polling `links.status` works too.",
        "tags": [
          "Models"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/idempotencyKey"
          },
          {
            "$ref": "#/components/parameters/usageProject"
          },
          {
            "$ref": "#/components/parameters/usageCostCenter"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AudioMinimaxSpeechTurboRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "A quote (`quote_only: true`), or the terminal job when it finished inside `wait_timeout_seconds`. A quote spends nothing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModelQuoteResponse"
                }
              }
            }
          },
          "201": {
            "description": "Job created. Poll `links.status`, or pass a `webhook_url` to be told when it finishes.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobResponse"
                }
              }
            }
          },
          "202": {
            "description": "Job created and still running when `wait_timeout_seconds` elapsed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobResponse"
                }
              }
            }
          },
          "400": {
            "description": "invalid_request, unsupported_option, prompt_too_long, or reference_media_not_workspace_owned",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "insufficient_credits",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "The API key is not authorized for this model or credit ceiling",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "The idempotency key was reused with different request data",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "410": {
            "description": "quote_expired: the quote must be replaced under a new idempotency key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "rate_limit_exceeded, or a concurrency or budget ceiling",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "501": {
            "description": "not_implemented: this model endpoint is not live yet",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "The paid request could not be claimed safely",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-roasos-capability-id": "generation.audio.minimax-speech-turbo@1",
        "x-roasos-runtime-status": "available",
        "x-roasos-launch-readiness": "ready",
        "x-roasos-exposure": "public"
      }
    },
    "/v1/audio/qwen3-tts": {
      "post": {
        "operationId": "createAudioQwen3Tts",
        "summary": "Run qwen3-tts (audio)",
        "description": "Submit a audio job to qwen3-tts. The request carries the real fields of this model; there is no hidden switch on a model parameter.\n\nSend `quote_only: true` to price the request for free, then send the same body with the returned `quote_id` to run it.\n\nAttach identity, product, or a first frame by resource id (`avatar_id`, `product_id`, `scene_id`) or by a workspace-owned `cdn.roasos.com` URL. Any other URL is `400 reference_media_not_workspace_owned`.\n\nPass a `webhook_url` and roasOS POSTs you the same job envelope `GET /v1/jobs/{id}` returns when the job finishes, signed with `X-RoasOS-Signature` and retried on failure. The URL must be HTTPS and reachable (`400 invalid_url` otherwise), and first-party keys cannot register webhooks (`400 webhook_url_not_supported_for_key`). See **Webhooks** above for verification. Polling `links.status` works too.",
        "tags": [
          "Models"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/idempotencyKey"
          },
          {
            "$ref": "#/components/parameters/usageProject"
          },
          {
            "$ref": "#/components/parameters/usageCostCenter"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AudioQwen3TtsRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "A quote (`quote_only: true`), or the terminal job when it finished inside `wait_timeout_seconds`. A quote spends nothing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModelQuoteResponse"
                }
              }
            }
          },
          "201": {
            "description": "Job created. Poll `links.status`, or pass a `webhook_url` to be told when it finishes.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobResponse"
                }
              }
            }
          },
          "202": {
            "description": "Job created and still running when `wait_timeout_seconds` elapsed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobResponse"
                }
              }
            }
          },
          "400": {
            "description": "invalid_request, unsupported_option, prompt_too_long, or reference_media_not_workspace_owned",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "insufficient_credits",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "The API key is not authorized for this model or credit ceiling",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "The idempotency key was reused with different request data",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "410": {
            "description": "quote_expired: the quote must be replaced under a new idempotency key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "rate_limit_exceeded, or a concurrency or budget ceiling",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "501": {
            "description": "not_implemented: this model endpoint is not live yet",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "The paid request could not be claimed safely",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-roasos-capability-id": "generation.audio.qwen3-tts@1",
        "x-roasos-runtime-status": "available",
        "x-roasos-launch-readiness": "ready",
        "x-roasos-exposure": "public"
      }
    },
    "/v1/audio/seed-audio-1.0": {
      "post": {
        "operationId": "createAudioSeedAudio10",
        "summary": "Run seed-audio-1.0 (audio)",
        "description": "Submit a audio job to seed-audio-1.0. The request carries the real fields of this model; there is no hidden switch on a model parameter.\n\nSend `quote_only: true` to price the request for free, then send the same body with the returned `quote_id` to run it.\n\nAttach identity, product, or a first frame by resource id (`avatar_id`, `product_id`, `scene_id`) or by a workspace-owned `cdn.roasos.com` URL. Any other URL is `400 reference_media_not_workspace_owned`.\n\nPass a `webhook_url` and roasOS POSTs you the same job envelope `GET /v1/jobs/{id}` returns when the job finishes, signed with `X-RoasOS-Signature` and retried on failure. The URL must be HTTPS and reachable (`400 invalid_url` otherwise), and first-party keys cannot register webhooks (`400 webhook_url_not_supported_for_key`). See **Webhooks** above for verification. Polling `links.status` works too.",
        "tags": [
          "Models"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/idempotencyKey"
          },
          {
            "$ref": "#/components/parameters/usageProject"
          },
          {
            "$ref": "#/components/parameters/usageCostCenter"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AudioSeedAudio10Request"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "A quote (`quote_only: true`), or the terminal job when it finished inside `wait_timeout_seconds`. A quote spends nothing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModelQuoteResponse"
                }
              }
            }
          },
          "201": {
            "description": "Job created. Poll `links.status`, or pass a `webhook_url` to be told when it finishes.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobResponse"
                }
              }
            }
          },
          "202": {
            "description": "Job created and still running when `wait_timeout_seconds` elapsed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobResponse"
                }
              }
            }
          },
          "400": {
            "description": "invalid_request, unsupported_option, prompt_too_long, or reference_media_not_workspace_owned",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "insufficient_credits",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "The API key is not authorized for this model or credit ceiling",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "The idempotency key was reused with different request data",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "410": {
            "description": "quote_expired: the quote must be replaced under a new idempotency key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "rate_limit_exceeded, or a concurrency or budget ceiling",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "501": {
            "description": "not_implemented: this model endpoint is not live yet",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "The paid request could not be claimed safely",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-roasos-capability-id": "generation.audio.seed-audio-1.0@1",
        "x-roasos-runtime-status": "available",
        "x-roasos-launch-readiness": "ready",
        "x-roasos-exposure": "public"
      }
    },
    "/v1/audio/elevenlabs-sfx-v2": {
      "post": {
        "operationId": "createAudioElevenlabsSfxV2",
        "summary": "Run elevenlabs-sfx-v2 (audio)",
        "description": "Submit a audio job to elevenlabs-sfx-v2. The request carries the real fields of this model; there is no hidden switch on a model parameter.\n\nSend `quote_only: true` to price the request for free, then send the same body with the returned `quote_id` to run it.\n\nAttach identity, product, or a first frame by resource id (`avatar_id`, `product_id`, `scene_id`) or by a workspace-owned `cdn.roasos.com` URL. Any other URL is `400 reference_media_not_workspace_owned`.\n\nPass a `webhook_url` and roasOS POSTs you the same job envelope `GET /v1/jobs/{id}` returns when the job finishes, signed with `X-RoasOS-Signature` and retried on failure. The URL must be HTTPS and reachable (`400 invalid_url` otherwise), and first-party keys cannot register webhooks (`400 webhook_url_not_supported_for_key`). See **Webhooks** above for verification. Polling `links.status` works too.",
        "tags": [
          "Models"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/idempotencyKey"
          },
          {
            "$ref": "#/components/parameters/usageProject"
          },
          {
            "$ref": "#/components/parameters/usageCostCenter"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AudioElevenlabsSfxV2Request"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "A quote (`quote_only: true`), or the terminal job when it finished inside `wait_timeout_seconds`. A quote spends nothing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModelQuoteResponse"
                }
              }
            }
          },
          "201": {
            "description": "Job created. Poll `links.status`, or pass a `webhook_url` to be told when it finishes.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobResponse"
                }
              }
            }
          },
          "202": {
            "description": "Job created and still running when `wait_timeout_seconds` elapsed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobResponse"
                }
              }
            }
          },
          "400": {
            "description": "invalid_request, unsupported_option, prompt_too_long, or reference_media_not_workspace_owned",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "insufficient_credits",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "The API key is not authorized for this model or credit ceiling",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "The idempotency key was reused with different request data",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "410": {
            "description": "quote_expired: the quote must be replaced under a new idempotency key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "rate_limit_exceeded, or a concurrency or budget ceiling",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "501": {
            "description": "not_implemented: this model endpoint is not live yet",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "The paid request could not be claimed safely",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-roasos-capability-id": "generation.audio.elevenlabs-sfx-v2@1",
        "x-roasos-runtime-status": "available",
        "x-roasos-launch-readiness": "ready",
        "x-roasos-exposure": "public"
      }
    },
    "/v1/dub/elevenlabs-dubbing": {
      "post": {
        "operationId": "createDubElevenlabsDubbing",
        "summary": "Run elevenlabs-dubbing (dub)",
        "description": "Submit a dub job to elevenlabs-dubbing. The request carries the real fields of this model; there is no hidden switch on a model parameter.\n\nSend `quote_only: true` to price the request for free, then send the same body with the returned `quote_id` to run it.\n\nAttach identity, product, or a first frame by resource id (`avatar_id`, `product_id`, `scene_id`) or by a workspace-owned `cdn.roasos.com` URL. Any other URL is `400 reference_media_not_workspace_owned`.\n\nPass a `webhook_url` and roasOS POSTs you the same job envelope `GET /v1/jobs/{id}` returns when the job finishes, signed with `X-RoasOS-Signature` and retried on failure. The URL must be HTTPS and reachable (`400 invalid_url` otherwise), and first-party keys cannot register webhooks (`400 webhook_url_not_supported_for_key`). See **Webhooks** above for verification. Polling `links.status` works too.",
        "tags": [
          "Models"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/idempotencyKey"
          },
          {
            "$ref": "#/components/parameters/usageProject"
          },
          {
            "$ref": "#/components/parameters/usageCostCenter"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DubElevenlabsDubbingRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "A quote (`quote_only: true`), or the terminal job when it finished inside `wait_timeout_seconds`. A quote spends nothing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModelQuoteResponse"
                }
              }
            }
          },
          "201": {
            "description": "Job created. Poll `links.status`, or pass a `webhook_url` to be told when it finishes.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobResponse"
                }
              }
            }
          },
          "202": {
            "description": "Job created and still running when `wait_timeout_seconds` elapsed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobResponse"
                }
              }
            }
          },
          "400": {
            "description": "invalid_request, unsupported_option, prompt_too_long, or reference_media_not_workspace_owned",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "insufficient_credits",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "The API key is not authorized for this model or credit ceiling",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "The idempotency key was reused with different request data",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "410": {
            "description": "quote_expired: the quote must be replaced under a new idempotency key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "rate_limit_exceeded, or a concurrency or budget ceiling",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "501": {
            "description": "not_implemented: this model endpoint is not live yet",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "The paid request could not be claimed safely",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-roasos-capability-id": "generation.dub.elevenlabs-dubbing@1",
        "x-roasos-runtime-status": "available",
        "x-roasos-launch-readiness": "ready",
        "x-roasos-exposure": "public"
      }
    },
    "/v1/dub/heygen-speed": {
      "post": {
        "operationId": "createDubHeygenSpeed",
        "summary": "Run heygen-speed (dub)",
        "description": "Submit a dub job to heygen-speed. The request carries the real fields of this model; there is no hidden switch on a model parameter.\n\nSend `quote_only: true` to price the request for free, then send the same body with the returned `quote_id` to run it.\n\nAttach identity, product, or a first frame by resource id (`avatar_id`, `product_id`, `scene_id`) or by a workspace-owned `cdn.roasos.com` URL. Any other URL is `400 reference_media_not_workspace_owned`.\n\nPass a `webhook_url` and roasOS POSTs you the same job envelope `GET /v1/jobs/{id}` returns when the job finishes, signed with `X-RoasOS-Signature` and retried on failure. The URL must be HTTPS and reachable (`400 invalid_url` otherwise), and first-party keys cannot register webhooks (`400 webhook_url_not_supported_for_key`). See **Webhooks** above for verification. Polling `links.status` works too.",
        "tags": [
          "Models"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/idempotencyKey"
          },
          {
            "$ref": "#/components/parameters/usageProject"
          },
          {
            "$ref": "#/components/parameters/usageCostCenter"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DubHeygenSpeedRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "A quote (`quote_only: true`), or the terminal job when it finished inside `wait_timeout_seconds`. A quote spends nothing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModelQuoteResponse"
                }
              }
            }
          },
          "201": {
            "description": "Job created. Poll `links.status`, or pass a `webhook_url` to be told when it finishes.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobResponse"
                }
              }
            }
          },
          "202": {
            "description": "Job created and still running when `wait_timeout_seconds` elapsed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobResponse"
                }
              }
            }
          },
          "400": {
            "description": "invalid_request, unsupported_option, prompt_too_long, or reference_media_not_workspace_owned",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "insufficient_credits",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "The API key is not authorized for this model or credit ceiling",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "The idempotency key was reused with different request data",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "410": {
            "description": "quote_expired: the quote must be replaced under a new idempotency key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "rate_limit_exceeded, or a concurrency or budget ceiling",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "501": {
            "description": "not_implemented: this model endpoint is not live yet",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "The paid request could not be claimed safely",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-roasos-capability-id": "generation.dub.heygen-speed@1",
        "x-roasos-runtime-status": "available",
        "x-roasos-launch-readiness": "ready",
        "x-roasos-exposure": "public"
      }
    },
    "/v1/dub/heygen-precision": {
      "post": {
        "operationId": "createDubHeygenPrecision",
        "summary": "Run heygen-precision (dub)",
        "description": "Submit a dub job to heygen-precision. The request carries the real fields of this model; there is no hidden switch on a model parameter.\n\nSend `quote_only: true` to price the request for free, then send the same body with the returned `quote_id` to run it.\n\nAttach identity, product, or a first frame by resource id (`avatar_id`, `product_id`, `scene_id`) or by a workspace-owned `cdn.roasos.com` URL. Any other URL is `400 reference_media_not_workspace_owned`.\n\nPass a `webhook_url` and roasOS POSTs you the same job envelope `GET /v1/jobs/{id}` returns when the job finishes, signed with `X-RoasOS-Signature` and retried on failure. The URL must be HTTPS and reachable (`400 invalid_url` otherwise), and first-party keys cannot register webhooks (`400 webhook_url_not_supported_for_key`). See **Webhooks** above for verification. Polling `links.status` works too.",
        "tags": [
          "Models"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/idempotencyKey"
          },
          {
            "$ref": "#/components/parameters/usageProject"
          },
          {
            "$ref": "#/components/parameters/usageCostCenter"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DubHeygenPrecisionRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "A quote (`quote_only: true`), or the terminal job when it finished inside `wait_timeout_seconds`. A quote spends nothing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModelQuoteResponse"
                }
              }
            }
          },
          "201": {
            "description": "Job created. Poll `links.status`, or pass a `webhook_url` to be told when it finishes.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobResponse"
                }
              }
            }
          },
          "202": {
            "description": "Job created and still running when `wait_timeout_seconds` elapsed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobResponse"
                }
              }
            }
          },
          "400": {
            "description": "invalid_request, unsupported_option, prompt_too_long, or reference_media_not_workspace_owned",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "insufficient_credits",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "The API key is not authorized for this model or credit ceiling",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "The idempotency key was reused with different request data",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "410": {
            "description": "quote_expired: the quote must be replaced under a new idempotency key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "rate_limit_exceeded, or a concurrency or budget ceiling",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "501": {
            "description": "not_implemented: this model endpoint is not live yet",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "The paid request could not be claimed safely",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-roasos-capability-id": "generation.dub.heygen-precision@1",
        "x-roasos-runtime-status": "available",
        "x-roasos-launch-readiness": "ready",
        "x-roasos-exposure": "public"
      }
    },
    "/v1/assembly/compose": {
      "post": {
        "operationId": "createAssemblyCompose",
        "summary": "Run compose (assembly)",
        "description": "Submit a assembly job to compose. The request carries the real fields of this model; there is no hidden switch on a model parameter.\n\nSend `quote_only: true` to price the request for free, then send the same body with the returned `quote_id` to run it.\n\nAttach identity, product, or a first frame by resource id (`avatar_id`, `product_id`, `scene_id`) or by a workspace-owned `cdn.roasos.com` URL. Any other URL is `400 reference_media_not_workspace_owned`.\n\nPass a `webhook_url` and roasOS POSTs you the same job envelope `GET /v1/jobs/{id}` returns when the job finishes, signed with `X-RoasOS-Signature` and retried on failure. The URL must be HTTPS and reachable (`400 invalid_url` otherwise), and first-party keys cannot register webhooks (`400 webhook_url_not_supported_for_key`). See **Webhooks** above for verification. Polling `links.status` works too.",
        "tags": [
          "Models"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/idempotencyKey"
          },
          {
            "$ref": "#/components/parameters/usageProject"
          },
          {
            "$ref": "#/components/parameters/usageCostCenter"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AssemblyComposeRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "A quote (`quote_only: true`), or the terminal job when it finished inside `wait_timeout_seconds`. A quote spends nothing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModelQuoteResponse"
                }
              }
            }
          },
          "201": {
            "description": "Job created. Poll `links.status`, or pass a `webhook_url` to be told when it finishes.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobResponse"
                }
              }
            }
          },
          "202": {
            "description": "Job created and still running when `wait_timeout_seconds` elapsed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobResponse"
                }
              }
            }
          },
          "400": {
            "description": "invalid_request, unsupported_option, prompt_too_long, or reference_media_not_workspace_owned",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "insufficient_credits",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "The API key is not authorized for this model or credit ceiling",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "The idempotency key was reused with different request data",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "410": {
            "description": "quote_expired: the quote must be replaced under a new idempotency key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "rate_limit_exceeded, or a concurrency or budget ceiling",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "501": {
            "description": "not_implemented: this model endpoint is not live yet",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "The paid request could not be claimed safely",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-roasos-capability-id": "generation.assembly.compose@1",
        "x-roasos-runtime-status": "available",
        "x-roasos-launch-readiness": "ready",
        "x-roasos-exposure": "public"
      }
    },
    "/v1/assembly/merge-videos": {
      "post": {
        "operationId": "createAssemblyMergeVideos",
        "summary": "Run merge-videos (assembly)",
        "description": "Submit a assembly job to merge-videos. The request carries the real fields of this model; there is no hidden switch on a model parameter.\n\nSend `quote_only: true` to price the request for free, then send the same body with the returned `quote_id` to run it.\n\nAttach identity, product, or a first frame by resource id (`avatar_id`, `product_id`, `scene_id`) or by a workspace-owned `cdn.roasos.com` URL. Any other URL is `400 reference_media_not_workspace_owned`.\n\nPass a `webhook_url` and roasOS POSTs you the same job envelope `GET /v1/jobs/{id}` returns when the job finishes, signed with `X-RoasOS-Signature` and retried on failure. The URL must be HTTPS and reachable (`400 invalid_url` otherwise), and first-party keys cannot register webhooks (`400 webhook_url_not_supported_for_key`). See **Webhooks** above for verification. Polling `links.status` works too.",
        "tags": [
          "Models"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/idempotencyKey"
          },
          {
            "$ref": "#/components/parameters/usageProject"
          },
          {
            "$ref": "#/components/parameters/usageCostCenter"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AssemblyMergeVideosRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "A quote (`quote_only: true`), or the terminal job when it finished inside `wait_timeout_seconds`. A quote spends nothing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModelQuoteResponse"
                }
              }
            }
          },
          "201": {
            "description": "Job created. Poll `links.status`, or pass a `webhook_url` to be told when it finishes.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobResponse"
                }
              }
            }
          },
          "202": {
            "description": "Job created and still running when `wait_timeout_seconds` elapsed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobResponse"
                }
              }
            }
          },
          "400": {
            "description": "invalid_request, unsupported_option, prompt_too_long, or reference_media_not_workspace_owned",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "insufficient_credits",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "The API key is not authorized for this model or credit ceiling",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "The idempotency key was reused with different request data",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "410": {
            "description": "quote_expired: the quote must be replaced under a new idempotency key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "rate_limit_exceeded, or a concurrency or budget ceiling",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "501": {
            "description": "not_implemented: this model endpoint is not live yet",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "The paid request could not be claimed safely",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-roasos-capability-id": "generation.assembly.merge-videos@1",
        "x-roasos-runtime-status": "available",
        "x-roasos-launch-readiness": "ready",
        "x-roasos-exposure": "public"
      }
    },
    "/v1/assembly/merge-audio-video": {
      "post": {
        "operationId": "createAssemblyMergeAudioVideo",
        "summary": "Run merge-audio-video (assembly)",
        "description": "Submit a assembly job to merge-audio-video. The request carries the real fields of this model; there is no hidden switch on a model parameter.\n\nSend `quote_only: true` to price the request for free, then send the same body with the returned `quote_id` to run it.\n\nAttach identity, product, or a first frame by resource id (`avatar_id`, `product_id`, `scene_id`) or by a workspace-owned `cdn.roasos.com` URL. Any other URL is `400 reference_media_not_workspace_owned`.\n\nPass a `webhook_url` and roasOS POSTs you the same job envelope `GET /v1/jobs/{id}` returns when the job finishes, signed with `X-RoasOS-Signature` and retried on failure. The URL must be HTTPS and reachable (`400 invalid_url` otherwise), and first-party keys cannot register webhooks (`400 webhook_url_not_supported_for_key`). See **Webhooks** above for verification. Polling `links.status` works too.",
        "tags": [
          "Models"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/idempotencyKey"
          },
          {
            "$ref": "#/components/parameters/usageProject"
          },
          {
            "$ref": "#/components/parameters/usageCostCenter"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AssemblyMergeAudioVideoRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "A quote (`quote_only: true`), or the terminal job when it finished inside `wait_timeout_seconds`. A quote spends nothing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModelQuoteResponse"
                }
              }
            }
          },
          "201": {
            "description": "Job created. Poll `links.status`, or pass a `webhook_url` to be told when it finishes.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobResponse"
                }
              }
            }
          },
          "202": {
            "description": "Job created and still running when `wait_timeout_seconds` elapsed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobResponse"
                }
              }
            }
          },
          "400": {
            "description": "invalid_request, unsupported_option, prompt_too_long, or reference_media_not_workspace_owned",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "insufficient_credits",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "The API key is not authorized for this model or credit ceiling",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "The idempotency key was reused with different request data",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "410": {
            "description": "quote_expired: the quote must be replaced under a new idempotency key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "rate_limit_exceeded, or a concurrency or budget ceiling",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "501": {
            "description": "not_implemented: this model endpoint is not live yet",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "The paid request could not be claimed safely",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-roasos-capability-id": "generation.assembly.merge-audio-video@1",
        "x-roasos-runtime-status": "available",
        "x-roasos-launch-readiness": "ready",
        "x-roasos-exposure": "public"
      }
    },
    "/v1/assembly/images-to-video": {
      "post": {
        "operationId": "createAssemblyImagesToVideo",
        "summary": "Run images-to-video (assembly)",
        "description": "Submit a assembly job to images-to-video. The request carries the real fields of this model; there is no hidden switch on a model parameter.\n\nSend `quote_only: true` to price the request for free, then send the same body with the returned `quote_id` to run it.\n\nAttach identity, product, or a first frame by resource id (`avatar_id`, `product_id`, `scene_id`) or by a workspace-owned `cdn.roasos.com` URL. Any other URL is `400 reference_media_not_workspace_owned`.\n\nPass a `webhook_url` and roasOS POSTs you the same job envelope `GET /v1/jobs/{id}` returns when the job finishes, signed with `X-RoasOS-Signature` and retried on failure. The URL must be HTTPS and reachable (`400 invalid_url` otherwise), and first-party keys cannot register webhooks (`400 webhook_url_not_supported_for_key`). See **Webhooks** above for verification. Polling `links.status` works too.",
        "tags": [
          "Models"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/idempotencyKey"
          },
          {
            "$ref": "#/components/parameters/usageProject"
          },
          {
            "$ref": "#/components/parameters/usageCostCenter"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AssemblyImagesToVideoRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "A quote (`quote_only: true`), or the terminal job when it finished inside `wait_timeout_seconds`. A quote spends nothing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModelQuoteResponse"
                }
              }
            }
          },
          "201": {
            "description": "Job created. Poll `links.status`, or pass a `webhook_url` to be told when it finishes.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobResponse"
                }
              }
            }
          },
          "202": {
            "description": "Job created and still running when `wait_timeout_seconds` elapsed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobResponse"
                }
              }
            }
          },
          "400": {
            "description": "invalid_request, unsupported_option, prompt_too_long, or reference_media_not_workspace_owned",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "insufficient_credits",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "The API key is not authorized for this model or credit ceiling",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "The idempotency key was reused with different request data",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "410": {
            "description": "quote_expired: the quote must be replaced under a new idempotency key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "rate_limit_exceeded, or a concurrency or budget ceiling",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "501": {
            "description": "not_implemented: this model endpoint is not live yet",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "The paid request could not be claimed safely",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-roasos-capability-id": "generation.assembly.images-to-video@1",
        "x-roasos-runtime-status": "available",
        "x-roasos-launch-readiness": "ready",
        "x-roasos-exposure": "public"
      }
    },
    "/v1/assembly/extract-frame": {
      "post": {
        "operationId": "createAssemblyExtractFrame",
        "summary": "Run extract-frame (assembly)",
        "description": "Submit a assembly job to extract-frame. The request carries the real fields of this model; there is no hidden switch on a model parameter.\n\nSend `quote_only: true` to price the request for free, then send the same body with the returned `quote_id` to run it.\n\nAttach identity, product, or a first frame by resource id (`avatar_id`, `product_id`, `scene_id`) or by a workspace-owned `cdn.roasos.com` URL. Any other URL is `400 reference_media_not_workspace_owned`.\n\nPass a `webhook_url` and roasOS POSTs you the same job envelope `GET /v1/jobs/{id}` returns when the job finishes, signed with `X-RoasOS-Signature` and retried on failure. The URL must be HTTPS and reachable (`400 invalid_url` otherwise), and first-party keys cannot register webhooks (`400 webhook_url_not_supported_for_key`). See **Webhooks** above for verification. Polling `links.status` works too.",
        "tags": [
          "Models"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/idempotencyKey"
          },
          {
            "$ref": "#/components/parameters/usageProject"
          },
          {
            "$ref": "#/components/parameters/usageCostCenter"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AssemblyExtractFrameRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "A quote (`quote_only: true`), or the terminal job when it finished inside `wait_timeout_seconds`. A quote spends nothing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModelQuoteResponse"
                }
              }
            }
          },
          "201": {
            "description": "Job created. Poll `links.status`, or pass a `webhook_url` to be told when it finishes.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobResponse"
                }
              }
            }
          },
          "202": {
            "description": "Job created and still running when `wait_timeout_seconds` elapsed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobResponse"
                }
              }
            }
          },
          "400": {
            "description": "invalid_request, unsupported_option, prompt_too_long, or reference_media_not_workspace_owned",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "insufficient_credits",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "The API key is not authorized for this model or credit ceiling",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "The idempotency key was reused with different request data",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "410": {
            "description": "quote_expired: the quote must be replaced under a new idempotency key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "rate_limit_exceeded, or a concurrency or budget ceiling",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "501": {
            "description": "not_implemented: this model endpoint is not live yet",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "The paid request could not be claimed safely",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-roasos-capability-id": "generation.assembly.extract-frame@1",
        "x-roasos-runtime-status": "available",
        "x-roasos-launch-readiness": "ready",
        "x-roasos-exposure": "public"
      }
    },
    "/v1/assembly/trim-video": {
      "post": {
        "operationId": "createAssemblyTrimVideo",
        "summary": "Run trim-video (assembly)",
        "description": "Submit a assembly job to trim-video. The request carries the real fields of this model; there is no hidden switch on a model parameter.\n\nSend `quote_only: true` to price the request for free, then send the same body with the returned `quote_id` to run it.\n\nAttach identity, product, or a first frame by resource id (`avatar_id`, `product_id`, `scene_id`) or by a workspace-owned `cdn.roasos.com` URL. Any other URL is `400 reference_media_not_workspace_owned`.\n\nPass a `webhook_url` and roasOS POSTs you the same job envelope `GET /v1/jobs/{id}` returns when the job finishes, signed with `X-RoasOS-Signature` and retried on failure. The URL must be HTTPS and reachable (`400 invalid_url` otherwise), and first-party keys cannot register webhooks (`400 webhook_url_not_supported_for_key`). See **Webhooks** above for verification. Polling `links.status` works too.",
        "tags": [
          "Models"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/idempotencyKey"
          },
          {
            "$ref": "#/components/parameters/usageProject"
          },
          {
            "$ref": "#/components/parameters/usageCostCenter"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AssemblyTrimVideoRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "A quote (`quote_only: true`), or the terminal job when it finished inside `wait_timeout_seconds`. A quote spends nothing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModelQuoteResponse"
                }
              }
            }
          },
          "201": {
            "description": "Job created. Poll `links.status`, or pass a `webhook_url` to be told when it finishes.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobResponse"
                }
              }
            }
          },
          "202": {
            "description": "Job created and still running when `wait_timeout_seconds` elapsed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobResponse"
                }
              }
            }
          },
          "400": {
            "description": "invalid_request, unsupported_option, prompt_too_long, or reference_media_not_workspace_owned",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "insufficient_credits",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "The API key is not authorized for this model or credit ceiling",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "The idempotency key was reused with different request data",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "410": {
            "description": "quote_expired: the quote must be replaced under a new idempotency key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "rate_limit_exceeded, or a concurrency or budget ceiling",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "501": {
            "description": "not_implemented: this model endpoint is not live yet",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "The paid request could not be claimed safely",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-roasos-capability-id": "generation.assembly.trim-video@1",
        "x-roasos-runtime-status": "available",
        "x-roasos-launch-readiness": "ready",
        "x-roasos-exposure": "public"
      }
    },
    "/v1/assembly/text-overlay": {
      "post": {
        "operationId": "createAssemblyTextOverlay",
        "summary": "Run text-overlay (assembly)",
        "description": "Submit a assembly job to text-overlay. The request carries the real fields of this model; there is no hidden switch on a model parameter.\n\nSend `quote_only: true` to price the request for free, then send the same body with the returned `quote_id` to run it.\n\nAttach identity, product, or a first frame by resource id (`avatar_id`, `product_id`, `scene_id`) or by a workspace-owned `cdn.roasos.com` URL. Any other URL is `400 reference_media_not_workspace_owned`.\n\nPass a `webhook_url` and roasOS POSTs you the same job envelope `GET /v1/jobs/{id}` returns when the job finishes, signed with `X-RoasOS-Signature` and retried on failure. The URL must be HTTPS and reachable (`400 invalid_url` otherwise), and first-party keys cannot register webhooks (`400 webhook_url_not_supported_for_key`). See **Webhooks** above for verification. Polling `links.status` works too.",
        "tags": [
          "Models"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/idempotencyKey"
          },
          {
            "$ref": "#/components/parameters/usageProject"
          },
          {
            "$ref": "#/components/parameters/usageCostCenter"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AssemblyTextOverlayRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "A quote (`quote_only: true`), or the terminal job when it finished inside `wait_timeout_seconds`. A quote spends nothing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModelQuoteResponse"
                }
              }
            }
          },
          "201": {
            "description": "Job created. Poll `links.status`, or pass a `webhook_url` to be told when it finishes.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobResponse"
                }
              }
            }
          },
          "202": {
            "description": "Job created and still running when `wait_timeout_seconds` elapsed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobResponse"
                }
              }
            }
          },
          "400": {
            "description": "invalid_request, unsupported_option, prompt_too_long, or reference_media_not_workspace_owned",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "insufficient_credits",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "The API key is not authorized for this model or credit ceiling",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "The idempotency key was reused with different request data",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "410": {
            "description": "quote_expired: the quote must be replaced under a new idempotency key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "rate_limit_exceeded, or a concurrency or budget ceiling",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "501": {
            "description": "not_implemented: this model endpoint is not live yet",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "The paid request could not be claimed safely",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-roasos-capability-id": "generation.assembly.text-overlay@1",
        "x-roasos-runtime-status": "available",
        "x-roasos-launch-readiness": "ready",
        "x-roasos-exposure": "public"
      }
    },
    "/v1/assembly/music-bed": {
      "post": {
        "operationId": "createAssemblyMusicBed",
        "summary": "Run music-bed (assembly)",
        "description": "Submit a assembly job to music-bed. The request carries the real fields of this model; there is no hidden switch on a model parameter.\n\nSend `quote_only: true` to price the request for free, then send the same body with the returned `quote_id` to run it.\n\nAttach identity, product, or a first frame by resource id (`avatar_id`, `product_id`, `scene_id`) or by a workspace-owned `cdn.roasos.com` URL. Any other URL is `400 reference_media_not_workspace_owned`.\n\nPass a `webhook_url` and roasOS POSTs you the same job envelope `GET /v1/jobs/{id}` returns when the job finishes, signed with `X-RoasOS-Signature` and retried on failure. The URL must be HTTPS and reachable (`400 invalid_url` otherwise), and first-party keys cannot register webhooks (`400 webhook_url_not_supported_for_key`). See **Webhooks** above for verification. Polling `links.status` works too.",
        "tags": [
          "Models"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/idempotencyKey"
          },
          {
            "$ref": "#/components/parameters/usageProject"
          },
          {
            "$ref": "#/components/parameters/usageCostCenter"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AssemblyMusicBedRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "A quote (`quote_only: true`), or the terminal job when it finished inside `wait_timeout_seconds`. A quote spends nothing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModelQuoteResponse"
                }
              }
            }
          },
          "201": {
            "description": "Job created. Poll `links.status`, or pass a `webhook_url` to be told when it finishes.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobResponse"
                }
              }
            }
          },
          "202": {
            "description": "Job created and still running when `wait_timeout_seconds` elapsed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobResponse"
                }
              }
            }
          },
          "400": {
            "description": "invalid_request, unsupported_option, prompt_too_long, or reference_media_not_workspace_owned",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "insufficient_credits",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "The API key is not authorized for this model or credit ceiling",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "The idempotency key was reused with different request data",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "410": {
            "description": "quote_expired: the quote must be replaced under a new idempotency key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "rate_limit_exceeded, or a concurrency or budget ceiling",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "501": {
            "description": "not_implemented: this model endpoint is not live yet",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "The paid request could not be claimed safely",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-roasos-capability-id": "generation.assembly.music-bed@1",
        "x-roasos-runtime-status": "available",
        "x-roasos-launch-readiness": "ready",
        "x-roasos-exposure": "public"
      }
    },
    "/v1/assembly/loudnorm": {
      "post": {
        "operationId": "createAssemblyLoudnorm",
        "summary": "Run loudnorm (assembly)",
        "description": "Submit a assembly job to loudnorm. The request carries the real fields of this model; there is no hidden switch on a model parameter.\n\nSend `quote_only: true` to price the request for free, then send the same body with the returned `quote_id` to run it.\n\nAttach identity, product, or a first frame by resource id (`avatar_id`, `product_id`, `scene_id`) or by a workspace-owned `cdn.roasos.com` URL. Any other URL is `400 reference_media_not_workspace_owned`.\n\nPass a `webhook_url` and roasOS POSTs you the same job envelope `GET /v1/jobs/{id}` returns when the job finishes, signed with `X-RoasOS-Signature` and retried on failure. The URL must be HTTPS and reachable (`400 invalid_url` otherwise), and first-party keys cannot register webhooks (`400 webhook_url_not_supported_for_key`). See **Webhooks** above for verification. Polling `links.status` works too.",
        "tags": [
          "Models"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/idempotencyKey"
          },
          {
            "$ref": "#/components/parameters/usageProject"
          },
          {
            "$ref": "#/components/parameters/usageCostCenter"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AssemblyLoudnormRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "A quote (`quote_only: true`), or the terminal job when it finished inside `wait_timeout_seconds`. A quote spends nothing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModelQuoteResponse"
                }
              }
            }
          },
          "201": {
            "description": "Job created. Poll `links.status`, or pass a `webhook_url` to be told when it finishes.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobResponse"
                }
              }
            }
          },
          "202": {
            "description": "Job created and still running when `wait_timeout_seconds` elapsed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobResponse"
                }
              }
            }
          },
          "400": {
            "description": "invalid_request, unsupported_option, prompt_too_long, or reference_media_not_workspace_owned",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "insufficient_credits",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "The API key is not authorized for this model or credit ceiling",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "The idempotency key was reused with different request data",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "410": {
            "description": "quote_expired: the quote must be replaced under a new idempotency key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "rate_limit_exceeded, or a concurrency or budget ceiling",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "501": {
            "description": "not_implemented: this model endpoint is not live yet",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "The paid request could not be claimed safely",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-roasos-capability-id": "generation.assembly.loudnorm@1",
        "x-roasos-runtime-status": "available",
        "x-roasos-launch-readiness": "ready",
        "x-roasos-exposure": "public"
      }
    },
    "/v1/captions/veed-subtitles": {
      "post": {
        "operationId": "createCaptionsVeedSubtitles",
        "summary": "Run veed-subtitles (captions)",
        "description": "Submit a captions job to veed-subtitles. The request carries the real fields of this model; there is no hidden switch on a model parameter.\n\nSend `quote_only: true` to price the request for free, then send the same body with the returned `quote_id` to run it.\n\nAttach identity, product, or a first frame by resource id (`avatar_id`, `product_id`, `scene_id`) or by a workspace-owned `cdn.roasos.com` URL. Any other URL is `400 reference_media_not_workspace_owned`.\n\nPass a `webhook_url` and roasOS POSTs you the same job envelope `GET /v1/jobs/{id}` returns when the job finishes, signed with `X-RoasOS-Signature` and retried on failure. The URL must be HTTPS and reachable (`400 invalid_url` otherwise), and first-party keys cannot register webhooks (`400 webhook_url_not_supported_for_key`). See **Webhooks** above for verification. Polling `links.status` works too.",
        "tags": [
          "Models"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/idempotencyKey"
          },
          {
            "$ref": "#/components/parameters/usageProject"
          },
          {
            "$ref": "#/components/parameters/usageCostCenter"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CaptionsVeedSubtitlesRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "A quote (`quote_only: true`), or the terminal job when it finished inside `wait_timeout_seconds`. A quote spends nothing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModelQuoteResponse"
                }
              }
            }
          },
          "201": {
            "description": "Job created. Poll `links.status`, or pass a `webhook_url` to be told when it finishes.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobResponse"
                }
              }
            }
          },
          "202": {
            "description": "Job created and still running when `wait_timeout_seconds` elapsed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobResponse"
                }
              }
            }
          },
          "400": {
            "description": "invalid_request, unsupported_option, prompt_too_long, or reference_media_not_workspace_owned",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "insufficient_credits",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "The API key is not authorized for this model or credit ceiling",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "The idempotency key was reused with different request data",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "410": {
            "description": "quote_expired: the quote must be replaced under a new idempotency key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "rate_limit_exceeded, or a concurrency or budget ceiling",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "501": {
            "description": "not_implemented: this model endpoint is not live yet",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "The paid request could not be claimed safely",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-roasos-capability-id": "generation.captions.veed-subtitles@1",
        "x-roasos-runtime-status": "available",
        "x-roasos-launch-readiness": "ready",
        "x-roasos-exposure": "public"
      }
    },
    "/v1/captions/auto-subtitle": {
      "post": {
        "operationId": "createCaptionsAutoSubtitle",
        "summary": "Run auto-subtitle (captions)",
        "description": "Submit a captions job to auto-subtitle. The request carries the real fields of this model; there is no hidden switch on a model parameter.\n\nSend `quote_only: true` to price the request for free, then send the same body with the returned `quote_id` to run it.\n\nAttach identity, product, or a first frame by resource id (`avatar_id`, `product_id`, `scene_id`) or by a workspace-owned `cdn.roasos.com` URL. Any other URL is `400 reference_media_not_workspace_owned`.\n\nPass a `webhook_url` and roasOS POSTs you the same job envelope `GET /v1/jobs/{id}` returns when the job finishes, signed with `X-RoasOS-Signature` and retried on failure. The URL must be HTTPS and reachable (`400 invalid_url` otherwise), and first-party keys cannot register webhooks (`400 webhook_url_not_supported_for_key`). See **Webhooks** above for verification. Polling `links.status` works too.",
        "tags": [
          "Models"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/idempotencyKey"
          },
          {
            "$ref": "#/components/parameters/usageProject"
          },
          {
            "$ref": "#/components/parameters/usageCostCenter"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CaptionsAutoSubtitleRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "A quote (`quote_only: true`), or the terminal job when it finished inside `wait_timeout_seconds`. A quote spends nothing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModelQuoteResponse"
                }
              }
            }
          },
          "201": {
            "description": "Job created. Poll `links.status`, or pass a `webhook_url` to be told when it finishes.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobResponse"
                }
              }
            }
          },
          "202": {
            "description": "Job created and still running when `wait_timeout_seconds` elapsed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobResponse"
                }
              }
            }
          },
          "400": {
            "description": "invalid_request, unsupported_option, prompt_too_long, or reference_media_not_workspace_owned",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "insufficient_credits",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "The API key is not authorized for this model or credit ceiling",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "The idempotency key was reused with different request data",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "410": {
            "description": "quote_expired: the quote must be replaced under a new idempotency key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "rate_limit_exceeded, or a concurrency or budget ceiling",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "501": {
            "description": "not_implemented: this model endpoint is not live yet",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "The paid request could not be claimed safely",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-roasos-capability-id": "generation.captions.auto-subtitle@1",
        "x-roasos-runtime-status": "available",
        "x-roasos-launch-readiness": "ready",
        "x-roasos-exposure": "public"
      }
    },
    "/v1/reframe/ltx-2.3": {
      "post": {
        "operationId": "createReframeLtx23",
        "summary": "Run ltx-2.3 (reframe)",
        "description": "Submit a reframe job to ltx-2.3. The request carries the real fields of this model; there is no hidden switch on a model parameter.\n\nSend `quote_only: true` to price the request for free, then send the same body with the returned `quote_id` to run it.\n\nAttach identity, product, or a first frame by resource id (`avatar_id`, `product_id`, `scene_id`) or by a workspace-owned `cdn.roasos.com` URL. Any other URL is `400 reference_media_not_workspace_owned`.\n\nPass a `webhook_url` and roasOS POSTs you the same job envelope `GET /v1/jobs/{id}` returns when the job finishes, signed with `X-RoasOS-Signature` and retried on failure. The URL must be HTTPS and reachable (`400 invalid_url` otherwise), and first-party keys cannot register webhooks (`400 webhook_url_not_supported_for_key`). See **Webhooks** above for verification. Polling `links.status` works too.",
        "tags": [
          "Models"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/idempotencyKey"
          },
          {
            "$ref": "#/components/parameters/usageProject"
          },
          {
            "$ref": "#/components/parameters/usageCostCenter"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ReframeLtx23Request"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "A quote (`quote_only: true`), or the terminal job when it finished inside `wait_timeout_seconds`. A quote spends nothing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModelQuoteResponse"
                }
              }
            }
          },
          "201": {
            "description": "Job created. Poll `links.status`, or pass a `webhook_url` to be told when it finishes.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobResponse"
                }
              }
            }
          },
          "202": {
            "description": "Job created and still running when `wait_timeout_seconds` elapsed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobResponse"
                }
              }
            }
          },
          "400": {
            "description": "invalid_request, unsupported_option, prompt_too_long, or reference_media_not_workspace_owned",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "insufficient_credits",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "The API key is not authorized for this model or credit ceiling",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "The idempotency key was reused with different request data",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "410": {
            "description": "quote_expired: the quote must be replaced under a new idempotency key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "rate_limit_exceeded, or a concurrency or budget ceiling",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "501": {
            "description": "not_implemented: this model endpoint is not live yet",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "The paid request could not be claimed safely",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-roasos-capability-id": "generation.reframe.ltx-2.3@1",
        "x-roasos-runtime-status": "available",
        "x-roasos-launch-readiness": "ready",
        "x-roasos-exposure": "public"
      }
    },
    "/v1/reframe/ideogram-v3": {
      "post": {
        "operationId": "createReframeIdeogramV3",
        "summary": "Run ideogram-v3 (reframe)",
        "description": "Submit a reframe job to ideogram-v3. The request carries the real fields of this model; there is no hidden switch on a model parameter.\n\nSend `quote_only: true` to price the request for free, then send the same body with the returned `quote_id` to run it.\n\nAttach identity, product, or a first frame by resource id (`avatar_id`, `product_id`, `scene_id`) or by a workspace-owned `cdn.roasos.com` URL. Any other URL is `400 reference_media_not_workspace_owned`.\n\nPass a `webhook_url` and roasOS POSTs you the same job envelope `GET /v1/jobs/{id}` returns when the job finishes, signed with `X-RoasOS-Signature` and retried on failure. The URL must be HTTPS and reachable (`400 invalid_url` otherwise), and first-party keys cannot register webhooks (`400 webhook_url_not_supported_for_key`). See **Webhooks** above for verification. Polling `links.status` works too.",
        "tags": [
          "Models"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/idempotencyKey"
          },
          {
            "$ref": "#/components/parameters/usageProject"
          },
          {
            "$ref": "#/components/parameters/usageCostCenter"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ReframeIdeogramV3Request"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "A quote (`quote_only: true`), or the terminal job when it finished inside `wait_timeout_seconds`. A quote spends nothing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModelQuoteResponse"
                }
              }
            }
          },
          "201": {
            "description": "Job created. Poll `links.status`, or pass a `webhook_url` to be told when it finishes.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobResponse"
                }
              }
            }
          },
          "202": {
            "description": "Job created and still running when `wait_timeout_seconds` elapsed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobResponse"
                }
              }
            }
          },
          "400": {
            "description": "invalid_request, unsupported_option, prompt_too_long, or reference_media_not_workspace_owned",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "insufficient_credits",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "The API key is not authorized for this model or credit ceiling",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "The idempotency key was reused with different request data",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "410": {
            "description": "quote_expired: the quote must be replaced under a new idempotency key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "rate_limit_exceeded, or a concurrency or budget ceiling",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "501": {
            "description": "not_implemented: this model endpoint is not live yet",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "The paid request could not be claimed safely",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-roasos-capability-id": "generation.reframe.ideogram-v3@1",
        "x-roasos-runtime-status": "available",
        "x-roasos-launch-readiness": "ready",
        "x-roasos-exposure": "public"
      }
    },
    "/v1/music/lyria3": {
      "post": {
        "operationId": "createMusicLyria3",
        "summary": "Run lyria3 (music)",
        "description": "Submit a music job to lyria3. The request carries the real fields of this model; there is no hidden switch on a model parameter.\n\nSend `quote_only: true` to price the request for free, then send the same body with the returned `quote_id` to run it.\n\nAttach identity, product, or a first frame by resource id (`avatar_id`, `product_id`, `scene_id`) or by a workspace-owned `cdn.roasos.com` URL. Any other URL is `400 reference_media_not_workspace_owned`.\n\nPass a `webhook_url` and roasOS POSTs you the same job envelope `GET /v1/jobs/{id}` returns when the job finishes, signed with `X-RoasOS-Signature` and retried on failure. The URL must be HTTPS and reachable (`400 invalid_url` otherwise), and first-party keys cannot register webhooks (`400 webhook_url_not_supported_for_key`). See **Webhooks** above for verification. Polling `links.status` works too.",
        "tags": [
          "Models"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/idempotencyKey"
          },
          {
            "$ref": "#/components/parameters/usageProject"
          },
          {
            "$ref": "#/components/parameters/usageCostCenter"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MusicLyria3Request"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "A quote (`quote_only: true`), or the terminal job when it finished inside `wait_timeout_seconds`. A quote spends nothing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModelQuoteResponse"
                }
              }
            }
          },
          "201": {
            "description": "Job created. Poll `links.status`, or pass a `webhook_url` to be told when it finishes.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobResponse"
                }
              }
            }
          },
          "202": {
            "description": "Job created and still running when `wait_timeout_seconds` elapsed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobResponse"
                }
              }
            }
          },
          "400": {
            "description": "invalid_request, unsupported_option, prompt_too_long, or reference_media_not_workspace_owned",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "insufficient_credits",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "The API key is not authorized for this model or credit ceiling",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "The idempotency key was reused with different request data",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "410": {
            "description": "quote_expired: the quote must be replaced under a new idempotency key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "rate_limit_exceeded, or a concurrency or budget ceiling",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "501": {
            "description": "not_implemented: this model endpoint is not live yet",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "The paid request could not be claimed safely",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-roasos-capability-id": "generation.music.lyria3@1",
        "x-roasos-runtime-status": "available",
        "x-roasos-launch-readiness": "ready",
        "x-roasos-exposure": "public"
      }
    },
    "/v1/music/lyria-3.5": {
      "post": {
        "operationId": "createMusicLyria35",
        "summary": "Run lyria-3.5 (music)",
        "description": "Submit a music job to lyria-3.5. The request carries the real fields of this model; there is no hidden switch on a model parameter.\n\nSend `quote_only: true` to price the request for free, then send the same body with the returned `quote_id` to run it.\n\nAttach identity, product, or a first frame by resource id (`avatar_id`, `product_id`, `scene_id`) or by a workspace-owned `cdn.roasos.com` URL. Any other URL is `400 reference_media_not_workspace_owned`.\n\nPass a `webhook_url` and roasOS POSTs you the same job envelope `GET /v1/jobs/{id}` returns when the job finishes, signed with `X-RoasOS-Signature` and retried on failure. The URL must be HTTPS and reachable (`400 invalid_url` otherwise), and first-party keys cannot register webhooks (`400 webhook_url_not_supported_for_key`). See **Webhooks** above for verification. Polling `links.status` works too.",
        "tags": [
          "Models"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/idempotencyKey"
          },
          {
            "$ref": "#/components/parameters/usageProject"
          },
          {
            "$ref": "#/components/parameters/usageCostCenter"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MusicLyria35Request"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "A quote (`quote_only: true`), or the terminal job when it finished inside `wait_timeout_seconds`. A quote spends nothing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModelQuoteResponse"
                }
              }
            }
          },
          "201": {
            "description": "Job created. Poll `links.status`, or pass a `webhook_url` to be told when it finishes.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobResponse"
                }
              }
            }
          },
          "202": {
            "description": "Job created and still running when `wait_timeout_seconds` elapsed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobResponse"
                }
              }
            }
          },
          "400": {
            "description": "invalid_request, unsupported_option, prompt_too_long, or reference_media_not_workspace_owned",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "insufficient_credits",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "The API key is not authorized for this model or credit ceiling",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "The idempotency key was reused with different request data",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "410": {
            "description": "quote_expired: the quote must be replaced under a new idempotency key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "rate_limit_exceeded, or a concurrency or budget ceiling",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "501": {
            "description": "not_implemented: this model endpoint is not live yet",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "The paid request could not be claimed safely",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-roasos-capability-id": "generation.music.lyria-3.5@1",
        "x-roasos-runtime-status": "available",
        "x-roasos-launch-readiness": "ready",
        "x-roasos-exposure": "public"
      }
    },
    "/v1/music/minimax-music-3": {
      "post": {
        "operationId": "createMusicMinimaxMusic3",
        "summary": "Run minimax-music-3 (music)",
        "description": "Submit a music job to minimax-music-3. The request carries the real fields of this model; there is no hidden switch on a model parameter.\n\nSend `quote_only: true` to price the request for free, then send the same body with the returned `quote_id` to run it.\n\nAttach identity, product, or a first frame by resource id (`avatar_id`, `product_id`, `scene_id`) or by a workspace-owned `cdn.roasos.com` URL. Any other URL is `400 reference_media_not_workspace_owned`.\n\nPass a `webhook_url` and roasOS POSTs you the same job envelope `GET /v1/jobs/{id}` returns when the job finishes, signed with `X-RoasOS-Signature` and retried on failure. The URL must be HTTPS and reachable (`400 invalid_url` otherwise), and first-party keys cannot register webhooks (`400 webhook_url_not_supported_for_key`). See **Webhooks** above for verification. Polling `links.status` works too.",
        "tags": [
          "Models"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/idempotencyKey"
          },
          {
            "$ref": "#/components/parameters/usageProject"
          },
          {
            "$ref": "#/components/parameters/usageCostCenter"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MusicMinimaxMusic3Request"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "A quote (`quote_only: true`), or the terminal job when it finished inside `wait_timeout_seconds`. A quote spends nothing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModelQuoteResponse"
                }
              }
            }
          },
          "201": {
            "description": "Job created. Poll `links.status`, or pass a `webhook_url` to be told when it finishes.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobResponse"
                }
              }
            }
          },
          "202": {
            "description": "Job created and still running when `wait_timeout_seconds` elapsed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobResponse"
                }
              }
            }
          },
          "400": {
            "description": "invalid_request, unsupported_option, prompt_too_long, or reference_media_not_workspace_owned",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "insufficient_credits",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "The API key is not authorized for this model or credit ceiling",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "The idempotency key was reused with different request data",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "410": {
            "description": "quote_expired: the quote must be replaced under a new idempotency key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "rate_limit_exceeded, or a concurrency or budget ceiling",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "501": {
            "description": "not_implemented: this model endpoint is not live yet",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "The paid request could not be claimed safely",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-roasos-capability-id": "generation.music.minimax-music-3@1",
        "x-roasos-runtime-status": "available",
        "x-roasos-launch-readiness": "ready",
        "x-roasos-exposure": "public"
      }
    },
    "/v1/music/elevenlabs-music": {
      "post": {
        "operationId": "createMusicElevenlabsMusic",
        "summary": "Run elevenlabs-music (music)",
        "description": "Submit a music job to elevenlabs-music. The request carries the real fields of this model; there is no hidden switch on a model parameter.\n\nSend `quote_only: true` to price the request for free, then send the same body with the returned `quote_id` to run it.\n\nAttach identity, product, or a first frame by resource id (`avatar_id`, `product_id`, `scene_id`) or by a workspace-owned `cdn.roasos.com` URL. Any other URL is `400 reference_media_not_workspace_owned`.\n\nPass a `webhook_url` and roasOS POSTs you the same job envelope `GET /v1/jobs/{id}` returns when the job finishes, signed with `X-RoasOS-Signature` and retried on failure. The URL must be HTTPS and reachable (`400 invalid_url` otherwise), and first-party keys cannot register webhooks (`400 webhook_url_not_supported_for_key`). See **Webhooks** above for verification. Polling `links.status` works too.",
        "tags": [
          "Models"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/idempotencyKey"
          },
          {
            "$ref": "#/components/parameters/usageProject"
          },
          {
            "$ref": "#/components/parameters/usageCostCenter"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MusicElevenlabsMusicRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "A quote (`quote_only: true`), or the terminal job when it finished inside `wait_timeout_seconds`. A quote spends nothing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModelQuoteResponse"
                }
              }
            }
          },
          "201": {
            "description": "Job created. Poll `links.status`, or pass a `webhook_url` to be told when it finishes.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobResponse"
                }
              }
            }
          },
          "202": {
            "description": "Job created and still running when `wait_timeout_seconds` elapsed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobResponse"
                }
              }
            }
          },
          "400": {
            "description": "invalid_request, unsupported_option, prompt_too_long, or reference_media_not_workspace_owned",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "insufficient_credits",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "The API key is not authorized for this model or credit ceiling",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "The idempotency key was reused with different request data",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "410": {
            "description": "quote_expired: the quote must be replaced under a new idempotency key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "rate_limit_exceeded, or a concurrency or budget ceiling",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "501": {
            "description": "not_implemented: this model endpoint is not live yet",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "The paid request could not be claimed safely",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-roasos-capability-id": "generation.music.elevenlabs-music@1",
        "x-roasos-runtime-status": "available",
        "x-roasos-launch-readiness": "ready",
        "x-roasos-exposure": "public"
      }
    }
  }
}
