Skip to content

Seedance 1.5 Pro

bytedance/seedance-1-5-pro — a video model by ByteDance. Call it through the gateway’s standard OpenAI-compatible door using the catalog slug; the full parameter schema is reproduced in full below.

Catalog slugbytedance/seedance-1-5-pro
Kindvideo
VendorByteDance

Through the Sociaro SDK / OpenAI-compatible door

Section titled “Through the Sociaro SDK / OpenAI-compatible door”

Video generation is asynchronous (create → poll → result). The SDK’s video.generate drives the whole cycle and blocks until the job reaches a terminal state:

from sociaro_ai import Sociaro
client = Sociaro(api_key="gw_live_...")
result = client.video.generate(
model="bytedance/seedance-1-5-pro",
prompt="a timelapse of a blooming flower",
# resolution / duration / audio … — see the schema below
)
print(result.url)

For a non-blocking handle use job = client.video.submit(model="bytedance/seedance-1-5-pro", …) then job.result(). Raw door: POST https://api.sociaro.com/v1/videos (create), then poll — see async jobs and media doors.

The complete, one-to-one API schema for this model, transcribed from the official source. Nothing omitted. Examples in the schema may use a representative model of the family — for this model use the slug bytedance/seedance-1-5-pro as shown in How to call above.

Coverage map (which model is covered by which API behaviour)

Section titled “Coverage map (which model is covered by which API behaviour)”

ALL models in this family are invoked through ONE asynchronous video-generation door (create → poll). The schema is identical; models differ only in WHICH parameter values / scenarios they accept.

Covered catalog slugs (passed in the model field):

  • bytedance/seedance-1-0-pro
  • bytedance/seedance-1-0-pro-fast
  • bytedance/seedance-1-5-pro
  • bytedance/dreamina-seedance-2-0
  • bytedance/dreamina-seedance-2-0-fast
  • bytedance/dreamina-seedance-2-0-mini (at research date: not yet available via the API — gate until API-live)

Critical per-model differences (capability matrix)

Section titled “Critical per-model differences (capability matrix)”

”—” = not supported.

Capability / scenario1.0 Pro1.0 Pro Fast1.5 Pro2.02.0 Fast
Text-to-video (t2v)yesyesyesyesyes
i2v — first frameyesyesyesyesyes
i2v — first + last framesyesyesyesyes
Multimodal reference-to-video (image)yesyes
Video input (video_url)yesyes
Audio input (audio_url)yesyes
Audio-video output (generate_audio)yesyesyes
Video Editing / Video Extensionyesyesyes
Draft mode (draft / draft_task)yesyes*
return_last_frameyesyesyesyesyes
priority (0–9)yes
framesyesyes
camera_fixedyesyesyes
service_tier (default/flex)yesyesyes— (online only, ignored)— (online only, ignored)
1080p resolutionyesyesyesyes

* Draft mode is documented as supported by Seedance 1.5 Pro (the draft_task / draft flow); the tutorial capability matrix also lists “Draft Mode” under Dreamina Seedance 2.0, but the API reference restricts the draft boolean and the draft_task content type to Seedance 1.5 Pro only (“This feature is only supported by seedance 1.5 pro”). Treat draft/draft_task as 1.5 Pro only for strict API validation.

