# Video Generation Schemas VideoGenerationRequest: type: object required: - model - prompt properties: model: type: string description: Model identifier in format `provider/model` prompt: type: string description: Text prompt describing the video to generate input_reference: type: string description: Optional reference image for image-to-video. OpenAI and Gemini require a base64 data URL (e.g., `data:image/png;base64,...`). Runway and Replicate accept both data URLs and plain URLs. seconds: type: string description: Duration of the video in seconds as a string (e.g., "4") size: type: string description: Resolution of the generated video (e.g., `1280x720`, `720x1280`, `1920x1080`) negative_prompt: type: string description: Text describing what to avoid in the generated video seed: type: integer description: Seed for reproducible generation video_uri: type: string description: Source video URI for video-to-video generation (provider-specific, e.g. GCS URI) audio: type: boolean description: Enable audio generation in the video (supported by select providers/models) fallbacks: type: array items: $ref: './common.yaml#/Fallback' description: Fallback models to try if primary model fails VideoGenerationResponse: type: object properties: id: type: string description: Provider-native job ID. To use in path parameters (retrieve/delete/download), combine as `{id}:{provider}` (e.g., `task_abc123:runway`) object: type: string enum: - "video" description: Object type, always "video" model: type: string description: Model used for video generation status: $ref: '#/VideoStatus' progress: type: number format: float minimum: 0 maximum: 100 description: Approximate completion percentage (0-100) prompt: type: string description: Prompt used to generate the video remixed_from_video_id: type: string description: Source video ID if this is a remix seconds: type: string description: Duration of the generated video in seconds as a string (e.g., "4") size: $ref: '#/VideoSize' created_at: type: integer format: int64 description: Unix timestamp (seconds) when the job was created completed_at: type: integer format: int64 description: Unix timestamp (seconds) when the job completed expires_at: type: integer format: int64 description: Unix timestamp (seconds) when downloadable assets expire videos: type: array description: Generated video outputs (only present when status is "completed") items: type: object properties: type: type: string enum: - "url" - "base64" description: Output format of this video url: type: string format: uri description: URL to the generated video (present when type is "url") base64: type: string description: Base64-encoded video content (present when type is "base64") content_type: type: string description: MIME type of the video (e.g., "video/mp4") error: $ref: '#/VideoError' content_filter: $ref: '#/VideoContentFilter' extra_fields: $ref: './common.yaml#/BifrostResponseExtraFields' VideoRemixRequest: type: object required: - prompt properties: prompt: type: string description: Text prompt describing how to remix the video VideoListResponse: type: object properties: object: type: string enum: - "list" description: Object type, always "list" data: type: array items: $ref: '#/VideoObject' description: Array of video generation jobs first_id: type: string description: ID of the first item in the list last_id: type: string description: ID of the last item in the list has_more: type: boolean description: Whether there are more results available extra_fields: $ref: './common.yaml#/BifrostResponseExtraFields' VideoObject: type: object properties: id: type: string description: Provider-native video ID. To use in path parameters (retrieve/delete/download), combine as `{id}:{provider}` (e.g., `task_abc123:runway`) object: type: string enum: - "video" description: Object type, always "video" model: type: string description: Model used for generation status: $ref: '#/VideoStatus' progress: type: number format: float minimum: 0 maximum: 100 description: Approximate completion percentage (0-100) prompt: type: string description: Prompt used to generate the video remixed_from_video_id: type: string description: Source video ID if this is a remix seconds: type: string description: Duration of the video in seconds as a string (e.g., "4") size: $ref: '#/VideoSize' created_at: type: integer format: int64 description: Unix timestamp (seconds) when the job was created completed_at: type: integer format: int64 description: Unix timestamp (seconds) when the job completed expires_at: type: integer format: int64 description: Unix timestamp (seconds) when downloadable assets expire error: $ref: '#/VideoError' VideoDeleteResponse: type: object properties: id: type: string description: ID of the deleted video object: type: string enum: - "video.deleted" description: Object type, always "video.deleted" deleted: type: boolean description: Whether the video was successfully deleted extra_fields: $ref: './common.yaml#/BifrostResponseExtraFields' VideoStatus: type: string enum: - "queued" - "in_progress" - "completed" - "failed" description: | Current lifecycle status of the video generation job: - `queued`: Job is waiting to be processed - `in_progress`: Video is currently being generated - `completed`: Video generation completed successfully - `failed`: Video generation failed VideoSize: type: string description: Resolution of the generated video (e.g., "1920x1080") VideoError: type: object properties: code: type: string description: Error code message: type: string description: Human-readable error message VideoContentFilter: type: object description: Information about content that was filtered due to safety policies properties: filtered_count: type: integer description: Number of items filtered reasons: type: array items: type: string description: Human-readable reasons for filtering