Bland BTTS
Audio
Bland BTTS
POST
Bland BTTS
1. Overview
This document describes how to use speech synthesis and voice cloning through the Bland BTTS native protocol. Both endpoints are synchronous: a POST request returns the result directly, with no need to create a task and poll for the result.1.1 Endpoints
The full address in the examples in this document is
https://api.novita.ai plus the endpoint path in the table above, where https://api.novita.ai is the API domain you use.
1.2 Authentication
All requests must carry the platform API Key:Content-Type: application/json); voice cloning requests use multipart/form-data and do not need to specify the content type separately (the HTTP client generates it automatically, including the boundary).
1.3 Response Structure
- On success, speech synthesis returns audio binary data directly, not JSON. See “2. Speech Synthesis” for details.
- On success, voice cloning returns JSON, where
data.voice_idis the UUID of the newly cloned voice and can be used directly as thevoicefield of the speech synthesis endpoint. - When the two endpoints fail, they return different JSON error structures. See the “Common Errors” section of each endpoint.
2. Speech Synthesis
Official parameter reference: Speak2.1 Endpoint
2.2 Example
2.3 Response
On success, the endpoint returns audio binary data directly (HTTP 200), not JSON. The Content-Type varies with the request’saudio.container/audio.encoding (for example, audio/wav, audio/pcm). In practice, the transparent proxy returns the upstream X-Sample-Rate response header unchanged (the sample rate of the synthesized audio); other response headers documented by Bland, such as x-request-id/x-model/x-voice-id/x-cost/x-latency, were not observed in testing. Do not rely on these headers.
2.4 Billing
text field. Chinese characters (Han characters) count as 2 characters, and other characters (including English letters, digits, spaces, and punctuation) count as 1 character. The exact unit price depends on the pricing page of the service you use.
3. Voice Cloning
Official parameter reference: Clone Voice3.1 Endpoint
multipart/form-data. Common fields:
isBTTS_V3/isBTTS_V2 are boolean-semantic fields, but because the request body is multipart/form-data rather than JSON, they must be sent as the string "true".3.2 Example
3.3 Response
On success, the endpoint returns (HTTP 200):
Verified in practice: passing the
voice_id produced by the cloning endpoint directly to the voice field of the speech synthesis endpoint returns real synthesized audio with HTTP 200, so the two endpoints can be used in sequence directly.
3.4 Billing
The voice cloning endpoint is always free of charge and generates no cost.3.5 Common Errors
When the account has reached its voice limit, you need to top up the Bland account wallet to increase the quota. This is unrelated to the faas-backend configuration.
4. Common Errors and Notes
Error structure of the speech synthesis endpoint:
The error structure of the voice cloning endpoint is described in “3.5 Common Errors” and is not the same structure as the speech synthesis endpoint. Do not mix them up.
Other notes:
- The speech synthesis endpoint request body requires the JSON content type; the voice cloning endpoint request body is
multipart/form-dataand must not be called with JSON. - A
voice_idcreated by voice cloning is shared among all callers under the current API Key, and the system does not record “which caller cloned which voice”. Manage voice ownership and visibility in your own business layer, and do not assume the platform isolates voices between callers. - The optional fields of the voice cloning endpoint (
gender/description/isBTTS_V3/isBTTS_V2) have not been fully validated with real requests. It is recommended to test them yourself before launch to confirm that the behavior meets expectations. - When the response is audio binary data, process it directly according to the returned Content-Type and do not attempt to parse it as JSON.
Última modificación el 21 de octubre de 2026