# ByteDance | DreamActor | v2 ByteDance DreamActor v2 animates any character human, animal, cartoon, or anime by transferring motion, expressions, and gestures from a reference video onto a static image, producing stable, fluid animations up to 15 seconds long. It's the only motion transfer model with proven performance on non-human subjects and multi-character scenes. ## API Information - **Model Slug:** bytedance-dreamactor-v2 - **Branded URL:** https://www.eachlabs.ai/bytedance/dreamactor/bytedance-dreamactor-v2 - **Provider:** ByteDance - **Category:** Image to Video - **Output Type:** video - **Status:** active - **Version:** 0.0.1 - **Base Cost:** $0.05 per second based on generated duration - **Estimated Processing Time:** 180 seconds - **Last Updated:** 2026-07-06 - **Interactive Demo:** https://www.eachlabs.ai/ai-models/bytedance-dreamactor-v2 ## Pricing - **Charge Type:** dynamic - **Pricing Details:** $0.05 per second based on generated duration ### Pricing Rules | Condition | Pricing | | --- | --- | | Rule 1 | $0.05 per second based on generated duration | ## Input Schema | Parameter | Type | Required | Default | Constraints | Description | |-----------|------|----------|---------|-------------|-------------| | image_url | string | Yes | - | - | The URL of the reference image to animate. Supports real people, animation, pets, etc. Format: jpeg, jpg or png. Max size: 4.7 MB. Resolution: between 480x480 and 1920x1080 (larger images will be proportionally reduced). | | video_url | string | Yes | - | - | The URL of the driving template video providing motion, facial expressions, and lip movement reference. Max duration: 30 seconds. Format: mp4, mov or webm. Resolution: between 200x200 and 2048x1440. Supports full face and body driving. | | cut_result_first_second_switch | boolean | No | true | - | Whether to crop the first second of the output video. The output has a 1-second transition at the beginning; enable this to remove it. | ## Example Request ```bash curl -X POST https://api.eachlabs.ai/v1/prediction/ \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "model": "bytedance-dreamactor-v2", "input": { "video_url": "https://eachlabs-prod-storage-bucket.s3.amazonaws.com/uploads/ed358a3f-d5bd-487f-87d1-594f3dd8645f", "image_url": "https://eachlabs-prod-storage-bucket.s3.amazonaws.com/uploads/facee67b-7e07-4ed9-85a6-d1420c9f0d96" } }' ``` ## Output Schema Response returned by `GET /v1/prediction/{id}` when the job completes: ```json { "status": "success", "predictionID": "string", "output": "string (URL of generated video)", "metrics": { "predict_time": "number (seconds)" } } ``` ## Polling ```bash curl https://api.eachlabs.ai/v1/prediction/{PREDICTION_ID} \ -H "Authorization: Bearer YOUR_API_KEY" ``` | Status | Meaning | |--------|---------| | `processing` | Still running — poll again | | `success` | Done — read `output` | | `error` | Failed — read `message` / `details` | ## Webhook (alternative to polling) Pass `"webhook_url": "https://your.host/path"` in the create request. Eachlabs POSTs this payload when the job ends: ```json { "exec_id": "prediction-uuid", "status": "succeeded", "output": "https://...", "error": "" } ``` `status` is `"succeeded"` or `"failed"`. `exec_id` equals the `predictionID` from create. Return 2xx within 30 seconds. ## Errors Error body: `{ "status": "error", "message": "...", "details": "..." }` | Code | Meaning | |------|---------| | `400` | Invalid input | | `401` | Missing / invalid `Authorization` bearer token | | `404` | Unknown model or prediction id | | `429` | Rate limit — 100 creates / min, 10 concurrent per key | | `5xx` | Retry with backoff | ## Overview ByteDance | DreamActor | v2 is an advanced **image-to-video** model from the DreamActor family that transfers motion from a reference video to characters in a static input image, creating stable and fluid animations. Developed by Bytedance, it excels in handling non-human subjects like animals or creatures and multiple characters simultaneously, delivering realistic motion where other models often struggle with consistency or artifacts. This makes it ideal for creators needing precise motion retargeting without retraining or complex setups. Available via the **ByteDance | DreamActor | v2 API** on each::labs, it solves the challenge of animating custom images with professional-grade dynamics, producing outputs that maintain character identity and physics-aware movement. ## Usage Notes - API Base URL: `https://api.eachlabs.ai/v1` - Authentication: send `Authorization: Bearer YOUR_API_KEY`. Generate a key from the Eachlabs dashboard at https://www.eachlabs.ai/dashboard/api-keys. - File-typed parameters (`*_url`, `image_url`, `video_url`, `audio_url`, etc.) accept publicly-reachable HTTPS URLs only. Upload your asset first (GCS / S3 / your CDN) and pass the resulting URL. Data-URIs and localhost URLs are rejected. - For structured parameters (arrays / objects) send real JSON values, not stringified payloads. - Monetary values are reported in USD; per-token / per-megapixel rates may be billed in micro-cents internally. - Prefer `webhook_url` over polling for long-running predictions — see the Webhook Callback section.