Getting Started

Quickstart

Make your first SAUTI API call in under five minutes.

Prerequisites

You need an API key. Keys are available on request — email hello@finiflowlabs.com with a brief description of your use case.

Step 1 — Synthesise Swahili speech (cURL)

Send a POST request to /v1/text-to-speech/sauti-swahili-v1. The response is JSON containing base64-encoded WAV audio.

bash
curl -X POST https://sauti.finiflowlabs.com/v1/text-to-speech/sauti-swahili-v1 \
  -H "xi-api-key: YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{"text": "Habari za asubuhi"}'

This synthesises Habari za asubuhi (“Good morning” in Kiswahili). The response JSON includes an audio_base64 field — decode it to get the WAV file.

Step 2 — Using the Python SDK

Install the SDK with pip install sauti-tts, then synthesise in two lines:

python
from sauti import SautiTTS

client = SautiTTS(api_key="YOUR_KEY")
client.synthesize_to_file("Habari za asubuhi", "habari.wav")

Or use raw requests if you prefer:

python
import requests
import base64

response = requests.post(
    "https://sauti.finiflowlabs.com/v1/text-to-speech/sauti-swahili-v1",
    headers={"xi-api-key": "YOUR_KEY"},
    json={"text": "Habari za asubuhi"},
)
response.raise_for_status()

data = response.json()
audio_bytes = base64.b64decode(data["audio_base64"])

with open("habari.wav", "wb") as f:
    f.write(audio_bytes)

print(f"Saved habari.wav ({data['duration_seconds']}s)")

Step 3 — Using the TypeScript SDK

Install with npm install @sauti/tts:

typescript
import { SautiTTS } from "@sauti/tts";

const client = new SautiTTS({ apiKey: "YOUR_KEY" });
const response = await client.synthesize("Habari za asubuhi");

Step 4 — List available voices

Use GET /v1/voices to see all available voice models.

bash
curl https://sauti.finiflowlabs.com/v1/voices \
  -H "xi-api-key: YOUR_KEY"
json
{
  "voices": [
    {
      "voice_id": "sauti-swahili-v1",
      "name": "Sauti Swahili",
      "language_code": "sw",
      "locale": "sw-KE",
      "gender": "female",
      "description": "Natural Swahili voice, fine-tuned on WAXAL swa_tts dataset.",
      "status": "active"
    }
  ]
}

What's next