Skip to content
Conduit

skill

seedance-2-5-video-generate-api-skill

Seedance 2.5 API quickstart and agent skill for EvoLink.

Set up

Skills are installed by placing their folder where your agent loads skills.

The download comes from github.com/Evolink-AI/seedance-2-5-video-generate-api-skill itself, not from our server, so what you get is exactly what its author published.

Install instructions come from the README

Skills do not use an MCP config. Follow the steps in the README below.

README

synced Oct 23, 2026

Seedance 2.5 API: Text, Image, and Reference Video Skill for EvoLink

AI Agent? Run npx skills add https://github.com/Evolink-AI/seedance-2-5-video-generate-api-skill/tree/main/skills/seedance-2-5-video-gen, then read llms-install.md

[!IMPORTANT] EvoLink's official Seedance 2.5 text, image, and reference API pages currently say the models are not yet available. This repository is a schema-complete pre-integration release: dry runs, request validation, installation, and lifecycle logic work now; live generation depends on EvoLink opening the routes

📑 Menu

Agent Skill

The seedance-2-5-video-gen skill converts user intent into time-aware prompts and validated requests for all three Seedance 2.5 workflows. It understands motion, camera behavior, pacing, continuity, audio, model-specific media limits, asynchronous task handling, and the current pre-launch boundary

Installation

Agent install — recommended

npx skills add https://github.com/Evolink-AI/seedance-2-5-video-generate-api-skill/tree/main/skills/seedance-2-5-video-gen

npm fallback and direct CLI

npx evolink-seedance-2-5@latest -y --path ~/.claude/skills
npx evolink-seedance-2-5@latest "A five-second studio product shot" --mode text --dry-run

OpenClaw

openclaw skills add https://github.com/Evolink-AI/seedance-2-5-video-generate-api-skill

Manual

git clone https://github.com/Evolink-AI/seedance-2-5-video-generate-api-skill.git
cd seedance-2-5-video-generate-api-skill
node bin/cli.js -y --path ~/.claude/skills --no-open

Agent Auto-Install

Copy this to Claude Code, Codex, OpenClaw, OpenCode, or Cursor:

Install the Seedance 2.5 skill by running:

npx skills add https://github.com/Evolink-AI/seedance-2-5-video-generate-api-skill/tree/main/skills/seedance-2-5-video-gen

Then read the installed SKILL.md, check official availability, and run a text-to-video dry run before making any real API call

Getting an API Key

  1. Open the EvoLink API key page
  2. Sign in or sign up and return to the key page
  3. Create or select a key, then export it as EVOLINK_API_KEY
  4. Validate it through the non-generating credits endpoint before any generation task

The installer exposes EVOLINK_KEY_URL, AGENT_NEXT_ACTION, and ENV_VAR_EXPORT so an Agent can complete the handoff safely. The credits endpoint does not create a generation task


Quick Start

Preview a valid text-to-video request without an API key or credit spend:

./scripts/seedance-2-5-video-gen.sh \
  "A paper airplane crosses a sunlit studio; the camera pans smoothly to follow it; it lands centered on a wooden desk; quiet room ambience" \
  --mode text --duration 5 --aspect-ratio 16:9 --dry-run

The live create request uses:

export EVOLINK_API_KEY="your_key_here"

curl --request POST \
  --url https://api.evolink.ai/v1/videos/generations \
  --header "Authorization: Bearer ${EVOLINK_API_KEY}" \
  --header "Content-Type: application/json" \
  --header "X-EvoLink-Source: skill" \
  --header "X-EvoLink-Skill: seedance-2-5-video-gen" \
  --header "X-EvoLink-Package: evolink-seedance-2-5" \
  --header "X-EvoLink-Campaign: seedance-2-5-video-gen" \
  --header "X-EvoLink-Touchpoint: first_call" \
  --data '{
    "model": "seedance-2.5-text-to-video",
    "prompt": "A paper airplane crosses a sunlit studio; smooth tracking pan; it lands centered on a wooden desk",
    "duration": 5,
    "quality": "720p",
    "aspect_ratio": "16:9",
    "output_format": "mp4",
    "generate_audio": true,
    "content_filter": true
  }'

Pending response shape:

{
  "created": 1761313744,
  "id": "task-unified-1774857405-abc123",
  "model": "seedance-2.5-text-to-video",
  "object": "video.generation.task",
  "progress": 0,
  "status": "pending",
  "type": "video",
  "task_info": {
    "can_cancel": true,
    "estimated_time": 165,
    "video_duration": 5
  }
}

