Text to Video

doubao-seedance-2-fast

Draft model pending operator verification

POST /v1/videos/generationsAsync generation

Quick start

Submit a request with this public model ID. The API immediately returns a normalized job; poll GET /v1/jobs/{jobId} while its status is queued or running.

curl -X POST "https://api.artany.ai/v1/videos/generations" \
  -H "Authorization: Bearer $ARTANY_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: unique-request-id" \
  -d '{"model":"doubao-seedance-2-fast","prompt":"Ocean waves at sunrise","duration":5,"size":"16:9","resolution":"720p","generate_audio":false,"return_last_frame":false}'

Request

Headers

HeaderRequiredDescription
AuthorizationYesBearer token for an Artany API key.
Content-TypeYesMust be application/json.
Idempotency-KeyRecommended8–128 characters. Reusing it with an identical request prevents duplicate jobs and charges.

Body

{
  "model": "doubao-seedance-2-fast",
  "prompt": "Ocean waves at sunrise",
  "duration": 5,
  "size": "16:9",
  "resolution": "720p",
  "generate_audio": false,
  "return_last_frame": false
}

Request Parameters

Only fields in this model’s public request contract are shown. Defaults are applied before validation and quoting.

Note:Fast video generation supports text, image, first/last-frame, reference-video, reference-audio, and generated-audio requests.

modelstringrequireddefault: "doubao-seedance-2-fast"

Stable public model ID for this request.

promptstring

Video content description. Required for text-to-video and optional when source media supplies the visual context.

Length: 1–4000

  • Describe the subject, action, camera movement, and style. The maximum length is 4,000 characters.
durationintegerdefault: 5

Requested output duration in seconds.

Range: 4–15

Note:Use a plain JSON number and one of the duration values supported by this model.

sizestringdefault: "16:9"

Output video aspect ratio or size selection for this workflow.

Allowed: 16:9, 9:16, 1:1, 4:3, 3:4, 21:9, adaptive

16:99:161:14:33:421:9adaptive
resolutionstringdefault: "720p"

Requested output resolution tier. The selected tier can affect quote and availability.

Allowed: 480p, 720p

480p720p
seedinteger

Optional generation seed for supported reproducibility behavior.

generate_audiobooleandefault: false

Whether to generate synchronized audio with the video.

Allowed: false, true

return_last_framebooleandefault: false

Whether to return the final video frame as an image for a subsequent request.

Allowed: false, true

image_urlsarray<string>

Image URL array for image-to-video. One image supplies an opening frame; two images supply opening and ending frames.

Items: 1–9

  • Up to 9 reference images are supported.
[
  "https://example.com/opening-frame.jpg"
]

Note:Do not send image_urls together with image_with_roles.

image_with_rolesarray<object>

Image URL objects with explicit frame or reference roles.

Items: 1–9

Field description

url
Accessible image URL.
role
first_frame for the opening frame, last_frame for the ending frame, or reference_image for a reference portrait.
[
  {
    "url": "https://example.com/day.jpg",
    "role": "first_frame"
  },
  {
    "url": "https://example.com/night.jpg",
    "role": "last_frame"
  }
]

Note:Do not combine this field with image_urls.

Note:When using first_frame or last_frame, do not also provide video_urls or audio_urls.

video_urlsarray<string>

Reference video URL array for video-conditioned generation.

Items: 1–3

  • Up to 3 reference videos are supported.
[
  "https://example.com/reference.mp4"
]

Note:Do not combine reference video with start or end in image_with_roles.

audio_urlsarray<string>

Reference audio URL array for an audio-conditioned request.

Items: 1–3

  • Up to 3 reference audio files are supported; their combined duration must be 15 seconds or less.
[
  "https://example.com/speech.wav"
]

Note:Do not combine reference audio with start or end in image_with_roles.

Use Cases

Choose the request shape that matches the source media you provide. The examples use the public model ID and accepted public fields.

Text-to-video

Create a clip directly from a prompt.

{
  "model": "doubao-seedance-2-fast",
  "prompt": "A kitten yawning at the camera",
  "resolution": "720p",
  "size": "16:9",
  "duration": 5,
  "generate_audio": true
}

Image-to-video

Use one source image as the opening frame.

{
  "model": "doubao-seedance-2-fast",
  "prompt": "The kitten stands and walks toward the camera",
  "image_urls": [
    "https://example.com/cat.jpg"
  ],
  "duration": 5
}

First/last-frame video

Use explicit roles to set both ends of the clip.

{
  "model": "doubao-seedance-2-fast",
  "prompt": "Transition from day to night",
  "image_with_roles": [
    {
      "url": "https://example.com/day.jpg",
      "role": "first_frame"
    },
    {
      "url": "https://example.com/night.jpg",
      "role": "last_frame"
    }
  ],
  "duration": 5
}

Reference video with audio

Provide reference video and audio together.

{
  "model": "doubao-seedance-2-fast",
  "prompt": "A person speaks to the camera",
  "video_urls": [
    "https://example.com/reference.mp4"
  ],
  "audio_urls": [
    "https://example.com/speech.wav"
  ],
  "duration": 11
}

Continuous video generation

Request the final frame and use it in the next image-to-video request.

{
  "model": "doubao-seedance-2-fast",
  "prompt": "The kitten continues walking",
  "image_urls": [
    "https://example.com/last-frame.png"
  ],
  "return_last_frame": true
}

Response and task status

A successful asynchronous submission returns HTTP 202 with a supplier-neutral job.

{
  "id": "job_…",
  "object": "generation.job",
  "model": "doubao-seedance-2-fast",
  "status": "queued",
  "progress": 0,
  "output": null,
  "error": null,
  "billing": {
    "estimated_credits": "…",
    "frozen_credits": "…",
    "charged_credits": "0",
    "state": "frozen",
    "price_version": "2026-07-18.picverse-parity"
  },
  "created_at": "2026-07-21T00:00:00.000Z",
  "completed_at": null
}
  • queued / running: continue polling.
  • succeeded: retrieve media URLs from output; billing has settled.
  • failed / canceled: inspect error; frozen Credits are released.