MAXAPI / VIDEO API

Seedance 2.5 API guide

The short answer · Seedance 2.5 uses model/seedance-2.5 in MaxAPI's video-generation API. Submit a task, save its identifier, and poll for the final result. Acceptance is not completion. Supported media, duration and resolution depend on this model entry and the selected route.

Integration review ·

Checked against MaxAPI's public catalogue, gateway implementation and local regression cases. Shared gateway checks are not separate end-to-end tests of every listed model. This is an integration reference, not a live upstream availability or performance report.

Before you integrate

Parameters describe MaxAPI's published configuration. A selected route may impose additional input or access requirements.

Request model ID
model/seedance-2.5
Output type
Video
Base URL
https://api.maxapi.dev
Generation workflow
Asynchronous task + polling
Quality values
720p
Resolution & dimensions
720p
Video duration
4 / 5 / 6 / 7 / 8 / 9 / 10 / 11 / 12 / 13 / 14 / 15 / 16 / 17 / 18 / 19 / 20 / 21 / 22 / 23 / 24 / 25 / 26 / 27 / 28 / 29 / 30 s

Choose the generation mode before preparing references. Image, video and audio inputs have different roles; use the exact fields and limits in this model's API tab. A submitted task is not a completed video.

Model strengths & selection

Longer storytelling and richer reference direction

ByteDance positions Seedance 2.5 around up-to-30-second generation and stronger reference-video interpretation and editing. The official page also describes extension and production controls, which must not be assumed to be present on MaxAPI.

Source review ·

Model-specific sources: ByteDance · Seedance 2.5 · BytePlus · Seedance 2.x capability comparison

When to compare this model

Compare it when a shot needs an introduction, a clear middle action and a conclusion rather than a very short motion test. MaxAPI currently lists 4–30 seconds at 720p for this entry; use that configuration when planning delivery.

Know the limits

A newer model number does not mean this entry supports 1080p, 4K, video extension or every official editing control. Long clips need continuity checks across their entire duration, and more references are not automatically better.

Provider capabilities describe the model, not the complete MaxAPI feature set. Use the parameters, input types and routes documented for this MaxAPI entry. Vendor speed or quality descriptions are not service-level guarantees.

How MaxAPI handles this request

Which route wins?

Routing priority is: the API key's configured route_modes list → an explicitly requested route → the model's default route. A non-empty key list takes precedence over route_mode in the request. To test a specific route, check the key configuration first; changing the request alone may not change the route used.

A key cannot grant account permissions

The a, x and pro routes require the corresponding account permission. Listing one on an API key does not grant that permission. An unauthorized gated-route selection returns 403 rather than silently switching to a different pricing tier.

RPM is shared at account level

An account's positive RPM limit covers its API keys together. A key can impose a stricter limit, but a higher key limit does not override the user limit. For example, a user limit of 200 RPM is not 200 RPM for each key. Service-level RPM and concurrency controls also apply; adding keys is not a way to bypass them.

Routes & pricing

Published routes: mix. Specify route_mode in an image/video JSON request; Gemini-native requests use X-MaxAPI-Route-Mode. Restricted routes must be enabled for both the account and API key. A route is an access and billing choice, not a different public model ID.

RoutePublished base priceBilling unit
mix$0.09720p · per second

1 credit = US$1. These are catalogue base rates, not a live account quote. Account multipliers and the active billing configuration determine the final charge. Token rates are not a fixed price per image.

Check current pricing

Your first request

Create a MaxAPI API key and set MAXAPI_KEY in your server environment. Keep it out of browser code. The example uses your key's routing configuration unless you explicitly select a route.

  • POST /api/v3/contents/generations/tasks (Volcengine Ark format)
  • GET /api/v3/contents/generations/tasks/{id}
curl
# The create call returns {"id":"task_..."}. Poll GET /api/v3/contents/generations/tasks/{id}.
curl -X POST "https://api.maxapi.dev/api/v3/contents/generations/tasks" \
  -H "Authorization: Bearer $MAXAPI_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "model/seedance-2.5",
    "content": [{"type":"text","text":"a calm ocean wave at sunrise, slow camera pan"}],
    "ratio": "21:9",
    "duration": 4,
    "resolution": "720p",
    "generate_audio": true
  }'
Full API documentation

Troubleshoot by symptom, not just HTTP status

403

a_route_not_enabled / x_route_not_enabled / pro_route_not_enabled

What it tells you
The selected restricted route is not enabled for the account. It is an access issue, not evidence that the model is offline.
What to do next
Check both the account permission and the API key's route list. Select a route you are entitled to use or request access; do not solve a 403 by increasing retries.
429

rate_limit_exceeded / capacity_exhausted

What it tells you
429 can represent account/key RPM, service-wide capacity or generation capacity. Use Retry-After and available X-RateLimit-* / X-Global-* headers to distinguish them; one status code does not identify one unique cause.
What to do next
Respect Retry-After when present, reduce request rate or active concurrency as appropriate, and use bounded backoff. Do not treat the site's total capacity as your account's personal quota.

What you can build

The use cases and prompts below are our suggested evaluation briefs, not provider benchmarks or tested output samples.

A complete short narrative

Write a beginning, one central action and an ending with approximate timing. Avoid overloading the available seconds.

Reference-video interpretation

Specify whether the reference controls pacing, framing or movement. Explain which subject details must not be copied.

Longer-shot continuity review

Review subject identity, motion transitions and the ending in separate passes before accepting the full clip.

Pottery-workshop triptych showing an artisan making, inspecting and shelving a blue cup
Concept illustrationStatic narrative storyboard: connect actions through one subject and location; not a video-length or continuity benchmark.

AI-created concept illustrations · not outputs or benchmarks from this model. Prompts below are starting points, not recipes that reproduce these images.

