Skip to content

Audio assets ​

MethodPathBodyResponse
POST/v1/tenants/{t}/audio-assetsupload or register — see below201 { audioAsset }
GET/v1/tenants/{t}/audio-assets—{ audioAssets } (includes platform-wide defaults)
DELETE/v1/tenants/{t}/audio-assets/{id}—204 — see Deleting; platform defaults are 404
GET/v1/tenants/{t}/audio-assets/{id}/url—{ url, expiresInSeconds } — a short-lived link to listen to it (503 storage_unavailable without object storage)
  • Upload: { name, content_base64, mime_type } — stored in object storage (400 if none is configured).
  • Register an existing object: { name, storage_key, storage_provider?: S3|LOCAL, mime_type? } (storage_key ≤512 chars; storage_provider defaults to S3).
  • Both take optional ref (your reference, 1–191 characters, unique per tenant — 400 if another asset has it) and duration_seconds (0–86400). content_base64 must be base64 text (no data: prefix).

audioAsset: { id, ref, name, storageProvider, storageKey, mimeType, durationSeconds, platformDefault }; storageProvider is lowercase (s3, local). WAV, MP3 and Ogg Opus work: the media server plays the file as it is, and its extension (.wav, .mp3, .ogg/.opus) says which. An upload (content_base64) needs mime_type audio/wav (or audio/x-wav, audio/wave, audio/vnd.wave), audio/mpeg (or audio/mp3), audio/ogg or audio/opus (a 400 on mime_type otherwise); its key gets the matching extension. The whole JSON body is limited to 15 MB, so base64 content can carry about 11 MB of audio.

Calloop — the call engine behind your product.