Full First-Run Flow

  1. Validate the key without generating: GET /v1/credits
  2. Create a task: POST /v1/videos/generations
  3. Store the returned id
  4. Poll GET /v1/tasks/{task_id} until completed or failed, or use callback_url
  5. Read the final URLs from results
  6. Save the files promptly because generated URLs may expire

Runnable complete flows:

API Reference

The family shares one create endpoint and one task endpoint, while each model ID enforces different media inputs

Supported Models and Workflows

WorkflowModel IDRequired mediaSpecial behavior
Text-to-Videoseedance-2.5-text-to-videoNoneSupports model_params.web_search; rejects media arrays
Image-to-Videoseedance-2.5-image-to-videoOne or two image URLsOne image is the first frame; two images are first and last frames
Reference-to-Videoseedance-2.5-reference-to-videoAt least one image, video, or audio URLSupports reference generation, editing, and extension; use @image1, @video1, @audio1 in prompts

Choose the Right Workflow

  • Use text when the shot can be described without input media
  • Use image to animate one image or interpolate between first and last frames
  • Use reference for style, character, product, camera-motion, source-video, edit, extension, or audio references

Dry-run all three routes:

# Text
./scripts/seedance-2-5-video-gen.sh "A red shirt rotates once in a white studio" --mode text --duration 5 --dry-run

# Image
./scripts/seedance-2-5-video-gen.sh "Subtle premium push-in; preserve the bottle" --mode image --image-url https://images.unsplash.com/photo-1523275335684-37898b6baf30?w=1200 --dry-run

# Reference
./scripts/seedance-2-5-video-gen.sh "Extend @video1; preserve motion; use @audio1 as music" --mode reference --video-url https://storage.googleapis.com/gtv-videos-bucket/sample/ForBiggerBlazes.mp4 --audio-url https://samplelib.com/lib/preview/mp3/sample-3s.mp3 --duration 8 --dry-run

Endpoints

PurposeMethodEndpoint
Validate key and read creditsGEThttps://api.evolink.ai/v1/credits
Create video taskPOSThttps://api.evolink.ai/v1/videos/generations
Query taskGEThttps://api.evolink.ai/v1/tasks/{task_id}

Request Parameters

Shared fields:

FieldTypeRequiredDefault / limit
modelstringyesOne of the three exact model IDs above
promptstringyesMaximum 10,000 tokens
durationintegerno5; range 4 to 30 seconds
qualitystringno720p; supports 480p
aspect_ratiostringnoadaptive; also 16:9, 9:16, 1:1, 4:3, 3:4, 21:9
output_formatstringnomp4; also mov
generate_audiobooleannotrue
content_filterbooleannotrue; disabling it is documented as a 1.1x billing multiplier
callback_urlstringnoHTTPS only; no private network targets

Media fields and limits are documented in docs/api-reference.md and references/api-params.md

Response Schema

Completed task:

{
  "id": "task-unified-1774857405-abc123",
  "model": "seedance-2.5-text-to-video",
  "object": "video.generation.task",
  "progress": 100,
  "status": "completed",
  "type": "video",
  "results": ["https://cdn.evolink.ai/results/task-id/video.mp4"]
}

Failed task:

{
  "id": "task-unified-1774857405-abc123",
  "status": "failed",
  "error": {
    "code": "content_policy_violation",
    "message": "Content policy violation",
    "type": "task_error"
  }
}

Read the full response schema

Error Handling

All included examples check missing keys, non-2xx HTTP responses, failed task state, and polling timeout. Read docs/errors.md for common corrections

Callback and Webhook

Set callback_url to an HTTPS endpoint to receive the final task object after completion, failure, or cancellation. EvoLink documents a 10-second callback timeout and retries after 1, 2, and 4 seconds. Read docs/callbacks.md

Pricing and Availability

  • The official Seedance 2.5 API pages currently mark all three routes as not yet available
  • This repository does not assert a numeric live price
  • Duration affects billing; reference video inputs can add billed input duration
  • content_filter=false is documented as a 1.1x multiplier
  • Treat the live usage object, EvoLink model page, and dashboard as the source of truth

View current Seedance 2.5 availability and pricing

Additional Installation Examples

Agent install — recommended