Other per-model rules (defaults & ranges — see parameter tables for exact values):

  • resolution default: 720p for 2.0 series & 1.5 Pro; 1080p for 1.0 Pro & 1.0 Pro Fast. 1080p not supported by 2.0 Fast. Draft mode (1.5 Pro) forces 480p.
  • ratio default: adaptive for 2.0 series & 1.5 Pro; for other models t2v=16:9, i2v=adaptive. adaptive for non-2.0/1.5 models only works for image-to-video.
  • duration range: 1.0 Pro / 1.0 Pro Fast [2,12]; 1.5 Pro [4,12] or -1; 2.0 series [4,15] or -1. -1 (intelligent) is 2.0 series & 1.5 Pro only.
  • prompt languages: all models support English; 2.0 & 2.0 Fast additionally support Japanese, Indonesian, Spanish, Portuguese.
  • image formats: .jpeg .png .webp .bmp .tiff .gif; .heic .heif additionally for 1.5 Pro & 2.0 series.
  • face safety (2.0 series): does NOT accept direct upload of reference images/videos containing real human faces; use trusted outputs (face videos generated by 2.0 series under your account within 30 days), preset digital characters, or authorized real-person assets (asset://<ID>).
  • billing: video billed on completion_tokens (input always 0 ⇒ total_tokens = completion_tokens). Seedance 2.0 series has a minimum token-usage floor: if actual usage < the floor, usage.completion_tokens returns the floor and the floor is billed. duration:-1 affects cost (model picks length). flex = 50% of default price.
  • retention: task ID — 7 days from created_at; video_url and last_frame_url — 24 hours (save immediately).

OperationMethod + pathThrough the gateway door?
Create a video generation taskPOST https://api.sociaro.com/v1/videosYes
Retrieve a video generation taskGET https://api.sociaro.com/v1/videos/{id}Yes
List video generation tasksGET https://api.sociaro.com/v1/videosNo — native Ark API only
Cancel or delete a taskDELETE https://api.sociaro.com/v1/videos/{id}No — native Ark API only
  • Auth: header Authorization: Bearer $SOCIARO_API_KEY.
  • Content-Type: application/json.
  • Pass a Seedance catalog slug in the model field (e.g. bytedance/seedance-1-5-pro). The gateway routes the request to ByteDance’s video API on your behalf.
  • This is an asynchronous, two-step pattern: Create returns only { "id": "cgt-..." }; the real result (video_url, usage, actual duration/ratio/resolution) appears only via Retrieve or callback. Critical for a transparent-mode gateway.
  • Only Create and Retrieve are gateway doors. The gateway registers POST /v1/videos and GET /v1/videos/{id} only; GET /v1/videos (LIST) and DELETE /v1/videos/{id} (CANCEL/DELETE) are not implemented as doors: GET /v1/videos returns 404 Not Found (unregistered path), DELETE /v1/videos/{id} returns 405 Method Not Allowed. The schemas for LIST and CANCEL below describe ByteDance’s native Ark API and apply only when calling Ark directly. To list your async jobs through the gateway, use GET /gw/async (the gateway’s own job ledger) instead.

{
"model": "bytedance/seedance-1-5-pro", // REQUIRED — catalog slug
"content": [ /* array of: text / image_url / video_url / audio_url / draft_task objects */ ], // REQUIRED
"callback_url": "https://...", // optional
"return_last_frame": false, // optional
"service_tier": "default", // optional (default | flex); ignored by 2.0 series
"execution_expires_after": 172800, // optional, seconds [3600, 259200]
"generate_audio": true, // optional (2.0 series & 1.5 Pro only)
"draft": false, // optional (Seedance 1.5 Pro only)
"safety_identifier": "<hash>", // optional, <=64 chars
"priority": 0, // optional, 0-9 (Seedance 2.0 only)
"resolution": "720p", // optional
"ratio": "16:9", // optional
"duration": 5, // optional (use duration OR frames)
"frames": 29, // optional (NOT for 2.0 series / 1.5 Pro)
"seed": -1, // optional
"camera_fixed": false, // optional (NOT for 2.0 series; NOT for reference-to-image)
"watermark": false // optional
}

Two ways to set resolution / ratio / duration / frames / seed / camera_fixed / watermark:

  • New method (recommended): separate top-level fields, strict validation (bad value → error). Abbreviations are NOT supported in the new method (write parameters in full).
  • Legacy method: append --[parameter] to the end of content.text, loose validation (bad value → silently substitutes default, no error). All models still support the legacy method. Suffix forms: --rs 720p --rt 16:9 --dur 5 --seed 11 --cf false --wm true or full names: --resolution 720p --ratio 16:9 --duration 5 --seed 11 --camerafixed false --watermark true

Different models support different parameters/values. If a parameter/option is not supported by the selected model, it is either ignored or an error is thrown (new method → error; legacy method → default).

ParameterTypeRequiredDefaultAllowed values / rangeDescription
modelstringRequiredcatalog slugThe catalog slug of the model to call, e.g. bytedance/seedance-1-5-pro.
contentobject[]Requiredarray of text / image_url / video_url / audio_url / draft_task objectsReferences for generation. See content-item tables below.
callback_urlstringoptionalURLCallback address. On task status change the service sends a POST whose body is identical to the Retrieve response. Callback statuses: queued, running, succeeded, failed, expired. On delivery failure (no success confirmation within 5 s), retried up to 3 times.
return_last_framebooleanoptionalfalsetrue / falsetrue → return the last frame of the video (PNG, same width/height as the video, no watermark) via Retrieve (content.last_frame_url). Used to chain consecutive videos (last frame → first frame of next).
service_tierstringoptionaldefaultdefault, flexProcessing tier. default = online inference (lower RPM/concurrency). flex = offline inference (higher TPD, 50% of online price, higher latency). Cannot be changed after submit. Seedance 2.0 series supports only online inference and does NOT support this parameter.
execution_expires_afterintegeroptional172800[3600, 259200] secondsTask timeout threshold measured from created_at. Default 172800 s (48 h). After this, task → expired. Recommended to set regardless of service_tier.
generate_audiobooleanoptionaltruetrue / falseOnly Seedance 2.0 series & Seedance 1.5 Pro. true → video with synchronized audio (voice/SFX/BGM auto-generated from prompt & visuals; put dialogue in double quotes for best results). false → silent video. All audio-videos are mono regardless of input channel count.
draftbooleanoptionalfalsetrue / falseOnly Seedance 1.5 Pro. true → draft mode (preview, fewer tokens / cheaper; generated at 480p — other resolutions error; return_last_frame and offline inference NOT supported).
safety_identifierstringoptionalEnglish string, ≤ 64 chars, fixed & unique per userEnd-user identifier for policy-violation detection. Recommended: hash of username / user ID / email. Returned unchanged in Retrieve/List.
priorityintegeroptional009 (larger = higher)Only Seedance 2.0. Queue priority within a single Endpoint. Default FIFO; higher priority inserts the request ahead of all lower-priority queued requests under the same Endpoint. Does NOT interrupt running tasks; same-priority requests stay FIFO; affects only the same Endpoint. Not supported when service_tier=flex.
resolutionstringoptional2.0 series & 1.5 Pro: 720p; 1.0 Pro & 1.0 Pro Fast: 1080p480p, 720p, 1080pVideo resolution. 1080p not supported by Seedance 2.0 Fast. Draft mode (1.5 Pro) forces 480p.
ratiostringoptional2.0 series & 1.5 Pro: adaptive; other models: t2v 16:9, i2v adaptive16:9, 4:3, 1:1, 3:4, 9:16, 21:9, adaptiveAspect ratio. adaptive = model auto-selects (t2v → from prompt; first/last-frame → from uploaded first frame; multimodal → from prompt intent, else from first uploaded media, priority video > image). Actual value returned in Retrieve (ratio). adaptive supported by 2.0 series & 1.5 Pro; for other models only for image-to-video. Pixel sizes per ratio×resolution: see table below.
durationintegeroptional51.0 Pro / 1.0 Pro Fast: [2,12] s; 1.5 Pro: [4,12] or -1; 2.0 series: [4,15] or -1Video length in integer seconds. Specify duration OR frames; frames takes precedence. -1 (2.0 series & 1.5 Pro only) = intelligent: model picks integer length within range (affects billing). Actual length returned in Retrieve.
framesintegeroptionalintegers in [29, 289] matching the format 25 + 4n (n = positive integer); frames = duration × 24NOT supported by Seedance 2.0 series & Seedance 1.5 Pro. Frame count (for fractional seconds). Specify duration OR frames; frames takes precedence. Formula: frames = duration × frame rate (24). Example: 2.4 s → 2.4×24 = 57.6 → nearest 25+4n = 57 → actual 57/24 = 2.375 s.
seedintegeroptional-1integer [-1, 2^32-1]Randomness seed. Different seed (or -1 / unset → random) → different results; same seed → similar (not guaranteed identical) results.
camera_fixedbooleanoptionalfalsetrue / falseNot supported in reference-to-image scenarios, and not currently supported by Seedance 2.0 series. true → the model appends a fixed-camera instruction to the prompt (result not guaranteed).
watermarkbooleanoptionalfalsetrue / falsetrue → “AI Generated” watermark in the lower-right corner. false → no watermark.

Supported content combinations (at least one of text/image/video; audio can NOT be the sole input — at least one reference video or image is required):

  • Text
  • Text (optional) + image
  • Text (optional) + video
  • Text (optional) + image + audio
  • Text (optional) + image + video
  • Text (optional) + video + audio
  • Text (optional) + image + video + audio
  • Sample/Draft task ID

The three image scenarios are mutually exclusive and cannot be mixed: i2v first-frame, i2v first-and-last-frames, multimodal reference. (For multimodal reference you may specify reference images as first/last frame in the prompt to approximate a “first/last frame + references” effect; for strict first/last-frame match use the i2v first-and-last-frames scenario with role = first_frame / last_frame.)

FieldTypeRequiredAllowed valuesDescription
content[].typestringRequired"text"Content type.
content[].textstringRequiredstringText prompt describing the expected video. Languages: all models support English; 2.0 & 2.0 Fast additionally Japanese, Indonesian, Spanish, Portuguese. Recommended length < 1000 words (overly long text scatters focus). Legacy --[param] suffixes may be appended here.
FieldTypeRequiredAllowed valuesDescription
content[].typestringRequired"image_url"Supports image URL or image Base64.
content[].image_urlobjectRequiredInput image object.
content[].image_url.urlstringRequiredURL / Base64 / asset IDPublic URL; OR Base64 data:image/<format>;base64,<...> (format lowercase, e.g. data:image/png;base64,{base64_image}); OR asset://<ASSET_ID> (from Elements & Digital Characters Library).
content[].rolestringRequired under certain conditionsfirst_frame, last_frame, reference_imagePosition/purpose of the image — rules below.

Single-image requirements:

  • Formats: .jpeg, .png, .webp, .bmp, .tiff, .gif (plus .heic, .heif for Seedance 1.5 Pro & 2.0 series).
  • Aspect ratio (w/h): (0.4, 2.5).
  • Width & height: (300, 6000) px.
  • Size: single image < 30 MB; total request body ≤ 64 MB; do not Base64-encode large files.
  • Number of images: i2v first frame = 1; i2v first+last = 2; 2.0 series multimodal reference = 1–9.

role rules and image count:

  • i2v — first frame: all models; 1 image; role=first_frame or blank.
  • i2v — first and last frames: Seedance 2.0 & 2.0 Fast, 1.5 Pro, 1.0 Pro; 2 images; role required (first_frame / last_frame). The two frames may be the same image; if aspect ratios differ, the first frame takes precedence and the last frame is auto cropped (centered).
  • Multimodal reference images: Seedance 2.0 series only; 1–9 images; role=reference_image for each.
C) Video (video_url) — new; Seedance 2.0 series only
Section titled “C) Video (video_url) — new; Seedance 2.0 series only”
FieldTypeRequiredAllowed valuesDescription
content[].typestringRequired"video_url"Video URL only.
content[].video_urlobjectRequiredInput video object.
content[].video_url.urlstringRequiredURL / asset IDPublic video URL (only video URLs supported); OR asset://<ASSET_ID> (digital character library).
content[].rolestringConditionally requiredreference_videoCurrently only reference_video.

