EchoWave API & MCP

Everything you can do in the EchoWave editor is available to software and AI agents: start a project, add video/audio/images, overlay text, auto-generate and translate subtitles, add an AI voice-over, then render and download an MP4.

Endpoints

Authentication

Three options, in order of preference:

  1. OAuth 2.1 + PKCE (for agents acting for a user). Discover the endpoints at /.well-known/oauth-authorization-server. Authorize at /api/auth/oauth2/authorize, exchange the code at /api/auth/oauth2/token, then send Authorization: Bearer <token>.
  2. API key (server-to-server). Create one in account settings and send X-API-Key: <key>.
  3. Firebase ID token as a bearer token, for first-party clients.

Scopes: api:read, api:write.

MCP server

Point any MCP client at https://echowave.io/mcp. The server advertises its OAuth requirements via WWW-Authenticate (→ protected-resource metadata), or you can pass an API key. Tools mirror the REST surface: create_project, add_segment, generate_speech, transcribe_subtitles, translate_subtitles, queue_render, get_render, run_tool and more — see the server card.

Agent skills (end-to-end workflows)

Add text to a video

create_projectimport_media (the video) → add_segment type=video → add_segment type=text → queue_render → poll get_render.

Auto-caption a video

create_projectimport_mediatranscribe_subtitles → optionally translate_subtitlesadd_segment type=subtitles → queue_render.

Add an AI voice-over

list_voicesgenerate_speech (returns an uploadId) → add_segment type=audio → queue_render.

Turn audio into video

create_projectimport_media (audio) → add_segment type=audio + type=wave (visualizer) → queue_render.

Convert / trim / compress media

run_tool with a tool name (convert, trim, compress, rotate, …) and a source URL → poll get_renderget_render_download.

Example — create and render

# 1) Create a project
curl -X POST https://echowave.io/api/v1/projects \
  -H "X-API-Key: $ECHOWAVE_API_KEY" -H "Content-Type: application/json" \
  -d '{"title":"My video","size":{"ratio":"9:16"}}'

# 2) Import a clip
curl -X POST https://echowave.io/api/v1/media \
  -H "X-API-Key: $ECHOWAVE_API_KEY" -H "Content-Type: application/json" \
  -d '{"url":"https://example.com/clip.mp4","type":"video","projectId":"<id>"}'

# 3) Queue a render, then poll
curl -X POST https://echowave.io/api/v1/renders \
  -H "X-API-Key: $ECHOWAVE_API_KEY" -H "Content-Type: application/json" \
  -d '{"projectId":"<id>"}'
curl https://echowave.io/api/v1/renders/<renderId> -H "X-API-Key: $ECHOWAVE_API_KEY"

Full machine-readable contract: openapi.json.