Product · Voice API

Real-time voice, three HTTP calls.

fg-voice-1 hears, answers and speaks over an OpenAI-compatible API. Point your existing SDK at our base URL; the reply streams back sentence by sentence, each one ready to synthesize.

Free in beta — 2,000 requests a day, no card. Paid plans will be announced in advance.

Talk to fg-voice-1 — by voice, right now.

01 · The loop

Hear. Think. Speak.

Three endpoints, your code in between. No WebRTC, no sockets, no SDK to install — plain HTTP with one SSE stream in the middle.

1
Hear
POST /v1/audio/transcriptions
Multipart audio — webm/opus, mp3, wav, m4a, up to 32 MB — comes back as text. Silence and recognition noise return an empty string, so the assistant simply keeps listening.
2
Think
POST /v1/chat/completions
With stream: true every SSE delta is a finished sentence, not a token. Hand it straight to synthesis instead of buffering the whole reply.
3
Speak
POST /v1/audio/speech
Text up to 4096 characters becomes mp3 at 44.1 kHz, sent back as a chunked stream you can start playing before it ends.
# text → mp3, one call
curl https://fg-platform.com/v1/audio/speech \
  -H "Authorization: Bearer $FG_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "fg-voice-1",
    "voice": "sergei",
    "input": "Sir, the report is ready to send."
  }' --output reply.mp3
stream · SSE · by sentences
02 · Numbers

Latency, measured.

Median time each call spends on our side, taken from live platform traffic rather than a benchmark rig.

213msSpeech → textA spoken turn of about 2.5 s recognised and returned.
724msModel starts answeringTime to the first byte of the streamed reply.
135msSentence → audioOne spoken sentence rendered to mp3.

Median of live platform traffic, 14–19 August 2026 (n = 109 / 346 / 352 calls). Our side of the call only — the network between you and us is not ours to promise.

Model
fg-voice-1 — one id for all three calls; listed by GET /v1/models.
Streaming
SSE. Each delta is a finished sentence, ready to synthesize — not a token you have to reassemble.
Voices
By name, sergei — also what you get when voice is left out. By id, any of 900+ voices in the catalog.
Languages
Speech in and out: English and Russian. Text: any language the visitor writes in. Recognition takes the language from the audio — nothing to set per request.
Audio out
mp3, 44.1 kHz, mono, 128 kbps, chunked. Input up to 4096 characters per call.
Audio in
webm/opus, mp3, wav, m4a — up to 32 MB per file, multipart/form-data.
Compatibility
OpenAI request and response shape, including errors: error.type, error.codenull when the failure came from a provider rather than from the request.
Context
max_tokens 1–4096, 1024 by default. Your own system message sets the persona; the last 40 messages of messages are kept.
From the browser
CORS is open; the key travels in the Authorization header. Keep it server-side in production.
Limits
120 requests a minute per key, 2,000 a day per account in beta.
03 · Start

A key in a minute. $0 in beta.

No card. Sign up, confirm your email, create a key — the next line you write is a working call.

Build it yourself

  • Sign up and confirm your email — an unconfirmed account can't call the API
  • Create a key in the console — fg-… is shown once, save it
  • Point your SDK at https://fg-platform.com/v1
# check the key works curl https://fg-platform.com/v1/models \ -H "Authorization: Bearer $FG_API_KEY"

Free in beta — 2,000 requests a day, no card. Paid plans will be announced in advance. Existing keys keep working.

What beta gives you

  • 2,000 requests a day per account
  • 120 requests a minute per key
  • 900+ voices by id, English and Russian speech
  • Keys, usage and the daily counter in the console