LogoFunny AI Docs
LogoFunny AI Docs
HomepageFunny AI overviewFunny AI integration guideWan 3.0Wan 3.0 PrimeWan 3.0 ProWan 3.0 Prime ProSeedance 2.5Seedance 2.0Seedance 2.0 FastSeedance 2.0 Mini
X (Twitter)

Seedance 2.5

Seedance 2.5 API reference: video generation, frames and references, request examples, task polling, downloads and pricing.

Seedance 2.5 supports text, first and last frames, and image, video and audio references, with output at 480p, 720p, 1080p. Generate up to 30 seconds per request. Model details and Playground.

Connect to Funny AI

Use https://api.wanapi.app as the API base URL. Create a key with the Seedance model family in API key settings and send it as Authorization: Bearer YOUR_API_KEY. Keep keys on your server. Playground uses your website session and charges the same account balance; it does not require pasting a key into the browser.

Access requires an enabled account with sufficient balance. GET /v1/models lists the models available to your key. Seedance models use POST /v1/videos; select the model in the JSON body.

SettingSeedance 2.5
Model IDbytedance/seedance-2.5
resolution480p, 720p, 1080p; default: 720p.
duration4–30 output seconds, or -1 for automatic; default: -1.
aspectRatioadaptive, 16:9, 4:3, 1:1, 3:4, 9:16, 21:9; default: adaptive.
generateAudiotrue by default. false does not reduce the token rate.
OutputOne video per request, at 24 fps.

The request fields describe all 14 top-level fields. Use the field names shown here, including aspectRatio and generateAudio.

Submit a Seedance 2.5 task

This is a four-second text-to-video request at 720p. Set WAN_API_KEY to your Seedance key on the server. Submit once and save the returned id.

curl https://api.wanapi.app/v1/videos \
  -H "Authorization: Bearer $WAN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "model": "bytedance/seedance-2.5",
  "prompt": "A paper boat floats through a sunlit stream. Slow tracking shot.",
  "resolution": "720p",
  "aspectRatio": "16:9",
  "duration": 4,
  "generateAudio": true
}'

Query a Seedance 2.5 task

Save the returned id as TASK_ID, then query with the same key. Submission returns a task receipt; the video is available after completion. Begin polling every five seconds; see task statuses and downloads.

curl "https://api.wanapi.app/v1/videos/$TASK_ID" \
  -H "Authorization: Bearer $WAN_API_KEY"

Seedance 2.5 pricing

Rates are in USD per one million video tokens. Input and output video tokens determine the final cost. Resolution, duration and reference video inputs affect usage; use the matching rate for requests with or without reference video. Audio has no separate price tier.

Current ratesEstimated USD / billable second
Seedance 2.5 estimated pricing in USD per billable second (16:9, 24 fps)
ResolutionReference videoOfficial priceFunny AI priceYou save
480pNo video$0.1028Unavailable—
480pWith video$0.0615Unavailable—
720pNo video$0.2311Unavailable—
720pWith video$0.1382Unavailable—
1080pNo video$0.5686Unavailable—
1080pWith video$0.3402Unavailable—

Estimates use 16:9 output at 24 fps. Other aspect ratios and actual output dimensions can change the cost.

Without reference video, only output seconds count. With reference video, input and output seconds count; billable input time is at least two-thirds of the output duration, rounded up to a whole second.

Official comparison: BytePlus international on-demand pricing. Checked 2026-10-15. Funny AI prices refresh automatically.

Input and output video tokens determine the final cost. Failed requests are not charged.

View Seedance 2.5 pricing and estimates. Review the estimate in the Playground before submitting.

Request fields

Send a JSON object. For a new scene, model and a non-empty prompt or at least one media input are required; other fields are optional. For a final render, send only model, draftTaskId and resolution: "1080p" (optional n: 1 and providerOptions.bytedance.output_format). Unknown fields are rejected.

