@acedatacloud/skills 2026.406.0

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.
@@ -0,0 +1,198 @@
1
+ ---
2
+ name: producer-music
3
+ description: Generate AI music with Producer via AceDataCloud API. Use when creating songs, generating lyrics, extending tracks, creating covers, swapping vocals/instrumentals, replacing song sections, or uploading reference audio. Supports custom lyrics, instrumental-only mode, and multiple creative actions.
4
+ license: Apache-2.0
5
+ metadata:
6
+ author: acedatacloud
7
+ version: "1.0"
8
+ compatibility: Requires ACEDATACLOUD_API_TOKEN environment variable.
9
+ ---
10
+
11
+ # Producer Music Generation
12
+
13
+ Generate AI music through AceDataCloud's Producer 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/producer/audios \
21
+ -H "Authorization: Bearer $ACEDATACLOUD_API_TOKEN" \
22
+ -H "Content-Type: application/json" \
23
+ -d '{"action": "generate", "prompt": "upbeat electronic dance track with synth leads"}'
24
+ ```
25
+
26
+ > **Async:** All generation is async. See [async task polling](../_shared/async-tasks.md). Poll via `POST /producer/tasks` with `{"id": "..."}` every 3-5 seconds.
27
+
28
+ ## Models
29
+
30
+ | Model | Notes |
31
+ |-------|-------|
32
+ | `FUZZ-2.0 Pro` | Default, highest quality |
33
+ | `FUZZ-2.0` | Standard quality |
34
+ | `FUZZ-2.0 Raw` | Raw output variant |
35
+ | `FUZZ-1.1 Pro` | Pro v1.1 |
36
+ | `FUZZ-1.0 Pro` | Pro v1.0 |
37
+ | `FUZZ-1.0` | v1.0 |
38
+ | `FUZZ-1.1` | v1.1 |
39
+ | `FUZZ-0.8` | Legacy |
40
+
41
+ ## Actions
42
+
43
+ | Action | Description |
44
+ |--------|-------------|
45
+ | `generate` | Create a new song from prompt or custom lyrics |
46
+ | `cover` | Create a cover version of an existing song |
47
+ | `extend` | Continue a song from a specific timestamp |
48
+ | `replace_section` | Replace a time range in an existing song |
49
+ | `swap_vocals` | Extract and swap vocal tracks |
50
+ | `swap_instrumentals` | Extract and swap instrumental tracks |
51
+ | `variation` | Generate a variation of an existing song |
52
+ | `stems` | Separate a song into stems |
53
+
54
+ ## Workflows
55
+
56
+ ### 1. Generate from Prompt
57
+
58
+ ```json
59
+ POST /producer/audios
60
+ {
61
+ "action": "generate",
62
+ "prompt": "chill lo-fi hip hop with rain sounds and soft piano"
63
+ }
64
+ ```
65
+
66
+ ### 2. Custom Lyrics Mode
67
+
68
+ ```json
69
+ POST /producer/audios
70
+ {
71
+ "action": "generate",
72
+ "custom": true,
73
+ "title": "Midnight City",
74
+ "lyric": "[Verse]\nNeon lights reflect on wet streets\n[Chorus]\nMidnight city never sleeps",
75
+ "instrumental": false
76
+ }
77
+ ```
78
+
79
+ ### 3. Instrumental Only
80
+
81
+ ```json
82
+ POST /producer/audios
83
+ {
84
+ "action": "generate",
85
+ "prompt": "epic orchestral soundtrack for a movie trailer",
86
+ "instrumental": true
87
+ }
88
+ ```
89
+
90
+ ### 4. Extend Song
91
+
92
+ ```json
93
+ POST /producer/audios
94
+ {
95
+ "action": "extend",
96
+ "audio_id": "existing-audio-id",
97
+ "continue_at": 30
98
+ }
99
+ ```
100
+
101
+ ### 5. Replace Section
102
+
103
+ ```json
104
+ POST /producer/audios
105
+ {
106
+ "action": "replace_section",
107
+ "audio_id": "existing-audio-id",
108
+ "replace_section_start": 15,
109
+ "replace_section_end": 30
110
+ }
111
+ ```
112
+
113
+ ### 6. Separate into Stems
114
+
115
+ ```json
116
+ POST /producer/audios
117
+ {
118
+ "action": "stems",
119
+ "audio_id": "existing-audio-id"
120
+ }
121
+ ```
122
+
123
+ ### 7. Generate Lyrics
124
+
125
+ ```json
126
+ POST /producer/lyrics
127
+ {
128
+ "prompt": "a love song about stargazing on a summer night"
129
+ }
130
+ ```
131
+
132
+ ### 8. Get WAV / Video
133
+
134
+ ```json
135
+ POST /producer/wav
136
+ {"audio_id": "your-audio-id"}
137
+
138
+ POST /producer/videos
139
+ {"audio_id": "your-audio-id"}
140
+ ```
141
+
142
+ ### 9. Upload Reference Audio
143
+
144
+ ```json
145
+ POST /producer/upload
146
+ {
147
+ "audio_url": "https://example.com/reference.mp3"
148
+ }
149
+ ```
150
+
151
+ ## Parameters
152
+
153
+ | Parameter | Type | Description |
154
+ |-----------|------|-------------|
155
+ | `action` | string | See actions table |
156
+ | `prompt` | string | Song description (for non-custom mode) |
157
+ | `model` | string | Model (e.g., `"FUZZ-2.0 Pro"`) |
158
+ | `custom` | boolean | Enable custom lyrics mode |
159
+ | `instrumental` | boolean | Pure instrumental (no vocals) |
160
+ | `title` | string | Song title |
161
+ | `lyric` | string | Custom lyrics with `[Verse]`, `[Chorus]` tags |
162
+ | `audio_id` | string | Existing audio ID (for edit actions) |
163
+ | `continue_at` | number | Seconds — where to extend from |
164
+ | `replace_section_start` | number | Start time of section to replace |
165
+ | `replace_section_end` | number | End time of section to replace |
166
+ | `lyrics_strength` | 0-1 | Lyrics adherence (default: 0.7) |
167
+ | `sound_strength` | 0.2-1 | Sound quality weight (default: 0.7) |
168
+ | `weirdness` | 0-1 | Creative randomness (default: 0.5) |
169
+ | `seed` | string | Seed for reproducibility |
170
+
171
+ ## Response Structure
172
+
173
+ ```json
174
+ {
175
+ "data": [
176
+ {
177
+ "id": "audio-id",
178
+ "audio_url": "https://cdn.example.com/song.mp3",
179
+ "video_url": "https://cdn.example.com/video.mp4",
180
+ "image_url": "https://cdn.example.com/cover.jpg",
181
+ "title": "Song Title",
182
+ "lyric": "full lyrics...",
183
+ "style": "electronic, dance",
184
+ "model": "FUZZ-2.0 Pro"
185
+ }
186
+ ]
187
+ }
188
+ ```
189
+
190
+ ## Gotchas
191
+
192
+ - Use `[Verse]`, `[Chorus]`, `[Bridge]`, `[Outro]` tags in custom lyrics
193
+ - `continue_at` is in **seconds** — the song extends from that point
194
+ - `replace_section_start` / `replace_section_end` define the time range to regenerate
195
+ - `weirdness` at 0 = predictable, at 1 = highly experimental
196
+ - Upload a reference audio via `/producer/upload` to get an audio ID for use with `cover` or `extend`
197
+ - WAV and video downloads are separate endpoints — call them after the main generation completes
198
+ - **CRITICAL:** Check the `state` field in task responses — only `state: "complete"` with `success: true` means done. During `pending`, the API may return intermediate `audio_url` values (streaming previews). Do NOT stop polling just because `audio_url` is non-empty
@@ -0,0 +1,148 @@
1
+ ---
2
+ name: seedance-video
3
+ description: Generate AI dance and motion videos with Seedance (ByteDance) via AceDataCloud API. Use when creating videos from text prompts or animating images into motion videos. Supports multiple models with configurable resolution, aspect ratio, duration, and optional audio generation.
4
+ license: Apache-2.0
5
+ metadata:
6
+ author: acedatacloud
7
+ version: "1.0"
8
+ compatibility: Requires ACEDATACLOUD_API_TOKEN environment variable. Optionally pair with mcp-seedance for tool-use.
9
+ ---
10
+
11
+ # Seedance Video Generation
12
+
13
+ Generate AI dance and motion videos through AceDataCloud's Seedance (ByteDance) 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/seedance/videos \
21
+ -H "Authorization: Bearer $ACEDATACLOUD_API_TOKEN" \
22
+ -H "Content-Type: application/json" \
23
+ -d '{"model": "doubao-seedance-1-0-pro-250528", "content": [{"type": "text", "text": "a dancer performing contemporary ballet in a misty forest"}], "callback_url": "https://api.acedata.cloud/health"}'
24
+ ```
25
+
26
+ > **Async:** See [async task polling](../_shared/async-tasks.md). Poll via `POST /seedance/tasks` with `{"task_id": "..."}`.
27
+ This returns a task ID immediately. Poll for the result:
28
+
29
+ ```bash
30
+ curl -X POST https://api.acedata.cloud/seedance/tasks \
31
+ -H "Authorization: Bearer $ACEDATACLOUD_API_TOKEN" \
32
+ -H "Content-Type: application/json" \
33
+ -d '{"task_id": "<task_id from above>"}'
34
+ ```
35
+
36
+ ## Models
37
+
38
+ | Model | Type | Best For |
39
+ |-------|------|----------|
40
+ | `doubao-seedance-1-0-pro-250528` | Text+Image-to-Video | General-purpose, reliable quality |
41
+ | `doubao-seedance-1-0-pro-fast-251015` | Text+Image-to-Video | Faster Pro generation |
42
+ | `doubao-seedance-1-5-pro-251215` | Text+Image-to-Video | Latest model, highest quality, audio support |
43
+ | `doubao-seedance-1-0-lite-t2v-250428` | Text-to-Video only | Lightweight text-to-video |
44
+ | `doubao-seedance-1-0-lite-i2v-250428` | Image-to-Video only | Lightweight image-to-video |
45
+
46
+ ## Workflows
47
+
48
+ ### 1. Text-to-Video
49
+
50
+ Pass a text content item in the `content` array.
51
+
52
+ ```json
53
+ POST /seedance/videos
54
+ {
55
+ "model": "doubao-seedance-1-0-pro-250528",
56
+ "content": [
57
+ {"type": "text", "text": "a street dancer doing breakdancing moves in an urban setting"}
58
+ ],
59
+ "resolution": "1080p",
60
+ "ratio": "16:9",
61
+ "duration": 5
62
+ }
63
+ ```
64
+
65
+ ### 2. Image-to-Video
66
+
67
+ Include an image content item (with an optional `role`) alongside the text.
68
+
69
+ ```json
70
+ POST /seedance/videos
71
+ {
72
+ "model": "doubao-seedance-1-5-pro-251215",
73
+ "content": [
74
+ {"type": "text", "text": "the person starts dancing gracefully"},
75
+ {
76
+ "type": "image_url",
77
+ "role": "first_frame",
78
+ "image_url": {"url": "https://example.com/dancer.jpg"}
79
+ }
80
+ ],
81
+ "resolution": "720p",
82
+ "duration": 5
83
+ }
84
+ ```
85
+
86
+ Image roles:
87
+ - `first_frame` — image is used as the opening frame
88
+ - `last_frame` — image is used as the closing frame
89
+ - `reference_image` — image is used as a style/content reference
90
+
91
+ ### 3. First-frame + Last-frame
92
+
93
+ Provide both a start and end frame image:
94
+
95
+ ```json
96
+ POST /seedance/videos
97
+ {
98
+ "model": "doubao-seedance-1-0-pro-250528",
99
+ "content": [
100
+ {"type": "text", "text": "smooth transition between two scenes"},
101
+ {"type": "image_url", "role": "first_frame", "image_url": {"url": "https://example.com/start.jpg"}},
102
+ {"type": "image_url", "role": "last_frame", "image_url": {"url": "https://example.com/end.jpg"}}
103
+ ]
104
+ }
105
+ ```
106
+
107
+ ## Parameters
108
+
109
+ | Parameter | Values | Description |
110
+ |-----------|--------|-------------|
111
+ | `model` | see Models table | Model to use (required) |
112
+ | `content` | array | Input items: text and/or image_url objects (required) |
113
+ | `resolution` | `"480p"`, `"720p"`, `"1080p"` | Output resolution (default: 720p for pro, 480p for lite) |
114
+ | `ratio` | `"16:9"`, `"4:3"`, `"1:1"`, `"3:4"`, `"9:16"`, `"21:9"`, `"adaptive"` | Aspect ratio (default: 16:9) |
115
+ | `duration` | `2` – `12` | Duration in seconds |
116
+ | `frames` | 29–289 (must satisfy 25+4n) | Frame count — mutually exclusive with `duration` |
117
+ | `seed` | -1 to 4294967295 | Seed for reproducible results (-1 = random) |
118
+ | `generate_audio` | `true` / `false` | Generate audio (only supported by `doubao-seedance-1-5-pro-251215`) |
119
+ | `camerafixed` | `true` / `false` | Fix the camera position during generation |
120
+ | `watermark` | `true` / `false` | Add a watermark to the generated video |
121
+ | `return_last_frame` | `true` / `false` | Return the last frame of the generated video |
122
+ | `service_tier` | `"default"`, `"flex"` | Processing tier (default: default) |
123
+ | `execution_expires_after` | number | Task timeout threshold in seconds |
124
+
125
+ ## Inline Parameter Syntax
126
+
127
+ You can also embed generation parameters directly in the text prompt using the `--param value` syntax:
128
+
129
+ ```
130
+ A kitten yawning at the camera. --rs 720p --rt 16:9 --dur 5 --fps 24 --seed 42
131
+ ```
132
+
133
+ Supported inline params: `--rs` (resolution), `--rt` (ratio), `--dur` (duration), `--frames`, `--fps` (24 only), `--seed`, `--cf` (camera_fixed), `--wm` (watermark).
134
+
135
+ ## Gotchas
136
+
137
+ - Model names use the `doubao-*` convention (e.g. `doubao-seedance-1-0-pro-250528`) — old short names like `seedance-1.0` are not valid
138
+ - The `content` array replaces the old `prompt` + `image_url` fields; always use `content`
139
+ - Image and text scenarios are mutually exclusive per content item — each item has either `text` or `image_url`, not both
140
+ - `first_frame`, `last_frame`, and `reference_image` roles are mutually exclusive scenarios — pick one pattern per request
141
+ - `generate_audio: true` is only supported by `doubao-seedance-1-5-pro-251215`; other models ignore this field
142
+ - Lite models are split: `*-lite-t2v-*` only accepts text, `*-lite-i2v-*` only accepts image-to-video
143
+ - Resolution options are `480p`, `720p`, `1080p` — there is no 360p or 540p
144
+ - `service_tier` values are `"default"` and `"flex"` (not "standard"/"premium")
145
+ - Duration range is **2–12 seconds** — values outside this range will fail
146
+ - Task states use `"succeeded"` (not "completed") — check for this value when polling
147
+
148
+ > **MCP:** `pip install mcp-seedance` | Hosted: `https://seedance.mcp.acedata.cloud/mcp` | See [all MCP servers](../_shared/mcp-servers.md)
@@ -0,0 +1,120 @@
1
+ ---
2
+ name: seedream-image
3
+ description: Generate and edit AI images with Seedream (ByteDance) via AceDataCloud API. Use when creating images from text prompts, editing existing images, or working with high-resolution outputs. Supports Seedream 3.0 T2I, 4.0, 4.5, 5.0, and SeedEdit 3.0 models.
4
+ license: Apache-2.0
5
+ metadata:
6
+ author: acedatacloud
7
+ version: "1.0"
8
+ compatibility: Requires ACEDATACLOUD_API_TOKEN environment variable. Optionally pair with mcp-seedream for tool-use.
9
+ ---
10
+
11
+ # Seedream Image Generation
12
+
13
+ Generate and edit AI images through AceDataCloud's Seedream (ByteDance) 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/seedream/images \
21
+ -H "Authorization: Bearer $ACEDATACLOUD_API_TOKEN" \
22
+ -H "Content-Type: application/json" \
23
+ -d '{"prompt": "a cyberpunk cat wearing VR goggles in a neon city", "model": "doubao-seedream-5-0-260128"}'
24
+ ```
25
+
26
+ > **Async:** See [async task polling](../_shared/async-tasks.md). Poll via `POST /seedream/tasks` with `{"id": "..."}`.
27
+ ## Models
28
+
29
+ | Model | Version | Best For |
30
+ |-------|---------|----------|
31
+ | `doubao-seedream-5-0-260128` | Seedream 5.0 | Latest, highest quality (default) |
32
+ | `doubao-seedream-4-5-251128` | Seedream 4.5 | High quality, balanced |
33
+ | `doubao-seedream-4-0-250828` | Seedream 4.0 | Reliable generation |
34
+ | `doubao-seedream-3-0-t2i-250415` | Seedream 3.0 T2I | Text-to-image, precise prompt following |
35
+ | `doubao-seededit-3-0-i2i-250628` | SeedEdit 3.0 | Image-to-image editing |
36
+
37
+ ## Workflows
38
+
39
+ ### 1. Text-to-Image
40
+
41
+ ```json
42
+ POST /seedream/images
43
+ {
44
+ "prompt": "a serene Japanese garden with cherry blossoms and a red bridge",
45
+ "model": "doubao-seedream-5-0-260128",
46
+ "size": "1K"
47
+ }
48
+ ```
49
+
50
+ ### 2. Image Editing (Image-to-Image)
51
+
52
+ Edit an existing image by providing the source image URL(s) and a descriptive prompt. Use the `doubao-seededit-3-0-i2i-250628` model for best editing results.
53
+
54
+ ```json
55
+ POST /seedream/images
56
+ {
57
+ "prompt": "change the sky to a golden sunset",
58
+ "model": "doubao-seededit-3-0-i2i-250628",
59
+ "image": ["https://example.com/photo.jpg"]
60
+ }
61
+ ```
62
+
63
+ ### 3. Async Generation with Task Polling
64
+
65
+ Pass a `callback_url` to receive results asynchronously via webhook, or poll `/seedream/tasks` for the result:
66
+
67
+ ```json
68
+ POST /seedream/images
69
+ {
70
+ "prompt": "an epic fantasy landscape",
71
+ "model": "doubao-seedream-5-0-260128",
72
+ "callback_url": "https://api.acedata.cloud/health"
73
+ }
74
+ ```
75
+
76
+ Poll the returned `task_id`:
77
+
78
+ ```json
79
+ POST /seedream/tasks
80
+ {"id": "<task_id>"}
81
+ ```
82
+
83
+ ## Parameters
84
+
85
+ ### Generation
86
+
87
+ | Parameter | Values | Description |
88
+ |-----------|--------|-------------|
89
+ | `model` | see Models table | Model to use (required) |
90
+ | `prompt` | string | Image description (required) |
91
+ | `size` | `"1K"`, `"2K"`, `"3K"`, `"4K"`, `"adaptive"` | Output resolution (e.g. `1K`=1024px, `2K`=2048px); `3K` only for Seedream 5.0 |
92
+ | `seed` | integer [-1, 2147483647] | Seed for reproducibility (Seedream 3.0 T2I / SeedEdit 3.0 only) |
93
+ | `guidance_scale` | number [1, 10] | Prompt adherence strength (3.0 models only; T2I default 2.5, edit default 5.5) |
94
+ | `sequential_image_generation` | `"auto"`, `"disabled"` | Generate related images in sequence (5.0, 4.5, 4.0 only) |
95
+ | `stream` | boolean | Stream images as they're generated (5.0, 4.5, 4.0 only) |
96
+ | `watermark` | boolean | Add AI-generated watermark (default: true) |
97
+ | `output_format` | `"jpeg"`, `"png"` | Output file format (Seedream 5.0 only; default: jpeg) |
98
+ | `response_format` | `"url"`, `"b64_json"` | Response format (default: url) |
99
+ | `tools` | array | Enable tools, e.g. `[{"type": "web_search"}]` (Seedream 5.0 only) |
100
+ | `callback_url` | string | Webhook URL for async delivery; returns `task_id` immediately |
101
+
102
+ ### Editing
103
+
104
+ | Parameter | Required | Description |
105
+ |-----------|----------|-------------|
106
+ | `image` | Yes (for editing) | Array of image URLs or base64 strings (max 10MB each) |
107
+ | `prompt` | Yes | Describe the desired edit |
108
+
109
+ ## Gotchas
110
+
111
+ - Model names now use the `doubao-*` naming convention (e.g. `doubao-seedream-5-0-260128`)
112
+ - Image editing uses the same `/seedream/images` endpoint with the `image` array parameter (no separate edit endpoint)
113
+ - `size` replaces separate `width`/`height` params; use `"1K"` for 1024×1024, `"2K"` for 2048×2048, etc.
114
+ - `3K` size is only supported by Seedream 5.0; `adaptive` selects the best aspect ratio automatically
115
+ - `seed` only works with `doubao-seedream-3-0-t2i-250415` and `doubao-seededit-3-0-i2i-250628`
116
+ - `guidance_scale` is only available for the 3.0-series models
117
+ - `stream` and `sequential_image_generation` are only available for Seedream 5.0, 4.5, and 4.0
118
+ - Pass `callback_url` to get a `task_id` immediately and avoid blocking; poll `/seedream/tasks` for the result — use `"https://api.acedata.cloud/health"` as a placeholder to force async mode without a real webhook
119
+
120
+ > **MCP:** `pip install mcp-seedream` | Hosted: `https://seedream.mcp.acedata.cloud/mcp` | See [all MCP servers](../_shared/mcp-servers.md)
@@ -0,0 +1,60 @@
1
+ ---
2
+ name: short-url
3
+ description: Create short URLs via AceDataCloud API. Use when generating shortened links for sharing, or batch-creating multiple short URLs at once. Supports custom slugs and expiration.
4
+ license: Apache-2.0
5
+ metadata:
6
+ author: acedatacloud
7
+ version: "1.0"
8
+ compatibility: Requires ACEDATACLOUD_API_TOKEN environment variable. Optionally pair with mcp-short-url for tool-use.
9
+ ---
10
+
11
+ # Short URL Service
12
+
13
+ Create short URLs through AceDataCloud's URL shortening 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/shorturl \
21
+ -H "Authorization: Bearer $ACEDATACLOUD_API_TOKEN" \
22
+ -H "Content-Type: application/json" \
23
+ -d '{"content": "https://example.com/very-long-url-path?with=params"}'
24
+ ```
25
+
26
+ ## Workflows
27
+
28
+ ### 1. Create a Short URL
29
+
30
+ ```json
31
+ POST /shorturl
32
+ {
33
+ "content": "https://example.com/article/2024/awesome-content"
34
+ }
35
+ ```
36
+
37
+ Response:
38
+
39
+ ```json
40
+ {
41
+ "data": {
42
+ "url": "https://suro.id/abc123"
43
+ },
44
+ "success": true
45
+ }
46
+ ```
47
+
48
+ ## Parameters
49
+
50
+ | Parameter | Required | Description |
51
+ |-----------|----------|-------------|
52
+ | `content` | Yes | The original long URL to shorten |
53
+
54
+ ## Gotchas
55
+
56
+ - Short URLs use the `suro.id` domain
57
+ - Results are returned synchronously — no task polling needed
58
+ - The `content` field must be a valid URL to shorten
59
+
60
+ > **MCP:** `pip install mcp-shorturl` | Hosted: `https://short-url.mcp.acedata.cloud/mcp` | See [all MCP servers](../_shared/mcp-servers.md)
@@ -0,0 +1,97 @@
1
+ ---
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.
4
+ license: Apache-2.0
5
+ metadata:
6
+ author: acedatacloud
7
+ version: "1.0"
8
+ compatibility: Requires ACEDATACLOUD_API_TOKEN environment variable. Optionally pair with mcp-sora for tool-use.
9
+ ---
10
+
11
+ # Sora Video Generation
12
+
13
+ Generate AI videos through AceDataCloud's OpenAI Sora 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/sora/videos \
21
+ -H "Authorization: Bearer $ACEDATACLOUD_API_TOKEN" \
22
+ -H "Content-Type: application/json" \
23
+ -d '{"prompt": "a golden retriever running on a beach at sunset", "model": "sora-2", "callback_url": "https://api.acedata.cloud/health"}'
24
+ ```
25
+
26
+ > **Async:** See [async task polling](../_shared/async-tasks.md). Poll via `POST /sora/tasks` with `{"task_id": "..."}`.
27
+
28
+ ## Models
29
+
30
+ | Model | Duration | Quality | Best For |
31
+ |-------|----------|---------|----------|
32
+ | `sora-2` | 10–15s | Standard | Most tasks (default) |
33
+ | `sora-2-pro` | 10–25s | Higher | Premium quality, longer videos |
34
+
35
+ ## Workflows
36
+
37
+ ### 1. Text-to-Video
38
+
39
+ ```json
40
+ POST /sora/videos
41
+ {
42
+ "prompt": "a busy Tokyo street at night with neon signs reflecting in rain puddles",
43
+ "model": "sora-2",
44
+ "size": "small",
45
+ "duration": 10,
46
+ "orientation": "landscape"
47
+ }
48
+ ```
49
+
50
+ ### 2. Image-to-Video
51
+
52
+ Use reference images to guide generation.
53
+
54
+ ```json
55
+ POST /sora/videos
56
+ {
57
+ "prompt": "the scene gradually comes alive with gentle motion",
58
+ "image_urls": ["https://example.com/scene.jpg"],
59
+ "model": "sora-2",
60
+ "orientation": "landscape"
61
+ }
62
+ ```
63
+
64
+ ### 3. Character-Driven Video
65
+
66
+ Extract a character from an existing video and use them in a new scene.
67
+
68
+ ```json
69
+ POST /sora/videos
70
+ {
71
+ "prompt": "the character walks through a futuristic city",
72
+ "character_url": "https://example.com/source-video.mp4",
73
+ "character_start": 2.0,
74
+ "character_end": 5.0,
75
+ "model": "sora-2-pro"
76
+ }
77
+ ```
78
+
79
+ ## Parameters
80
+
81
+ | Parameter | Values | Description |
82
+ |-----------|--------|-------------|
83
+ | `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 |
88
+
89
+ ## Gotchas
90
+
91
+ - Duration of **25 seconds** is only available with `sora-2-pro` model
92
+ - `size: "large"` produces higher resolution but costs more and takes longer
93
+ - Character-driven generation requires `character_start` and `character_end` timestamps (in seconds) from the source video
94
+ - `orientation` sets the aspect ratio — use `"portrait"` for mobile-first content
95
+ - Task states use `"succeeded"` (not "completed") — check for this value when polling
96
+
97
+ > **MCP:** `pip install mcp-sora` | Hosted: `https://sora.mcp.acedata.cloud/mcp` | See [all MCP servers](../_shared/mcp-servers.md)