@acedatacloud/skills 2026.727.0 → 2026.727.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@acedatacloud/skills",
3
- "version": "2026.727.0",
3
+ "version": "2026.727.2",
4
4
  "description": "Agent Skills for AceDataCloud AI services — music, image, video generation, LLM chat, web search. Compatible with Claude Code, GitHub Copilot, Gemini CLI, OpenAI Codex, and 30+ AI coding agents.",
5
5
  "keywords": [
6
6
  "agent-skills",
@@ -0,0 +1,125 @@
1
+ ---
2
+ name: dreamina-video
3
+ description: Generate talking-photo digital human videos with Dreamina (ByteDance OmniHuman) via AceDataCloud API. Use when animating a portrait image with a driving audio track to produce a lip-synced video where the person speaks. Supports mask-based multi-person targeting and async task polling.
4
+ license: Apache-2.0
5
+ metadata:
6
+ author: acedatacloud
7
+ version: "1.0"
8
+ compatibility: Requires ACEDATACLOUD_API_TOKEN in .env file (see _shared/authentication.md).
9
+ ---
10
+
11
+ # Dreamina Talking-Photo Video Generation
12
+
13
+ Generate audio-driven digital human videos through AceDataCloud's Dreamina API (powered by ByteDance OmniHuman 1.5). Provide a portrait image and driving audio to produce a lip-synced talking-photo video.
14
+
15
+ > **Setup:** See [authentication](../_shared/authentication.md) for token setup.
16
+
17
+ ## Quick Start
18
+
19
+ ```bash
20
+ curl -X POST https://api.acedata.cloud/dreamina/videos \
21
+ -H "Authorization: ******" \
22
+ -H "Content-Type: application/json" \
23
+ -d '{
24
+ "image_url": "https://example.com/portrait.jpg",
25
+ "audio_url": "https://example.com/voiceover.mp3",
26
+ "async": true
27
+ }'
28
+ ```
29
+
30
+ The response contains a `task_id`. Poll for the result:
31
+
32
+ ```bash
33
+ curl -X POST https://api.acedata.cloud/dreamina/tasks \
34
+ -H "Authorization: ******" \
35
+ -H "Content-Type: application/json" \
36
+ -d '{"action": "retrieve", "id": "<task_id>"}'
37
+ ```
38
+
39
+ > **Async:** See [async task polling](../_shared/async-tasks.md). Poll `POST /dreamina/tasks` until `response.data.status` equals `"done"`.
40
+
41
+ ## Model
42
+
43
+ | Model | Description |
44
+ |-------|-------------|
45
+ | `omnihuman-1.5` | ByteDance OmniHuman 1.5 — audio-driven lip-sync digital human (default and only available model) |
46
+
47
+ ## Workflow
48
+
49
+ ### Basic Talking-Photo
50
+
51
+ Generate a video where a portrait person speaks a given audio track.
52
+
53
+ ```json
54
+ POST /dreamina/videos
55
+ {
56
+ "model": "omnihuman-1.5",
57
+ "image_url": "https://example.com/portrait.jpg",
58
+ "audio_url": "https://example.com/speech.mp3",
59
+ "prompt": "Natural expression, steady head movement, warm tone",
60
+ "async": true
61
+ }
62
+ ```
63
+
64
+ ### Multi-Person Mask
65
+
66
+ To target a specific person in a group image, provide `mask_url` array with subject mask URLs.
67
+
68
+ ```json
69
+ POST /dreamina/videos
70
+ {
71
+ "image_url": "https://example.com/group-photo.jpg",
72
+ "audio_url": "https://example.com/speech.wav",
73
+ "mask_url": ["https://example.com/person-mask.png"],
74
+ "async": true
75
+ }
76
+ ```
77
+
78
+ ## Parameters
79
+
80
+ | Parameter | Required | Values | Description |
81
+ |-----------|----------|--------|-------------|
82
+ | `image_url` | ✓ | URL | Portrait image URL (public, clear frontal face works best) |
83
+ | `audio_url` | ✓ | URL | Driving audio URL (mp3/wav, publicly reachable, keep under 60s) |
84
+ | `model` | | `"omnihuman-1.5"` | Model to use (default: `omnihuman-1.5`) |
85
+ | `prompt` | | string | Steers expression, emotion, stability, and style |
86
+ | `mask_url` | | array of URLs | Subject mask URLs to target a specific person in a multi-person image |
87
+ | `callback_url` | | URL | Webhook for result delivery |
88
+ | `async` | | boolean | Return task ID immediately for polling |
89
+
90
+ ## Task Queries
91
+
92
+ Retrieve one task:
93
+
94
+ ```json
95
+ POST /dreamina/tasks
96
+ {"action": "retrieve", "id": "<task_id>"}
97
+ ```
98
+
99
+ You can also query by `trace_id`:
100
+
101
+ ```json
102
+ POST /dreamina/tasks
103
+ {"action": "retrieve", "trace_id": "<trace_id>"}
104
+ ```
105
+
106
+ Retrieve several tasks:
107
+
108
+ ```json
109
+ POST /dreamina/tasks
110
+ {"action": "retrieve_batch", "ids": ["<id1>", "<id2>"]}
111
+ ```
112
+
113
+ A completed response contains `response.data.video_url` when `response.data.status` is `"done"`.
114
+
115
+ ## Gotchas
116
+
117
+ - Both `image_url` and `audio_url` are **required**
118
+ - The portrait should be a clear, well-lit, front-facing image with the face unobstructed
119
+ - Audio must be publicly reachable; keep it under 60s (≤30s recommended for 1080p quality)
120
+ - Use `async: true` or `callback_url` for longer jobs — synchronous mode may time out
121
+ - `mask_url` is only needed for multi-person images when you want to target one specific person
122
+ - Check `response.data.status` when polling — the terminal state is `"done"`
123
+ - Billed by output video duration
124
+
125
+ > **MCP:** See [MCP servers](../_shared/mcp-servers.md) for tool-use integration.
@@ -61,19 +61,25 @@ POST /face/beautify
61
61
 
62
62
  ### 3. Age Transformation
63
63
 
64
+ `age_infos` is required — one entry per face, each carrying the target `age`.
65
+
64
66
  ```json
65
67
  POST /face/change-age
66
68
  {
67
- "image_url": "https://example.com/portrait.jpg"
69
+ "image_url": "https://example.com/portrait.jpg",
70
+ "age_infos": [{ "age": 60 }]
68
71
  }
69
72
  ```
70
73
 
71
74
  ### 4. Gender Swap
72
75
 
76
+ `gender_infos` is required. `gender` is `0` to turn a male face female, `1` for the reverse.
77
+
73
78
  ```json
74
79
  POST /face/change-gender
75
80
  {
76
- "image_url": "https://example.com/portrait.jpg"
81
+ "image_url": "https://example.com/portrait.jpg",
82
+ "gender_infos": [{ "gender": 1 }]
77
83
  }
78
84
  ```
79
85
 
@@ -113,7 +119,19 @@ POST /face/detect-live
113
119
 
114
120
  | Parameter | Required | Description |
115
121
  |-----------|----------|-------------|
116
- | `image_url` | Yes (most endpoints) | Source face image URL |
122
+ | `image_url` | Yes (all except `/face/swap`) | Source face image URL |
123
+
124
+ ### `/face/change-age`
125
+
126
+ | Parameter | Required | Description |
127
+ |-----------|----------|-------------|
128
+ | `age_infos` | Yes | Array of `{ "age": <number> }`, one per face. Omitting it returns `400 age_infos is required` |
129
+
130
+ ### `/face/change-gender`
131
+
132
+ | Parameter | Required | Description |
133
+ |-----------|----------|-------------|
134
+ | `gender_infos` | Yes | Array of `{ "gender": 0\|1 }` — `0` male→female, `1` female→male. Each entry also accepts an optional `face_rect` |
117
135
 
118
136
  ### `/face/swap`
119
137
 
@@ -36,6 +36,8 @@ Synchronous responses return a direct audio URL:
36
36
  |----------|---------|
37
37
  | `POST /fish/tts` | Text-to-speech generation |
38
38
  | `GET /fish/model` | Browse/search public Fish reference voices |
39
+ | `GET /fish/model/{id}` | Fetch one reference voice by ID |
40
+ | `POST /fish/model` | Clone a voice — create a reference model from an audio URL |
39
41
  | `POST /fish/tasks` | Poll async TTS jobs when `async: true` |
40
42
 
41
43
  ## Workflows
@@ -115,4 +117,4 @@ Headers:
115
117
  - Choose the Fish engine with the **`model` request header**, not a JSON `model` field.
116
118
  - Use `reference_id` from `GET /fish/model` — not `voice_id`.
117
119
  - Synchronous requests return `audio_url` directly; async jobs should be polled via `/fish/tasks`.
118
- - The current OpenAPI spec documents voice browsing via `GET /fish/model`; it does **not** document a voice-cloning write endpoint.
120
+ - Voice cloning is `POST /fish/model`. `voices` must be a **single** HTTP(S) audio URL string — not an array, and not a file upload. It returns the `_id` you then pass to `/fish/tts` as `reference_id`.
@@ -50,9 +50,11 @@ Response (both endpoints): `{"data":[{"url":"https://...png"}]}` → download `d
50
50
  |---|---|
51
51
  | 16:9 | `1792x1024` (HD), `2048x1152`, `3840x2160` (4K) |
52
52
  | 9:16 | `1024x1792`, `1152x2048`, `2160x3840` |
53
- | 1:1 | `1024x1024`, `2048x2048`, `4096x4096` |
53
+ | 1:1 | `1024x1024`, `2048x2048`, `2880x2880` (4K) |
54
54
 
55
- (Omit `size` or use `"auto"` to let the model pick. Invalid sizes 400.)
55
+ (Omit `size` or use `"auto"` to let the model pick. Custom sizes must have both sides a
56
+ multiple of 16, each side ≤ 3840, total pixels between 655,360 and 8,294,400, and an aspect
57
+ ratio ≤ 3:1 — otherwise 400.)
56
58
 
57
59
  ## Tips
58
60
 
@@ -61,4 +63,7 @@ Response (both endpoints): `{"data":[{"url":"https://...png"}]}` → download `d
61
63
  - For **character/scene consistency** across video beats, generate one hero image, then
62
64
  `edits` it per beat instead of regenerating from scratch.
63
65
  - Text in images renders legibly — good for titles/labels you don't want to overlay in HTML.
64
- - Both endpoints are synchronous; no `/tasks` polling.
66
+ - `n` accepts **1–10** and you are billed **per image returned**, not per request — `n: 4`
67
+ costs 4×. (`response_format: "b64_json"` still requires `n: 1`.)
68
+ - Both endpoints are synchronous by default. For long 4K jobs pass `callback_url` (optionally
69
+ with `async: true`) and poll `POST /openai/tasks` with `{"id": "<task_id>"}`.
@@ -0,0 +1,123 @@
1
+ ---
2
+ name: grok-video
3
+ description: Generate AI videos with Grok (xAI) via AceDataCloud API. Use when creating videos from text prompts or animating images using Grok's video generation models. Supports text-to-video and image-to-video with configurable resolution and aspect ratio.
4
+ license: Apache-2.0
5
+ metadata:
6
+ author: acedatacloud
7
+ version: "1.0"
8
+ compatibility: Requires ACEDATACLOUD_API_TOKEN in .env file (see _shared/authentication.md).
9
+ ---
10
+
11
+ # Grok Video Generation
12
+
13
+ Generate AI videos through AceDataCloud's Grok (xAI) API.
14
+
15
+ > **Setup:** See [authentication](../_shared/authentication.md) for token setup.
16
+
17
+ ## Quick Start
18
+
19
+ ```bash
20
+ curl -X POST https://api.acedata.cloud/grok/videos \
21
+ -H "Authorization: ******" \
22
+ -H "Content-Type: application/json" \
23
+ -d '{"prompt": "a futuristic city at night with flying cars and neon lights", "model": "grok-imagine-video-1.5-fast:reverse", "callback_url": "https://api.acedata.cloud/health"}'
24
+ ```
25
+
26
+ > **Async:** See [async task polling](../_shared/async-tasks.md). Poll via `POST /grok/tasks` with `{"id": "..."}`.
27
+
28
+ ## Models
29
+
30
+ | Model | Resolution | Default | Notes |
31
+ |-------|-----------|---------|-------|
32
+ | `grok-imagine-video-1.5-fast:reverse` | up to 1080p | ✓ | Best value. 6–30s, billed by duration tier |
33
+ | `grok-imagine-video:reverse` | up to 1080p | | Better value. 1–15s, billed per output second |
34
+ | `grok-imagine-video:official` | up to 1080p | | Higher quality. 1–15s, billed per output second |
35
+ | `grok-imagine-video-1.5:official` | up to 1080p | | Higher quality, **image-to-video only** (`image_url` required) |
36
+ | `grok-imagine-video` | up to 720p | | Base model, text-to-video only |
37
+ | `grok-imagine-video-1.5-preview` | up to 720p | | 1.5 preview (grok-video.json surface) |
38
+
39
+ ## Workflows
40
+
41
+ ### 1. Text-to-Video
42
+
43
+ Generate a video from a text description.
44
+
45
+ ```json
46
+ POST /grok/videos
47
+ {
48
+ "prompt": "a majestic eagle soaring over snow-capped mountains at dawn",
49
+ "model": "grok-imagine-video-1.5-fast:reverse",
50
+ "resolution": "720p",
51
+ "aspect_ratio": "16:9",
52
+ "duration": 6
53
+ }
54
+ ```
55
+
56
+ ### 2. Image-to-Video
57
+
58
+ Animate a still image into motion. Provide the image URL via `image_url`.
59
+
60
+ ```json
61
+ POST /grok/videos
62
+ {
63
+ "prompt": "the eagle lifts off and flies into the sunset",
64
+ "image_url": "https://example.com/eagle.jpg",
65
+ "model": "grok-imagine-video:official",
66
+ "resolution": "720p",
67
+ "aspect_ratio": "16:9"
68
+ }
69
+ ```
70
+
71
+ ### 3. Multi-Reference Generation
72
+
73
+ Supply up to several reference images via `reference_image_urls` for style or subject consistency.
74
+
75
+ ```json
76
+ POST /grok/videos
77
+ {
78
+ "prompt": "the character walks through a cyberpunk alley",
79
+ "reference_image_urls": [
80
+ "https://example.com/character.jpg",
81
+ "https://example.com/style.jpg"
82
+ ],
83
+ "model": "grok-imagine-video-1.5-fast:reverse",
84
+ "resolution": "1080p"
85
+ }
86
+ ```
87
+
88
+ ## Parameters
89
+
90
+ | Parameter | Values | Description |
91
+ |-----------|--------|-------------|
92
+ | `prompt` | string | Text description of the desired video |
93
+ | `model` | see Models table | Model to use (default: `grok-imagine-video-1.5-fast:reverse`) |
94
+ | `image_url` | URL | Single reference image for image-to-video |
95
+ | `reference_image_urls` | array of URLs | Multiple reference images for style/subject guidance |
96
+ | `aspect_ratio` | `"1:1"`, `"16:9"`, `"9:16"`, `"4:3"`, `"3:4"`, `"3:2"`, `"2:3"` | Output aspect ratio |
97
+ | `resolution` | `"480p"`, `"720p"`, `"1080p"` | Output resolution (default: `480p`; `1080p` only for `:reverse`/`:official` models) |
98
+ | `duration` | integer | Duration in seconds (default: 6) |
99
+ | `callback_url` | URL | Webhook URL for async delivery |
100
+ | `async` | boolean | Return a task ID immediately for polling |
101
+
102
+ ## Task Queries
103
+
104
+ ```json
105
+ POST /grok/tasks
106
+ {"id": "<task_id>", "action": "retrieve"}
107
+ ```
108
+
109
+ Batch retrieval:
110
+
111
+ ```json
112
+ POST /grok/tasks
113
+ {"ids": ["<id1>", "<id2>"], "action": "retrieve_batch"}
114
+ ```
115
+
116
+ ## Gotchas
117
+
118
+ - `1080p` resolution is only supported by `:reverse` and `:official` model variants
119
+ - `image_url` provides a single driving image; `reference_image_urls` provides multiple style/subject references
120
+ - Set `callback_url` to get the task ID immediately without blocking on completion
121
+ - Poll `POST /grok/tasks` with `{"id": "..."}` until a final video URL appears in the response
122
+
123
+ > **MCP:** See [MCP servers](../_shared/mcp-servers.md) for tool-use integration.
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: sora-video
3
- description: Generate AI videos with OpenAI Sora via AceDataCloud API. Use when creating videos from text prompts, generating videos from reference images, or using character references from existing videos. Supports text-to-video, image-to-video, and character-driven generation with multiple models and resolutions.
3
+ description: UNAVAILABLE — the Sora endpoints now return 404 and the service is unpublished; use veo-video, kling-video or seedance-video instead. Historical reference for AceDataCloud's OpenAI Sora API. Was used when creating videos from text prompts, generating videos from reference images, or using character references from existing videos. Supports text-to-video, image-to-video, and character-driven generation with multiple models and resolutions.
4
4
  license: Apache-2.0
5
5
  metadata:
6
6
  author: acedatacloud
@@ -10,6 +10,13 @@ compatibility: Requires ACEDATACLOUD_API_TOKEN in .env file (see _shared/authent
10
10
 
11
11
  # Sora Video Generation
12
12
 
13
+ > [!WARNING]
14
+ > **This service is currently unavailable.** `/sora/videos` and `/sora/tasks` return
15
+ > `404 no Route matched with those values`, and the Sora service is no longer published
16
+ > in the API catalog. The reference below is kept for historical accuracy only — do not
17
+ > build against it. For video generation use [veo-video](../veo-video/SKILL.md),
18
+ > [kling-video](../kling-video/SKILL.md) or [seedance-video](../seedance-video/SKILL.md).
19
+
13
20
  Generate AI videos through AceDataCloud's OpenAI Sora API.
14
21
 
15
22
  > **Setup:** See [authentication](../_shared/authentication.md) for token setup.
@@ -81,10 +88,10 @@ POST /sora/videos
81
88
  | Parameter | Values | Description |
82
89
  |-----------|--------|-------------|
83
90
  | `model` | `"sora-2"`, `"sora-2-pro"` | Model to use (required) |
84
- | `size` | `"small"`, `"large"` | Video resolution |
85
- | `duration` | `10`, `15`, `25` | Duration in seconds (25 only with sora-2-pro) |
86
- | `orientation` | `"landscape"` (16:9), `"portrait"` (9:16), `"square"` (1:1) | Video orientation |
87
- | `version` | `"1.0"` | API version — version `1.0` enables duration up to 25s, orientation, character references, and image inputs |
91
+ | `size` | `"small"`, `"large"`, `"720x1280"`, `"1280x720"`, `"1024x1792"`, `"1792x1024"` | Video resolution |
92
+ | `duration` | `4`, `8`, `10`, `12`, `15`, `25` | Duration in seconds (25 only with sora-2-pro; version 2.0 supports 4/8/12) |
93
+ | `orientation` | `"landscape"` (16:9), `"portrait"` (9:16) | Video orientation — version 1.0 only |
94
+ | `version` | `"1.0"` (default), `"2.0"` | API version. `1.0` enables duration up to 25s, `orientation`, character references and image inputs; `2.0` uses pixel `size` values and drops `orientation` |
88
95
 
89
96
  ## Gotchas
90
97
 
@@ -94,4 +101,4 @@ POST /sora/videos
94
101
  - `orientation` sets the aspect ratio — use `"portrait"` for mobile-first content
95
102
  - Task states use `"succeeded"` (not "completed") — check for this value when polling
96
103
 
97
- > **MCP:** `pip install mcp-sora` | Hosted: `https://sora.mcp.acedata.cloud/mcp` | See [all MCP servers](../_shared/mcp-servers.md)
104
+ > **MCP:** the hosted endpoint `https://sora.mcp.acedata.cloud/mcp` currently returns 503, in line with the service being unavailable. See [all MCP servers](../_shared/mcp-servers.md)
@@ -0,0 +1,111 @@
1
+ ---
2
+ name: turnstile
3
+ description: Solve Cloudflare Turnstile CAPTCHAs via AceDataCloud API. Use when you need to bypass or solve a Cloudflare Turnstile challenge by providing the site key and page URL to get back a valid token. Supports synchronous and asynchronous modes.
4
+ license: Apache-2.0
5
+ metadata:
6
+ author: acedatacloud
7
+ version: "1.0"
8
+ compatibility: Requires ACEDATACLOUD_API_TOKEN in .env file (see _shared/authentication.md).
9
+ ---
10
+
11
+ # Cloudflare Turnstile CAPTCHA Solver
12
+
13
+ Solve Cloudflare Turnstile CAPTCHA challenges through AceDataCloud's captcha API. Submit the site key and target URL to receive a valid `cf-turnstile-response` token.
14
+
15
+ > **Setup:** See [authentication](../_shared/authentication.md) for token setup.
16
+
17
+ ## Quick Start
18
+
19
+ ```bash
20
+ curl -X POST https://api.acedata.cloud/captcha/token/turnstile \
21
+ -H "Authorization: ******" \
22
+ -H "Content-Type: application/json" \
23
+ -d '{
24
+ "website_key": "0x4AAAAAAADnPIDROrmt1Wwj",
25
+ "website_url": "https://react-turnstile.vercel.app"
26
+ }'
27
+ ```
28
+
29
+ A successful synchronous response:
30
+
31
+ ```json
32
+ {
33
+ "token": "0.mNQ2f9uP6mQ0y3H5Q8bqO7iM...",
34
+ "started_at": "2026-07-24T09:34:13+00:00",
35
+ "finished_at": "2026-07-24T09:34:25+00:00",
36
+ "elapsed": 12.4
37
+ }
38
+ ```
39
+
40
+ Use the returned `token` as the `cf-turnstile-response` value when submitting forms to the target site. The token is single-use with a ~120s validity — use it within 60s.
41
+
42
+ ## How to Find `website_key`
43
+
44
+ 1. Open the target page in a browser and press F12 to open DevTools
45
+ 2. In the Elements panel, search for `cf-turnstile`
46
+ 3. Find the container element — the `data-sitekey` attribute value is the `website_key`
47
+
48
+ ## Parameters
49
+
50
+ | Parameter | Required | Description |
51
+ |-----------|----------|-------------|
52
+ | `website_key` | ✓ | The Turnstile site key (`data-sitekey`) from the target page |
53
+ | `website_url` | ✓ | The full URL of the page containing the Turnstile widget |
54
+ | `action` | | Custom `action` value — only needed when the target page sets a custom action |
55
+ | `cdata` | | Custom `cData` value — only needed when the target page sets a custom cData |
56
+ | `async` | | When `true`, return immediately with a `task_id`; poll `POST /captcha/tasks` to retrieve the token |
57
+
58
+ ## Response Fields
59
+
60
+ | Field | Description |
61
+ |-------|-------------|
62
+ | `token` | The solved Turnstile token to submit as `cf-turnstile-response` |
63
+ | `started_at` | ISO-8601 timestamp when solving began |
64
+ | `finished_at` | ISO-8601 timestamp when solving completed |
65
+ | `elapsed` | Total solving time in seconds |
66
+
67
+ ## Async Mode
68
+
69
+ Pass `async: true` to return a `task_id` immediately instead of blocking:
70
+
71
+ ```json
72
+ POST /captcha/token/turnstile
73
+ {
74
+ "website_key": "0x4AAAAAAADnPIDROrmt1Wwj",
75
+ "website_url": "https://react-turnstile.vercel.app",
76
+ "async": true
77
+ }
78
+ ```
79
+
80
+ Then poll `POST /captcha/tasks` with the returned `task_id`:
81
+
82
+ ```json
83
+ POST /captcha/tasks
84
+ {"id": "<task_id>"}
85
+ ```
86
+
87
+ > **Async:** See [async task polling](../_shared/async-tasks.md) for the full polling contract.
88
+
89
+ ## Using the Token
90
+
91
+ Submit the token to the target site as `cf-turnstile-response`:
92
+
93
+ ```python
94
+ import requests
95
+
96
+ token = "0.mNQ2f9uP6mQ0y3H5Q8bqO7iM..."
97
+ response = requests.post(
98
+ "https://react-turnstile.vercel.app",
99
+ data={"cf-turnstile-response": token}
100
+ )
101
+ ```
102
+
103
+ ## Gotchas
104
+
105
+ - Both `website_key` and `website_url` are **required**
106
+ - The token is single-use and valid for ~120s — use within 60s for best results
107
+ - `action` and `cdata` are optional and only required when the target site explicitly uses them
108
+ - You are billed only when a token is successfully solved
109
+ - Synchronous mode blocks until the token is ready (typically 10–30s); use `async: true` for non-blocking operation
110
+
111
+ > **MCP:** See [MCP servers](../_shared/mcp-servers.md) for tool-use integration.
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: veo-video
3
- description: Generate AI videos with Google Veo via AceDataCloud API. Use when creating videos from text descriptions, animating still images into video, upscaling/extending videos, re-shooting with new camera motion, or inserting/removing objects. Supports Veo 2 Fast, Veo 3, and Veo 3.1 models including fast and ingredient variants.
3
+ description: Generate AI videos with Google Veo via AceDataCloud API. Use when creating videos from text descriptions, animating still images into video, blending reference images into video, or upscaling existing videos to 1080p. Supports Veo 3 and Veo 3.1 models including fast and ingredient variants.
4
4
  license: Apache-2.0
5
5
  metadata:
6
6
  author: acedatacloud
@@ -37,7 +37,6 @@ curl -X POST https://api.acedata.cloud/veo/tasks \
37
37
 
38
38
  | Model | Audio | Best For |
39
39
  |-------|-------|----------|
40
- | `veo2-fast` | No | Fast, cost-effective generation (default) |
41
40
  | `veo3` | Yes (native) | Full audiovisual generation |
42
41
  | `veo3-fast` | Yes (native) | Faster audiovisual generation |
43
42
  | `veo31` | Yes (native) | Veo 3.1, highest quality |
@@ -68,7 +67,7 @@ POST /veo/videos
68
67
  "action": "image2video",
69
68
  "prompt": "the scene gently comes to life with wind and subtle motion",
70
69
  "image_urls": ["https://example.com/landscape.jpg"],
71
- "model": "veo2-fast",
70
+ "model": "veo31-fast",
72
71
  "aspect_ratio": "16:9"
73
72
  }
74
73
  ```
@@ -107,105 +106,16 @@ POST /veo/videos
107
106
  | Parameter | Values | Description |
108
107
  |-----------|--------|-------------|
109
108
  | `action` | `"text2video"`, `"image2video"`, `"ingredients2video"`, `"get1080p"` | Generation mode |
110
- | `model` | see Models table | Model to use (default: `veo2-fast`) |
109
+ | `model` | see Models table | Model to use |
111
110
  | `resolution` | `"4k"`, `"1080p"`, `"gif"` | Output resolution (default: 720p) |
112
111
  | `aspect_ratio` | `"16:9"`, `"9:16"` | Aspect ratio — only valid for `image2video` |
113
112
  | `image_urls` | array of strings | Reference image URLs — for `image2video` (up to 2) or `ingredients2video` (up to 3) |
114
113
  | `video_id` | string | Video to upscale — only for `get1080p` |
115
114
  | `translation` | `true` / `false` | Auto-translate prompt to English (default: false) |
116
115
 
117
- ## Post-Generation Endpoints
118
-
119
- After generating a video, use these endpoints to further process it:
120
-
121
- ### Upsample (`POST /veo/upsample`)
122
-
123
- Upscale a generated video to 1080p, 4K, or convert to GIF.
124
-
125
- ```json
126
- POST /veo/upsample
127
- {
128
- "video_id": "your-video-id",
129
- "action": "4k"
130
- }
131
- ```
132
-
133
- | Parameter | Values | Description |
134
- |-----------|--------|-------------|
135
- | `video_id` | string | Task ID from `/veo/videos`, `/veo/extend`, `/veo/reshoot`, or `/veo/objects` |
136
- | `action` | `"1080p"`, `"4k"`, `"gif"` | Upsample target |
137
-
138
- ### Extend (`POST /veo/extend`)
139
-
140
- Continue an existing video — AI auto-generates the next segment.
141
-
142
- ```json
143
- POST /veo/extend
144
- {
145
- "video_id": "your-video-id",
146
- "model": "veo31-fast",
147
- "prompt": "the camera slowly zooms out"
148
- }
149
- ```
150
-
151
- | Parameter | Values | Description |
152
- |-----------|--------|-------------|
153
- | `video_id` | string | Task ID from `/veo/videos` or a prior `/veo/extend` |
154
- | `model` | `"veo31-fast"`, `"veo31"` | Only Veo 3.1 series is supported |
155
- | `prompt` | string | Optional: guides the extended segment |
156
-
157
- ### Reshoot (`POST /veo/reshoot`)
158
-
159
- Re-render a video keeping the same content but applying new camera motion.
160
-
161
- ```json
162
- POST /veo/reshoot
163
- {
164
- "video_id": "your-video-id",
165
- "motion_type": "LEFT_TO_RIGHT"
166
- }
167
- ```
168
-
169
- | Parameter | Values | Description |
170
- |-----------|--------|-------------|
171
- | `video_id` | string | Task ID from `/veo/videos` (cannot use `/veo/extend` output) |
172
- | `motion_type` | see table below | Camera motion to apply |
173
-
174
- **`motion_type` values:**
175
- `STATIONARY`, `STATIONARY_UP`, `STATIONARY_DOWN`, `STATIONARY_LEFT`, `STATIONARY_RIGHT`, `STATIONARY_DOLLY_IN_ZOOM_OUT`, `STATIONARY_DOLLY_OUT_ZOOM_IN`, `UP`, `DOWN`, `LEFT_TO_RIGHT`, `RIGHT_TO_LEFT`, `FORWARD`, `BACKWARD`, `DOLLY_IN_ZOOM_OUT`, `DOLLY_OUT_ZOOM_IN`
176
-
177
- ### Objects (`POST /veo/objects`)
178
-
179
- Insert or remove objects in a video using mask-based inpainting.
180
-
181
- ```json
182
- POST /veo/objects
183
- {
184
- "video_id": "your-video-id",
185
- "action": "insert",
186
- "prompt": "add a flying bird"
187
- }
188
- ```
189
-
190
- ```json
191
- POST /veo/objects
192
- {
193
- "video_id": "your-video-id",
194
- "action": "remove",
195
- "image_mask": "https://example.com/mask.jpg"
196
- }
197
- ```
198
-
199
- | Parameter | Values | Description |
200
- |-----------|--------|-------------|
201
- | `video_id` | string | Task ID (cannot use `/veo/extend` output) |
202
- | `action` | `"insert"`, `"remove"` | Operation type |
203
- | `prompt` | string | Required for `insert`; optional for `remove` |
204
- | `image_mask` | string | URL or base64 JPEG — white pixels = target region. Required for `remove`; optional for `insert` |
205
-
206
116
  ## Gotchas
207
117
 
208
- - Veo 3 and 3.1 models generate **native audio** — `veo2-fast` does NOT support audio
118
+ - Veo 3 and 3.1 models generate **native audio**
209
119
  - The `get1080p` action uses `video_id` (from a prior generation), not a URL
210
120
  - `aspect_ratio` is **only valid** for the `image2video` action
211
121
  - `image_urls` accepts an array — up to 2 images for `image2video`, up to 3 for `ingredients2video`
@@ -214,6 +124,5 @@ POST /veo/objects
214
124
  - `translation: true` auto-translates Chinese or other non-English prompts before sending to Veo
215
125
  - Task polling uses `id` (not `task_id`) in the `/veo/tasks` request body
216
126
  - Task states use `"succeeded"` (not "completed") — check for this value when polling
217
- - `/veo/extend` output **cannot** be used as input for `/veo/reshoot` or `/veo/objects`
218
127
 
219
128
  > **MCP:** `pip install mcp-veo` | Hosted: `https://veo.mcp.acedata.cloud/mcp` | See [all MCP servers](../_shared/mcp-servers.md)
@@ -106,9 +106,10 @@ POST /webextrator/tasks
106
106
  | `wait_for_selector` | No | CSS selector to wait for before ready |
107
107
  | `block_resources` | No | Drop `image`/`font`/`media`/`stylesheet`/`xhr`/`fetch` |
108
108
  | `headers` | No | Extra request headers for the target site |
109
+ | `user_agent` | No | Override the browser User-Agent |
109
110
  | `cookies` | No | Cookies to install before navigation |
110
- | `mode` | No | `sync` (default) or `async` (returns job id) |
111
- | `callback_url` | No | Posted the final envelope when `mode=async` |
111
+ | `async` | No | `true` submits without blocking; poll `/webextrator/tasks` for the result |
112
+ | `callback_url` | No | Posted the final envelope when running asynchronously |
112
113
  | `bypass_cache` | No | Skip the Redis result cache for this request |
113
114
  | `cache_ttl_seconds` | No | Override cache TTL; `0` disables caching |
114
115