Skip to content

Product

What Voxera does that a model API does not

A speech model gives you audio in and audio out. A voice product needs transport, interruption handling, keys, quotas, transcripts and billing. That gap is the platform.

How it works

A staged pipeline you can actually see inside

Four stages, each provider-neutral. Use the bundled OpenAI defaults, or point any stage at your own HTTP API.

  1. WebRTC microphone audio

    The caller connects over WebRTC through mediasoup. Voxera runs the SFU, the ICE negotiation and the TURN relay, so audio works from a browser, a phone or a locked-down corporate network.

  2. Streaming transcription

    Audio streams to a transcription API as the caller speaks. Partial transcripts arrive continuously rather than after the caller stops, which is what makes the response feel immediate.

  3. Text-only model call

    The transcript goes to a text model in streaming mode, with your system prompt, tools and session metadata. There is no direct audio-to-model path — every stage is inspectable, loggable and swappable.

  4. Text-to-speech, injected live

    Generated speech is converted to 48 kHz PCM frames and injected back into the WebRTC stream as the model is still producing text.

Barge-in

Barge-in is the ability to interrupt a voice agent mid-sentence and have it stop speaking. When the caller starts talking, Voxera halts playback and discards the partial response, so the agent never talks over the person it is meant to be listening to.

Platform

Everything around the model, already built

The model is the easy part. Transport, keys, quotas, transcripts and billing are what actually take the quarter.

One protocol, five platforms

Web, React Native, iOS, Android and Flutter share a single wire protocol. Configure an agent once and it behaves identically everywhere.

Tool calling

Give an agent HTTP tools and it can look up an order or book a slot mid-conversation.

Keys built for clients

Secret keys stay on your server and mint short-lived session tokens. Publishable keys are safe to ship inside an app bundle.

Usage you can trust

Sessions hold a lease and settle billable seconds in one transaction on disconnect, so a dropped call is never billed twice or lost.

Full transcripts

Every turn is persisted with timing, so you can audit, evaluate and replay conversations rather than guess at them.

Bring your own providers

Point transcription, model or speech at your own HTTP endpoint. Available on Growth and Scale.

Security

Keys designed for code you ship to strangers

A voice app runs on someone else's device, so the credential model has to assume the client is hostile.

Voxera separates three credentials. Secret keys stay on your server and can mint session tokens. Publishable keys are safe to embed in a bundle and can only authorize a runtime session. Session tokens are short-lived and scoped to one call.

server.ts
// Your backend. The secret key stays here, never in the app bundle.
const response = await fetch(
  "https://api.voxera-voice.com/api/v1/sessions/token",
  {
    method: "POST",
    headers: {
      "content-type": "application/json",
      authorization: `Bearer ${process.env.VOXERA_SECRET_KEY}`,
    },
    body: JSON.stringify({ userId: user.id, metadata: { plan: user.plan } }),
  },
);

const { token } = await response.json();

App keys are stored hashed, so a database dump does not hand over working credentials, and any key can be revoked without redeploying your app.

Hear it before you build on it

The demo is the real pipeline, not a recording. Talk to it, interrupt it, and decide from there.