Turning one detailed prompt into a vertical, audio-ready clip with the seedance-2.0@ext async task API

Short-form video is where most social discovery happens now, and a clean vertical clip usually means a shoot, an editor, or both. seedance-2.0@ext on hiapi skips that: write one detailed prompt, call an API endpoint, and get back a finished 9:16 video — audio included — a couple of minutes later.
This walkthrough covers the workflow end to end using a real generated clip: how the prompt was structured, how the async task API call actually works, what it cost, and where the pricing stops behaving the way you'd expect.
seedance-2.0@ext is the ext route of the seedance-2.0 model family on hiapi — a separate route with its own pricing and its own parameter set, distinct from the default seedance-2.0 route. It's built specifically around vertical, social-native output: native 9:16 framing, camera moves that read well on a phone screen, and audio generated in the same pass as the video instead of bolted on afterward.
That combination — vertical framing plus native audio — is what makes it a fit for TikTok- and Reels-style clips specifically, versus a general-purpose video model where you'd crop and score the audio yourself after the fact.
We generated one demo clip end to end for this piece: a vertical product shot of cold brew coffee pouring over ice in a glass tumbler, styled for a social feed. Here's the exact output, followed by the exact prompt that produced it.
Vertical 9:16 close-up product showcase for a social feed: a frosted glass tumbler sits centered on a sunlit marble countertop. Camera starts with a slow overhead top-down push-in on the empty tumbler filled with clear ice cubes catching golden hour light. At two seconds, a stream of cold brew coffee pours in from off-frame top, swirling and darkening the ice, cream ribboning in gentle spirals just after. Condensation beads run down the glass as cool vapor drifts upward in backlight. Camera performs a slow arc from top-down to a low three-quarter hero angle, ending on a crisp close-up with shallow depth of field and warm bokeh from a window behind. Bright natural commercial lighting, glossy reflections, shallow depth of field, ultra clean product-video aesthetic, smooth handheld micro-motion, premium commercial finish. Native audio: soft pour trickle, ice clinking against glass, a light ambient cafe hush, no music. No readable text, no logos, no people, no hands, no cuts.
The result: 720×1280 (9:16), 24fps, roughly 8 seconds, with native AAC stereo audio baked into the file — no separate sound-design pass.
A few things this prompt does that a shorter, vaguer one wouldn't:
Treat the prompt as a short creative brief, not a caption — that's the actual difference in output quality.
seedance-2.0@ext runs through hiapi's async task endpoint. You submit a job, poll it until it finishes, then pull the video from the response.
Submit:
curl -X POST https://api.hiapi.ai/v1/tasks \
-H "Authorization: Bearer $HIAPI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "seedance-2.0@ext",
"input": {
"prompt": "<your prompt>",
"aspect_ratio": "9:16",
"resolution": "720p",
"duration": 8,
"generate_audio": true
}
}'
prompt and aspect_ratio are required — omit aspect_ratio and the call fails validation before it ever reaches generation. resolution, duration (4–15 seconds), and generate_audio are optional; the values above are close to what produced the clip in this article.
One thing worth flagging if you're coming from an image-to-video mindset: the pricing page lists an image-to-video rate for this model, but the live input schema only accepts a text prompt — image or reference-frame fields are rejected. This is a text-to-video model in practice, whatever the pricing tags suggest.
Poll for the result:
curl https://api.hiapi.ai/v1/tasks/<task_id> \
-H "Authorization: Bearer $HIAPI_API_KEY"
Once status reports success, output[0].url points to the finished .mp4. That link is temporary — roughly a week based on the expiry window on the task response — so download the bytes and store them yourself immediately rather than linking to it directly.
seedance-2.0@ext prices per second of output, and the rate changes by resolution tier:
| Resolution | Price per second |
|---|---|
| 720p | $0.149 |
| 1080p | $0.373 |
| 2K | $0.662 |
| 4K | $0.467 |
Notice that 4K is cheaper than 2K on this model — $0.467/s versus $0.662/s. That's not a typo, and it's not the usual pattern; on most models here, price climbs monotonically with resolution. Don't assume it holds for other models, and re-check /api/pricing before you build resolution-based cost logic into a pipeline, since tiers like this do get adjusted.
For reference, the 8-second, 720p demo clip above cost $1.19 to generate — straightforward duration × per-second rate math at the 720p tier.
Given the 720p → 1080p jump alone is roughly a 2.5x cost increase, resolution is the lever worth thinking about before you batch-generate anything:
Does seedance-2.0@ext support image-to-video, not just text-to-video?
No — despite the pricing page carrying an image-to-video rate for this model, the live /v1/tasks schema for the ext route only accepts a text prompt; image URLs, reference frames, and reference-video fields are all rejected. Treat it as text-to-video only until the platform's model list says otherwise.
Can I control how long the generated clip is?
Yes, via the optional duration field, an integer from 4 to 15 seconds. Leave it out and the model applies a default; setting it explicitly is safer if a downstream template expects a specific length.
Does the video come with audio automatically?
Native audio generation is available through the optional generate_audio field. Writing the audio you want directly into the prompt — as with "soft pour trickle, ice clinking against glass, a light ambient cafe hush" above — gets it synced to the on-screen action without a separate sound pass.
Is 4K really cheaper than 2K, or is that a display bug?
It's the current live pricing as of this writing (August 2026), not a bug — but resolution pricing can change, so confirm against /api/pricing before relying on it in a cost model.
How long is the returned video URL valid?
The output[0].url from a completed task is a temporary link, valid for roughly a week based on the task's expiry metadata. Download and store the file yourself rather than linking to it long-term.
Full parameter details and current pricing for this model live on the seedance-2.0@ext model page and the hiapi pricing page. For more prompt patterns built around this same model, Seedance 2.0@ext Prompt Recipes has additional worked examples, and a short-video product showcase built on Seedance 2.0 walks through the same async task workflow applied to a different creative brief.