⚡ JavaScript & Node.js Developer Guide

JavaScript Text to Speech API Quickstart

Integrate high-speed voice synthesis powered by Aura and Rapid models into web applications and server environments with production-ready security patterns.

⚠️Security Best Practice: Never Expose API Keys in Client-Side Code

Never hardcode or expose your X-API-Key in public browser bundles or frontend JavaScript. Anyone inspecting client-side requests via Browser DevTools can copy your key. Always proxy client requests through a secure backend route (e.g. Next.js API Route or Node.js Express server) where your key is safely stored in environment variables (process.env.YOURVOIC_API_KEY).

1. Getting Started & Authentication

All requests require a valid API Key in the X-API-Key header. Generate your key from your account console:

2. Secure Backend Proxy Route (Next.js / Express)

Create a server-side route handler that securely attaches your X-API-Key from server environment variables before calling the official REST endpoint.

pages/api/speech.js (Server Proxy)
// Secure Backend Route (Next.js API Route / Node.js Express Proxy)
// file: pages/api/speech.js
export default async function handler(req, res) {
  if (req.method !== 'POST') {
    return res.status(405).json({ error: 'Method not allowed' });
  }

  // 🔒 Retrieve API Key safely from server environment variables
  const API_KEY = process.env.YOURVOIC_API_KEY;

  if (!API_KEY) {
    return res.status(500).json({ error: 'Server misconfiguration: Missing YOURVOIC_API_KEY' });
  }

  try {
    const response = await fetch('https://yourvoic.com/api/v1/tts/generate', {
      method: 'POST',
      headers: {
        'X-API-Key': API_KEY, // Server-side request header
        'Content-Type': 'application/json'
      },
      body: JSON.stringify(req.body)
    });

    if (!response.ok) {
      const errorText = await response.text();
      return res.status(response.status).send(errorText);
    }

    const audioBuffer = await response.arrayBuffer();
    res.setHeader('Content-Type', response.headers.get('content-type') || 'audio/mpeg');
    return res.send(Buffer.from(audioBuffer));

  } catch (error) {
    return res.status(500).json({ error: error.message || 'TTS Backend Error' });
  }
}

Client-Side Browser Fetching

Your frontend browser JavaScript calls your internal /api/speech route to retrieve audio streams safely.

browser_client.js
// Client-Side Browser Code: Direct REST API Call with Fetch API
const API_KEY = 'YOUR_API_KEY';

async function generateSpeechBrowser(textToSynthesize) {
  try {
    const response = await fetch('https://yourvoic.com/api/v1/tts/generate', {
      method: 'POST',
      headers: {
        'X-API-Key': API_KEY,
        'Content-Type': 'application/json'
      },
      body: JSON.stringify({
        text: textToSynthesize || 'Hello! Experience high-performance AI text-to-speech synthesis.',
        model: 'aura-prime', // Options: aura-prime, aura-lite, aura-max, rapid-flash, rapid-max
        voice: 'Peter',      // Aura voices: Peter, Kylie, Rahul, Deepika | Rapid Flash: Jacob, Emma
        language: 'en-US',
        format: 'mp3'        // Audio format: mp3 or wav
      })
    });

    if (!response.ok) {
      const errorText = await response.text();
      throw new Error(`Speech synthesis failed (${response.status}): ${errorText}`);
    }

    // Convert response stream to Web Audio Blob and play
    const audioBlob = await response.blob();
    const audioUrl = URL.createObjectURL(audioBlob);
    const audio = new Audio(audioUrl);
    await audio.play();

    console.log('Playing audio speech successfully!');
  } catch (error) {
    console.error('Client TTS Error:', error.message);
  }
}

generateSpeechBrowser();

3. Node.js Server-Side Integration (`axios` & `fs`)

For backend scripts, CLI tools, or batch processing jobs executing directly in Node.js server environments:

node_direct_tts.js
// Node.js Direct Script (Server-Side / CLI Batch Jobs)
// Uses native fetch (built into Node.js 18+) and fs
const fs = require('fs');

// 🔒 Load API key from environment variable
const API_KEY = process.env.YOURVOIC_API_KEY || 'YOUR_API_KEY';

async function generateSpeechNode() {
  try {
    const response = await fetch('https://yourvoic.com/api/v1/tts/generate', {
      method: 'POST',
      headers: {
        'X-API-Key': API_KEY,
        'Content-Type': 'application/json'
      },
      body: JSON.stringify({
        text: 'Synthesize speech on Node.js backend services with high-speed AI models.',
        model: 'aura-prime',
        voice: 'Peter',
        language: 'en-US',
        format: 'mp3'
      })
    });

    if (!response.ok) {
      const errorText = await response.text();
      throw new Error(`HTTP Error ${response.status}: ${errorText}`);
    }

    // Write binary MP3 buffer to filesystem
    const arrayBuffer = await response.arrayBuffer();
    fs.writeFileSync('output_speech.mp3', Buffer.from(arrayBuffer));
    console.log('Successfully saved audio to output_speech.mp3');

  } catch (error) {
    console.error('Request Error:', error.message);
  }
}

generateSpeechNode();

4. JavaScript API Options

KeyTypeDetails
textstringPlain text string for speech generation.
modelstringModel: rapid-flash, aura-lite, rapid-max, aura-prime, aura-max.
voicestringTarget voice name (e.g. Peter, Kylie, Rahul, Deepika).
languagestringLanguage code (e.g. en-US, hi-IN, default: en-US).
formatstringAudio format: mp3 or wav.

Check Other Code Examples & Full Specs

View Python code snippets or read detailed REST API documentation.