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