FieldTypeContract
modelstringRequired: bytedance/seedance-2.5.
draftTaskIdstringPublic ID of your completed Seedance 2.5 draft. For final rendering, send only model, draftTaskId and resolution: "1080p" (optional n: 1 and providerOptions.bytedance.output_format).
promptstringText instructions; up to 20,000 characters on this service. A new scene requires a prompt or media input; omit this field when using draftTaskId.
imageURL or URL objectFirst-frame image URL, or an object with type: "url", url and optional mediaType. Use image or frameImages, not both.
frameImagesarrayOne first_frame and an optional last_frame. Each entry has frameType and image; see the frame example below.
inputReferencesarrayUp to 30 images and 10 videos. Each entry has type: "url", url and mediaType. The data/mediaType URL form is also accepted.
aspectRatiostringadaptive (default), 16:9, 4:3, 1:1, 3:4, 9:16, 21:9. First-frame modes require adaptive.
resolutionstring480p, 720p, 1080p. Default: 720p. Also accepts 854x480, 1280x720, 1920x1080 as resolution tiers; use aspectRatio to select the shape.
durationinteger4–30 output seconds, or -1 for automatic. Default: -1.
fpsintegerFixed at 24; omit or send 24.
seedintegerOptional; -1 to 2147483647. No repeatability guarantee. Do not also specify providerOptions.bytedance.seed.
generateAudiobooleanGenerate audio. Default: true; disabling it does not change the token rate.
nintegerFixed at 1; one video per request.
providerOptionsobjectOptional bytedance object: referenceAudio (up to 10 HTTP(S) URLs), seed (same bounds as top-level seed), draft (boolean; default false; true requires 480p), output_format (mp4 or mov; default mp4). Unknown options are rejected.

Input combinations and media limits

  • Use image for a first frame, or frameImages for a first frame and optional last frame. A last frame alone and duplicate frame types are rejected.

  • Frames cannot be combined with inputReferences or providerOptions.bytedance.referenceAudio.

  • Reference mode accepts up to 30 images, 10 videos and 10 audio clips, with at most 50 references in total.

  • Frame inputs require aspectRatio: "adaptive". Reference audio can be used without an image or video.

  • Media inputs must be public HTTP(S) URLs. Upload bytes and credential-bearing URLs are not accepted.

  • Images: JPEG, PNG, WebP, BMP, TIFF or GIF, HEIC or HEIF; below 30 MB; each side 300–6000 pixels; aspect ratio 0.4–2.5.

  • Videos: MP4 or MOV; at most 200 MB per file; each clip 2–30 seconds and at most 30 seconds combined; 300–6000 pixels per side, aspect ratio 0.4–2.5, 24–60 fps.

  • Audio: MP3 or WAV; at most 15 MB per file; each clip 2–30 seconds and at most 30 seconds combined.

  • Remote media size, encoding and duration are checked during processing; URL validation alone cannot guarantee that a file is usable.

  • Use draftTaskId to render a completed draft at 1080p. Arbitrary native task options are not accepted.

Frame and reference examples

Send these bodies to the same POST /v1/videos endpoint. Replace every example.com URL with your own directly accessible media URL before submitting. Keep input URLs available until the task finishes.

First and last frames

For a single first frame, use image: "https://example.com/first-frame.jpg" and omit frameImages. To set both endpoints of the clip, use:

{
  "model": "bytedance/seedance-2.5",
  "prompt": "The camera slowly moves from the opening scene to the closing scene.",
  "frameImages": [
    {
      "frameType": "first_frame",
      "image": "https://example.com/first-frame.jpg"
    },
    {
      "frameType": "last_frame",
      "image": "https://example.com/last-frame.jpg"
    }
  ],
  "aspectRatio": "adaptive",
  "resolution": "720p",
  "duration": 4
}

Image, video and audio references

Put image and video inputs in inputReferences, with an explicit MIME type. Put audio URLs in providerOptions.bytedance.referenceAudio. Do not add frame inputs to this request.

{
  "model": "bytedance/seedance-2.5",
  "prompt": "Use the character from the image and the camera movement from the video.",
  "inputReferences": [
    {
      "type": "url",
      "url": "https://example.com/character.jpg",
      "mediaType": "image/jpeg"
    },
    {
      "type": "url",
      "url": "https://example.com/motion.mp4",
      "mediaType": "video/mp4"
    }
  ],
  "providerOptions": {
    "bytedance": {
      "referenceAudio": [
        "https://example.com/sound.wav"
      ]
    }
  },
  "resolution": "720p",
  "duration": 4
}

Draft preview

Use providerOptions.bytedance.draft: true with resolution: "480p" to create a draft. Draft uses the normal 480p token rate. After it completes, use its public task ID for a separate 1080p final render.

{
  "model": "bytedance/seedance-2.5",
  "prompt": "A paper boat floats through a sunlit stream. Slow tracking shot.",
  "resolution": "480p",
  "aspectRatio": "16:9",
  "duration": 4,
  "generateAudio": true,
  "providerOptions": {
    "bytedance": {
      "draft": true
    }
  }
}

Render a draft at 1080p

Send this body to POST /v1/videos, using the completed draft’s public task_… ID. The draft must belong to your account, use the same model and channel, and be less than 7 days old. This native draft lifetime is separate from video storage retention.

{
  "model": "bytedance/seedance-2.5",
  "draftTaskId": "task_YOUR_COMPLETED_DRAFT",
  "resolution": "1080p"
}