Video input requirements:

  • Formats: mp4, mov. Containers/codecs: MP4 (.mp4, video/mp4) and QuickTime (.mov, video/quicktime); video codecs H.264/AVC, H.265/HEVC; audio codecs AAC, MP3.
  • Resolution: 480p / 720p / 1080p.
  • Duration: each video [2, 15] s; up to 3 reference videos; total of all videos ≤ 15 s.
  • Aspect ratio (w/h): [0.4, 2.5].
  • Width & height: [300, 6000] px.
  • Total pixels (w×h): [640×640 = 409600, 2206×946 = 2086876].
  • Size: each video ≤ 50 MB.
  • Frame rate (FPS): [24, 60].
  • The service trusts face-containing videos generated by Seedance 2.0 series models under your account within the past 30 days.
D) Audio (audio_url) — new; Seedance 2.0 series only
Section titled “D) Audio (audio_url) — new; Seedance 2.0 series only”
FieldTypeRequiredAllowed valuesDescription
content[].typestringRequired"audio_url"Supports audio URL or audio Base64.
content[].audio_urlobjectRequiredInput audio object.
content[].audio_url.urlstringRequiredURL / Base64 / asset IDPublic URL; OR Base64 data:audio/<format>;base64,<...> (format lowercase, e.g. data:audio/wav;base64,{base64_audio}); OR asset://<ASSET_ID>.
content[].rolestringConditionally requiredreference_audioCurrently only reference_audio.

