List available AI video models with the allowed values and defaults for every parameter, plus media constraints for first_frame and multimodal refs. Pricing is not included — use GET /api/v1/ai_video/cost for authoritative cost estimation.
Beta: available to any account with an active paid subscription; standard per-key rate limits apply.
Headers
X-API-KeystringrequiredYour VisionStory API key (sk-vs-...), kept server-side. Create or manage keys in API keys (Pro plan and up).
Responses
200Successful Response
application/json
dataGetAiVideoModelsResponse | nullrequirednullableThe endpoint-specific payload. See this endpoint's response schema for its fields; null only when the operation returns no payload.
modelsAiVideoModelDto[]requiredMachine-readable model capabilities: allowed values and defaults per parameter, plus media constraints. Pricing is not included (use GET /api/v1/ai_video/cost).
capabilitiesstring[]requiredSupported generation modes, such as text_to_video and image_to_video.
descriptionstringrequiredPublic model summary.
model_idstringrequiredPublic model ID to send in AI video requests.
paramsAiVideoModelParamsrequiredaspect_ratioStringChoicesrequireddefaultstring | nullrequirednullableValue used when the request omits this parameter.
valuesstring[]requiredCurrently accepted values for this model.
duration_secDurationChoicesrequireddefaultinteger | nullrequirednullableClip duration used when omitted.
valuesinteger[]requiredAccepted integer clip durations in seconds.
first_frameMediaConstraints | nullrequirednullableFirst-frame image constraints; null when image-to-video is unsupported.
aspect_ratio_range[number | integer | null, number | integer | null] | nullnullableMinimum and maximum width/height ratio.
dimension_px[integer | null, integer | null] | nullnullableMinimum and maximum pixel length per side.
duration_sec_range[number | integer | null, number | integer | null] | nullnullableMinimum and maximum single-reference duration in seconds.
formatsstring[] | nullnullableAccepted file extensions for this media slot.
fps_range[number | integer | null, number | integer | null] | nullnullableMinimum and maximum frame rate; a null upper bound means no upper limit.
max_mbinteger | nullnullableMaximum media file size in MiB, including gateway limits.
generate_audioAudioCapabilityrequireddefaultbooleanrequiredWhether native audio is generated when omitted; does not change price.
promptPromptCapabilityrequiredmax_lengthinteger | nullrequirednullableMaximum prompt characters; null when unspecified.
supports_ref_syntaxboolean | nullnullablePresent when in-prompt reference syntax is supported.
refsVideoReferencesrequiredacceptstring[]requiredAccepted media kinds: image, video, or audio.
audioMediaConstraintsrequiredaspect_ratio_range[number | integer | null, number | integer | null] | nullnullableMinimum and maximum width/height ratio.
dimension_px[integer | null, integer | null] | nullnullableMinimum and maximum pixel length per side.
duration_sec_range[number | integer | null, number | integer | null] | nullnullableMinimum and maximum single-reference duration in seconds.
formatsstring[] | nullnullableAccepted file extensions for this media slot.
fps_range[number | integer | null, number | integer | null] | nullnullableMinimum and maximum frame rate; a null upper bound means no upper limit.
max_mbinteger | nullnullableMaximum media file size in MiB, including gateway limits.
imageMediaConstraintsrequiredaspect_ratio_range[number | integer | null, number | integer | null] | nullnullableMinimum and maximum width/height ratio.
dimension_px[integer | null, integer | null] | nullnullableMinimum and maximum pixel length per side.
duration_sec_range[number | integer | null, number | integer | null] | nullnullableMinimum and maximum single-reference duration in seconds.
formatsstring[] | nullnullableAccepted file extensions for this media slot.
fps_range[number | integer | null, number | integer | null] | nullnullableMinimum and maximum frame rate; a null upper bound means no upper limit.
max_mbinteger | nullnullableMaximum media file size in MiB, including gateway limits.
maxintegerrequiredMaximum references across all media kinds; zero means unsupported.
max_per_kindReferenceKindLimits | nullnullableOptional per-kind count limits, in addition to max.
audiointeger | nullnullableMaximum number of audio references when specified.
imageinteger | nullnullableMaximum number of image references when specified.
videointeger | nullnullableMaximum number of video references when specified.
total_duration_sec_maxReferenceDurationLimits | nullnullableOptional aggregate duration limits, by media kind.
audionumber | integer | nullnullableMaximum total audio-reference duration in seconds.
videonumber | integer | nullnullableMaximum total video-reference duration in seconds.
videoMediaConstraintsrequiredaspect_ratio_range[number | integer | null, number | integer | null] | nullnullableMinimum and maximum width/height ratio.
dimension_px[integer | null, integer | null] | nullnullableMinimum and maximum pixel length per side.
duration_sec_range[number | integer | null, number | integer | null] | nullnullableMinimum and maximum single-reference duration in seconds.
formatsstring[] | nullnullableAccepted file extensions for this media slot.
fps_range[number | integer | null, number | integer | null] | nullnullableMinimum and maximum frame rate; a null upper bound means no upper limit.
max_mbinteger | nullnullableMaximum media file size in MiB, including gateway limits.
resolutionStringChoicesrequireddefaultstring | nullrequirednullableValue used when the request omits this parameter.
valuesstring[]requiredCurrently accepted values for this model.
messagestringHuman-readable status message; "success" on a successful call.
server_timestring · date-timerequiredServer-side timestamp when the response was produced, in ISO 8601 format (UTC).
defaultError response. All failures share one envelope: an error object with a numeric code, a human-readable message, an optional details string, and an optional hint giving an actionable next step (useful for AI agents).
application/json
errorErrorDetailrequiredcodeintegerrequiredMachine-readable error code. Mirrors the HTTP status for transport-level failures (e.g. 401, 404, 422, 500) and may carry a business-specific code otherwise.
detailsstring | nullnullableOptional structured detail about the failure, e.g. a JSON string of per-field validation errors on a 422. Absent when there is nothing extra to report.
hintstring | nullnullableActionable next step for resolving the error, written for both humans and AI agents (e.g. how to fix the request, or where to obtain an API key). May be absent.
messagestringrequiredHuman-readable explanation of what went wrong. Safe to log or surface to end users; not localized.