Files
Beyhan Oğur 880f412e2c first commit
2026-04-26 21:52:23 +03:00

255 lines
7.0 KiB
YAML

# 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