npx skills add https://github.com/Evolink-AI/seedance-2-5-video-generate-api-skill/tree/main/skills/seedance-2-5-video-gen

npm fallback and direct CLI

npx evolink-seedance-2-5@latest -y --path ~/.claude/skills
npx evolink-seedance-2-5@latest "A five-second studio product shot" --mode text --dry-run

OpenClaw

openclaw skills add https://github.com/Evolink-AI/seedance-2-5-video-generate-api-skill

Manual

git clone https://github.com/Evolink-AI/seedance-2-5-video-generate-api-skill.git
cd seedance-2-5-video-generate-api-skill
node bin/cli.js -y --path ~/.claude/skills --no-open

Agent Skill Usage Examples

Copy this to Claude Code, Codex, OpenClaw, OpenCode, or Cursor:

Install the Seedance 2.5 skill by running:

npx skills add https://github.com/Evolink-AI/seedance-2-5-video-generate-api-skill/tree/main/skills/seedance-2-5-video-gen

Then read the installed SKILL.md, check official availability, and run a text-to-video dry run before making any real API call

The installer prints EVOLINK_KEY_URL, AGENT_NEXT_ACTION, and persistent EVOLINK_API_KEY guidance

🖼️ Showcase

Text-to-VideoImage-to-VideoReference-to-Video
Prompt, camera, motion, audio, and duration become a validated text payloadOne or two images become first-frame or first/last-frame video inputImages, videos, and audio become tagged reference materials for generation, edits, and extensions

Production Notes

  • Run ./scripts/seedance-2-5-video-gen.sh --check-availability before enabling a live call
  • Run --validate-key before the first generation request
  • Never resubmit automatically after a task ID has been returned
  • Use X-EvoLink-Touchpoint: first_call once, then subsequent_call
  • Persist task IDs and download final outputs promptly
  • Use callbacks for production systems; validate webhook authenticity through your own secret or network controls
  • Keep content_filter=true unless you understand the billing and safety consequences

Troubleshooting

IssueFix
Official route is closedUse --dry-run and the availability probe; do not fabricate a result
EVOLINK_API_KEY is missingGet an EvoLink API key, then export it
Image mode has no imagePass one or two --image-url values
Reference mode has no mediaPass at least one --image-url, --video-url, or --audio-url
Task times out locallyKeep the task ID and query it later; do not resubmit blindly
API returns 401 or 403Validate the key and model access with the current account
API returns 429 or 5xxBack off and retry only within an approved cost boundary

Compatibility

AgentPreferred install
Claude Codenpx skills add https://github.com/Evolink-AI/seedance-2-5-video-generate-api-skill/tree/main/skills/seedance-2-5-video-gen
Codexnpx skills add https://github.com/Evolink-AI/seedance-2-5-video-generate-api-skill/tree/main/skills/seedance-2-5-video-gen
OpenClawnpx skills add https://github.com/Evolink-AI/seedance-2-5-video-generate-api-skill/tree/main/skills/seedance-2-5-video-gen or OpenClaw CLI
OpenCodenpx skills add https://github.com/Evolink-AI/seedance-2-5-video-generate-api-skill/tree/main/skills/seedance-2-5-video-gen
Cursornpx skills add https://github.com/Evolink-AI/seedance-2-5-video-generate-api-skill/tree/main/skills/seedance-2-5-video-gen

FAQ

Is Seedance 2.5 live through EvoLink? Not according to the current official API pages. The package is ready for validation and dry runs, and can execute when the routes open

How does billing work? Duration affects billing, reference videos can add input-duration cost, and disabling the content filter is documented as a 1.1x multiplier. Use the live usage object and dashboard for current totals

How long do result URLs last? EvoLink task documentation says generated media URLs can expire. Save completed outputs promptly

Can I use callbacks instead of polling? Yes. Supply an HTTPS callback_url

Which workflow should I choose? Use text with no media, image for first or first/last frames, and reference for media-guided generation, edits, or extension

What are the main input limits? Image mode accepts one or two images. Reference mode accepts up to 30 images, 10 videos, and 10 audio clips, subject to per-file, duration, and request-size limits in the official docs

Community

Use GitHub issues for API bugs and documentation corrections. Security reports should follow SECURITY.md, and contributions should follow CONTRIBUTING.md

Documentation

Related Repositories

License

MIT — see LICENSE

↑↓ navigate openesc close