Sonilo Video To Music
Playground
Try it on WavespeedAI!Sonilo Video-to-Music is a fast AI music generation model that creates background music synced to an input video’s mood, pacing, and scene transitions. Ready-to-use REST inference API for video soundtracks, social media content, advertising creatives, cinematic clips, product videos, creator workflows, and professional video-to-music generation with simple integration, no coldstarts, and affordable pricing.
Features
Sonilo Video-to-Music
Sonilo Video-to-Music generates music from a video input, with an optional style prompt to guide the soundtrack. It is designed for turning visual content into matching background music for short films, ads, social content, trailers, highlight clips, and other video-driven audio workflows.
Why Choose This?
-
Video-driven music generation
Generate music that fits the pacing and feel of an uploaded video. -
Optional style guidance
Add apromptto steer the mood, genre, instrumentation, or production style of the generated music. -
Simple workflow
Upload one video, optionally add a style prompt, and generate a matching music track. -
Supports longer inputs
Works with videos up to360seconds. -
Production-ready API
Suitable for trailers, branded content, social videos, cinematic edits, and background scoring workflows.
Parameters
| Parameter | Required | Description |
|---|---|---|
| video | Yes | Input video URL. Maximum supported video length is 360 seconds. |
| prompt | No | Optional style prompt for the generated music. |
How to Use
- Upload your video — provide the source video you want to score with music.
- Add a style prompt (optional) — describe the mood, genre, instrumentation, or production feel you want.
- Submit — run the model and download the generated music.
Example Prompt
Cinematic emotional orchestral score with soft piano, warm strings, slow build, inspiring and modern trailer mood
Pricing
Pricing is based on the uploaded video duration.
Billing Rules
- Pricing is $0.009 per billed second
- Billing is based on the uploaded video duration
- Billed duration is rounded up to the next whole second
- Minimum billed duration is 1 second
- Maximum billed duration is 360 seconds
promptdoes not affect pricing
Example Costs
| Video Duration | Cost |
|---|---|
| 1s | $0.009 |
| 5s | $0.045 |
| 10s | $0.090 |
| 30s | $0.270 |
| 60s | $0.540 |
| 120s | $1.080 |
| 360s | $3.240 |
Best Use Cases
- Social media videos — Generate music beds for short-form clips.
- Ads and promos — Create matching soundtrack material for branded content.
- Trailers and highlights — Add cinematic or energetic music to visual edits.
- Creator workflows — Quickly generate background music for uploaded video content.
- Prototype scoring — Explore soundtrack directions before final post-production.
Pro Tips
- Use a style prompt when you want stronger control over genre, mood, or instrumentation.
- Keep the prompt focused and specific for more predictable results.
- Shorter videos are useful for quickly testing soundtrack direction before scoring longer content.
- Upload the cleanest final or near-final edit possible so the music better matches pacing and structure.
Notes
videois required.- Maximum supported video length is 360 seconds.
- Pricing depends only on billed video duration.
- Video duration is rounded up to the next whole second for billing.
Related Models
- Sonilo audio generation workflows — Useful when you need prompt-first music generation instead of video-driven scoring.
- Background music generation workflows — Useful when you need standalone music without a video input.
- Video sound design workflows — Useful when you want synchronized effects instead of generated music.
<ApiPage model={model}>
## Authentication
For authentication details, please refer to the [Authentication Guide](/docs-authentication).
## API Endpoints
### Submit Task & Query Result
## Parameters
### Task Submission Parameters
#### Request Parameters
#### Response Parameters
<SubmitResponse />
#### Result Request Parameters
| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| id | string | Yes | - | Task ID |
#### Result Response Parameters
| Parameter | Type | Description |
|-----------|------|-------------|
| code | integer | HTTP status code (e.g., 200 for success) |
| message | string | Status message (e.g., "success") |
| data | object | The prediction data object containing all details |
| data.id | string | Unique identifier for the prediction, the ID of the prediction to get |
| data.model | string | Model ID used for the prediction |
| data.outputs | string | Array of URLs to the generated content. |
| data.urls | object | Object containing related API endpoints |
| data.urls.get | string | URL to retrieve the prediction result |
| data.status | string | Status of the task: `created`, `processing`, `completed`, or `failed` |
| data.created_at | string | ISO timestamp of when the request was created (e.g., "2023-04-01T12:34:56.789Z") |
| data.error | string | Error message (empty if no error occurred) |
| data.timings | object | Object containing timing details |
| data.timings.inference | integer | Inference time in milliseconds |
</ApiPage>