Get voice by name
curl https://texttospeech.responsivevoice.org/v2/voices/UK%20English%20Female -H 'X-API-Key: YOUR_API_KEY' -H 'X-API-Secret: YOUR_API_SECRET'import { ResponsiveVoiceAPIClient } from '@responsivevoice/api-client';
const client = new ResponsiveVoiceAPIClient({ apiKey: 'YOUR_API_KEY', apiSecret: 'YOUR_API_SECRET' });const voice = await client.getVoice('UK English Female');Returns a specific voice by its exact name (e.g. “UK English Female”). The response includes HATEOAS _links with a self link, a synthesize link for generating audio with this voice, and a stream link for real-time streaming synthesis.
Authorizations
Section titled “Authorizations ”Parameters
Section titled “ Parameters ”Path Parameters
Section titled “Path Parameters ”Exact voice name (e.g. “UK English Female”, “US English Male”). URL-encode spaces as %20.
Responses
Section titled “ Responses ”Voice details with HATEOAS navigation links (self, synthesize, stream). Supports ETag-based conditional requests.
Single voice detail with HATEOAS navigation
object
User-facing voice definition
object
HATEOAS links on a voice detail response
object
HATEOAS link with absolute URL
object
HATEOAS synthesize action link
object
object
HATEOAS streaming synthesize link (HTTP audio streaming)
object
object
HATEOAS WebSocket stream link
object
object
HATEOAS link with absolute URL
object
HATEOAS link with absolute URL
object
Example
{ "voice": { "gender": "f" }, "_links": { "synthesize": { "method": "POST" }, "synthesize:stream": { "method": "POST", "accept": "text/event-stream" }, "stream:websocket": { "protocol": "websocket" } }}Headers
Section titled “Headers ”Maximum requests permitted for the authenticated key per minute.
Maximum requests permitted for the authenticated key per minute.
Requests remaining in the current per-minute window; 0 once the per-minute limit is reached. Reflects the per-minute limit, not the burst check — a burst 429 may report a value above 0.
Requests remaining in the current per-minute window; 0 once the per-minute limit is reached. Reflects the per-minute limit, not the burst check — a burst 429 may report a value above 0.
Not modified — the resource has not changed since the last request (ETag match)
API key required
API error response
object
object
Example generated
{ "error": { "message": "example", "code": "example", "statusCode": 1, "errors": "example" }}No voice found with the given name
API error response
object
object
Example generated
{ "error": { "message": "example", "code": "example", "statusCode": 1, "errors": "example" }}Rate limit exceeded. The body code is RATE_LIMIT_EXCEEDED (per-minute tier limit) or BURST_RATE_LIMIT_EXCEEDED (per API key + client IP burst).
API error response
object
object
Example generated
{ "error": { "message": "example", "code": "example", "statusCode": 1, "errors": "example" }}Headers
Section titled “Headers ”Maximum requests permitted for the authenticated key per minute.
Maximum requests permitted for the authenticated key per minute.
Requests remaining in the current per-minute window; 0 once the per-minute limit is reached. Reflects the per-minute limit, not the burst check — a burst 429 may report a value above 0.
Requests remaining in the current per-minute window; 0 once the per-minute limit is reached. Reflects the per-minute limit, not the burst check — a burst 429 may report a value above 0.
Seconds to wait before retrying. Dynamic — varies with how far over the limit the request went; honor this header rather than assuming a fixed delay.
Seconds to wait before retrying. Dynamic — varies with how far over the limit the request went; honor this header rather than assuming a fixed delay.