One API for every voice workload

Voice infrastructure behind a single API key.

Text to speech, transcription, speech recognition and voice cloning — production endpoints with usage tracking, request logs and a playground your engineers can try before they write a line of code.

Create an account, generate a key, and make your first call in a minute.

curl -X POST https://api.nexacalling.com/api/v1/text-to-speech \
  -H "Authorization: Bearer $VOICE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"text":"Hello from the Voice API Platform.","voice_id":"voice_xxxxx"}' \
  --output speech.mp3

4

Voice endpoints

1

Bearer token

25 MB

Audio uploads

100%

Requests logged

Four endpoints, one surface

Every endpoint takes the same bearer token, returns the same error envelope and writes to the same request log.

Returns audio/mpeg

Text to speech

Synthesize up to 5,000 characters a request and stream the audio straight to a file. No job to poll.

POST/v1/text-to-speech
Synchronous transcript

Speech to text

Transcribe mp3, wav, m4a, webm and ogg up to 25 MB, with the language detected automatically.

POST/v1/speech-to-text
Usage recorded as ASR

Speech recognition

The same transcription engine on a dedicated ASR surface, so recognition workloads report and bill separately.

POST/v1/asr
Consent recorded

Voice cloning

Create a custom voice from one clear sample. Consent is required on every call and stored with the voice.

POST/v1/voices/clone

From sign-up to first request

No procurement call to get started, and no SDK to install. The whole path is three steps.

  1. Create an account

    An organization is provisioned for you. Every key, voice, log and invoice belongs to it.

  2. Generate an API key

    One click. The secret is shown once and stored as a prefix plus a hash — never in plaintext.

  3. Call the API

    One bearer token across every endpoint, no SDK required. The playground shows the exact request.

# 1. List the voices available to you
curl https://api.nexacalling.com/api/v1/voices -H "Authorization: Bearer $VOICE_API_KEY"

# 2. Synthesize speech with one of them
curl -X POST https://api.nexacalling.com/api/v1/text-to-speech \
  -H "Authorization: Bearer $VOICE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"text":"My first request.","voice_id":"voice_xxxxx"}' \
  --output speech.mp3

Built to be debugged

The parts of an API that decide whether your team ships on Friday: predictable errors, traceable requests, keys you can rotate without a migration.

A request ID on every response
Every call returns X-Request-ID and every error repeats it in the body. It names one row in your log — quote it and support can find the call.
One error envelope
Same shape at 400, 429 and 502. Code, message, request ID. Provider failures are normalized before they reach you, never forwarded raw.
Keys you can rotate
Name a key per environment, see when it was last used, revoke it the moment it leaks. Revocation takes effect on the next request.
Isolation by construction
Every query is scoped to your organization. Another tenant's voice ID returns 404 — not 403, which would confirm it exists.

Every error, every status code

400 Bad Request
{
  "error": {
    "code": "INVALID_REQUEST",
    "message": "text must not be empty.",
    "request_id": "req_k3f9x2mQ7Lp0"
  }
}

Conventional status codes: 400 invalid, 401 bad key, 403 suspended, 404 not found, 413 too large, 429 rate limited, 502 provider failure.

Usage you can predict

One unit is one character of synthesized speech, one second of transcribed audio, or one voice clone. Failed requests are logged but never billed.

Voice API

Ship voice this week.

Generate a key, run the sample, and put the request straight into your codebase. Volume pricing and procurement support are available for teams deploying at scale.