Get website configuration
curl https://texttospeech.responsivevoice.org/v2/config -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 config = await client.getConfig();Returns the website configuration including feature flags and voice settings for the authenticated user. Free-tier users receive all defaults (all features disabled, default voice). Commercial and admin users receive their stored dashboard settings merged with defaults. Feature flags control JS dashboard plugins: welcomeMessage (speaks a greeting on page load), speakSelectedText (reads highlighted text aloud), speakLinks (reads link text on hover), speakInactivity (speaks after a period of user inactivity), speakEndPage (speaks when user scrolls to page bottom), exitIntent (speaks when user moves cursor to leave the page), accessibilityNavigation (keyboard tab navigation with speech), paragraphNavigation (keyboard paragraph-by-paragraph navigation with speech).
Authorizations
Section titled “Authorizations ”Responses
Section titled “ Responses ”Website configuration with feature flags, voice settings (name, pitch, rate, volume), and analytics toggle. Free-tier users get all features disabled; paid users get their stored dashboard configuration.
object
object
object
object
object
object
object
object
object
object
object
object
object
object
object
object
object
Example
{ "features": { "welcomeMessage": { "enabled": false, "text": null }, "speakSelectedText": { "enabled": false }, "speakLinks": { "enabled": false }, "speakInactivity": { "enabled": false, "text": null }, "speakEndPage": { "enabled": false, "text": null }, "exitIntent": { "enabled": false, "text": null }, "accessibilityNavigation": { "enabled": false }, "paragraphNavigation": { "enabled": false }, "webPlayer": { "enabled": false, "selector": "article", "paragraphSelector": "p, h2, h3, li", "position": "before", "theme": "neutral", "controls": { "progress": true, "time": true, "skip": true, "speed": true, "brand": true }, "navigation": { "paragraphHighlight": true, "paragraphClick": true }, "layout": { "mode": "shrink", "display": "block" }, "miniPlayer": { "enabled": true, "position": "bottom-left", "animation": "slide" }, "sanitize": { "enabled": true, "exclude": [] } }, "welcomeMessageOnce": false }, "voice": { "name": "UK English Female", "pitch": 1, "rate": 1, "volume": 1 }, "analytics": { "enabled": false }}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.
API key required — all config requests must be authenticated
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.