Audio input requirements:

  • Formats: wav, mp3.
  • Duration: each audio [2, 15] s; up to 3 reference audio segments; total of all audio ≤ 15 s.
  • Size: each audio ≤ 15 MB; total request body ≤ 64 MB; do not Base64-encode large files.
  • Audio can NOT be input alone — at least one reference video or image is required.
E) Sample / Draft task (draft_task) — Seedance 1.5 Pro only
Section titled “E) Sample / Draft task (draft_task) — Seedance 1.5 Pro only”
FieldTypeRequiredAllowed valuesDescription
content[].typestringRequired"draft_task"Generate an official video from a draft.
content[].draft_taskobjectRequiredDraft task input.
content[].draft_task.idstringRequireddraft task IDDraft video task ID. The model auto-reuses the draft’s inputs (model, content.text, content.image_url, generate_audio, seed, ratio, duration, camera_fixed); other parameters can be set manually, else model defaults apply. Two-step flow: (1) create a draft (draft:true); (2) after confirming the draft, create the final video using the draft task ID.
ResolutionRatioW×H (Seedance 1.0 series)W×H (Seedance 1.5 Pro / 2.0 series)
480p16:9864×480864×496
480p4:3736×544752×560
480p1:1640×640640×640
480p3:4544×736560×752
480p9:16480×864496×864
480p21:9960×416992×432
720p16:91248×7041280×720
720p4:31120×8321112×834
720p1:1960×960960×960
720p3:4832×1120834×1112
720p9:16704×1248720×1280
720p21:91504×6401470×630
1080p (not for 2.0 Fast)16:91920×10881920×1080
1080p4:31664×12481664×1248
1080p1:11440×14401440×1440
1080p3:41248×16641248×1664
1080p9:161088×19201080×1920
1080p21:92176×9282206×946