Do not resend prompt, media, duration, aspectRatio, seed, generateAudio, fps, draft or referenceAudio. These settings come from the draft. You may set providerOptions.bytedance.output_format for the final output. The API returns a new task ID; poll GET /v1/videos/{new_task_id} for the final video and its Bunny URL.

The final render is billed separately at the current 1080p rate and the original draft’s reference-video tier, using actual completion tokens. Polling does not regenerate or charge again. If submission is uncertain, do not automatically resubmit.

MOV output

Set providerOptions.bytedance.output_format to mov for MOV or mp4 for MP4 (default). This output option works for a new scene or a draft-to-final request.

{
  "model": "bytedance/seedance-2.5",
  "prompt": "A red ball on a plain table. Static camera.",
  "resolution": "480p",
  "duration": 4,
  "providerOptions": {
    "bytedance": {
      "output_format": "mov"
    }
  }
}

After completion, videos[0].url is the signed Bunny URL of the original .mov file and videos[0].mediaType is video/quicktime. MOV is not converted to MP4. Browser playback depends on codec support; download the file if your browser cannot play it. Files are uploaded to Bunny; only file references and task metadata are stored in the database. Base64 media inputs are not accepted.

Poll and download the video

An accepted task returns an object like this. Example IDs and timestamps are illustrative:

{
  "id": "task_EXAMPLE",
  "object": "video",
  "model": "bytedance/seedance-2.5",
  "status": "queued",
  "progress": 0,
  "created_at": 1792022400
}

Poll GET /v1/videos/{task_id} with your API key. The query returns the same public task ID and model. Use status to decide when to stop polling; progress is not an estimate of remaining time.

StatusMeaningNext step
queuedThe task has been accepted.Continue polling.
in_progressGeneration is running.Continue polling.
completedThe video is ready.Read videos[0].url and download.
failedGeneration failed.Stop polling and inspect error.

A completed query includes videos, an array of objects containing url and mediaType. Timestamps use Unix seconds; completed_at appears when completion is recorded.

{
  "id": "task_EXAMPLE",
  "object": "video",
  "model": "bytedance/seedance-2.5",
  "status": "completed",
  "progress": 100,
  "created_at": 1792022400,
  "completed_at": 1792022460,
  "videos": [
    {
      "url": "/v1/tasks/task_EXAMPLE/artifacts/video/content",
      "mediaType": "video/mp4"
    }
  ]
}

When the returned URL is a relative path, resolve it against https://api.wanapi.app and authenticate with your API key. For the example above:

curl "https://api.wanapi.app/v1/tasks/$TASK_ID/artifacts/video/content" \
  -H "Authorization: Bearer $WAN_API_KEY" \
  -o video.mp4

If a signed HTTPS media URL is returned, use it directly without forwarding your API key to that host. Result URLs can expire. Save videos you want to keep to your own storage. Polling and downloading an existing result do not create another generation.

A failed task includes an error object with code and message, for example:

{
  "id": "task_EXAMPLE",
  "object": "video",
  "model": "bytedance/seedance-2.5",
  "status": "failed",
  "error": {
    "code": "generation_failed",
    "message": "Video generation failed"
  }
}

Billing and failure handling

The final charge follows actual video token usage and the current model rate. The Playground estimate is a maximum estimate, not a fixed quote. Longer clips and larger output resolutions can increase token usage. Failed requests are not charged.

  • Invalid parameters: correct the fields or input combination before submitting again. Check media formats and limits as well as URL syntax.
  • Authentication or model access: use a valid Seedance key enabled for the requested model.
  • Insufficient balance: add funds before a new paid request. A key limit does not add account credit.
  • Temporary polling failure: retry the GET with backoff and a maximum waiting period. A failed query does not mean the generation failed.
  • Submission timeout or missing task ID: the outcome may be unknown. Do not automatically repeat the POST; it could create a second paid task.
  • Download failure: retry the existing result before starting a new generation.

Keep the task ID and contact support if an uncertain submission needs investigation.

Download the Seedance 2.5 OpenAPI schema.

Wan 3.0 Prime Pro

Wan 3.0 Prime Pro API reference: 1080p, 2K and 4K video generation, parameters, request examples, task polling, downloads and pricing.

Seedance 2.0

Seedance 2.0 API reference: video generation, frames and references, request examples, task polling, downloads and pricing.

Table of Contents

Connect to Funny AISubmit a Seedance 2.5 taskQuery a Seedance 2.5 taskSeedance 2.5 pricingRequest fieldsInput combinations and media limitsFrame and reference examplesFirst and last framesImage, video and audio referencesDraft previewRender a draft at 1080pMOV outputPoll and download the videoBilling and failure handling