
Frame-synced soundtracks generated straight from video, or music from a text prompt, with per-segment direction and stem separation.
Frame-synced soundtracks generated straight from video, or music from a text prompt, with per-segment direction and stem separation.
sonilo-v1-1/v1/audio/generationssonilo-v1.1sonilo/v1.1sonilo-musicsonilo/sonilo-v1-1Live pay-as-you-go rates from the EmpirioLabs catalog. You are billed only for what you use, with no monthly minimum.
Sonilo v1.1 runs through POST /v1/audio/generations. The request returns a job_id right away; poll GET /v1/jobs/{job_id} until the job completes and read the output URLs from the result. Get an API key from the EmpirioLabs dashboard.
curl https://api.empiriolabs.ai/v1/audio/generations \
-H "Authorization: Bearer $EMPIRIOLABS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "sonilo-v1-1",
"prompt": "Describe what you want Sonilo v1.1 to generate."
}'curl https://api.empiriolabs.ai/v1/jobs/JOB_ID \
-H "Authorization: Bearer $EMPIRIOLABS_API_KEY"import requests
response = requests.post(
"https://api.empiriolabs.ai/v1/audio/generations",
headers={"Authorization": "Bearer YOUR_EMPIRIOLABS_API_KEY"},
json={
"model": "sonilo-v1-1",
"prompt": "Describe what you want Sonilo v1.1 to generate.",
},
)
job = response.json()
# Generation runs as an async job. Poll until it completes.
import time
while True:
status = requests.get(
f"https://api.empiriolabs.ai/v1/jobs/{job['job_id']}",
headers={"Authorization": "Bearer YOUR_EMPIRIOLABS_API_KEY"},
).json()
if status.get("status") in ("completed", "failed"):
print(status)
break
time.sleep(5)Request parameters supported by the Sonilo v1.1 API on EmpirioLabs. Defaults apply when a field is omitted.
| Parameter | Type | Default | Range / values | Description |
|---|---|---|---|---|
| prompt | string | - | - | Style or creative direction for the music. Required when generating from text alone. Optional when scoring a video, where the footage leads. |
| mode | enum | auto | auto, text, video | auto scores an attached video and falls back to text to music when there is no video. Set text or video to pin the behaviour. |
| duration | number | - | 5 to 360 | Track length in seconds. Text mode only. In video mode the track follows the length of the source video. Leave empty to let the prompt decide. |
| output_format | enum | m4a | m4a, wav, mp3 | Delivered audio format. m4a is AAC, wav is 16-bit PCM, mp3 is 320 kbps. |
| variants_num | number | 1 | 1 to 10 | How many distinct musical directions to generate in one request. Each variant is billed separately at the per-second rate, and the 10 second minimum applies to each one. |
| stems | boolean | false | - | Also return the generated track split into drums, bass, vocals and other. Adds no charge and adds a few minutes to the wait. |
| ducking | boolean | false | - | Also return a take with the music dipped under the speech in the source video so dialogue stays intelligible. Adds no charge. |
| preserve_speech | boolean | false | - | Keep the speech from the source video and return the isolated voice plus a mixed track alongside the music. |
| prompt_influence | number | 0.5 | 0 to 1 | How strongly the music follows the prompt rather than the footage. Lower lets the video lead, higher follows the prompt more literally. Adds no charge. |
| segments | string | - | - | JSON array of timed segment prompts for scene by scene direction. Each entry takes start, end and prompt in seconds. |
| video_url | string | - | - | Source video to score, as a publicly reachable URL. Up to 300MB and 6 minutes. Uploading a video in the playground sets this for you. |
Supports prompt, mode, source video, 5 to 360 second duration in text mode, m4a, wav or mp3 output, 1 to 10 variants, stem separation, ducking, speech preservation, prompt influence, and JSON segment prompts.
On EmpirioLabs, Sonilo v1.1 is billed pay as you go: Text to music $0.0045 per generated second; Video to music $0.018 per generated second. The live rate card on this page always matches what the API charges.
Sonilo v1.1 is served through POST /v1/audio/generations on api.empiriolabs.ai with standard bearer-token authentication.
Yes. The EmpirioLabs playground runs Sonilo v1.1 in the browser with the same parameters the API exposes, so you can test prompts before writing code.
Create an EmpirioLabs account, then generate a key under API Keys in the dashboard. Billing is pay-as-you-go credits, so you only pay for the requests you make.
Check out our pricing or reach out if you want your own model deployed on our stack.