For image-to-video, when the selected video aspect ratio differs from the uploaded image’s ratio, the model crops the image centered.

Returns only the task ID (asynchronous):

{ "id": "cgt-2026******-****" }
FieldTypeDescription
idstringVideo generation task ID. Stored for 7 days from created_at, then cleared. When draft:true → draft task ID; when draft:false → normal task ID. Poll via Retrieve.

ParameterTypeRequiredDescription
idstringrequiredID of the video generation task to query.
{
"id": "cgt-2025******-****",
"model": "bytedance/dreamina-seedance-2-0", // catalog slug
"status": "succeeded",
"error": null, // or { "code": "...", "message": "..." }
"content": {
"video_url": "https://.../****",
"last_frame_url": "https://.../****" // only if return_last_frame:true was set
},
"usage": { "completion_tokens": 108900, "total_tokens": 108900 },
"created_at": 1743414619,
"updated_at": 1743414673,
"seed": 10,
"resolution": "720p",
"ratio": "16:9",
"duration": 5, // duration OR frames (whichever was set)
"frames": 29, // duration OR frames
"framespersecond": 24,
"generate_audio": true,
"safety_identifier": "...",
"priority": 0,
"draft": false, // only Seedance 1.5 Pro
"draft_task_id": "...", // when generating from a draft
"service_tier": "default",
"execution_expires_after": 172800
}
FieldTypeDescription
idstringTask ID.
modelstringModel name and version (Model name-Version).
statusstringqueued, running, cancelled (only queued tasks can be cancelled), succeeded, failed, expired.
errorobject | nullnull on success; otherwise {code, message}. See Error codes.
error.codestringError code.
error.messagestringError message.
created_atintegerTask creation time, Unix seconds.
updated_atintegerLast update time, Unix seconds.
contentobjectOutput after completion.
content.video_urlstringOutput video URL. Deleted after 24 h — save promptly.
content.last_frame_urlstringLast-frame URL (PNG; 24 h validity). Returned only if return_last_frame:true was set on create.
seedintegerSeed used for this request.
resolutionstringGenerated video resolution.
ratiostringActual aspect ratio (important when adaptive was requested).
durationintegerLength in seconds. Returned only if frames was NOT specified on create.
framesintegerFrame count. Returned only if frames WAS specified on create.
framespersecondintegerFrame rate of the generated video.
generate_audiobooleanWhether the video has synchronized audio (only 2.0 series & 1.5 Pro return this).
safety_identifierstringEnd-user identifier (returned unchanged if it was set on create).
priorityintegerExecution priority of the request.
draftbooleanWhether the output is a draft video (only Seedance 1.5 Pro returns this).
draft_task_idstringDraft video task ID (returned when generating an official video from a draft).
service_tierstringService tier actually used to process the task.
execution_expires_afterintegerTask expiration threshold, seconds.
usageobjectToken usage.
usage.completion_tokensintegerTokens consumed for the video output. (See List page note: 2.0 series enforces a minimum-token floor.)
usage.total_tokensintegerTotal. For video models input tokens are always 0 ⇒ total_tokens = completion_tokens.

