Skip to main content
Generate a WAV file with one authenticated request to Rime’s text-to-speech API. Choose a language tab, copy the complete script, and run it from your terminal.

Prerequisites

You need:
  • A Rime API token: Create a free Rime account and copy your API key from the API Tokens page.
  • A language runtime, depending on which tab you follow:
    • cURL: a terminal with cURL installed (included with macOS and most Linux distributions).
    • Python: Python 3.10 or later.
    • JavaScript: Node.js 18 or later.
    • TypeScript: Node.js 18+ plus tsx (npm install -g tsx).
Each code block is tabbed by language. Pick the same language in every block.
These examples call Rime’s HTTPS API with a standard library or built-in fetch. Rime does not publish an npm or PyPI SDK. Framework-specific starters are available for Next.js, Vite, Express, plain Node, and FastAPI.

Copy the request

Create a file called rime_hello_world.py, rime_hello_world.js, or rime_hello_world.ts (or run the cURL version directly in your terminal) and paste the full script:

Run it

The cURL tab runs the request directly. For Python, JavaScript, or TypeScript, run:
A successful request writes output.wav and prints:

Confirm it worked

A 200 and a file on disk are not proof of success. Two things produce both without producing audio:
  • cURL writes error bodies to the file. The example above uses --output output.wav without --fail, so a rejected request leaves a small text file named output.wav containing the error message.
  • An unrecognized Accept header returns JSON rather than audio. Rime falls back to a 200 response whose body is JSON with an audioContent field. The file is not empty and the status is not an error, but no player will open it.
Check the file before you trust it:
Then play it:
Hearing speech is the success condition. If head -c 4 prints { you received JSON, so check your Accept header. If it prints readable English, you received an error message, so open the file and match it below.

If it did not work

Everything here fails before any audio is produced. For the complete list of statuses and messages, see the error reference.

Build the request step by step

Create a file called rime_hello_world.py, rime_hello_world.js, or rime_hello_world.ts and import the required library modules:
Set the request headers with your Rime API key and the expected audio format:
Set the text, speaker, and model in the request body:
This payload includes the three required parameters:
  • text is the content to synthesize.
  • speaker selects a voice from the voice catalog.
  • modelId selects the model. Use coda for the flagship voice lineup or mistv3 for the lowest time to first audio.
The Coda API reference lists the optional request parameters.Send the POST request and write the streamed audio response to a file:
These examples stream the response but write each chunk to disk. Interactive applications can play chunks as they arrive so speech begins before the complete response is generated. The LiveKit quickstart shows this pattern in a conversational agent.

Choose a voice

Change the speaker parameter to use another voice:
Browse all available voices on the Voices page.

Custom pronunciation

Custom pronunciation is supported on Mist v1 and Mist v2 only. Coda, Arcana, and Mist v3 do not support phonemizeBetweenBrackets.
The mistv2 model lets you specify the pronunciation of brand names or uncommon words using the Rime phonetic alphabet. Add the custom pronunciation in curly brackets and set phonemizeBetweenBrackets to true:
See the Rime phonetic alphabet for the full symbol reference, and Pronunciation control for an overview of all the ways to control pronunciation.

Production choices

The LiveKit quickstart extends the same streaming API into a real-time voice agent. These references cover the main model, voice, latency, and transport decisions:

Models

Compare Coda (flagship) and Mist v3 (fast)

Voices

Browse all available voice options

Latency

Optimize for real-time performance

Coda Streaming API

Stream audio with our flagship model