Skip to main content
Video generation is asynchronous. POST /v1/videos/generations returns a public task identity and usually a poll_url; the final video appears on later status responses. When the selected Seedance model can use the AI Sonar material library, image URLs and supported inline data URLs are prepared as reusable AI Sonar materials before generation. If preparation takes longer than 60 seconds, retry after the returned auto_material_asset_ids become ACTIVE. If the selected model cannot use the material library, ordinary image inputs continue on the regular image path.

OpenAI-Style And Volc-Compatible Video APIs

Use /v1/videos/generations for AI Sonar’s unified video API across models. If you are migrating an existing Seedance 2.0 integration that already uses Volc-style content[] or Action requests, use the Seedance compatibility endpoints under /api/v3. Both styles use AI Sonar Bearer API keys and async polling, but their request and response shapes are different.

Supported Operations

Use explicit operation in production. AI Sonar can infer some operations from inputs, but explicit operation values make validation, support, and retries clearer.

Model Discovery

Use the model IDs shown by AI Sonar in model, then choose feature variants with operation and the corresponding media inputs. Examples include wan-2.7, happyhorse-1.0, viduq3, viduq3-mix, pixverse-v6, kling-3.0-video, veo3.1, and seedance-2.0; do not use operation-specific suffixes as AI Sonar model names. Read the selected model detail before relying on specialized fields such as reference_images, kling_elements, output_audio, duration, resolution, or aspect_ratio.

Create Request

For production media input, prefer public https URLs over inline data: URLs. If you use temporary URLs, keep them valid until AI Sonar finishes creating the task.

Inputs And Model-Specific Fields

  • Veo 3 family requests default to audio-on when output_audio is omitted. Set it explicitly when the model supports the toggle and your UX depends on sound.
  • kling_elements is for kling-3.0-video image-conditioned requests. Reference each element in prompt as @name; do not combine it with output_audio=true.
  • For the Seedance 2.0 family, read the Seedance 2.0 video models guide before using 4K output, Fast/Mini resolution caps, or multimodal reference inputs.
  • For grok-imagine-video, video-to-video uses a public .mp4 video_url; model-specific limits such as duration and resolution must come from the model details.

PixVerse and HappyHorse

On AI Sonar, the PixVerse models above do not accept operation=video-extension.

Polling Results

Use the returned poll_url first. If you need a fixed endpoint, use GET /v1/tasks/{id} with the same id / task_id from the create response. Completed video tasks may return video_url, video, or videos depending on the model and output count. Treat billing_transaction_id as a billing identifier, not as a task identifier.

Common Pitfalls

  • Do not hard-code old video status paths; prefer poll_url.
  • Do not combine first-frame fields with dedicated reference-image flows unless the model details allows it.
  • Do not assume duration describes input reference video length; it usually controls generated output length.
  • Do not retry create requests after a timeout without checking whether a task was already created.

API Reference