Text to Video

doubao-seedance-2

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","prompt":"A kitten yawning at the camera","duration":5,"size":"16:9","resolution":"720p","generate_audio":true,"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",
  "prompt": "A kitten yawning at the camera",
  "duration": 5,
  "size": "16:9",
  "resolution": "720p",
  "generate_audio": true,
  "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:Choose one workflow by the source media supplied: text, image, role-labelled frames, reference video, or reference video with audio.

modelstringrequireddefault: "doubao-seedance-2"

Stable public model ID for this request.

promptstring

Video content description. It is required for text-to-video and optional when image or video input supplies the visual context.

Length: 1–4000

  • Describe the subject, action, camera movement, and style.
  • The accepted maximum is 4,000 characters; concise prompts are generally more reliable.
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 aspect ratio. adaptive matches the supplied image or video when source media is present.

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

Field description

16:9
Landscape
9:16
Portrait
1:1
Square
4:3 / 3:4
Traditional landscape / portrait
21:9
Ultra-wide
adaptive
Match the input image or video.
16:99:161:14:33:421:9adaptive
resolutionstringdefault: "720p"

Output resolution tier.

Allowed: 480p, 720p, 1080p, 4k

Field description

480p
Standard definition
720p
High definition
1080p
Full HD
4k
Ultra HD
480p720p1080p4k
seedinteger

Optional random seed for similar, but not bit-identical, repeatability.

  • Changing the seed changes the generated result for an otherwise identical request.
generate_audiobooleandefault: true

Whether to generate synchronized audio with the video. The default is true; set false for a silent video.

Allowed: false, true

return_last_framebooleandefault: false

Whether the result additionally includes a last-frame image URL.

Allowed: false, true

  • Use the returned image as the next request's image_urls input for continuous video generation.
image_urlsarray<string>

Image URL array for image-to-video. One image creates a first-frame video; two images create a first/last-frame video.

Items: 0–9

  • Use this field for simple image-conditioned generation. For explicit first or last-frame placement, use image_with_roles instead.
  • Up to 9 reference images are supported.
[
  "https://example.com/cat.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.
  • Use first_frame and last_frame together to control both endpoints of the generated clip.
  • Up to 9 images are supported.
[
  {
    "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. Total reference duration must be greater than 1.8 seconds and less than 15.2 seconds; source resolution must be between 480p and 720p.
[
  "https://example.com/reference.mp4"
]

Note:Do not combine reference video with first_frame or last_frame roles in image_with_roles.

audio_urlsarray<string>

Reference audio URL array used with reference image or reference video input.

Items: 1–3

  • Up to 3 files are supported, with combined duration of 15 seconds or less.
[
  "https://example.com/speech.wav"
]

Note:Do not combine reference audio with first_frame or last_frame roles 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

Provide a prompt without source media.

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

Image-to-video

Provide one image URL to use as the opening visual context.

{
  "model": "doubao-seedance-2",
  "prompt": "Gentle camera push-in as the subject looks toward the horizon",
  "image_urls": [
    "https://example.com/opening-frame.jpg"
  ],
  "duration": 5
}

First/last-frame video

Use role-labelled images to specify both endpoints of the clip.

{
  "model": "doubao-seedance-2",
  "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 generation

Provide a reference clip and describe the desired result.

{
  "model": "doubao-seedance-2",
  "prompt": "Convert the video style to anime style",
  "video_urls": [
    "https://example.com/reference.mp4"
  ]
}

Reference video with audio

Provide both reference video and audio for an audio-conditioned request.

{
  "model": "doubao-seedance-2",
  "prompt": "A scene of a person speaking",
  "video_urls": [
    "https://example.com/reference.mp4"
  ],
  "audio_urls": [
    "https://example.com/speech.wav"
  ],
  "size": "16:9",
  "duration": 11
}

Audio-enabled video

Generate synchronized audio directly from the prompt.

{
  "model": "doubao-seedance-2",
  "prompt": "A speaker addresses the camera in a quiet library",
  "generate_audio": true
}

Continuous video generation

Request the last frame, then use that image as the first frame of the next clip.

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

Multi-source reference video

Combine image, video, and audio references when no first_frame or last_frame role is used.

{
  "model": "doubao-seedance-2",
  "prompt": "Create a first-person product advertisement using the supplied materials",
  "image_urls": [
    "https://example.com/product-1.jpg",
    "https://example.com/product-2.jpg"
  ],
  "video_urls": [
    "https://example.com/product-reference.mp4"
  ],
  "audio_urls": [
    "https://example.com/music.mp3"
  ],
  "generate_audio": true,
  "size": "16:9",
  "duration": 11
}

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",
  "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.