Lyria 3.5 output: MP3 or WAV at 44.1 kHz, and what Sume returns
Google lists MP3 by default or WAV, 44.1 kHz stereo, with a SynthID watermark. Sume's music docs say the artifact is typically audio/mpeg. Check it in code.

Google's Lyria 3.5 docs list MP3 as the default output with WAV as an option, 44.1 kHz stereo, and a SynthID watermark. Sume's Music 1.0 docs do not offer a format field: they say the audio artifact is typically audio/mpeg, hosted on media.sume.com.
So through Sume, plan for an MP3 file and check the content_type on the artifact instead of assuming it.
What each page says
Statements from the two pages as read on 2026-10-03. Where a page is silent, the table says so.
| Item | Gemini API docs | Sume docs |
|---|---|---|
| File type | MP3 default, WAV available | Typically audio/mpeg |
| Sample rate and channels | 44.1 kHz stereo | Not stated |
| Watermark | SynthID | Not stated |
| Format selector | Yes (MP3 or WAV) | No such request field in the docs |
| Where the file lives | In the API response | result.artifacts[] with type: audio |
Check the artifact in code
This script polls a music job, finds the audio artifact, and fails loudly if the content type is not the one you built your pipeline around. It calls the Music Router, which takes the same body as Music 1.0, and reads the artifact shape documented on the Music 1.0 page.
import os, time, requests
BASE = "https://api.sume.com"
H = {"Authorization": "Bearer " + os.environ["SUME_API_KEY"]}
def music(prompt, key):
r = requests.post(BASE + "/v1/music-router/generate",
headers={**H, "Idempotency-Key": key},
json={"prompt": prompt}, timeout=60)
r.raise_for_status()
body = r.json()
return body.get("data", body)
def wait_result(job_id):
while True:
s = requests.get(f"{BASE}/v1/jobs/{job_id}/status", headers=H, timeout=60).json()
d = s.get("data", s)
if d.get("terminal"):
break
time.sleep(d.get("next_poll_after_seconds") or 5)
res = requests.get(f"{BASE}/v1/jobs/{job_id}/result", headers=H, timeout=60).json()
return res.get("data", res)
job = music("Warm lo-fi bed, 84 BPM. Instrumental, no vocals.", "music-check-001")
job_id = job.get("id") or job["job"]["id"]
result = wait_result(job_id)
arts = (result.get("result") or result).get("artifacts", [])
audio = next(a for a in arts if a["type"] == "audio")
assert audio["content_type"] == "audio/mpeg", audio["content_type"]
print(audio["url"])What follows from an MP3 artifact
Practical consequences, limited to what the docs state.
- Decoding and re-encoding adds a generation of loss, so keep the first file as the master and cut copies from it.
- The timeline audio docs say an MP3 output re-adds priming padding at every edge and recommend WAV when a file will be joined again, so keep sample-exact work on WAV.
- Do not state a sample rate or channel count in your own docs for the Sume file until you have read it from the file. Google's 44.1 kHz stereo figure is for Google's output.
- Use only the Sume media URL from the result. The docs say raw provider URLs are not public outputs.
Watermark and disclosure
Google's docs state a SynthID watermark on Lyria output. Sume's page does not repeat that, so whether it survives to the Sume artifact is not something this page can confirm. If provenance matters for your delivery, test it with the detection tool of your choice on a Sume-returned file and record the result.
Sources
Related posts
More in Media tools
- Seedance 2.5 secondary edit vs trim-and-regenerate on Sume
BytePlus describes timestamp-level edits to Seedance 2.5 clips. Sume has no such edit field, so here is the trim-and-regenerate route and its limits.
- Stability AI's Series B and label backers: what it means for audio
Stability released Stable Audio 3.0 on 5/20/26 and raised a Series B on 8/25/26 with EA, Sony, UMG and WMG. A dated timeline and what to verify for video work.
- How to assemble a long-form video with the Timeline 1.0 API
Timeline 1.0 renders one audio spine plus 1 to 200 ordered video slots into one MP4. Every URL must be Sume-hosted; the plan preflight is unbilled.
- How to burn captions onto a video with the Sume API
Send a public HTTPS video URL to POST /v1/video-captions and get a job-backed captioned video, timed by speech-to-text or by text you supply.
Written by Sume