Pay only for what you use
Sauti speech-to-text and text-to-speech are billed per second of audio and per character of text, from a prepaid balance in Kenyan shillings. No subscription and no monthly fee.
Prices in KES, effective 5 October 2026. No VAT or other charges are added: you pay exactly the prices shown.
Rates
API documentation →| Model | asr-general | tts-fast |
|---|---|---|
| Service | Speech-to-text | Text-to-speech |
| Endpoint | POST / | POST / |
| Languages | Swahili and English | Swahili, with selectable voices |
| Longest request | 10 minutes of audio | 2,000 characters |
| Billed per | second of audio | character of text |
| Full audio / upload | Ksh 1.90per audio minute | Ksh 6.00per 1,000 characters |
| Streaming | Ksh 2.85per audio minute | Ksh 9.00per 1,000 characters |
Streaming costs 1.5× the full-audio rate. The same prices apply in the API and Playground, using account balance or an API key.
Streaming charges
Text-to-speech costs Ksh 9.00 per 1,000 characters. No audio means no charge. Once audio starts, the full text is charged, even if you stop playback.
Live transcription costs Ksh 2.85 per audio minute, billed per processed second including silence. Sessions take up to 60 seconds, with up to Ksh 2.85 held before starting. Stopping releases the unused hold. Waiting on an open connection adds no charge.
For example, 20 processed seconds cost Ksh 0.95; 160 text characters cost Ksh 1.44. Totals round up to the next cent.
How you're charged
- Per request, from your balance. Each successful request is charged when it completes: its exact usage at the rates above, rounded up to the next cent. 20 seconds of audio costs Ksh 0.64, not the price of a whole minute.
- Exact usage. Speech-to-text counts the seconds of audio we process, and a partial second counts as one. Text-to-speech counts the characters of the text you send, including spaces and punctuation.
- Buffered failures are free. A buffered request that fails or is rejected is not charged.
- A hold while a request runs. When a request starts, its largest possible cost is held from your balance: the exact cost for text, the length plus one second for WAV audio, and the 10-minute maximum (Ksh 19.00) for other audio formats. You pay only for what the request used, and the rest is released. If your balance can't cover the hold, the API returns
402 insufficient_balanceand nothing is charged. - Safe buffered retries. Send an
Idempotency-Keyheader: retrying with the same key within 24 hours returns the original response without charging again. Streaming does not support replay or this header; a new request can charge again.
Examples
| Request | Usage | Cost |
|---|---|---|
| Transcribe a voice note | 20 s | Ksh 0.64 |
| Transcribe a phone call | 4 min 10 s | Ksh 7.92 |
| Transcribe the longest recording one request takes | 10 min | Ksh 19.00 |
| Read out an SMS | 160 characters | Ksh 0.96 |
| Read out the longest text one request takes | 2,000 characters | Ksh 12.00 |
Estimate your monthly bill
Speech-to-text is Ksh 1.90 per audio minute, billed per second of audio. Each request is rounded up to the next cent on its own, so this assumes your requests are about this length.
Paying
Top up your balance from Billing in the dashboard and pay through Paystack. You pay exactly the amount you top up, with no VAT or payment fees added. The minimum top-up is Ksh 50.00, enough for about 26 minutes of transcription or about 8,300 characters of speech. Your balance updates once Paystack confirms the payment, and every top-up and charge is listed under Billing.
Prices can change; this page always shows the rates in force. Questions about pricing? Email support@msingiai.com.
Create an account, top up, and make your first request from the playground or the API.
