Skip to main content
Upload a reference voice or a face image once, then pass its ID on each request instead of sending the audio or image again.

Who can use them

Your voices and avatars belong to your Boson account, not to the key that uploaded them. Every key you create on the API Keys page can list, use and delete them, so deleting or rotating a key loses nothing. A Realtime client secret acts for the key that created it. A key that Boson issued to you directly, rather than one you created on the API Keys page, keeps its own voices and avatars. Other accounts cannot see or use your voices and avatars. Boson’s preset voices and avatars are available to everyone and cannot be deleted.

Limits

Presets and deleted assets do not count toward the per-account limit. Uploading a file you already have returns the existing asset and does not count again, so a setup script is safe to re-run. A new upload past the limit returns 403 quota_exceeded.

Voices

Create a voice

Send the reference audio with a verbatim transcript in ref_text, and an optional title. ref_audio can be a URL, base64, a data: URI, or a file in a multipart/form-data request. We recommend 5 to 30 seconds of clean speech from one speaker. Longer audio is cut to 30 seconds when it is used, and its transcript is then ignored.
Uploading the same audio again returns the voice you already have, with its original title and ref_text. Pass the voice_id to voice in POST /v1/audio/speech; Voices has complete examples.

List, get and delete voices

Avatars

Upload an avatar

Send the image inline, either as a file in a multipart/form-data request or as base64 or a data: URI in a JSON body, with an optional name (up to 256 characters). URLs are not accepted. Use a clear photo of one person facing the camera.
Response
The image is rotated upright by its EXIF orientation, converted to RGB (transparency is dropped), and scaled down if an edge is over 2048 px; width and height describe the stored image. Uploading the same image again returns the avatar you already have. An image refused by the content check returns 400 content_policy_violation. To start a session with the avatar, pass its avatar_id to POST /v1/avatar/sessions; see Realtime sessions. POST /v1/videos does not take an avatar_id: send the image itself as ref_image.

List, get and delete avatars

Deleting

Deleting cannot be undone. Deleting a preset returns 403 (voice_not_deletable or avatar_not_deletable). An ID that does not exist, belongs to another account, or was already deleted returns one 404 (voice_not_found or avatar_not_found); the three cases are not distinguished, so the routes cannot be used to discover other accounts’ IDs. Uploading a deleted file again creates the asset again. With the same key you get the same ID back; with another of your keys you get a new ID.

Errors

Errors use the common error body.