LIST — GET /v1/videos (native Ark API only — not a gateway door)

Section titled “LIST — GET /v1/videos (native Ark API only — not a gateway door)”

Not available through the gateway. GET /v1/videos is not registered as a door and returns 404 Not Found (the path does not match the registered /v1/videos/{id} route). The schema below is ByteDance’s native Ark API and applies only when calling Ark directly. Through the gateway, list your async jobs with GET /gw/async.

GET /v1/videos?page_num={}&page_size={}&filter.status={}&filter.task_ids={}&filter.model={}&filter.service_tier={}

Note: Only the last 7 days of historical data can be queried. Time is always UTC; the returned 7-day window is based on the actual request time T (to the second), interval [T-7d, T).

LIST — request parameters (all are query-string parameters)

Section titled “LIST — request parameters (all are query-string parameters)”
ParameterTypeRequiredDefaultRange / valuesDescription
page_numinteger / nulloptional[1, 500]Page number of returned results.
page_sizeinteger / nulloptional[1, 500]Number of results per page.
filter.statusstring / nulloptionalqueued, running, cancelled, succeeded, failedFilter by task status.
filter.task_idsstring[] / nulloptionaltask IDsExact match, batch supported. Multiple IDs joined with &, e.g. filter.task_ids=id1&filter.task_ids=id2.
filter.modelstring / nulloptionalcatalog slugExact match, only one value. Passing a catalog slug returns tasks created for that model.
filter.service_tierstring / nulloptional (new)defaultdefault, flexService tier used for task processing. default = online; flex = offline.
{
"total": 3,
"items": [
{
"id": "cgt-2025******-****",
"model": "bytedance/dreamina-seedance-2-0",
"status": "succeeded",
"content": { "video_url": "https://.../****.mp4?X-Tos-..." },
"usage": { "completion_tokens": 108900, "total_tokens": 108900 },
"created_at": 1743414619,
"updated_at": 1743414673,
"seed": 10,
"resolution": "720p",
"ratio": "16:9",
"duration": 5,
"framespersecond": 24,
"service_tier": "default",
"execution_expires_after": 172800,
"generate_audio": true,
"draft": false,
"priority": 0
}
// ...
]
}
FieldTypeDescription
totalintegerNumber of tasks matching the filter conditions.
itemsobject[]List of matching tasks. Scope = the tasks created with your API key.
items[].idstringTask ID.
items[].modelstringModel name and version (model name-version).
items[].statusstringqueued, running, cancelled (only queued can be cancelled), succeeded, failed, expired.
items[].errorobject / nullnull on success; otherwise {code, message}. See Error codes.
items[].error.codestringError code.
items[].error.messagestringError message.
items[].created_atintegerCreation time, Unix seconds.
items[].updated_atintegerLast status-update time, Unix seconds.
items[].contentobjectOutput when the task is complete (download URL of the generated video).
items[].content.video_urlstringGenerated video URL. Deleted after 24 h — save promptly.
items[].content.last_frame_urlstringLast-frame URL (24 h). Returned only if return_last_frame:true was set on create.
items[].seedintegerSeed used.
items[].resolutionstringResolution.
items[].ratiostringAspect ratio.
items[].durationintegerDuration (seconds). Returned only if frames was NOT specified on create.
items[].framesintegerFrame count. Returned only if frames WAS specified on create.
items[].framespersecondintegerFrame rate.
items[].generate_audiobooleanWhether the video has synchronized audio (only 2.0 series & 1.5 Pro return this).
items[].safety_identifierstringEnd-user identifier (returned unchanged if set on create).
items[].priorityintegerExecution priority.
items[].draftbooleanWhether the output is a draft video (only Seedance 1.5 Pro returns this).
items[].draft_task_idstringDraft video task ID (returned when generating an official video from a draft).
items[].service_tierstringService tier actually used.
items[].execution_expires_afterintegerTask timeout threshold, seconds.
items[].usageobjectToken usage.
items[].usage.completion_tokensintegerTokens consumed for the video output (basis for billing reconciliation). Seedance 2.0 series has a minimum-token-usage floor: if actual usage < the floor, this returns the floor, which is billed.
items[].usage.total_tokensintegerTotal. Input tokens are 0 ⇒ total_tokens = completion_tokens.

