Maestro Article to Video API
Maestro automatically creates a vertical short video with subtitles from an article or a topic: using Claude to write the storyboard script, Seedance to generate dynamic visuals, Seedream to generate still frames, Fish TTS for voiceover, Suno for background music, and then using FFmpeg to add Ken Burns effects, burn subtitles, and transitions, finally rendering the video and uploading it to the CDN.
This is an asynchronous task interface: it returns task_id immediately after submission, and then you can poll POST /maestro/tasks for results (polling is free), or provide a callback_url for a callback when completed.
¶ Authentication
All requests must include the API Token in the Header:
authorization: Bearer {token}
You can obtain the Token by registering and creating an application at https://platform.acedata.cloud.
¶ Submit Task
POST https://api.acedata.cloud/maestro/videos
curl -X POST https://api.acedata.cloud/maestro/videos \
-H "authorization: Bearer {token}" \
-H "content-type: application/json" \
-d '{
"source_type": "Topic",
"source_ref": "Understand Vector Databases in Three Minutes",
"lang": "zh-cn",
"aspect": "9:16",
"duration": 30,
"music": true
}'
Response:
{ "success": true, "task_id": "0c1f…", "trace_id": "…" }
¶ Request Parameters
| Field | Type | Description |
|---|---|---|
source_type |
string | Topic (topic/summary, placed in source_ref) or Article (full text, placed in source_ref) |
source_ref |
string | Topic or article text |
lang |
string | Main language, e.g., zh-cn / en / ja, default is zh-cn |
extra_langs |
string[] | Additional language versions (reuse visuals, only add voiceover + rendering), each additional one +6 points |
aspect |
string | 9:16 (default) / 16:9 / 1:1 |
duration |
int | Target duration (seconds, soft constraint), default 30. ≤30 and >30 are two billing tiers |
engine |
string | ffmpeg (default, fast track) / remotion |
transition |
number | Scene transition duration (seconds), default 0.4 |
music |
bool | Whether to add Suno background music, default true |
callback_url |
string | Optional. Callback this address when the task reaches its final state (success/failure) |
async |
bool | Whether to return task_id asynchronously (recommended true) |
¶ Get Results
POST https://api.acedata.cloud/maestro/tasks
curl -X POST https://api.acedata.cloud/maestro/tasks \
-H "authorization: Bearer {token}" \
-H "content-type: application/json" \
-d '{ "id": "0c1f…" }'
When the task is completed, it returns:
{
"id": "0c1f…",
"status": "succeeded",
"response": {
"success": true,
"data": {
"variants": [
{
"lang": "zh-cn",
"output_url": "https://…/x.mp4",
"captions_url": "https://…/x.srt",
"duration": 31.2
}
],
"storyboard": { "title": "…", "scenes": [ … ] }
}
}
}
status values: pending → scripting → generating → rendering → captioning → qc → succeeded (or failed). Polling is free and does not consume points.
¶ Billing
Billing is based on the completed video (pre-deducted according to duration tier at submission):
| Tier | Price |
|---|---|
| ≤30s | 18 points |
| >30s (≤60s) | 32 points |
| Each additional language | +6 points |
/maestro/tasks polling |
Free |
