Video to Video (Music)
Generate a music-scored version of a video, muxed with the original picture and delivered as a new video file. Returns 202 Accepted with a task_id; poll GET /v1/tasks/:task_id until the task reaches a terminal status.
POST
/v1/video-to-video-musicmultipart/form-dataAPI URL
https://api.sonilo.com/v1/video-to-video-musicSend API requests to https://api.sonilo.com. The platform.sonilo.com/docs pages are documentation only and are not API endpoints.
curl -X POST https://api.sonilo.com/v1/video-to-video-music \
-H "Authorization: Bearer sk_your_api_key" \
-F "video_url=https://example.com/clip.mp4" \
-F "prompt=uplifting orchestral score"
# => {"task_id": "9f5f2f7e-...", "status": "processing"}
curl https://api.sonilo.com/v1/tasks/9f5f2f7e-... \
-H "Authorization: Bearer sk_your_api_key"
# poll until "status" is "succeeded" or "failed"curl -X POST https://api.sonilo.com/v1/video-to-video-music \
-H "Authorization: Bearer sk_your_api_key" \
-F "video_url=https://example.com/clip.mp4" \
-F "preserve_speech=true"{
"task_id": "9f5f2f7e-…",
"status": "processing"
}Authorization
Authenticate via Bearer token. Generate keys at the API Keys page and pass them in the Authorization header on every request. Keep keys server-side, for example in SONILO_API_KEY.
Authorization: Bearer sk_your_api_keyStore the key server-side, commonly as SONILO_API_KEY. A 401 means the key is missing, invalid, or revoked. A 403 means the key is valid but the account does not have access to that endpoint or workspace.
Body Parameters
videofileVideo file upload. Provide either
video or video_url, not both. Accepted formats: mp4, mov, webm, m4v, gif (animated). Max file size: default 300MB.video_urlstringURL to a video file. Provide either
video or video_url, not both. Must be a public http:// or https:// URL; private/internal addresses are rejected.promptstringOptional text prompt describing the music to generate, up to 2000 characters. For best results, omit this and let the model infer a soundtrack from the on-screen action and visuals.
preserve_speechbooleanOptional boolean, default
false. When true, the original speech (dialogue, narration, or voice-over) is preserved in the generated video — the model isolates the speech from the source audio and composes the new soundtrack around it. When false (default), the original audio is fully replaced by the generated soundtrack. No additional charge.Response
task_idstringThe task identifier. Poll the Get Task endpoint (GET /v1/tasks/:task_id) until the task reaches a terminal status.
statusstringAlways processing on submission — generation runs asynchronously.
curl -X POST https://api.sonilo.com/v1/video-to-video-music \
-H "Authorization: Bearer sk_your_api_key" \
-F "video_url=https://example.com/clip.mp4" \
-F "prompt=uplifting orchestral score"
# => {"task_id": "9f5f2f7e-...", "status": "processing"}
curl https://api.sonilo.com/v1/tasks/9f5f2f7e-... \
-H "Authorization: Bearer sk_your_api_key"
# poll until "status" is "succeeded" or "failed"curl -X POST https://api.sonilo.com/v1/video-to-video-music \
-H "Authorization: Bearer sk_your_api_key" \
-F "video_url=https://example.com/clip.mp4" \
-F "preserve_speech=true"{
"task_id": "9f5f2f7e-…",
"status": "processing"
}