SaidwireDevelopers

Integration · Vapi

Saidwire speech-to-text for Vapi

Make Wire-1, Saidwire's real-time English speech-to-text, the transcriber of any Vapi assistant with one change to the assistant's configuration. Your prompt, model, voice and phone numbers stay as they are.

Vapi supports custom transcribers: for each call it streams the call audio to a WebSocket server and reads the transcripts back. Saidwire runs that server for you at wss://vapi.saidwire.com/vapi/transcriber. It forwards the caller's audio to the Saidwire API and returns partial transcripts while the caller speaks, then a final transcript when they stop. Only the caller's side of the call is transcribed and billed, not your assistant's.

On phone-codec audio in Coval's STT benchmark, Wire-1's mean time to final segment was 38 ms (30-day window to Nov 9, 2026). Source: Coval model page, 30-day window to Nov 9, 2026, 2,857 samples, US-hosted endpoint. Add your own network round trip. Method and how to reproduce.

1. Add your Saidwire key to Vapi

In the Vapi dashboard, open Integrations → Server Configuration → Add Custom Credential:

FieldValue
Authentication TypeBearer Token
Credential NameSaidwire
Tokenyour Saidwire key (sk_live_...) from saidwire.com/dev
Header NameAuthorization
Include Bearer Prefixon

Save, then copy the credential's ID.

2. Set the assistant's transcriber

In the assistant's settings, or through the API, set:

{
  "transcriber": {
    "provider": "custom-transcriber",
    "server": {
      "url": "wss://vapi.saidwire.com/vapi/transcriber",
      "credentialId": "YOUR_CREDENTIAL_ID"
    }
  }
}

The same change with the Vapi API:

curl -X PATCH "https://api.vapi.ai/assistant/$ASSISTANT_ID" \
  -H "Authorization: Bearer $VAPI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"transcriber":{"provider":"custom-transcriber","server":{
        "url":"wss://vapi.saidwire.com/vapi/transcriber",
        "credentialId":"YOUR_CREDENTIAL_ID"}}}'

3. Test it

Start a web call or a phone call with the assistant and speak. The transcripts appear in the call log.

Good to know

Troubleshooting

What you seeFix
No transcripts, and the call log shows a 401The credential isn't attached. Check that it's a Bearer Token credential and that the assistant references its ID. For transient assistants, use headers
A 402 errorThe key's hours are used up. Add a card at saidwire.com/dev
A 429 errorMore calls at once than the key allows. Ask support for a higher limit
The assistant answers before the caller finishesRaise the wait time in Vapi's start-speaking settings

Questions

Do I need to host anything?

No. Saidwire runs the custom-transcriber server at wss://vapi.saidwire.com/vapi/transcriber; you only change the assistant's transcriber setting.

Is my assistant's own voice billed?

No. Only the caller's side of the call is transcribed and billed.

What does it cost?

120 free hours with no card and no deadline, up to 4 streams at once, then $0.25 per audio hour, billed per second of caller audio.

Which languages?

English only. Use another transcriber for assistants that need other languages.

Questions or stuck? Email support@saidwire.com with the request ID from the failed call.

Pipecat, LiveKit, Vapi, OpenAI and the other names on this page belong to their respective owners. They are named only to describe compatibility; no partnership or endorsement is implied. Coval benchmark figures are from Coval's public model page; Coval does not endorse Saidwire.