CANCEL / DELETE — DELETE /v1/videos/{id} (native Ark API only — not a gateway door)

Section titled “CANCEL / DELETE — DELETE /v1/videos/{id} (native Ark API only — not a gateway door)”

Not available through the gateway. DELETE /v1/videos/{id} is not registered as a door and returns 405 Method Not Allowed. The behaviour below is ByteDance’s native Ark API and applies only when calling Ark directly.

Cancels a queued task, or deletes a task record.

ParameterTypeRequiredDescription
idstringrequiredID of the task to cancel or delete.
Task statusDeletable?OperationPost-DELETE status
queuedYesRemoved from queue; status updated to cancelled.cancelled
runningNo
succeededYesTask record deleted; no longer queryable.
failedYesTask record deleted; no longer queryable.
cancelledNo
expiredYesTask record deleted; no longer queryable.

No response parameters. On success returns an empty object:

{}

Create:

Terminal window
curl https://api.sociaro.com/v1/videos \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $SOCIARO_API_KEY" \
-d '{
"model": "bytedance/seedance-1-0-pro",
"content": [ { "type": "text", "text": "A kitten yawns at the camera" } ]
}'

{ "id": "cgt-2026******-****" }

Retrieve:

Terminal window
curl -X GET https://api.sociaro.com/v1/videos/cgt-2025**** \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $SOCIARO_API_KEY"

