Skip to main content
POST
These dashboard endpoints are session-authenticated. They use the caller’s active business context and return generated audio directly as audio/mpeg. They are not API-key endpoints. Generated audio responses are never cached by the browser or CDN. Saved voice profiles continue to expose only NearIQ profile IDs, not provider voice identifiers.

Selectable voices

The dashboard voice selector returns built-in narration presets, optional saved voice profiles for the active business, and a sanitized library list when premium voice generation is configured.

Generate narration

POST /api/businesses/me/content/voice
The response body is the MP3 audio. Metadata headers include X-NearIQ-Audio, X-NearIQ-Voice, X-NearIQ-Speech-Pace, X-NearIQ-Speech-Rate, and provider request/character-count metadata when available.

Generate background music

POST /api/businesses/me/content/music

Access

Voice and music generation require Growth plan or higher. Organization members need manage_voice for narration and content_studio_generate for music. Saved voice cloning requires Agency plan or higher and the manage_voice permission.

AI Chat voice endpoints

AI Chat also uses session-authenticated voice endpoints:
  • POST /api/voice/transcribe accepts browser-recorded audio (webm, mp4/m4a, mp3, wav, or ogg) and returns { "text": "..." }.
  • POST /api/voice/speak accepts { "text": "..." } and returns generated audio for the Listen action. Repeated matching playback returns X-NearIQ-Audio-Cache: hit; cache hits do not spend another generation. Free-plan, permission-denied, over-limit, and unavailable-provider responses return JSON with fallback: "browser_voice" so the client can use browser speech fallback.
The Listen renderer is provider-configurable: teams can keep premium audio, switch to lower-cost generated audio, or force browser-only speech fallback without changing the chat client. Cached audio is scoped to the selected provider so provider changes never replay the wrong generated voice. The chat client records with the best browser-supported MIME type and falls back to browser speech recognition when available. Empty provider transcripts should surface as a visible “No speech detected” message unless the local transcript fallback captured speech.