openapi: 3.1.0 info: title: Hedra Web Public API version: 0.1.0 description: Public endpoints are available to API users. servers: - url: /web-app tags: - name: Public description: Public endpoints are available to API users. paths: /public/models: get: tags: - Public summary: List Models operationId: list_models_public_models_get security: - APIKeyHeader: [] parameters: - name: types in: query required: false schema: anyOf: - type: array items: $ref: '#/components/schemas/GenerationType' - type: 'null' title: Types responses: '200': description: Successful Response content: application/json: schema: type: array items: $ref: '#/components/schemas/AIModel' title: Response List Models Public Models Get '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /public/voices: get: tags: - Public summary: List Voices operationId: list_voices_public_voices_get responses: '200': description: Successful Response content: application/json: schema: items: $ref: '#/components/schemas/Asset' type: array title: Response List Voices Public Voices Get security: - APIKeyHeader: [] /public/assets: get: tags: - Public summary: List Assets operationId: list_assets_public_assets_get security: - APIKeyHeader: [] parameters: - name: type in: query required: true schema: $ref: '#/components/schemas/AssetType' - name: ids in: query required: false schema: anyOf: - type: string - type: 'null' title: Ids responses: '200': description: Successful Response content: application/json: schema: type: array items: $ref: '#/components/schemas/Asset' title: Response List Assets Public Assets Get '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' post: tags: - Public summary: Create Asset operationId: create_asset_public_assets_post security: - APIKeyHeader: [] requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CreateAssetRequest' responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/CreateAssetResponse' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /public/assets/{id}/upload: post: tags: - Public summary: Upload Asset operationId: upload_asset_public_assets__id__upload_post security: - APIKeyHeader: [] parameters: - name: id in: path required: true schema: type: string format: uuid title: Id requestBody: required: true content: multipart/form-data: schema: $ref: '#/components/schemas/Body_upload_asset_public_assets__id__upload_post' responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/Asset' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /public/generations: get: tags: - Public summary: 'List ' operationId: list__public_generations_get security: - APIKeyHeader: [] parameters: - name: type in: query required: false schema: anyOf: - $ref: '#/components/schemas/AssetType' - $ref: '#/components/schemas/GenerationType' - type: 'null' title: Type - name: created_before in: query required: false schema: anyOf: - type: string format: date-time - type: 'null' title: Created Before - name: created_after in: query required: false schema: anyOf: - type: string format: date-time - type: 'null' title: Created After - name: prompt_query in: query required: false schema: anyOf: - type: string - type: 'null' title: Prompt Query - name: agent_thread_id in: query required: false schema: anyOf: - type: string format: uuid - type: 'null' title: Agent Thread Id - name: ids in: query required: false schema: anyOf: - type: string - type: 'null' title: Ids - name: paging_params in: query required: false schema: $ref: '#/components/schemas/PagingParams' default: limit: 100 offset: 0 responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/PagedResponse_Generation_' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' post: tags: - Public summary: Generate Asset operationId: generate_asset_public_generations_post security: - APIKeyHeader: [] requestBody: required: true content: application/json: schema: oneOf: - $ref: '#/components/schemas/GenerateVideoRequest' - $ref: '#/components/schemas/GenerateTextToSpeechRequest' - $ref: '#/components/schemas/GenerateTextToSoundRequest' - $ref: '#/components/schemas/GenerateImageRequest' - $ref: '#/components/schemas/GenerateImageUpscaleRequest' - $ref: '#/components/schemas/GenerateVideoUpscaleRequest' - $ref: '#/components/schemas/GenerateIsolatedAudioRequest' - $ref: '#/components/schemas/GenerateSpeechToSpeechRequest' - $ref: '#/components/schemas/GenerateVoiceCloneRequest' - $ref: '#/components/schemas/GenerateVideoToVideoRequest' - $ref: '#/components/schemas/GenerateMotionControlRequest' discriminator: propertyName: type mapping: video: '#/components/schemas/GenerateVideoRequest' text_to_speech: '#/components/schemas/GenerateTextToSpeechRequest' text_to_sound: '#/components/schemas/GenerateTextToSoundRequest' image: '#/components/schemas/GenerateImageRequest' image_to_image: '#/components/schemas/GenerateImageRequest' image_upscale: '#/components/schemas/GenerateImageUpscaleRequest' video_upscale: '#/components/schemas/GenerateVideoUpscaleRequest' audio_isolation: '#/components/schemas/GenerateIsolatedAudioRequest' speech_to_speech: '#/components/schemas/GenerateSpeechToSpeechRequest' voice_clone: '#/components/schemas/GenerateVoiceCloneRequest' video_to_video: '#/components/schemas/GenerateVideoToVideoRequest' motion_control: '#/components/schemas/GenerateMotionControlRequest' title: Generate Request responses: '200': description: Successful Response content: application/json: schema: oneOf: - $ref: '#/components/schemas/GenerateVideoResponse' - $ref: '#/components/schemas/GenerateTextToSpeechResponse' - $ref: '#/components/schemas/GenerateTextToSoundResponse' - $ref: '#/components/schemas/GenerateImageResponse' - $ref: '#/components/schemas/GenerateImageUpscaleResponse' - $ref: '#/components/schemas/GenerateVideoUpscaleResponse' - $ref: '#/components/schemas/GenerateIsolatedAudioResponse' - $ref: '#/components/schemas/GenerateSpeechToSpeechResponse' - $ref: '#/components/schemas/GenerateVoiceCloneResponse' - $ref: '#/components/schemas/GenerateVideoToVideoResponse' - $ref: '#/components/schemas/GenerateMotionControlResponse' discriminator: propertyName: type mapping: video: '#/components/schemas/GenerateVideoResponse' text_to_speech: '#/components/schemas/GenerateTextToSpeechResponse' text_to_sound: '#/components/schemas/GenerateTextToSoundResponse' image: '#/components/schemas/GenerateImageResponse' image_to_image: '#/components/schemas/GenerateImageResponse' image_upscale: '#/components/schemas/GenerateImageUpscaleResponse' video_upscale: '#/components/schemas/GenerateVideoUpscaleResponse' audio_isolation: '#/components/schemas/GenerateIsolatedAudioResponse' speech_to_speech: '#/components/schemas/GenerateSpeechToSpeechResponse' voice_clone: '#/components/schemas/GenerateVoiceCloneResponse' video_to_video: '#/components/schemas/GenerateVideoToVideoResponse' motion_control: '#/components/schemas/GenerateMotionControlResponse' title: Response Generate Asset Public Generations Post '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /public/generations/{generation_id}/status: get: tags: - Public summary: Get Status operationId: get_status_public_generations__generation_id__status_get security: - APIKeyHeader: [] parameters: - name: generation_id in: path required: true schema: type: string format: uuid title: Generation Id responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/GenerationStatusResponse' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /public/billing/credits: get: tags: - Public summary: Get Credits operationId: get_credits_public_billing_credits_get responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/CreditBalance' security: - APIKeyHeader: [] components: schemas: GenerateVideoToVideoRequest: properties: workspace_id: anyOf: - type: string - type: 'null' title: Workspace Id agent_thread_id: anyOf: - type: string format: uuid - type: 'null' title: Agent Thread Id description: Optional agent thread ID to associate this generation with. generation_id: anyOf: - type: string format: uuid - type: 'null' title: Generation Id description: Optional pre-reserved generation ID. If provided, this ID will be used instead of generating a new one. For batch operations (batch_size > 1), use generation_ids instead. generation_ids: anyOf: - items: type: string format: uuid type: array - type: 'null' title: Generation Ids description: Optional list of pre-reserved generation IDs for batch operations. Length must match batch_size. Mutually exclusive with generation_id. reserved_asset_id: anyOf: - type: string format: uuid - type: 'null' title: Reserved Asset Id description: Optional pre-reserved asset ID. Used as the produced media+asset resource_id so the client knows the asset's identity at request time. For batch operations (batch_size > 1), use reserved_asset_ids instead. Named distinctly from the response's `asset_id` (the produced asset) so the two don't collide across the request/response inheritance chain — mirrors generation_id (request) vs id (response). reserved_asset_ids: anyOf: - items: type: string format: uuid type: array - type: 'null' title: Reserved Asset Ids description: Optional list of pre-reserved asset IDs for batch operations. Length must match batch_size, parallel to generation_ids. Mutually exclusive with reserved_asset_id. type: type: string const: video_to_video title: Type default: video_to_video ai_model_id: anyOf: - type: string format: uuid - type: 'null' title: Ai Model Id description: Deprecated. Use `model_slug` to select the video-to-video model. deprecated: true model_slug: anyOf: - type: string - type: 'null' title: Model Slug description: The slug of the model to use. Alternative to `ai_model_id`. video_id: type: string format: uuid title: Video Id description: The id of the video asset to transform. prompt: type: string title: Prompt description: Natural language transformation instructions. Use @Element1, @Image1 syntax to reference elements and images. reference_image_asset_ids: anyOf: - items: type: string format: uuid type: array - type: 'null' title: Reference Image Asset Ids description: Optional ids of reference image assets for style transfer. Reference as @Image1, @Image2, etc. in prompt. elements: anyOf: - items: $ref: '#/components/schemas/KlingEditElement' type: array - type: 'null' title: Elements description: Optional elements for character tracking. Reference as @Element1, @Element2, etc. in prompt. keep_audio: type: boolean title: Keep Audio description: Whether to preserve the original audio from the input video. Automatically disabled when generate_audio is enabled. default: true type: object required: - video_id - prompt title: GenerateVideoToVideoRequest description: 'Video-to-video edit request for Kling O1 Edit model. Transforms videos using natural language while preserving motion.' NormalizedPoint: prefixItems: - type: number maximum: 1.0 minimum: 0.0 title: X description: Normalized x coordinate. - type: number maximum: 1.0 minimum: 0.0 title: Y description: Normalized y coordinate. type: array maxItems: 2 minItems: 2 GenerateSpeechToSpeechRequest: properties: workspace_id: anyOf: - type: string - type: 'null' title: Workspace Id agent_thread_id: anyOf: - type: string format: uuid - type: 'null' title: Agent Thread Id description: Optional agent thread ID to associate this generation with. generation_id: anyOf: - type: string format: uuid - type: 'null' title: Generation Id description: Optional pre-reserved generation ID. If provided, this ID will be used instead of generating a new one. For batch operations (batch_size > 1), use generation_ids instead. generation_ids: anyOf: - items: type: string format: uuid type: array - type: 'null' title: Generation Ids description: Optional list of pre-reserved generation IDs for batch operations. Length must match batch_size. Mutually exclusive with generation_id. reserved_asset_id: anyOf: - type: string format: uuid - type: 'null' title: Reserved Asset Id description: Optional pre-reserved asset ID. Used as the produced media+asset resource_id so the client knows the asset's identity at request time. For batch operations (batch_size > 1), use reserved_asset_ids instead. Named distinctly from the response's `asset_id` (the produced asset) so the two don't collide across the request/response inheritance chain — mirrors generation_id (request) vs id (response). reserved_asset_ids: anyOf: - items: type: string format: uuid type: array - type: 'null' title: Reserved Asset Ids description: Optional list of pre-reserved asset IDs for batch operations. Length must match batch_size, parallel to generation_ids. Mutually exclusive with reserved_asset_id. type: type: string const: speech_to_speech title: Type default: speech_to_speech audio_id: type: string format: uuid title: Audio Id description: The id of the audio asset requiring sound isolation. ai_model_id: anyOf: - type: string format: uuid - type: 'null' title: Ai Model Id description: Deprecated. Use `model_slug` to select the speech-to-speech model. deprecated: true model_slug: anyOf: - type: string - type: 'null' title: Model Slug description: The slug of the model to use for audio isolation. Alternative to `ai_model_id`. voice_id: type: string format: uuid title: Voice Id description: The id of the Voice to use. type: object required: - audio_id - voice_id title: GenerateSpeechToSpeechRequest GeneratedImage: properties: type: type: string const: generated_image title: Type default: generated_image width: type: integer title: Width description: Width of the image. height: type: integer title: Height description: Height of the image. url: type: string title: Url description: URL of the image. generated_image_inputs: $ref: '#/components/schemas/GeneratedImageInputs' description: Inputs for generating the image. type: object required: - width - height - url - generated_image_inputs title: GeneratedImage GenerateTextToSoundResponse: properties: workspace_id: anyOf: - type: string - type: 'null' title: Workspace Id agent_thread_id: anyOf: - type: string format: uuid - type: 'null' title: Agent Thread Id description: Optional agent thread ID to associate this generation with. generation_id: anyOf: - type: string format: uuid - type: 'null' title: Generation Id description: Optional pre-reserved generation ID. If provided, this ID will be used instead of generating a new one. For batch operations (batch_size > 1), use generation_ids instead. generation_ids: anyOf: - items: type: string format: uuid type: array - type: 'null' title: Generation Ids description: Optional list of pre-reserved generation IDs for batch operations. Length must match batch_size. Mutually exclusive with generation_id. reserved_asset_id: anyOf: - type: string format: uuid - type: 'null' title: Reserved Asset Id description: Optional pre-reserved asset ID. Used as the produced media+asset resource_id so the client knows the asset's identity at request time. For batch operations (batch_size > 1), use reserved_asset_ids instead. Named distinctly from the response's `asset_id` (the produced asset) so the two don't collide across the request/response inheritance chain — mirrors generation_id (request) vs id (response). reserved_asset_ids: anyOf: - items: type: string format: uuid type: array - type: 'null' title: Reserved Asset Ids description: Optional list of pre-reserved asset IDs for batch operations. Length must match batch_size, parallel to generation_ids. Mutually exclusive with reserved_asset_id. type: type: string const: text_to_sound title: Type default: text_to_sound ai_model_id: anyOf: - type: string format: uuid - type: 'null' title: Ai Model Id description: Deprecated. Use `model_slug` to select the sound effect model. deprecated: true model_slug: anyOf: - type: string - type: 'null' title: Model Slug description: The slug of the model to use for sound effect generation. Alternative to `ai_model_id`. text: type: string minLength: 1 title: Text description: The text description of the sound effect to generate. duration_seconds: anyOf: - type: number maximum: 30.0 minimum: 0.5 - type: 'null' title: Duration Seconds description: The duration of the sound effect in seconds (0.5-30). If not specified, duration is automatically determined from the prompt. prompt_influence: anyOf: - type: number maximum: 1.0 minimum: 0.0 - type: 'null' title: Prompt Influence description: Controls how strictly the model follows the prompt (0-1). Higher values mean more literal interpretation. Defaults to 0.3. loop: anyOf: - type: boolean - type: 'null' title: Loop description: Whether to create a sound effect that loops smoothly. Only available for the eleven_text_to_sound_v2 model. output_format: anyOf: - type: string - type: 'null' title: Output Format description: Output format of the generated audio. Formatted as codec_sample_rate_bitrate (e.g., mp3_22050_32, mp3_44100_128, pcm_44100). If not specified, defaults to mp3_44100_128. default: mp3_44100_128 id: type: string format: uuid title: Id description: The id of the generation created. asset_id: type: string format: uuid title: Asset Id description: The id of the audio asset resulting from the generation. created_at: type: string title: Created At description: Date the generation was submitted. status: $ref: '#/components/schemas/GenerationStatus' description: Status of the generation progress: type: number title: Progress description: Current progress to completion. Between 0-1 eta_sec: anyOf: - type: integer - type: 'null' title: Eta Sec description: Estimated time until completion in seconds. May be None if no historical data available. type: object required: - text - id - asset_id - created_at - status - progress title: GenerateTextToSoundResponse BatchImageResultItem: properties: id: anyOf: - type: string format: uuid - type: 'null' title: Id description: The id of the generation created. None if failed. asset_id: anyOf: - type: string format: uuid - type: 'null' title: Asset Id description: The id of the image asset. Set even on failure when the client reserved an asset id; None only when no id was reserved. created_at: type: string title: Created At description: Date the generation was submitted. status: $ref: '#/components/schemas/GenerationStatus' description: Status of the generation progress: type: number title: Progress description: Current progress to completion. Between 0-1 error: anyOf: - type: string - type: 'null' title: Error description: Error message if this item failed. type: object required: - created_at - status - progress title: BatchImageResultItem description: Individual result item in a batch image generation. ValidationError: properties: loc: items: anyOf: - type: string - type: integer type: array title: Location msg: type: string title: Message type: type: string title: Error Type input: title: Input ctx: type: object title: Context type: object required: - loc - msg - type title: ValidationError GenerateVideoRequest: properties: workspace_id: anyOf: - type: string - type: 'null' title: Workspace Id agent_thread_id: anyOf: - type: string format: uuid - type: 'null' title: Agent Thread Id description: Optional agent thread ID to associate this generation with. generation_id: anyOf: - type: string format: uuid - type: 'null' title: Generation Id description: Optional pre-reserved generation ID. If provided, this ID will be used instead of generating a new one. For batch operations (batch_size > 1), use generation_ids instead. generation_ids: anyOf: - items: type: string format: uuid type: array - type: 'null' title: Generation Ids description: Optional list of pre-reserved generation IDs for batch operations. Length must match batch_size. Mutually exclusive with generation_id. reserved_asset_id: anyOf: - type: string format: uuid - type: 'null' title: Reserved Asset Id description: Optional pre-reserved asset ID. Used as the produced media+asset resource_id so the client knows the asset's identity at request time. For batch operations (batch_size > 1), use reserved_asset_ids instead. Named distinctly from the response's `asset_id` (the produced asset) so the two don't collide across the request/response inheritance chain — mirrors generation_id (request) vs id (response). reserved_asset_ids: anyOf: - items: type: string format: uuid type: array - type: 'null' title: Reserved Asset Ids description: Optional list of pre-reserved asset IDs for batch operations. Length must match batch_size, parallel to generation_ids. Mutually exclusive with reserved_asset_id. type: type: string const: video title: Type default: video name: anyOf: - type: string maxLength: 255 - type: 'null' title: Name description: Optional human-friendly name for the generated asset. ai_model_id: anyOf: - type: string format: uuid - type: 'null' title: Ai Model Id description: Deprecated. Use `model_slug` to select the model. deprecated: true model_slug: anyOf: - type: string - type: 'null' title: Model Slug description: Slug of the model to use for the generation. Alternative to `ai_model_id`. start_keyframe_id: anyOf: - type: string format: uuid - type: 'null' title: Start Keyframe Id description: The id of the Image asset to use as the start keyframe. start_keyframe_url: anyOf: - type: string maxLength: 2083 minLength: 1 format: uri - type: 'null' title: Start Keyframe Url description: The URL of the image to use as the start keyframe. end_keyframe_id: anyOf: - type: string format: uuid - type: 'null' title: End Keyframe Id description: The id of the Image asset to use as the end keyframe. end_keyframe_url: anyOf: - type: string maxLength: 2083 minLength: 1 format: uri - type: 'null' title: End Keyframe Url description: The URL of the image to use as the end keyframe. audio_id: anyOf: - type: string format: uuid - items: type: string format: uuid type: array - type: 'null' title: Audio Id description: The id of the Audio asset to use, or a list of ids for multi-speaker generation. audio_generation: anyOf: - $ref: '#/components/schemas/GenerateTextToSpeechRequest' - type: 'null' description: Optional TTS parameters for server-side audio generation. If provided (and audio_id is not), audio will be generated from these params before video generation. audio_start_ms: anyOf: - type: integer - type: 'null' title: Audio Start Ms description: Audio start offset in milliseconds. Negative values prepend silence (e.g., -1000 adds 1s silence before audio). Positive values crop from the beginning of the source audio (e.g., 2000 skips the first 2s). Use with generated_video_inputs.duration_ms to control total output length. reference_audio_ids: anyOf: - items: type: string format: uuid type: array - type: 'null' title: Reference Audio Ids description: The id(s) of the audio(s) to reference in the generation. reference_image_ids: anyOf: - items: type: string format: uuid type: array - type: 'null' title: Reference Image Ids description: The id(s) of the image(s) to reference in the generation. reference_video_ids: anyOf: - items: type: string format: uuid type: array - type: 'null' title: Reference Video Ids description: The id(s) of the video(s) to reference in the generation. video_id: anyOf: - type: string format: uuid - type: 'null' title: Video Id description: The id of the Video asset to use as input. For V2V (motion control) models this is the driving video; for Google Veo models this triggers video extension. generated_video_inputs: $ref: '#/components/schemas/GeneratedVideoInputs' description: Inputs for generating the video. batch_size: type: integer maximum: 8.0 minimum: 1.0 title: Batch Size description: Number of video variations to generate (1-8). When > 1, batch_results will contain all generation results. default: 1 type: object required: - generated_video_inputs title: GenerateVideoRequest GeneratedImageInputs: properties: text_prompt: type: string title: Text Prompt description: Prompt for image generation. ai_model_id: anyOf: - type: string format: uuid - type: 'null' title: Ai Model Id description: Deprecated. Use `model_slug` to identify the model used for generation. deprecated: true model_slug: anyOf: - type: string - type: 'null' title: Model Slug description: The slug of the model used for generation. Alternative to `ai_model_id`. aspect_ratio: anyOf: - type: string - type: 'null' title: Aspect Ratio description: Aspect ratio used for generation. resolution: anyOf: - type: string - type: 'null' title: Resolution description: Resolution used for generation. start_keyframe_id: anyOf: - type: string format: uuid - type: 'null' title: Start Keyframe Id description: The id of the Image asset used as the start keyframe. reference_image_ids: anyOf: - items: type: string format: uuid type: array - type: 'null' title: Reference Image Ids description: The id(s) of the image(s) referenced in the generation. type: object required: - text_prompt title: GeneratedImageInputs GeneratedAudioInputs: properties: text_prompt: type: string title: Text Prompt description: Prompt for audio generation. ai_model_id: anyOf: - type: string format: uuid - type: 'null' title: Ai Model Id description: Deprecated. Use `model_slug` to identify the model used for generation. deprecated: true model_slug: anyOf: - type: string - type: 'null' title: Model Slug description: The slug of the model used for generation. Alternative to `ai_model_id`. voice_name: anyOf: - type: string - type: 'null' title: Voice Name description: The display name of the voice used for generation. voice_id: anyOf: - type: string format: uuid - type: 'null' title: Voice Id description: The id of the voice used for generation. stability: anyOf: - type: number - type: 'null' title: Stability description: Stability setting used for generation (0-1). speed: anyOf: - type: number - type: 'null' title: Speed description: Speed setting used for generation (0.7-1.2). language: anyOf: - type: string - type: 'null' title: Language description: Language used for generation. type: object required: - text_prompt title: GeneratedAudioInputs AIModel: properties: id: anyOf: - type: string - type: 'null' title: Id description: Environment-specific UUID of the model, or null for a code-backed model with no `ai_models` row (identified by `slug`). Being removed in favor of `slug` (model-registry plan step 7); prefer `slug`. slug: type: string title: Slug description: Stable cross-environment identifier for the model, e.g. ``google/nano-banana``. Unique and identical across local/staging/production. Prefer ``slug`` over ``id`` when referencing models — ``id`` is environment-specific and will be removed in a later migration (model-registry plan step 7). name: type: string title: Name description: Name of the model description: anyOf: - type: string - type: 'null' title: Description description: Description of the model. type: type: string title: Type description: Type of generation the model applies to. aspect_ratios: anyOf: - items: type: string type: array - type: 'null' title: Aspect Ratios description: Aspect ratios the model supports. aspect_ratio_range: anyOf: - prefixItems: - type: number - type: number type: array maxItems: 2 minItems: 2 - type: 'null' title: Aspect Ratio Range description: If set to (min, max), the model accepts any keyframe whose width/height ratio is in [min, max], not just the values in ``aspect_ratios``. The model snaps the output to its internal grid. ``aspect_ratios`` then serves as UI/preset labels rather than as an enum gate. resolutions: anyOf: - items: type: string type: array - type: 'null' title: Resolutions description: Resolutions the model supports. default_resolution: anyOf: - type: string - type: 'null' title: Default Resolution description: Backend-declared default output resolution for this model. durations: anyOf: - items: type: string type: array - type: 'null' title: Durations description: Durations the model supports. requires_start_frame: anyOf: - type: boolean - type: 'null' title: Requires Start Frame description: Whether the model is conditioned by a start frame. requires_end_frame: anyOf: - type: boolean - type: 'null' title: Requires End Frame description: Whether the model is conditioned by an end frame. requires_audio_input: anyOf: - type: boolean - type: 'null' title: Requires Audio Input description: Whether the model is conditioned by audio input. requires_input_video: anyOf: - type: boolean - type: 'null' title: Requires Input Video description: Whether the model requires video input (video-to-video). requires_character_orientation: anyOf: - type: boolean - type: 'null' title: Requires Character Orientation description: Whether the model requires character orientation (motion control). eta_ms: anyOf: - type: integer - type: 'null' title: Eta Ms description: Average generation duration in milliseconds. tags: anyOf: - items: type: string type: array - type: 'null' title: Tags description: Tags for model categorization. max_duration_ms: anyOf: - type: integer - type: 'null' title: Max Duration Ms description: Maximum output duration in milliseconds for video/audio models. custom_resolution: anyOf: - type: boolean - type: 'null' title: Custom Resolution description: Whether the model supports custom resolution. price_details: $ref: '#/components/schemas/AIModelPrice' description: Pricing details of the model. pricing: anyOf: - $ref: '#/components/schemas/Pricing' - type: 'null' description: Extensible pricing information with dimension modifiers for resolution, audio, etc. dimensions: anyOf: - additionalProperties: additionalProperties: $ref: '#/components/schemas/Dimension' type: object type: object - type: 'null' title: Dimensions description: Width and height for each aspect_ratio and resolution tuple. min_prompt_length: anyOf: - type: integer - type: 'null' title: Min Prompt Length description: Minimum character count for text prompts. Null means no minimum. max_prompt_length: anyOf: - type: integer - type: 'null' title: Max Prompt Length description: Maximum character count for text prompts. Null means no maximum. inputs: anyOf: - items: $ref: '#/components/schemas/InputMode' type: array - type: 'null' title: Inputs description: List of input modes the model supports. Each mode groups mutually exclusive input slots. The frontend picks one mode. text_to_video (no inputs) is always implicitly available for VIDEO type models. Null means the model has no declarative input specifications (use requires_* booleans). logo_url: anyOf: - type: string - type: 'null' title: Logo Url description: URL of the model's logo in SVG format. premium: type: boolean title: Premium description: Whether this is a premium model. default: true display_order: anyOf: - type: integer - type: 'null' title: Display Order description: Display order for UI sorting. Lower values appear first. type: object required: - slug - name - description - type - price_details title: AIModel GenerateVideoUpscaleResponse: properties: workspace_id: anyOf: - type: string - type: 'null' title: Workspace Id agent_thread_id: anyOf: - type: string format: uuid - type: 'null' title: Agent Thread Id description: Optional agent thread ID to associate this generation with. generation_id: anyOf: - type: string format: uuid - type: 'null' title: Generation Id description: Optional pre-reserved generation ID. If provided, this ID will be used instead of generating a new one. For batch operations (batch_size > 1), use generation_ids instead. generation_ids: anyOf: - items: type: string format: uuid type: array - type: 'null' title: Generation Ids description: Optional list of pre-reserved generation IDs for batch operations. Length must match batch_size. Mutually exclusive with generation_id. reserved_asset_id: anyOf: - type: string format: uuid - type: 'null' title: Reserved Asset Id description: Optional pre-reserved asset ID. Used as the produced media+asset resource_id so the client knows the asset's identity at request time. For batch operations (batch_size > 1), use reserved_asset_ids instead. Named distinctly from the response's `asset_id` (the produced asset) so the two don't collide across the request/response inheritance chain — mirrors generation_id (request) vs id (response). reserved_asset_ids: anyOf: - items: type: string format: uuid type: array - type: 'null' title: Reserved Asset Ids description: Optional list of pre-reserved asset IDs for batch operations. Length must match batch_size, parallel to generation_ids. Mutually exclusive with reserved_asset_id. type: type: string const: video_upscale title: Type default: video_upscale ai_model_id: anyOf: - type: string format: uuid - type: 'null' title: Ai Model Id description: Deprecated. Use `model_slug` to select the video upscale model. deprecated: true model_slug: anyOf: - type: string - type: 'null' title: Model Slug description: The slug of the model to use for upscaling. Alternative to `ai_model_id`. video_id: type: string format: uuid title: Video Id description: The id of the Video asset to upscale. upscale_factor: anyOf: - type: number - type: 'null' title: Upscale Factor description: Computed scale factor derived from target_resolution and source video dimensions. target_resolution: anyOf: - type: string - type: 'null' title: Target Resolution description: 'Target output resolution. Must be one of: 1080p, 2K, 4K.' asset_id: type: string format: uuid title: Asset Id description: The id of the resulting upscaled video asset. id: type: string format: uuid title: Id description: The id of the generation. Can be used to check status. created_at: type: string title: Created At description: Date the generation was submitted. status: $ref: '#/components/schemas/GenerationStatus' description: Status of the generation progress: type: number title: Progress description: Current progress to completion. Between 0-1 eta_sec: anyOf: - type: integer - type: 'null' title: Eta Sec description: Estimated time until completion in seconds. May be None if no historical data available. type: object required: - video_id - asset_id - id - created_at - status - progress title: GenerateVideoUpscaleResponse GenerateIsolatedAudioRequest: properties: workspace_id: anyOf: - type: string - type: 'null' title: Workspace Id agent_thread_id: anyOf: - type: string format: uuid - type: 'null' title: Agent Thread Id description: Optional agent thread ID to associate this generation with. generation_id: anyOf: - type: string format: uuid - type: 'null' title: Generation Id description: Optional pre-reserved generation ID. If provided, this ID will be used instead of generating a new one. For batch operations (batch_size > 1), use generation_ids instead. generation_ids: anyOf: - items: type: string format: uuid type: array - type: 'null' title: Generation Ids description: Optional list of pre-reserved generation IDs for batch operations. Length must match batch_size. Mutually exclusive with generation_id. reserved_asset_id: anyOf: - type: string format: uuid - type: 'null' title: Reserved Asset Id description: Optional pre-reserved asset ID. Used as the produced media+asset resource_id so the client knows the asset's identity at request time. For batch operations (batch_size > 1), use reserved_asset_ids instead. Named distinctly from the response's `asset_id` (the produced asset) so the two don't collide across the request/response inheritance chain — mirrors generation_id (request) vs id (response). reserved_asset_ids: anyOf: - items: type: string format: uuid type: array - type: 'null' title: Reserved Asset Ids description: Optional list of pre-reserved asset IDs for batch operations. Length must match batch_size, parallel to generation_ids. Mutually exclusive with reserved_asset_id. type: type: string const: audio_isolation title: Type default: audio_isolation audio_id: type: string format: uuid title: Audio Id description: The id of the audio asset requiring sound isolation. ai_model_id: anyOf: - type: string format: uuid - type: 'null' title: Ai Model Id description: Deprecated. Use `model_slug` to select the audio isolation model. deprecated: true model_slug: anyOf: - type: string - type: 'null' title: Model Slug description: The slug of the model to use for audio isolation. Alternative to `ai_model_id`. type: object required: - audio_id title: GenerateIsolatedAudioRequest GenerateTextToSpeechRequest: properties: workspace_id: anyOf: - type: string - type: 'null' title: Workspace Id agent_thread_id: anyOf: - type: string format: uuid - type: 'null' title: Agent Thread Id description: Optional agent thread ID to associate this generation with. generation_id: anyOf: - type: string format: uuid - type: 'null' title: Generation Id description: Optional pre-reserved generation ID. If provided, this ID will be used instead of generating a new one. For batch operations (batch_size > 1), use generation_ids instead. generation_ids: anyOf: - items: type: string format: uuid type: array - type: 'null' title: Generation Ids description: Optional list of pre-reserved generation IDs for batch operations. Length must match batch_size. Mutually exclusive with generation_id. reserved_asset_id: anyOf: - type: string format: uuid - type: 'null' title: Reserved Asset Id description: Optional pre-reserved asset ID. Used as the produced media+asset resource_id so the client knows the asset's identity at request time. For batch operations (batch_size > 1), use reserved_asset_ids instead. Named distinctly from the response's `asset_id` (the produced asset) so the two don't collide across the request/response inheritance chain — mirrors generation_id (request) vs id (response). reserved_asset_ids: anyOf: - items: type: string format: uuid type: array - type: 'null' title: Reserved Asset Ids description: Optional list of pre-reserved asset IDs for batch operations. Length must match batch_size, parallel to generation_ids. Mutually exclusive with reserved_asset_id. type: type: string const: text_to_speech title: Type default: text_to_speech name: anyOf: - type: string maxLength: 255 - type: 'null' title: Name description: Optional human-friendly name for the generated asset. voice_id: type: string format: uuid title: Voice Id description: The id of the Voice to use. model_id: anyOf: - type: string format: uuid - type: 'null' title: Model Id description: Deprecated. Use `model_slug` to select the model. deprecated: true model_slug: anyOf: - type: string - type: 'null' title: Model Slug description: The slug of the model to use. Alternative to `model_id`. text: type: string title: Text description: The text to convert to speech. stability: type: number maximum: 1.0 minimum: 0.0 title: Stability description: Stability should be between 0-1, where 0 is the most stable and 1 is the most unstable. This varies the consistency between your outputs. default: 1.0 speed: type: number maximum: 1.2 minimum: 0.7 title: Speed description: Speed should be between 0.7 and 1.2, where 0.7 is the slowest and 1.2 is the fastest. This varies the speed of the generated speech. default: 1.0 language: $ref: '#/components/schemas/SupportedLanguage' description: Language for TTS. See SupportedLanguage enum for valid values. Defaults to 'auto'. default: auto type: object required: - voice_id - text title: GenerateTextToSpeechRequest WorkspaceCreditUsage: properties: used: type: integer title: Used description: Credits consumed in the current period. allocated: type: integer title: Allocated description: Credits allocated to the workspace for the current period. available: type: integer title: Available description: Credits currently available in the pool. api_usd_micros: anyOf: - type: integer - type: 'null' title: Api Usd Micros description: Segregated API wallet balance in integer micro-dollars (1e-6 USD). Only present while the API wallet is enabled and funded; spent exclusively by programmatic API usage. api_credits: anyOf: - type: integer - type: 'null' title: Api Credits description: Display-credit view of api_usd_micros (floor at 140 credits/$). Informational; API charges are USD-denominated. api_consumed_usd_micros: anyOf: - type: integer - type: 'null' title: Api Consumed Usd Micros description: Lifetime micro-dollars spent from the API wallet (carried across billing periods — the wallet has none). Only present while the API wallet is enabled and funded. type: object required: - used - allocated - available title: WorkspaceCreditUsage description: 'Per-workspace credit usage for the current period, from the workspace credit pool. All three fields are display credits and stay continuous across the USD cutover: for converted pools `available`/`used` are floor views of the pool''s micro-dollar buckets computed on read, and `allocated` serves the frozen credit value, which round-trips exactly (regrants re-denominate it at ENG-8818). Pinned by test_display_coherence_usd.py.' Body_upload_asset_public_assets__id__upload_post: properties: file: type: string contentMediaType: application/octet-stream title: File type: object required: - file title: Body_upload_asset_public_assets__id__upload_post Asset: properties: id: type: string format: uuid title: Id description: The id of the asset. type: $ref: '#/components/schemas/AssetType' description: The type of the asset. name: type: string title: Name description: Name of the asset. Default to user-provided file name. thumbnail_url: anyOf: - type: string - type: 'null' title: Thumbnail Url description: URL of the thumbnail image. description: anyOf: - type: string - type: 'null' title: Description description: Optional description of the asset. is_favorite: type: boolean title: Is Favorite description: Whether the asset is favorited by the user. default: false recent: type: boolean title: Recent description: Whether this asset was recently used by the user. default: false created_at: type: string title: Created At description: Date the asset was created. favorited_at: anyOf: - type: string - type: 'null' title: Favorited At description: Date the asset was favorited. asset: oneOf: - $ref: '#/components/schemas/UploadedImage' - $ref: '#/components/schemas/UploadedAudio' - $ref: '#/components/schemas/UploadedVideo' - $ref: '#/components/schemas/Uploaded3D' - $ref: '#/components/schemas/GeneratedAudio' - $ref: '#/components/schemas/GeneratedImage' - $ref: '#/components/schemas/GeneratedVideo' - $ref: '#/components/schemas/Voice' title: Asset description: The asset itself. discriminator: propertyName: type mapping: generated_audio: '#/components/schemas/GeneratedAudio' generated_image: '#/components/schemas/GeneratedImage' generated_video: '#/components/schemas/GeneratedVideo' uploaded_audio: '#/components/schemas/UploadedAudio' uploaded_image: '#/components/schemas/UploadedImage' uploaded_three_d: '#/components/schemas/Uploaded3D' uploaded_video: '#/components/schemas/UploadedVideo' voice: '#/components/schemas/Voice' type: object required: - id - type - name - created_at - asset title: Asset Uploaded3D: properties: type: type: string const: uploaded_three_d title: Type default: uploaded_three_d url: type: string title: Url description: Presigned download URL. For agent-composed assets this is a `.zip` bundle containing the composition + every corpus reference available in S3. For curated corpus rows this is the raw USD file. file_format: type: string title: File Format description: Extension of the file at `url` — `zip` for composed assets, `usda` / `usdc` / `usdz` for curated corpus. type: object required: - url - file_format title: Uploaded3D HTTPValidationError: properties: detail: items: $ref: '#/components/schemas/ValidationError' type: array title: Detail type: object title: HTTPValidationError GenerateSpeechToSpeechResponse: properties: workspace_id: anyOf: - type: string - type: 'null' title: Workspace Id agent_thread_id: anyOf: - type: string format: uuid - type: 'null' title: Agent Thread Id description: Optional agent thread ID to associate this generation with. generation_id: anyOf: - type: string format: uuid - type: 'null' title: Generation Id description: Optional pre-reserved generation ID. If provided, this ID will be used instead of generating a new one. For batch operations (batch_size > 1), use generation_ids instead. generation_ids: anyOf: - items: type: string format: uuid type: array - type: 'null' title: Generation Ids description: Optional list of pre-reserved generation IDs for batch operations. Length must match batch_size. Mutually exclusive with generation_id. reserved_asset_id: anyOf: - type: string format: uuid - type: 'null' title: Reserved Asset Id description: Optional pre-reserved asset ID. Used as the produced media+asset resource_id so the client knows the asset's identity at request time. For batch operations (batch_size > 1), use reserved_asset_ids instead. Named distinctly from the response's `asset_id` (the produced asset) so the two don't collide across the request/response inheritance chain — mirrors generation_id (request) vs id (response). reserved_asset_ids: anyOf: - items: type: string format: uuid type: array - type: 'null' title: Reserved Asset Ids description: Optional list of pre-reserved asset IDs for batch operations. Length must match batch_size, parallel to generation_ids. Mutually exclusive with reserved_asset_id. type: type: string const: speech_to_speech title: Type default: speech_to_speech audio_id: type: string format: uuid title: Audio Id description: The id of the audio asset requiring sound isolation. ai_model_id: anyOf: - type: string format: uuid - type: 'null' title: Ai Model Id description: Deprecated. Use `model_slug` to select the speech-to-speech model. deprecated: true model_slug: anyOf: - type: string - type: 'null' title: Model Slug description: The slug of the model to use for audio isolation. Alternative to `ai_model_id`. voice_id: type: string format: uuid title: Voice Id description: The id of the Voice to use. id: type: string format: uuid title: Id description: The id of the generation created. asset_id: type: string format: uuid title: Asset Id description: The id of the isolated audio asset resulting from the generation. created_at: type: string title: Created At description: Date the generation was submitted. status: $ref: '#/components/schemas/GenerationStatus' description: Status of the generation progress: type: number title: Progress description: Current progress to completion. Between 0-1 eta_sec: anyOf: - type: integer - type: 'null' title: Eta Sec description: Estimated time until completion in seconds. May be None if no historical data available. type: object required: - audio_id - voice_id - id - asset_id - created_at - status - progress title: GenerateSpeechToSpeechResponse GenerateVideoToVideoResponse: properties: workspace_id: anyOf: - type: string - type: 'null' title: Workspace Id agent_thread_id: anyOf: - type: string format: uuid - type: 'null' title: Agent Thread Id description: Optional agent thread ID to associate this generation with. generation_id: anyOf: - type: string format: uuid - type: 'null' title: Generation Id description: Optional pre-reserved generation ID. If provided, this ID will be used instead of generating a new one. For batch operations (batch_size > 1), use generation_ids instead. generation_ids: anyOf: - items: type: string format: uuid type: array - type: 'null' title: Generation Ids description: Optional list of pre-reserved generation IDs for batch operations. Length must match batch_size. Mutually exclusive with generation_id. reserved_asset_id: anyOf: - type: string format: uuid - type: 'null' title: Reserved Asset Id description: Optional pre-reserved asset ID. Used as the produced media+asset resource_id so the client knows the asset's identity at request time. For batch operations (batch_size > 1), use reserved_asset_ids instead. Named distinctly from the response's `asset_id` (the produced asset) so the two don't collide across the request/response inheritance chain — mirrors generation_id (request) vs id (response). reserved_asset_ids: anyOf: - items: type: string format: uuid type: array - type: 'null' title: Reserved Asset Ids description: Optional list of pre-reserved asset IDs for batch operations. Length must match batch_size, parallel to generation_ids. Mutually exclusive with reserved_asset_id. type: type: string const: video_to_video title: Type default: video_to_video ai_model_id: anyOf: - type: string format: uuid - type: 'null' title: Ai Model Id description: Deprecated. Use `model_slug` to select the video-to-video model. deprecated: true model_slug: anyOf: - type: string - type: 'null' title: Model Slug description: The slug of the model to use. Alternative to `ai_model_id`. video_id: type: string format: uuid title: Video Id description: The id of the video asset to transform. prompt: type: string title: Prompt description: Natural language transformation instructions. Use @Element1, @Image1 syntax to reference elements and images. reference_image_asset_ids: anyOf: - items: type: string format: uuid type: array - type: 'null' title: Reference Image Asset Ids description: Optional ids of reference image assets for style transfer. Reference as @Image1, @Image2, etc. in prompt. elements: anyOf: - items: $ref: '#/components/schemas/KlingEditElement' type: array - type: 'null' title: Elements description: Optional elements for character tracking. Reference as @Element1, @Element2, etc. in prompt. keep_audio: type: boolean title: Keep Audio description: Whether to preserve the original audio from the input video. Automatically disabled when generate_audio is enabled. default: true id: type: string format: uuid title: Id description: The id of the generation. Can be used to check status. asset_id: type: string format: uuid title: Asset Id description: The id of the output video asset. created_at: type: string title: Created At description: Date the generation was submitted. status: $ref: '#/components/schemas/GenerationStatus' description: Status of the generation. progress: type: number title: Progress description: Current progress to completion. Between 0-1. eta_sec: anyOf: - type: integer - type: 'null' title: Eta Sec description: Estimated time until completion in seconds. May be None if no historical data available. type: object required: - video_id - prompt - id - asset_id - created_at - status - progress title: GenerateVideoToVideoResponse GenerateImageResponse: properties: workspace_id: anyOf: - type: string - type: 'null' title: Workspace Id agent_thread_id: anyOf: - type: string format: uuid - type: 'null' title: Agent Thread Id description: Optional agent thread ID to associate this generation with. generation_id: anyOf: - type: string format: uuid - type: 'null' title: Generation Id description: Optional pre-reserved generation ID. If provided, this ID will be used instead of generating a new one. For batch operations (batch_size > 1), use generation_ids instead. generation_ids: anyOf: - items: type: string format: uuid type: array - type: 'null' title: Generation Ids description: Optional list of pre-reserved generation IDs for batch operations. Length must match batch_size. Mutually exclusive with generation_id. reserved_asset_id: anyOf: - type: string format: uuid - type: 'null' title: Reserved Asset Id description: Optional pre-reserved asset ID. Used as the produced media+asset resource_id so the client knows the asset's identity at request time. For batch operations (batch_size > 1), use reserved_asset_ids instead. Named distinctly from the response's `asset_id` (the produced asset) so the two don't collide across the request/response inheritance chain — mirrors generation_id (request) vs id (response). reserved_asset_ids: anyOf: - items: type: string format: uuid type: array - type: 'null' title: Reserved Asset Ids description: Optional list of pre-reserved asset IDs for batch operations. Length must match batch_size, parallel to generation_ids. Mutually exclusive with reserved_asset_id. type: type: string enum: - image - image_to_image title: Type default: image name: anyOf: - type: string maxLength: 255 - type: 'null' title: Name description: Optional human-friendly name for the generated asset. text_prompt: type: string title: Text Prompt description: The text prompt for image generation or image editing. aspect_ratio: anyOf: - type: string - type: 'null' title: Aspect Ratio description: The aspect ratio to use. resolution: anyOf: - type: string - type: 'null' title: Resolution description: The resolution to use formatted like '540p', '1080p', '1440p (2K QHD)', etc. start_keyframe_id: anyOf: - type: string format: uuid - type: 'null' title: Start Keyframe Id description: The id of the Image asset to use as the start keyframe. ai_model_id: anyOf: - type: string format: uuid - type: 'null' title: Ai Model Id description: Deprecated. Use `model_slug` to select the model. deprecated: true model_slug: anyOf: - type: string - type: 'null' title: Model Slug description: The slug of the model to use. Alternative to `ai_model_id`. reference_image_ids: anyOf: - items: type: string format: uuid type: array - type: 'null' title: Reference Image Ids description: The id(s) of the image(s) to reference in the generation. This is only used for image-to-image generation and will supersede start_keyframe_id. batch_size: type: integer maximum: 8.0 minimum: 1.0 title: Batch Size description: Number of image variations to generate (1-8). When > 1, batch_results will contain all generation results. default: 1 enhance_prompt: type: boolean title: Enhance Prompt description: If true, automatically enhance the prompt before generation. default: false asset_id: type: string format: uuid title: Asset Id description: The id of the resulting image asset. id: type: string format: uuid title: Id description: The id of the generation. Can be used to check status. created_at: type: string title: Created At description: Date the generation was submitted. status: $ref: '#/components/schemas/GenerationStatus' description: Status of the generation progress: type: number title: Progress description: Current progress to completion. Between 0-1 eta_sec: anyOf: - type: integer - type: 'null' title: Eta Sec description: Estimated time until completion in seconds. May be None if no historical data available. batch_generation_id: anyOf: - type: string - type: 'null' title: Batch Generation Id description: Unique identifier linking all generations in a batch. batch_results: items: $ref: '#/components/schemas/BatchImageResultItem' type: array title: Batch Results description: All generation results in the batch. Always populated (even for batch_size=1). The main response fields (id, asset_id, etc.) reflect the first successful generation. type: object required: - text_prompt - asset_id - id - created_at - status - progress title: GenerateImageResponse SupportedLanguage: type: string enum: - Chinese - Chinese,Yue - English - Arabic - Russian - Spanish - French - Portuguese - German - Turkish - Dutch - Ukrainian - Vietnamese - Indonesian - Japanese - Italian - Korean - Thai - Polish - Romanian - Greek - Czech - Finnish - Hindi - Bulgarian - Danish - Hebrew - Malay - Persian - Slovak - Swedish - Croatian - Filipino - Hungarian - Norwegian - Slovenian - Catalan - Nynorsk - Tamil - Afrikaans - auto title: SupportedLanguage VoiceLabel: properties: name: type: string title: Name description: Label name. value: type: string title: Value description: Label value. type: object required: - name - value title: VoiceLabel PagedResponse_Generation_: properties: page_info: $ref: '#/components/schemas/PageInfo' description: Paging information. data: items: $ref: '#/components/schemas/Generation' type: array title: Data description: Page data. type: object required: - page_info - data title: PagedResponse[Generation] GenerationStatusResponse: properties: id: type: string format: uuid title: Id description: ID of the generation. asset_id: type: string format: uuid title: Asset Id description: ID of the generated asset. type: $ref: '#/components/schemas/AssetType' description: Type of generation. status: $ref: '#/components/schemas/GenerationStatus' description: Status of the generation. progress: type: number title: Progress description: Current progress to completion. Between 0-1 created_at: type: string title: Created At description: Date the generation was submitted. error: anyOf: - $ref: '#/components/schemas/GenerationError' - type: 'null' description: Generation error if any. Value is not present unless the status of the generation is 'error' and error_message field is not present. error_message: anyOf: - type: string - type: 'null' title: Error Message description: Error message. Value is not present unless the status of the generation is 'error' url: anyOf: - type: string - type: 'null' title: Url description: URL of the generated asset. download_url: anyOf: - type: string - type: 'null' title: Download Url description: URL to download the asset. streaming_url: anyOf: - type: string - type: 'null' title: Streaming Url description: URL to stream the asset. workspace_id: anyOf: - type: string - type: 'null' title: Workspace Id description: ID of the workspace this generation belongs to. type: object required: - id - asset_id - type - status - progress - created_at title: GenerationStatusResponse InputSlot: properties: type: type: string title: Type description: 'Media type: ''image'', ''video'', or ''audio''.' role: type: string title: Role description: Semantic role distinguishing this slot (e.g., 'start_frame', 'end_frame', 'reference', 'audio_input', 'input_video'). required: type: boolean title: Required description: Whether this input is mandatory. default: false max_count: type: integer title: Max Count description: Maximum number of files for this slot. default: 1 max_file_size_bytes: anyOf: - type: integer - type: 'null' title: Max File Size Bytes description: Maximum file size in bytes. min_dimension_px: anyOf: - type: integer - type: 'null' title: Min Dimension Px description: Minimum width or height in pixels. max_dimension_px: anyOf: - type: integer - type: 'null' title: Max Dimension Px description: Maximum width or height in pixels. min_duration_ms: anyOf: - type: integer - type: 'null' title: Min Duration Ms description: Minimum duration in milliseconds (video/audio only). max_duration_ms: anyOf: - type: integer - type: 'null' title: Max Duration Ms description: Maximum duration in milliseconds (video/audio only). max_total_duration_ms: anyOf: - type: integer - type: 'null' title: Max Total Duration Ms description: Maximum combined duration across all files in this slot in milliseconds (video/audio only). type: object required: - type - role title: InputSlot description: 'A typed input slot describing one kind of input a model accepts. Each slot has a media type (image, video, audio) and a role that distinguishes it from other slots of the same type (e.g., start_frame vs end_frame vs reference).' GenerationError: properties: type: $ref: '#/components/schemas/ErrorCode' description: The class of error encountered. message: type: string title: Message description: The error message. type: object required: - type - message title: GenerationError Voice: properties: type: type: string const: voice title: Type default: voice external_id: anyOf: - type: string - type: 'null' title: External Id description: External ID of the Voice. labels: items: $ref: '#/components/schemas/VoiceLabel' type: array title: Labels description: Labels that help identify the characteristics of the Voice. preview_url: anyOf: - type: string - type: 'null' title: Preview Url description: Preview URL of the Voice. source: anyOf: - type: string - type: 'null' title: Source description: Source of the Voice. type: object title: Voice GenerationType: type: string enum: - image - video - text_to_speech - speech_to_speech - voice_clone - audio_isolation - video_stitching - video_upscale - video_to_video - image_upscale - agent_response - audio_from_video - text_to_sound - assets_to_image_text_prompt - assets_to_audio_text_prompt title: GenerationType description: 'Generation type enum NOTE: this enum is used to determine the type of generation and is used to determine the type of asset that will be generated.' GenerateImageUpscaleResponse: properties: workspace_id: anyOf: - type: string - type: 'null' title: Workspace Id agent_thread_id: anyOf: - type: string format: uuid - type: 'null' title: Agent Thread Id description: Optional agent thread ID to associate this generation with. generation_id: anyOf: - type: string format: uuid - type: 'null' title: Generation Id description: Optional pre-reserved generation ID. If provided, this ID will be used instead of generating a new one. For batch operations (batch_size > 1), use generation_ids instead. generation_ids: anyOf: - items: type: string format: uuid type: array - type: 'null' title: Generation Ids description: Optional list of pre-reserved generation IDs for batch operations. Length must match batch_size. Mutually exclusive with generation_id. reserved_asset_id: anyOf: - type: string format: uuid - type: 'null' title: Reserved Asset Id description: Optional pre-reserved asset ID. Used as the produced media+asset resource_id so the client knows the asset's identity at request time. For batch operations (batch_size > 1), use reserved_asset_ids instead. Named distinctly from the response's `asset_id` (the produced asset) so the two don't collide across the request/response inheritance chain — mirrors generation_id (request) vs id (response). reserved_asset_ids: anyOf: - items: type: string format: uuid type: array - type: 'null' title: Reserved Asset Ids description: Optional list of pre-reserved asset IDs for batch operations. Length must match batch_size, parallel to generation_ids. Mutually exclusive with reserved_asset_id. type: type: string const: image_upscale title: Type default: image_upscale ai_model_id: anyOf: - type: string format: uuid - type: 'null' title: Ai Model Id description: Deprecated. Use `model_slug` to select the image upscale model. deprecated: true model_slug: anyOf: - type: string - type: 'null' title: Model Slug description: The slug of the model to use for upscaling. Alternative to `ai_model_id`. image_id: type: string format: uuid title: Image Id description: The id of the Image asset to use as the basis for upscaling. target_resolution: anyOf: - type: string - type: 'null' title: Target Resolution description: Target output resolution (e.g. '1080p', '2K', '4K'). Preferred over upscale_factor. upscale_factor: anyOf: - type: number - type: 'null' title: Upscale Factor description: 'Optional upscale factor (e.g. 2.0 for 2x). Deprecated: prefer target_resolution.' asset_id: type: string format: uuid title: Asset Id description: The id of the resulting image asset. id: type: string format: uuid title: Id description: The id of the generation. Can be used to check status. created_at: type: string title: Created At description: Date the generation was submitted. status: $ref: '#/components/schemas/GenerationStatus' description: Status of the generation progress: type: number title: Progress description: Current progress to completion. Between 0-1 eta_sec: anyOf: - type: integer - type: 'null' title: Eta Sec description: Estimated time until completion in seconds. May be None if no historical data available. type: object required: - image_id - asset_id - id - created_at - status - progress title: GenerateImageUpscaleResponse GeneratedVideo: properties: type: type: string const: generated_video title: Type default: generated_video width: type: integer title: Width description: Width of the image. height: type: integer title: Height description: Height of the image. url: anyOf: - type: string - type: 'null' title: Url description: URL of the image. download_url: anyOf: - type: string - type: 'null' title: Download Url description: URL to download the video streaming_url: anyOf: - type: string - type: 'null' title: Streaming Url description: URL to stream the video poster_url: anyOf: - type: string - type: 'null' title: Poster Url description: URL of the poster image duration_ms: type: integer title: Duration Ms description: Duration of the video. preview_url: type: string title: Preview Url description: URL of the preview for animated thumbnails. generated_video_inputs: $ref: '#/components/schemas/GeneratedVideoInputs' description: Inputs for generating the video. keyframe_start: anyOf: - $ref: '#/components/schemas/Asset' - type: 'null' description: URL of the Image asset used as the start keyframe. keyframe_end: anyOf: - $ref: '#/components/schemas/Asset' - type: 'null' description: URL of the Image asset used as the end keyframe. audio: anyOf: - $ref: '#/components/schemas/Asset' - type: 'null' description: URL of the Audio asset used as the basis for the video. reference_audio_ids: anyOf: - items: type: string format: uuid type: array - type: 'null' title: Reference Audio Ids description: The id(s) of the audio(s) referenced in the generation. reference_image_ids: anyOf: - items: type: string format: uuid type: array - type: 'null' title: Reference Image Ids description: The id(s) of the image(s) referenced in the generation. reference_video_ids: anyOf: - items: type: string format: uuid type: array - type: 'null' title: Reference Video Ids description: The id(s) of the video(s) referenced in the generation. source_video_id: anyOf: - type: string format: uuid - type: 'null' title: Source Video Id description: The id of the Video asset used as source input for motion control, video-to-video, or video extension generation. type: object required: - width - height - duration_ms - preview_url - generated_video_inputs - keyframe_start - audio title: GeneratedVideo VideoShot: properties: prompt: type: string title: Prompt description: Prompt for this shot. duration_ms: type: integer maximum: 15000.0 minimum: 3000.0 title: Duration Ms description: Duration of this shot in milliseconds (3000-15000). type: object required: - prompt - duration_ms title: VideoShot description: A single shot in a multi-shot video generation. GenerateTextToSoundRequest: properties: workspace_id: anyOf: - type: string - type: 'null' title: Workspace Id agent_thread_id: anyOf: - type: string format: uuid - type: 'null' title: Agent Thread Id description: Optional agent thread ID to associate this generation with. generation_id: anyOf: - type: string format: uuid - type: 'null' title: Generation Id description: Optional pre-reserved generation ID. If provided, this ID will be used instead of generating a new one. For batch operations (batch_size > 1), use generation_ids instead. generation_ids: anyOf: - items: type: string format: uuid type: array - type: 'null' title: Generation Ids description: Optional list of pre-reserved generation IDs for batch operations. Length must match batch_size. Mutually exclusive with generation_id. reserved_asset_id: anyOf: - type: string format: uuid - type: 'null' title: Reserved Asset Id description: Optional pre-reserved asset ID. Used as the produced media+asset resource_id so the client knows the asset's identity at request time. For batch operations (batch_size > 1), use reserved_asset_ids instead. Named distinctly from the response's `asset_id` (the produced asset) so the two don't collide across the request/response inheritance chain — mirrors generation_id (request) vs id (response). reserved_asset_ids: anyOf: - items: type: string format: uuid type: array - type: 'null' title: Reserved Asset Ids description: Optional list of pre-reserved asset IDs for batch operations. Length must match batch_size, parallel to generation_ids. Mutually exclusive with reserved_asset_id. type: type: string const: text_to_sound title: Type default: text_to_sound ai_model_id: anyOf: - type: string format: uuid - type: 'null' title: Ai Model Id description: Deprecated. Use `model_slug` to select the sound effect model. deprecated: true model_slug: anyOf: - type: string - type: 'null' title: Model Slug description: The slug of the model to use for sound effect generation. Alternative to `ai_model_id`. text: type: string minLength: 1 title: Text description: The text description of the sound effect to generate. duration_seconds: anyOf: - type: number maximum: 30.0 minimum: 0.5 - type: 'null' title: Duration Seconds description: The duration of the sound effect in seconds (0.5-30). If not specified, duration is automatically determined from the prompt. prompt_influence: anyOf: - type: number maximum: 1.0 minimum: 0.0 - type: 'null' title: Prompt Influence description: Controls how strictly the model follows the prompt (0-1). Higher values mean more literal interpretation. Defaults to 0.3. loop: anyOf: - type: boolean - type: 'null' title: Loop description: Whether to create a sound effect that loops smoothly. Only available for the eleven_text_to_sound_v2 model. output_format: anyOf: - type: string - type: 'null' title: Output Format description: Output format of the generated audio. Formatted as codec_sample_rate_bitrate (e.g., mp3_22050_32, mp3_44100_128, pcm_44100). If not specified, defaults to mp3_44100_128. default: mp3_44100_128 type: object required: - text title: GenerateTextToSoundRequest CreateAssetResponse: properties: name: type: string title: Name description: Name of the asset. Default to user-provided file name. type: $ref: '#/components/schemas/AssetType' description: The type of the asset. workspace_id: anyOf: - type: string - type: 'null' title: Workspace Id reserved_asset_id: anyOf: - type: string format: uuid - type: 'null' title: Reserved Asset Id description: Optional pre-reserved asset ID, used as the produced media+asset resource_id so the client knows the upload's identity before it completes. id: type: string format: uuid title: Id description: The id of the newly created asset. Should be used for upload. upload_url: anyOf: - type: string maxLength: 2083 minLength: 1 format: uri - type: 'null' title: Upload Url description: Presigned S3 URL for uploading the asset file using HTTP PUT. Only present when the asset type is VIDEO. type: object required: - name - type - id title: CreateAssetResponse PageInfo: properties: limit: type: integer title: Limit description: Number of items returned in the page. offset: type: integer title: Offset description: Number of records skipped. type: object required: - limit - offset title: PageInfo GenerateIsolatedAudioResponse: properties: workspace_id: anyOf: - type: string - type: 'null' title: Workspace Id agent_thread_id: anyOf: - type: string format: uuid - type: 'null' title: Agent Thread Id description: Optional agent thread ID to associate this generation with. generation_id: anyOf: - type: string format: uuid - type: 'null' title: Generation Id description: Optional pre-reserved generation ID. If provided, this ID will be used instead of generating a new one. For batch operations (batch_size > 1), use generation_ids instead. generation_ids: anyOf: - items: type: string format: uuid type: array - type: 'null' title: Generation Ids description: Optional list of pre-reserved generation IDs for batch operations. Length must match batch_size. Mutually exclusive with generation_id. reserved_asset_id: anyOf: - type: string format: uuid - type: 'null' title: Reserved Asset Id description: Optional pre-reserved asset ID. Used as the produced media+asset resource_id so the client knows the asset's identity at request time. For batch operations (batch_size > 1), use reserved_asset_ids instead. Named distinctly from the response's `asset_id` (the produced asset) so the two don't collide across the request/response inheritance chain — mirrors generation_id (request) vs id (response). reserved_asset_ids: anyOf: - items: type: string format: uuid type: array - type: 'null' title: Reserved Asset Ids description: Optional list of pre-reserved asset IDs for batch operations. Length must match batch_size, parallel to generation_ids. Mutually exclusive with reserved_asset_id. type: type: string const: audio_isolation title: Type default: audio_isolation audio_id: type: string format: uuid title: Audio Id description: The id of the audio asset requiring sound isolation. ai_model_id: anyOf: - type: string format: uuid - type: 'null' title: Ai Model Id description: Deprecated. Use `model_slug` to select the audio isolation model. deprecated: true model_slug: anyOf: - type: string - type: 'null' title: Model Slug description: The slug of the model to use for audio isolation. Alternative to `ai_model_id`. id: type: string format: uuid title: Id description: The id of the generation created. asset_id: type: string format: uuid title: Asset Id description: The id of the isolated audio asset resulting from the generation. created_at: type: string title: Created At description: Date the generation was submitted. status: $ref: '#/components/schemas/GenerationStatus' description: Status of the generation progress: type: number title: Progress description: Current progress to completion. Between 0-1 eta_sec: anyOf: - type: integer - type: 'null' title: Eta Sec description: Estimated time until completion in seconds. May be None if no historical data available. type: object required: - audio_id - id - asset_id - created_at - status - progress title: GenerateIsolatedAudioResponse GenerationStatus: type: string enum: - complete - error - processing - queued - finalizing title: GenerationStatus GenerateImageUpscaleRequest: properties: workspace_id: anyOf: - type: string - type: 'null' title: Workspace Id agent_thread_id: anyOf: - type: string format: uuid - type: 'null' title: Agent Thread Id description: Optional agent thread ID to associate this generation with. generation_id: anyOf: - type: string format: uuid - type: 'null' title: Generation Id description: Optional pre-reserved generation ID. If provided, this ID will be used instead of generating a new one. For batch operations (batch_size > 1), use generation_ids instead. generation_ids: anyOf: - items: type: string format: uuid type: array - type: 'null' title: Generation Ids description: Optional list of pre-reserved generation IDs for batch operations. Length must match batch_size. Mutually exclusive with generation_id. reserved_asset_id: anyOf: - type: string format: uuid - type: 'null' title: Reserved Asset Id description: Optional pre-reserved asset ID. Used as the produced media+asset resource_id so the client knows the asset's identity at request time. For batch operations (batch_size > 1), use reserved_asset_ids instead. Named distinctly from the response's `asset_id` (the produced asset) so the two don't collide across the request/response inheritance chain — mirrors generation_id (request) vs id (response). reserved_asset_ids: anyOf: - items: type: string format: uuid type: array - type: 'null' title: Reserved Asset Ids description: Optional list of pre-reserved asset IDs for batch operations. Length must match batch_size, parallel to generation_ids. Mutually exclusive with reserved_asset_id. type: type: string const: image_upscale title: Type default: image_upscale ai_model_id: anyOf: - type: string format: uuid - type: 'null' title: Ai Model Id description: Deprecated. Use `model_slug` to select the image upscale model. deprecated: true model_slug: anyOf: - type: string - type: 'null' title: Model Slug description: The slug of the model to use for upscaling. Alternative to `ai_model_id`. image_id: type: string format: uuid title: Image Id description: The id of the Image asset to use as the basis for upscaling. target_resolution: anyOf: - type: string - type: 'null' title: Target Resolution description: Target output resolution (e.g. '1080p', '2K', '4K'). Preferred over upscale_factor. upscale_factor: anyOf: - type: number - type: 'null' title: Upscale Factor description: 'Optional upscale factor (e.g. 2.0 for 2x). Deprecated: prefer target_resolution.' type: object required: - image_id title: GenerateImageUpscaleRequest ErrorCode: type: string enum: - UNKNOWN - INVALID_ARGUMENT - NOT_FOUND - ALREADY_EXISTS - ALREADY_IN_PROGRESS - UNAUTHORIZED - PERMISSION_DENIED - MISSING_CREDITS - MODERATION_FAILED - FAILED_PRECONDITION - DEADLINE_EXCEEDED - RESOURCE_EXHAUSTED - UNAVAILABLE - INTERNAL title: ErrorCode description: "Universal error code space. Modeled after gRPC status codes.\n\nEvery exception in the system carries an ErrorCode. SDK clients map\n3rd-party errors to these codes at the lowest level. Retry logic,\nHTTP status mapping, and OTEL metrics all key off this enum.\n\nNOTE: The semantic meaning of these error codes is roughly mapped from the\n semantic of the gRPC status codes: see\n https://grpc.io/docs/guides/status-codes/ for details." KlingEditElement: properties: frontal_image_asset_id: type: string format: uuid title: Frontal Image Asset Id description: ID of the frontal image asset for this element. reference_image_asset_ids: anyOf: - items: type: string format: uuid type: array - type: 'null' title: Reference Image Asset Ids description: Optional IDs of additional reference image assets (different angles). type: object required: - frontal_image_asset_id title: KlingEditElement description: 'Element for character/subject consistency in Kling video generation. Reference as @Element1, @Element2, etc. in prompt.' InputMode: properties: mode: type: string title: Mode description: Mode name identifying this input combination (e.g., 'image_to_video', 'first_last_frame_to_video', 'reference_to_video', 'video_to_video'). slots: items: $ref: '#/components/schemas/InputSlot' type: array title: Slots description: Ordered list of input slots available in this mode. type: object required: - mode - slots title: InputMode description: 'A named input mode grouping mutually exclusive input slots. Each mode represents a distinct way to use the model (e.g., image_to_video vs first_last_frame_to_video). The frontend selects one mode at a time and presents only that mode''s slots. The text_to_video mode (no input files) is always implicitly available for VIDEO type models and is never included in the inputs list.' BatchVideoResultItem: properties: id: anyOf: - type: string format: uuid - type: 'null' title: Id description: The id of the generation created. None if failed. asset_id: anyOf: - type: string format: uuid - type: 'null' title: Asset Id description: The id of the video asset. Set even on failure when the client reserved an asset id; None only when no id was reserved. created_at: type: string title: Created At description: Date the generation was submitted. status: $ref: '#/components/schemas/GenerationStatus' description: Status of the generation progress: type: number title: Progress description: Current progress to completion. Between 0-1 error: anyOf: - type: string - type: 'null' title: Error description: Error message if this item failed. eta_sec: anyOf: - type: integer - type: 'null' title: Eta Sec description: Estimated time until completion in seconds. None if unavailable. type: object required: - created_at - status - progress title: BatchVideoResultItem description: Individual result item in a batch video generation. Generation: properties: id: type: string format: uuid title: Id description: ID of the generation and associated asset. type: $ref: '#/components/schemas/AssetType' description: Type of generation. input: oneOf: - $ref: '#/components/schemas/GenerateVideoRequest' - $ref: '#/components/schemas/GenerateTextToSpeechRequest' - $ref: '#/components/schemas/GenerateTextToSoundRequest' - $ref: '#/components/schemas/GenerateImageRequest' - $ref: '#/components/schemas/GenerateImageUpscaleRequest' - $ref: '#/components/schemas/GenerateVideoUpscaleRequest' - $ref: '#/components/schemas/GenerateIsolatedAudioRequest' - $ref: '#/components/schemas/GenerateSpeechToSpeechRequest' - $ref: '#/components/schemas/GenerateVoiceCloneRequest' - $ref: '#/components/schemas/GenerateVideoToVideoRequest' - $ref: '#/components/schemas/GenerateMotionControlRequest' title: Input description: Inputs for the generation discriminator: propertyName: type mapping: audio_isolation: '#/components/schemas/GenerateIsolatedAudioRequest' image: '#/components/schemas/GenerateImageRequest' image_to_image: '#/components/schemas/GenerateImageRequest' image_upscale: '#/components/schemas/GenerateImageUpscaleRequest' motion_control: '#/components/schemas/GenerateMotionControlRequest' speech_to_speech: '#/components/schemas/GenerateSpeechToSpeechRequest' text_to_sound: '#/components/schemas/GenerateTextToSoundRequest' text_to_speech: '#/components/schemas/GenerateTextToSpeechRequest' video: '#/components/schemas/GenerateVideoRequest' video_to_video: '#/components/schemas/GenerateVideoToVideoRequest' video_upscale: '#/components/schemas/GenerateVideoUpscaleRequest' voice_clone: '#/components/schemas/GenerateVoiceCloneRequest' status: $ref: '#/components/schemas/GenerationStatus' description: Status of the generation progress: type: number title: Progress description: Current progress to completion. Between 0-1 eta_sec: anyOf: - type: integer - type: 'null' title: Eta Sec description: Estimated time remaining in seconds until generation completes. estimated_completion_at: anyOf: - type: string - type: 'null' title: Estimated Completion At description: Absolute UTC timestamp when the generation is estimated to complete. Clients should anchor a countdown to this rather than decaying eta_sec, since it self-corrects as the backend refines the estimate. created_at: type: string title: Created At description: Date the generation was submitted. credit_cost: anyOf: - type: integer - type: 'null' title: Credit Cost description: Credits consumed (debits) for this generation. batch_generation_id: anyOf: - type: string - type: 'null' title: Batch Generation Id description: Unique identifier linking all generations in a batch. asset: anyOf: - $ref: '#/components/schemas/Asset' - type: 'null' description: The generated asset. Value is not present unless the status of the generation is 'complete' audio_start_ms: anyOf: - type: integer - type: 'null' title: Audio Start Ms description: Audio start offset in ms. Negative = prepend silence, positive = crop from start. error: anyOf: - $ref: '#/components/schemas/GenerationError' - type: 'null' description: Generation error if any. Value is not present unless the status of the generation is 'error' and error_message field is not present. error_message: anyOf: - type: string - type: 'null' title: Error Message description: Error message. Value is not present unless the status of the generation is 'error' and error field is not present. type: object required: - id - type - input - status - progress - created_at title: Generation GenerateMotionControlRequest: properties: workspace_id: anyOf: - type: string - type: 'null' title: Workspace Id agent_thread_id: anyOf: - type: string format: uuid - type: 'null' title: Agent Thread Id description: Optional agent thread ID to associate this generation with. generation_id: anyOf: - type: string format: uuid - type: 'null' title: Generation Id description: Optional pre-reserved generation ID. If provided, this ID will be used instead of generating a new one. For batch operations (batch_size > 1), use generation_ids instead. generation_ids: anyOf: - items: type: string format: uuid type: array - type: 'null' title: Generation Ids description: Optional list of pre-reserved generation IDs for batch operations. Length must match batch_size. Mutually exclusive with generation_id. reserved_asset_id: anyOf: - type: string format: uuid - type: 'null' title: Reserved Asset Id description: Optional pre-reserved asset ID. Used as the produced media+asset resource_id so the client knows the asset's identity at request time. For batch operations (batch_size > 1), use reserved_asset_ids instead. Named distinctly from the response's `asset_id` (the produced asset) so the two don't collide across the request/response inheritance chain — mirrors generation_id (request) vs id (response). reserved_asset_ids: anyOf: - items: type: string format: uuid type: array - type: 'null' title: Reserved Asset Ids description: Optional list of pre-reserved asset IDs for batch operations. Length must match batch_size, parallel to generation_ids. Mutually exclusive with reserved_asset_id. type: type: string const: motion_control title: Type default: motion_control ai_model_id: anyOf: - type: string format: uuid - type: 'null' title: Ai Model Id description: Deprecated. Use `model_slug` to select the motion control model. deprecated: true model_slug: anyOf: - type: string - type: 'null' title: Model Slug description: The slug of the Motion Control model. Alternative to `ai_model_id`. video_id: type: string format: uuid title: Video Id description: The id of the video asset to use as motion reference. start_keyframe_id: type: string format: uuid title: Start Keyframe Id description: The id of the character image asset to animate with the motion from the video. generated_video_inputs: $ref: '#/components/schemas/GeneratedVideoInputs' description: Video generation parameters including text_prompt and character_orientation. type: object required: - video_id - start_keyframe_id - generated_video_inputs title: GenerateMotionControlRequest description: 'Motion Control request for transferring motion from a reference video to a character image. Processed through V2V infrastructure internally.' GenerateImageRequest: properties: workspace_id: anyOf: - type: string - type: 'null' title: Workspace Id agent_thread_id: anyOf: - type: string format: uuid - type: 'null' title: Agent Thread Id description: Optional agent thread ID to associate this generation with. generation_id: anyOf: - type: string format: uuid - type: 'null' title: Generation Id description: Optional pre-reserved generation ID. If provided, this ID will be used instead of generating a new one. For batch operations (batch_size > 1), use generation_ids instead. generation_ids: anyOf: - items: type: string format: uuid type: array - type: 'null' title: Generation Ids description: Optional list of pre-reserved generation IDs for batch operations. Length must match batch_size. Mutually exclusive with generation_id. reserved_asset_id: anyOf: - type: string format: uuid - type: 'null' title: Reserved Asset Id description: Optional pre-reserved asset ID. Used as the produced media+asset resource_id so the client knows the asset's identity at request time. For batch operations (batch_size > 1), use reserved_asset_ids instead. Named distinctly from the response's `asset_id` (the produced asset) so the two don't collide across the request/response inheritance chain — mirrors generation_id (request) vs id (response). reserved_asset_ids: anyOf: - items: type: string format: uuid type: array - type: 'null' title: Reserved Asset Ids description: Optional list of pre-reserved asset IDs for batch operations. Length must match batch_size, parallel to generation_ids. Mutually exclusive with reserved_asset_id. type: type: string enum: - image - image_to_image title: Type default: image name: anyOf: - type: string maxLength: 255 - type: 'null' title: Name description: Optional human-friendly name for the generated asset. text_prompt: type: string title: Text Prompt description: The text prompt for image generation or image editing. aspect_ratio: anyOf: - type: string - type: 'null' title: Aspect Ratio description: The aspect ratio to use. resolution: anyOf: - type: string - type: 'null' title: Resolution description: The resolution to use formatted like '540p', '1080p', '1440p (2K QHD)', etc. start_keyframe_id: anyOf: - type: string format: uuid - type: 'null' title: Start Keyframe Id description: The id of the Image asset to use as the start keyframe. ai_model_id: anyOf: - type: string format: uuid - type: 'null' title: Ai Model Id description: Deprecated. Use `model_slug` to select the model. deprecated: true model_slug: anyOf: - type: string - type: 'null' title: Model Slug description: The slug of the model to use. Alternative to `ai_model_id`. reference_image_ids: anyOf: - items: type: string format: uuid type: array - type: 'null' title: Reference Image Ids description: The id(s) of the image(s) to reference in the generation. This is only used for image-to-image generation and will supersede start_keyframe_id. batch_size: type: integer maximum: 8.0 minimum: 1.0 title: Batch Size description: Number of image variations to generate (1-8). When > 1, batch_results will contain all generation results. default: 1 enhance_prompt: type: boolean title: Enhance Prompt description: If true, automatically enhance the prompt before generation. default: false type: object required: - text_prompt title: GenerateImageRequest UploadedVideo: properties: type: type: string const: uploaded_video title: Type default: uploaded_video width: type: integer title: Width description: Width of the video. height: type: integer title: Height description: Height of the video. duration_ms: type: integer title: Duration Ms description: Duration of the video in milliseconds. url: type: string title: Url description: URL of the video. download_url: anyOf: - type: string - type: 'null' title: Download Url description: URL to download the video. streaming_url: anyOf: - type: string - type: 'null' title: Streaming Url description: URL to stream the video. poster_url: anyOf: - type: string - type: 'null' title: Poster Url description: URL of the poster image. type: object required: - width - height - duration_ms - url title: UploadedVideo Pricing: properties: base_cost: anyOf: - type: integer - type: 'null' title: Base Cost description: Flat base cost in credits. Present for per-generation models (images). Duration-based models leave this unset. credits_per_second: anyOf: - type: integer - type: 'null' title: Credits Per Second description: Credit cost per second. Only present for duration-based models. Image/per-generation models leave this unset. modifiers: additionalProperties: additionalProperties: type: number description: 'Pricing modifier multiplier applied to a dimension option. - 1.0 = no change (base price) - 2.0 = double the base price - 0.5 = half the base price' type: object type: object title: Modifiers description: 'Pricing modifiers by dimension. Each dimension (e.g. ''resolution'', ''generate_audio'') maps option values to their price multipliers. Only non-1.0 modifiers are included (1.0 is the implicit default). Example: {''resolution'': {''540p'': 0.5, ''1080p'': 3.0}}' type: object title: Pricing description: "Extensible pricing information for AI models.\n\nPrice is calculated as:\n credits = ceil((base_cost + credits_per_second * duration_seconds) * product(modifiers))\n\nFor video models (per-second billing):\n - base_cost is typically 0\n - credits_per_second is the per-second rate\n - duration_seconds is the video length\n - modifiers adjust for resolution, audio generation, etc.\n\nFor image models (per-generation billing):\n - base_cost is the flat cost per generation (e.g., 5 credits)\n - credits_per_second is 0\n - duration_seconds is ignored (or 0)\n - modifiers can still adjust for resolution, style, etc.\n\nModifiers are only included when they affect pricing (i.e., non-1.0 values)." Dimension: properties: width: type: integer title: Width description: Width of the image. height: type: integer title: Height description: Height of the image. type: object required: - width - height title: Dimension PagingParams: properties: limit: type: integer title: Limit description: Number of items returned in the page. default: 100 offset: type: integer title: Offset description: Number of records skipped. default: 0 type: object title: PagingParams GenerateVoiceCloneResponse: properties: workspace_id: anyOf: - type: string - type: 'null' title: Workspace Id agent_thread_id: anyOf: - type: string format: uuid - type: 'null' title: Agent Thread Id description: Optional agent thread ID to associate this generation with. generation_id: anyOf: - type: string format: uuid - type: 'null' title: Generation Id description: Optional pre-reserved generation ID. If provided, this ID will be used instead of generating a new one. For batch operations (batch_size > 1), use generation_ids instead. generation_ids: anyOf: - items: type: string format: uuid type: array - type: 'null' title: Generation Ids description: Optional list of pre-reserved generation IDs for batch operations. Length must match batch_size. Mutually exclusive with generation_id. reserved_asset_id: anyOf: - type: string format: uuid - type: 'null' title: Reserved Asset Id description: Optional pre-reserved asset ID. Used as the produced media+asset resource_id so the client knows the asset's identity at request time. For batch operations (batch_size > 1), use reserved_asset_ids instead. Named distinctly from the response's `asset_id` (the produced asset) so the two don't collide across the request/response inheritance chain — mirrors generation_id (request) vs id (response). reserved_asset_ids: anyOf: - items: type: string format: uuid type: array - type: 'null' title: Reserved Asset Ids description: Optional list of pre-reserved asset IDs for batch operations. Length must match batch_size, parallel to generation_ids. Mutually exclusive with reserved_asset_id. type: type: string const: voice_clone title: Type default: voice_clone audio_id: type: string format: uuid title: Audio Id description: The id of the Audio asset to use as the basis for the clone. name: type: string title: Name description: The name of the new voice. Required by ElevenLabs to create a new voice. id: type: string format: uuid title: Id description: The id of the generation. Can be used to check status. asset_id: type: string format: uuid title: Asset Id description: The id of the resulting Voice asset. created_at: type: string title: Created At description: Date the generation was submitted. status: $ref: '#/components/schemas/GenerationStatus' description: Status of the generation progress: type: number title: Progress description: Current progress to completion. Between 0-1 eta_sec: anyOf: - type: integer - type: 'null' title: Eta Sec description: Estimated time until completion in seconds. May be None if no historical data available. type: object required: - audio_id - name - id - asset_id - created_at - status - progress title: GenerateVoiceCloneResponse UploadedAudio: properties: type: type: string const: uploaded_audio title: Type default: uploaded_audio duration_ms: type: integer title: Duration Ms description: Duration of the audio in seconds. url: type: string title: Url description: URL of the audio. transcriptions: anyOf: - items: additionalProperties: true type: object type: array - type: 'null' title: Transcriptions description: Transcriptions of the audio. type: object required: - duration_ms - url title: UploadedAudio AssetType: type: string enum: - text - image - audio - video - voice - three_d - rich_text title: AssetType UploadedImage: properties: type: type: string const: uploaded_image title: Type default: uploaded_image width: type: integer title: Width description: Width of the image. height: type: integer title: Height description: Height of the image. url: type: string title: Url description: URL of the image. type: object required: - width - height - url title: UploadedImage AIModelPrice: properties: credit_cost: type: integer title: Credit Cost description: Credit cost of the model. unit_scale: type: integer title: Unit Scale description: Unit scaling for the cost. billing_unit: type: string title: Billing Unit description: Billing unit of the model (e.g. 'generation', 'second', 'character'). type: object required: - credit_cost - unit_scale - billing_unit title: AIModelPrice GenerateTextToSpeechResponse: properties: workspace_id: anyOf: - type: string - type: 'null' title: Workspace Id agent_thread_id: anyOf: - type: string format: uuid - type: 'null' title: Agent Thread Id description: Optional agent thread ID to associate this generation with. generation_id: anyOf: - type: string format: uuid - type: 'null' title: Generation Id description: Optional pre-reserved generation ID. If provided, this ID will be used instead of generating a new one. For batch operations (batch_size > 1), use generation_ids instead. generation_ids: anyOf: - items: type: string format: uuid type: array - type: 'null' title: Generation Ids description: Optional list of pre-reserved generation IDs for batch operations. Length must match batch_size. Mutually exclusive with generation_id. reserved_asset_id: anyOf: - type: string format: uuid - type: 'null' title: Reserved Asset Id description: Optional pre-reserved asset ID. Used as the produced media+asset resource_id so the client knows the asset's identity at request time. For batch operations (batch_size > 1), use reserved_asset_ids instead. Named distinctly from the response's `asset_id` (the produced asset) so the two don't collide across the request/response inheritance chain — mirrors generation_id (request) vs id (response). reserved_asset_ids: anyOf: - items: type: string format: uuid type: array - type: 'null' title: Reserved Asset Ids description: Optional list of pre-reserved asset IDs for batch operations. Length must match batch_size, parallel to generation_ids. Mutually exclusive with reserved_asset_id. type: type: string const: text_to_speech title: Type default: text_to_speech name: anyOf: - type: string maxLength: 255 - type: 'null' title: Name description: Optional human-friendly name for the generated asset. voice_id: type: string format: uuid title: Voice Id description: The id of the Voice to use. model_id: anyOf: - type: string format: uuid - type: 'null' title: Model Id description: Deprecated. Use `model_slug` to select the model. deprecated: true model_slug: anyOf: - type: string - type: 'null' title: Model Slug description: The slug of the model to use. Alternative to `model_id`. text: type: string title: Text description: The text to convert to speech. stability: type: number maximum: 1.0 minimum: 0.0 title: Stability description: Stability should be between 0-1, where 0 is the most stable and 1 is the most unstable. This varies the consistency between your outputs. default: 1.0 speed: type: number maximum: 1.2 minimum: 0.7 title: Speed description: Speed should be between 0.7 and 1.2, where 0.7 is the slowest and 1.2 is the fastest. This varies the speed of the generated speech. default: 1.0 language: $ref: '#/components/schemas/SupportedLanguage' description: Language for TTS. See SupportedLanguage enum for valid values. Defaults to 'auto'. default: auto asset_id: type: string format: uuid title: Asset Id description: The id of the audio asset resulting from the generation. id: type: string format: uuid title: Id description: The id of the generation created. created_at: type: string title: Created At description: Date the generation was submitted. status: $ref: '#/components/schemas/GenerationStatus' description: Status of the generation progress: type: number title: Progress description: Current progress to completion. Between 0-1 eta_sec: anyOf: - type: integer - type: 'null' title: Eta Sec description: Estimated time until completion in seconds. May be None if no historical data available. type: object required: - voice_id - text - asset_id - id - created_at - status - progress title: GenerateTextToSpeechResponse GenerateVideoUpscaleRequest: properties: workspace_id: anyOf: - type: string - type: 'null' title: Workspace Id agent_thread_id: anyOf: - type: string format: uuid - type: 'null' title: Agent Thread Id description: Optional agent thread ID to associate this generation with. generation_id: anyOf: - type: string format: uuid - type: 'null' title: Generation Id description: Optional pre-reserved generation ID. If provided, this ID will be used instead of generating a new one. For batch operations (batch_size > 1), use generation_ids instead. generation_ids: anyOf: - items: type: string format: uuid type: array - type: 'null' title: Generation Ids description: Optional list of pre-reserved generation IDs for batch operations. Length must match batch_size. Mutually exclusive with generation_id. reserved_asset_id: anyOf: - type: string format: uuid - type: 'null' title: Reserved Asset Id description: Optional pre-reserved asset ID. Used as the produced media+asset resource_id so the client knows the asset's identity at request time. For batch operations (batch_size > 1), use reserved_asset_ids instead. Named distinctly from the response's `asset_id` (the produced asset) so the two don't collide across the request/response inheritance chain — mirrors generation_id (request) vs id (response). reserved_asset_ids: anyOf: - items: type: string format: uuid type: array - type: 'null' title: Reserved Asset Ids description: Optional list of pre-reserved asset IDs for batch operations. Length must match batch_size, parallel to generation_ids. Mutually exclusive with reserved_asset_id. type: type: string const: video_upscale title: Type default: video_upscale ai_model_id: anyOf: - type: string format: uuid - type: 'null' title: Ai Model Id description: Deprecated. Use `model_slug` to select the video upscale model. deprecated: true model_slug: anyOf: - type: string - type: 'null' title: Model Slug description: The slug of the model to use for upscaling. Alternative to `ai_model_id`. video_id: type: string format: uuid title: Video Id description: The id of the Video asset to upscale. upscale_factor: anyOf: - type: number - type: 'null' title: Upscale Factor description: Computed scale factor derived from target_resolution and source video dimensions. target_resolution: anyOf: - type: string - type: 'null' title: Target Resolution description: 'Target output resolution. Must be one of: 1080p, 2K, 4K.' type: object required: - video_id title: GenerateVideoUpscaleRequest GenerateMotionControlResponse: properties: workspace_id: anyOf: - type: string - type: 'null' title: Workspace Id agent_thread_id: anyOf: - type: string format: uuid - type: 'null' title: Agent Thread Id description: Optional agent thread ID to associate this generation with. generation_id: anyOf: - type: string format: uuid - type: 'null' title: Generation Id description: Optional pre-reserved generation ID. If provided, this ID will be used instead of generating a new one. For batch operations (batch_size > 1), use generation_ids instead. generation_ids: anyOf: - items: type: string format: uuid type: array - type: 'null' title: Generation Ids description: Optional list of pre-reserved generation IDs for batch operations. Length must match batch_size. Mutually exclusive with generation_id. reserved_asset_id: anyOf: - type: string format: uuid - type: 'null' title: Reserved Asset Id description: Optional pre-reserved asset ID. Used as the produced media+asset resource_id so the client knows the asset's identity at request time. For batch operations (batch_size > 1), use reserved_asset_ids instead. Named distinctly from the response's `asset_id` (the produced asset) so the two don't collide across the request/response inheritance chain — mirrors generation_id (request) vs id (response). reserved_asset_ids: anyOf: - items: type: string format: uuid type: array - type: 'null' title: Reserved Asset Ids description: Optional list of pre-reserved asset IDs for batch operations. Length must match batch_size, parallel to generation_ids. Mutually exclusive with reserved_asset_id. type: type: string const: motion_control title: Type default: motion_control ai_model_id: anyOf: - type: string format: uuid - type: 'null' title: Ai Model Id description: Deprecated. Use `model_slug` to select the motion control model. deprecated: true model_slug: anyOf: - type: string - type: 'null' title: Model Slug description: The slug of the Motion Control model. Alternative to `ai_model_id`. video_id: type: string format: uuid title: Video Id description: The id of the video asset to use as motion reference. start_keyframe_id: type: string format: uuid title: Start Keyframe Id description: The id of the character image asset to animate with the motion from the video. generated_video_inputs: $ref: '#/components/schemas/GeneratedVideoInputs' description: Video generation parameters including text_prompt and character_orientation. id: type: string format: uuid title: Id description: The id of the generation. Can be used to check status. asset_id: type: string format: uuid title: Asset Id description: The id of the output video asset. created_at: type: string title: Created At description: Date the generation was submitted. status: $ref: '#/components/schemas/GenerationStatus' description: Status of the generation. progress: type: number title: Progress description: Current progress to completion. Between 0-1. eta_sec: anyOf: - type: integer - type: 'null' title: Eta Sec description: Estimated time until completion in seconds. May be None if no historical data available. type: object required: - video_id - start_keyframe_id - generated_video_inputs - id - asset_id - created_at - status - progress title: GenerateMotionControlResponse description: Response for Motion Control generations. GeneratedAudio: properties: type: type: string const: generated_audio title: Type default: generated_audio duration_ms: type: integer title: Duration Ms description: Duration of the audio in seconds. url: type: string title: Url description: URL of the audio. generated_audio_inputs: $ref: '#/components/schemas/GeneratedAudioInputs' description: Inputs for generating the audio. transcriptions: anyOf: - items: additionalProperties: true type: object type: array - type: 'null' title: Transcriptions description: Transcriptions of the audio. type: object required: - duration_ms - url - generated_audio_inputs title: GeneratedAudio CreateAssetRequest: properties: name: type: string title: Name description: Name of the asset. Default to user-provided file name. type: $ref: '#/components/schemas/AssetType' description: The type of the asset. workspace_id: anyOf: - type: string - type: 'null' title: Workspace Id reserved_asset_id: anyOf: - type: string format: uuid - type: 'null' title: Reserved Asset Id description: Optional pre-reserved asset ID, used as the produced media+asset resource_id so the client knows the upload's identity before it completes. type: object required: - name - type title: CreateAssetRequest GenerateVoiceCloneRequest: properties: workspace_id: anyOf: - type: string - type: 'null' title: Workspace Id agent_thread_id: anyOf: - type: string format: uuid - type: 'null' title: Agent Thread Id description: Optional agent thread ID to associate this generation with. generation_id: anyOf: - type: string format: uuid - type: 'null' title: Generation Id description: Optional pre-reserved generation ID. If provided, this ID will be used instead of generating a new one. For batch operations (batch_size > 1), use generation_ids instead. generation_ids: anyOf: - items: type: string format: uuid type: array - type: 'null' title: Generation Ids description: Optional list of pre-reserved generation IDs for batch operations. Length must match batch_size. Mutually exclusive with generation_id. reserved_asset_id: anyOf: - type: string format: uuid - type: 'null' title: Reserved Asset Id description: Optional pre-reserved asset ID. Used as the produced media+asset resource_id so the client knows the asset's identity at request time. For batch operations (batch_size > 1), use reserved_asset_ids instead. Named distinctly from the response's `asset_id` (the produced asset) so the two don't collide across the request/response inheritance chain — mirrors generation_id (request) vs id (response). reserved_asset_ids: anyOf: - items: type: string format: uuid type: array - type: 'null' title: Reserved Asset Ids description: Optional list of pre-reserved asset IDs for batch operations. Length must match batch_size, parallel to generation_ids. Mutually exclusive with reserved_asset_id. type: type: string const: voice_clone title: Type default: voice_clone audio_id: type: string format: uuid title: Audio Id description: The id of the Audio asset to use as the basis for the clone. name: type: string title: Name description: The name of the new voice. Required by ElevenLabs to create a new voice. type: object required: - audio_id - name title: GenerateVoiceCloneRequest GenerateVideoResponse: properties: workspace_id: anyOf: - type: string - type: 'null' title: Workspace Id agent_thread_id: anyOf: - type: string format: uuid - type: 'null' title: Agent Thread Id description: Optional agent thread ID to associate this generation with. generation_id: anyOf: - type: string format: uuid - type: 'null' title: Generation Id description: Optional pre-reserved generation ID. If provided, this ID will be used instead of generating a new one. For batch operations (batch_size > 1), use generation_ids instead. generation_ids: anyOf: - items: type: string format: uuid type: array - type: 'null' title: Generation Ids description: Optional list of pre-reserved generation IDs for batch operations. Length must match batch_size. Mutually exclusive with generation_id. reserved_asset_id: anyOf: - type: string format: uuid - type: 'null' title: Reserved Asset Id description: Optional pre-reserved asset ID. Used as the produced media+asset resource_id so the client knows the asset's identity at request time. For batch operations (batch_size > 1), use reserved_asset_ids instead. Named distinctly from the response's `asset_id` (the produced asset) so the two don't collide across the request/response inheritance chain — mirrors generation_id (request) vs id (response). reserved_asset_ids: anyOf: - items: type: string format: uuid type: array - type: 'null' title: Reserved Asset Ids description: Optional list of pre-reserved asset IDs for batch operations. Length must match batch_size, parallel to generation_ids. Mutually exclusive with reserved_asset_id. type: type: string const: video title: Type default: video name: anyOf: - type: string maxLength: 255 - type: 'null' title: Name description: Optional human-friendly name for the generated asset. ai_model_id: anyOf: - type: string format: uuid - type: 'null' title: Ai Model Id description: Deprecated. Use `model_slug` to select the model. deprecated: true model_slug: anyOf: - type: string - type: 'null' title: Model Slug description: Slug of the model to use for the generation. Alternative to `ai_model_id`. start_keyframe_id: anyOf: - type: string format: uuid - type: 'null' title: Start Keyframe Id description: The id of the Image asset to use as the start keyframe. start_keyframe_url: anyOf: - type: string maxLength: 2083 minLength: 1 format: uri - type: 'null' title: Start Keyframe Url description: The URL of the image to use as the start keyframe. end_keyframe_id: anyOf: - type: string format: uuid - type: 'null' title: End Keyframe Id description: The id of the Image asset to use as the end keyframe. end_keyframe_url: anyOf: - type: string maxLength: 2083 minLength: 1 format: uri - type: 'null' title: End Keyframe Url description: The URL of the image to use as the end keyframe. audio_id: anyOf: - type: string format: uuid - items: type: string format: uuid type: array - type: 'null' title: Audio Id description: The id of the Audio asset to use, or a list of ids for multi-speaker generation. audio_generation: anyOf: - $ref: '#/components/schemas/GenerateTextToSpeechRequest' - type: 'null' description: Optional TTS parameters for server-side audio generation. If provided (and audio_id is not), audio will be generated from these params before video generation. audio_start_ms: anyOf: - type: integer - type: 'null' title: Audio Start Ms description: Audio start offset in milliseconds. Negative values prepend silence (e.g., -1000 adds 1s silence before audio). Positive values crop from the beginning of the source audio (e.g., 2000 skips the first 2s). Use with generated_video_inputs.duration_ms to control total output length. reference_audio_ids: anyOf: - items: type: string format: uuid type: array - type: 'null' title: Reference Audio Ids description: The id(s) of the audio(s) to reference in the generation. reference_image_ids: anyOf: - items: type: string format: uuid type: array - type: 'null' title: Reference Image Ids description: The id(s) of the image(s) to reference in the generation. reference_video_ids: anyOf: - items: type: string format: uuid type: array - type: 'null' title: Reference Video Ids description: The id(s) of the video(s) to reference in the generation. video_id: anyOf: - type: string format: uuid - type: 'null' title: Video Id description: The id of the Video asset to use as input. For V2V (motion control) models this is the driving video; for Google Veo models this triggers video extension. generated_video_inputs: $ref: '#/components/schemas/GeneratedVideoInputs' description: Inputs for generating the video. batch_size: type: integer maximum: 8.0 minimum: 1.0 title: Batch Size description: Number of video variations to generate (1-8). When > 1, batch_results will contain all generation results. default: 1 id: type: string format: uuid title: Id description: The id of the generation created. asset_id: type: string format: uuid title: Asset Id description: The id of the video asset resulting from the generation. created_at: type: string title: Created At description: Date the generation was submitted. status: $ref: '#/components/schemas/GenerationStatus' description: Status of the generation progress: type: number title: Progress description: Current progress to completion. Between 0-1 eta_sec: anyOf: - type: integer - type: 'null' title: Eta Sec description: Estimated time until completion in seconds. May be None if no historical data available. batch_generation_id: anyOf: - type: string - type: 'null' title: Batch Generation Id description: Unique identifier linking all generations in a batch. batch_results: items: $ref: '#/components/schemas/BatchVideoResultItem' type: array title: Batch Results description: All generation results in the batch. Always populated (even for batch_size=1). The main response fields (id, asset_id, etc.) reflect the first successful generation. type: object required: - generated_video_inputs - id - asset_id - created_at - status - progress title: GenerateVideoResponse CreditBalance: properties: remaining: type: integer title: Remaining description: Remaining credits not yet used. expiring: type: integer title: Expiring description: Credits that will expire in the future. used: type: integer title: Used description: Credits used in the current billing period. workspace_credits: anyOf: - additionalProperties: type: integer type: object - type: 'null' title: Workspace Credits description: 'DEPRECATED: use workspace_credit_pool[id].available instead. Available credits for each workspace mapped by workspace_id. Only included if user is in a workspace.' workspace_credit_pool: anyOf: - additionalProperties: $ref: '#/components/schemas/WorkspaceCreditUsage' type: object - type: 'null' title: Workspace Credit Pool description: Per-workspace credit pool usage (used/allocated/available) keyed by workspace_id. Only included if user is in a workspace. type: object required: - remaining - expiring - used title: CreditBalance description: Information about the current balance of Credits and usage. GeneratedVideoInputs: properties: text_prompt: type: string title: Text Prompt description: Prompt for video generation. ai_model_id: anyOf: - type: string format: uuid - type: 'null' title: Ai Model Id description: Deprecated. Use `model_slug` to identify the model used for generation. deprecated: true model_slug: anyOf: - type: string - type: 'null' title: Model Slug description: The slug of the model used for generation. Alternative to `ai_model_id`. resolution: anyOf: - type: string - type: 'null' title: Resolution description: Resolution for the video. aspect_ratio: anyOf: - type: string - type: 'null' title: Aspect Ratio description: Aspect ratio for the video. duration_ms: anyOf: - type: integer - type: 'null' title: Duration Ms description: Duration of the video in milliseconds. bounding_box_target: anyOf: - $ref: '#/components/schemas/NormalizedPoint' - items: $ref: '#/components/schemas/NormalizedPoint' type: array - type: 'null' title: Bounding Box Target description: Normalized coordinates for speaker position(s). A single point for single-speaker; a list for multi-speaker (one per speaker, same length as audio_id list). character_orientation: anyOf: - type: string enum: - video - image - type: 'null' title: Character Orientation description: 'For motion control models: ''video'' matches reference video orientation (better for complex motions, max 30s), ''image'' preserves character image orientation (better for camera movements, max 10s).' enhance_prompt: type: boolean title: Enhance Prompt description: If true, automatically enhance the prompt before generation. default: false multi_prompt: anyOf: - items: $ref: '#/components/schemas/VideoShot' type: array - type: 'null' title: Multi Prompt description: List of shots for multi-shot video generation. When provided, text_prompt is ignored and total duration is the sum of shot durations. shot_type: anyOf: - type: string const: customize - type: 'null' title: Shot Type description: Shot type for multi-shot generation. Currently only 'customize' is supported. type: object required: - text_prompt title: GeneratedVideoInputs securitySchemes: APIKeyHeader: type: apiKey in: header name: X-API-Key