Creative practice · shared production advice

Make a shot list, not a list of effects

For Seedance 2.5, describe a single subject, a scene and a camera intention before adding motion. A product reveal might start on a material detail and pull back to show the object; a lifestyle shot might keep the camera still while the subject moves. Avoid asking one short clip to contain several unrelated locations, perspectives and actions. A clear shot brief is easier to evaluate and edit into a larger sequence.

The still illustration shows a possible visual direction, not a video result. Turn a chosen direction into a timing brief: what is visible at the start, what changes, and what the last frame should communicate. Review motion continuity, object shape and framing across the whole clip, not just its thumbnail. Use only the reference modes and media fields documented for the selected model.

Woman potter working beside a blue cup in an orderly workshop
Concept illustrationEstablish the setting and subject before describing a sequence of actions.

Prompt examples worth adapting

A good prompt is a small creative brief. Replace the subject and constraints with your actual requirements; keep size, route and quality in the API parameters rather than relying on prose alone.

01 / A twenty-second miniature story

Example prompt
A single twenty-second scene in a quiet pottery studio. In the first five seconds, establish a finished blue cup on the worktable. Over the next ten seconds, a potter carefully turns the cup to inspect its glaze. In the final five seconds, place it back and hold a calm closing composition. Keep the cup shape, person and studio consistent. No scene changes, captions or unrelated actions.

What to review · Set 20 seconds in the API and check hand-object contact and continuity at each timing transition.

Woman potter inspects a handmade blue cup at eye level by a workshop window.
Concept illustrationStatic planning concept for a workshop story.

From a storyboard to a usable clip

  1. Define the acceptance criteria

    Choose representative inputs and describe what makes the output usable. Include difficult cases, not only ideal examples. Fix the request parameters while comparing results.

  2. Keep execution separate from presentation

    Store request identifiers and preserve the response before transforming it for your interface. Validate errors and incomplete results explicitly. A user-interface timeout should not silently trigger duplicate work.

  3. Measure usable output, not just successful calls

    Log the model, route, input characteristics, actual usage and review outcome. Include manual correction and repeated attempts when estimating the cost of delivering a usable result.

Potter storyboard prints beside the matching blue ceramic cup.
Concept illustrationReview subject and action continuity across the planned sequence.

From a test to production

  1. Test the route you will actually use

    Keep model, route and parameters fixed during your first comparison. Test your own typical inputs as well as large or unusual files. Published model capabilities do not guarantee that every upstream channel accepts every edge case.

  2. Separate limits from generation errors

    On 429, reduce request rate or concurrency and back off before retrying. On invalid-input errors, fix the input first. Preserve request and task IDs for troubleshooting; do not log API keys or sensitive reference files in public logs.

  3. Track usable results and actual spend

    Use your account's usage and billing records to verify the final result and charge. A successful HTTP response can be a task receipt rather than the final output. For published work, check generated text, visual details and rights to supplied reference material.

Verified integration cases

Checked against MaxAPI's public catalogue, gateway implementation and local regression cases. Shared gateway checks are not separate end-to-end tests of every listed model. This is an integration reference, not a live upstream availability or performance report.

Multiple keys share the user limit

Local regression · passed
Test setup
Use two keys owned by the same account against an in-memory limiter with a small user quota.
Observed result
Requests across the keys consume the same user quota; subsequent requests are limited. A larger key quota does not override the user quota, and a smaller key quota remains effective.

Frequently asked questions

When should I choose this model?

Compare it when a shot needs an introduction, a clear middle action and a conclusion rather than a very short motion test. MaxAPI currently lists 4–30 seconds at 720p for this entry; use that configuration when planning delivery.

What limitations are specific to this entry?

A newer model number does not mean this entry supports 1080p, 4K, video extension or every official editing control. Long clips need continuity checks across their entire duration, and more references are not automatically better.

Why does changing route_mode not change my route?

Routing priority is: the API key's configured route_modes list → an explicitly requested route → the model's default route. A non-empty key list takes precedence over route_mode in the request. To test a specific route, check the key configuration first; changing the request alone may not change the route used.

Does each API key get the user's full RPM limit?

An account's positive RPM limit covers its API keys together. A key can impose a stricter limit, but a higher key limit does not override the user limit. For example, a user limit of 200 RPM is not 200 RPM for each key. Service-level RPM and concurrency controls also apply; adding keys is not a way to bypass them.

Do these local regression cases prove live model performance?

Local tests use simulated requests, responses and test storage; they do not call paid model channels. They verify request handling, not model image quality, live success rates, latency or end-to-end support for the maximum reference count. The concept illustrations elsewhere on this page are not these test outputs.

Which model ID should I send for Seedance 2.5?

Use model/seedance-2.5. Use the exact endpoint format in the example; the Gemini-native URL uses the short model name.

Does a listed price apply to every account and route?

1 credit = US$1. These are catalogue base rates, not a live account quote. Account multipliers and the active billing configuration determine the final charge. Token rates are not a fixed price per image.

Are failed requests charged?

MaxAPI's published rule is that failed requests are not charged. A request may temporarily reserve balance while it runs; check the final task outcome and billing records rather than treating a temporary balance change as the final charge.

Why is a route unavailable for my API key?

Route availability depends on the model, account permission and the API key's allowed routes. A published price is not an access grant. Check the account and key configuration before changing route_mode.

What should I check before processing the result?

Choose the generation mode before preparing references. Image, video and audio inputs have different roles; use the exact fields and limits in this model's API tab. A submitted task is not a completed video.

Should I immediately retry a failed or timed-out request?

First identify whether the response is a rate limit, invalid input or a still-running task. If you already have a task ID, query its status before submitting another generation. Apply bounded retries with backoff only to retryable errors.