Full (Seedance 2.0 multimodal reference: image + image + video + audio, audio-video)

Section titled “Full (Seedance 2.0 multimodal reference: image + image + video + audio, audio-video)”

Create:

Terminal window
curl https://api.sociaro.com/v1/videos \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $SOCIARO_API_KEY" \
-d '{
"model": "bytedance/dreamina-seedance-2-0",
"content": [
{ "type": "text", "text": "Use the first-person POV framing from [Video 1] throughout, use [Audio 1] as background music; opening frame is [Image 1] ... the final frame freezes on Image 2. All background voice audio uses a female voice." },
{ "type": "image_url", "image_url": { "url": "https://.../r2v_tea_pic1.jpg" }, "role": "reference_image" },
{ "type": "image_url", "image_url": { "url": "https://.../r2v_tea_pic2.jpg" }, "role": "reference_image" },
{ "type": "video_url", "video_url": { "url": "https://.../r2v_tea_video1.mp4" }, "role": "reference_video" },
{ "type": "audio_url", "audio_url": { "url": "https://.../r2v_tea_audio1.mp3" }, "role": "reference_audio" }
],
"generate_audio": true,
"ratio": "16:9",
"duration": 11,
"watermark": false
}'

{ "id": "cgt-2026******-****" }

Full i2v (first + last frame) body (illustrating all optional top-level params)

Section titled “Full i2v (first + last frame) body (illustrating all optional top-level params)”
{
"model": "bytedance/seedance-1-0-pro",
"content": [
{ "type": "text", "text": "..." },
{ "type": "image_url", "image_url": { "url": "data:image/png;base64,{...}" }, "role": "first_frame" },
{ "type": "image_url", "image_url": { "url": "https://.../last.png" }, "role": "last_frame" }
],
"resolution": "1080p",
"ratio": "16:9",
"duration": 5,
"seed": 11,
"camera_fixed": false,
"watermark": true,
"return_last_frame": true,
"service_tier": "default",
"execution_expires_after": 172800,
"callback_url": "https://example.com/cb"
}

Draft mode (Seedance 1.5 Pro) — two-step

Section titled “Draft mode (Seedance 1.5 Pro) — two-step”

Step 1 (create draft):

{ "model": "bytedance/seedance-1-5-pro",
"content": [ { "type": "text", "text": "..." } ],
"draft": true } // → returns draft task ID; generated at 480p

Step 2 (final video from draft):

{ "model": "bytedance/seedance-1-5-pro",
"content": [ { "type": "draft_task", "draft_task": { "id": "<draft-task-id>" } } ],
"resolution": "720p" } // reuses draft's model/text/image_url/generate_audio/seed/ratio/duration/camera_fixed
{
"id": "cgt-2025******-****",
"model": "bytedance/dreamina-seedance-2-0",
"status": "succeeded",
"content": { "video_url": "https://.../****" },
"usage": { "completion_tokens": 108900, "total_tokens": 108900 },
"created_at": 1743414619,
"updated_at": 1743414673,
"seed": 10,
"resolution": "720p",
"ratio": "16:9",
"duration": 5,
"framespersecond": 24,
"service_tier": "default",
"execution_expires_after": 172800,
"generate_audio": true,
"draft": false,
"priority": 0
}