> For the full page index, fetch https://echonova.ai/llms.txt

# Developers

API keys, authentication, jobs, webhooks and code samples.

## Start

- [Developer API overview](https://echonova.ai/docs/developers/overview.md): What the Developer API does, the fifteen endpoints it exposes, and how a request is authenticated, answered and billed.
- [Base URL](https://echonova.ai/docs/developers/base-url.md): The one host every Developer API request goes to, how paths are versioned, and which workspace an API key belongs to.
- [Get an API key](https://echonova.ai/docs/developers/get-an-api-key.md): Create a key in the portal, store the secret once, and make your first authenticated request.
- [Authentication](https://echonova.ai/docs/developers/authentication.md): The Authorization header, the API key format, the checks every request passes, and each authentication error with its cause and fix.
- [Rate limits](https://echonova.ai/docs/developers/rate-limits.md): How many requests one API key can make per minute, the headers that report the count, what a 429 looks like, and how to back off.
- [Credits](https://echonova.ai/docs/developers/credits.md): What each service costs in credits, how AI usage becomes credits, worked examples, and how a key's credit limit is enforced.
- [Synchronous and asynchronous calls](https://echonova.ai/docs/developers/sync-vs-async.md): Which of the two call styles fits a request, how a job moves through its four statuses, and how to poll for the result.
- [Retry requests safely](https://echonova.ai/docs/developers/retries-and-idempotency.md): Tell a retry that costs nothing from one that creates a second job, keep the job id so you never have to send a request twice, and back off correctly on 429 and 5xx responses.
- [Code samples](https://echonova.ai/docs/developers/code-samples.md): Two complete programs per language, an asynchronous Text to Speech job from request to saved audio file and an asynchronous Speech to Text job from upload to transcript, plus the response envelope they all read.
- [Connect EchoNova to Claude](https://echonova.ai/docs/developers/connect-claude.md): Add EchoNova as a connector in Claude, see what each tool does, who can connect, how to disconnect, and how your data is handled.

## Text to Speech

- [Text to Speech quickstart](https://echonova.ai/docs/developers/tts-quickstart.md): List the voices, turn one Arabic sentence into audio with the synchronous endpoint, save the file, then run the same request as an asynchronous job and poll it.
- [Text to Speech voices and options](https://echonova.ai/docs/developers/tts-voices-and-options.md): The voice list and what each voice field means, how to pick a voice by language, and every request option with its type, range, default and effect.
- [Generate speech from text](https://echonova.ai/docs/reference/tts-generate-async.md): Starts a Text to Speech job for 1 to 500 characters and returns its jobId. Get the audio from GET /v1/text-to-speech/jobs/{jobId} or the job.completed webhook. Cloned voices work with the sync endpoint only.
- [Generate speech synchronously](https://echonova.ai/docs/reference/tts-generate-sync.md): Generates speech for 1 to 500 characters in one call and returns the audio URL with the credits charged.
- [List available voices](https://echonova.ai/docs/reference/tts-list-voices.md): Lists the EchoNova voice library. Send a voice's id as voiceId when you generate speech.
- [List Text to Speech jobs](https://echonova.ai/docs/reference/tts-list-jobs.md): Lists the API jobs in this key's workspace, paged with offset and limit. Needs Text to Speech access on the key.
- [Get TTS job details](https://echonova.ai/docs/reference/tts-get-job.md): Returns one API job of this key's workspace, with its audio URL once it has completed, whichever key created it. A job of another workspace answers 404. Needs Text to Speech access on the key.
- [Delete a finished TTS job and its audio](https://echonova.ai/docs/reference/tts-delete-job.md): Deletes a completed or failed API job of this key's workspace, with its audio, whichever key created it. A job still in progress answers 400; a job of another workspace answers 404. Needs Text to Speech access on the key.

## Speech to Text

- [Speech to Text quickstart](https://echonova.ai/docs/developers/stt-quickstart.md): Transcribe a short audio file in one call, read the transcript and its duration, run a long file as an asynchronous job and poll it, then download it as subtitles with speaker labels.
- [Speech to Text formats and output](https://echonova.ai/docs/developers/stt-formats-and-output.md): What the upload endpoints accept, which checks run before a job starts, every field the responses carry, speaker identification, the TXT, SRT and JSON downloads, and what durationSeconds means.
- [Transcribe audio file](https://echonova.ai/docs/reference/stt-transcribe.md): Starts a Speech to Text job for an uploaded audio file of up to 10 minutes and 150MB, and returns its jobId. Get the transcription from GET /v1/speech-to-text/jobs/{jobId} or the job.completed webhook.
- [Transcribe audio synchronously](https://echonova.ai/docs/reference/stt-transcribe-sync.md): Transcribes an uploaded audio file of up to 10 minutes and 150MB in one call and returns the transcription with the credits charged.
- [List Speech to Text jobs](https://echonova.ai/docs/reference/stt-list-jobs.md): Lists the API jobs in this key's workspace, paged with offset and limit. Needs Speech to Text access on the key.
- [Get STT job details](https://echonova.ai/docs/reference/stt-get-job.md): Returns one API job of this key's workspace, with its transcription once it has completed, whichever key created it. A job of another workspace answers 404. Needs Speech to Text access on the key.
- [Delete a finished STT job and its audio](https://echonova.ai/docs/reference/stt-delete-job.md): Deletes a completed or failed API job of this key's workspace, with its audio, whichever key created it. A job still in progress answers 400; a job of another workspace answers 404. Needs Speech to Text access on the key.
- [Download a completed STT job as TXT, SRT or JSON](https://echonova.ai/docs/reference/stt-export-job.md): Returns the transcript of a completed API job of this key's workspace as a file: txt is the transcription text, srt is subtitles of at most 7 seconds and two 42-character lines per cue, each prefixed with its speaker label when speakers were identified, and json carries the text, speakers and timed segments. lang sets the language of the speaker labels. A job that has not completed answers 400; a job of another workspace answers 404. Needs Speech to Text access on the key.

## Sound Cleaning

- [Sound Cleaning quickstart](https://echonova.ai/docs/developers/clean-quickstart.md): Clean a recording of up to 10 minutes in one call, read the cleaned file link and its cost, tune the cleaner, then list your past jobs.
- [Clean audio synchronously](https://echonova.ai/docs/reference/clean-create.md): Cleans an uploaded MP3, WAV, FLAC or OGG/Opus file of up to 10 minutes and 150MB in one call and returns the job with the cleaned file URL. Every tuning field is optional; an omitted one uses its default.
- [List sound cleaning jobs](https://echonova.ai/docs/reference/clean-list-jobs.md): Lists the API jobs in this key's workspace, paged with offset and limit. Needs Sound Cleaning access on the key.
- [Get sound cleaning job details](https://echonova.ai/docs/reference/clean-get-job.md): Returns one API job of this key's workspace, with its cleaned file URL, whichever key created it. A job of another workspace answers 404. Needs Sound Cleaning access on the key.
- [Delete a finished sound cleaning job and its audio](https://echonova.ai/docs/reference/clean-delete-job.md): Deletes a finished API job of this key's workspace, with its original and cleaned files, whichever key created it. A job of another workspace answers 404. Needs Sound Cleaning access on the key.

## Webhooks

- [Configure a webhook](https://echonova.ai/docs/developers/webhooks-configure.md): Create a webhook endpoint in the portal, choose the events it receives, keep its signing secret, and disable or delete it later.
- [Webhook events](https://echonova.ai/docs/developers/webhooks-events.md): The four events EchoNova sends, the headers on every delivery, and the exact JSON body of each event.
- [Verify a webhook signature](https://echonova.ai/docs/developers/webhooks-verify-signature.md): Recompute the HMAC-SHA256 signature on every delivery, compare it in constant time, and reject requests that are stale or unsigned.
- [Delivery, retries and failures](https://echonova.ai/docs/developers/webhooks-retries.md): What counts as a successful delivery, the retry schedule, the delivery status values, when a webhook is disabled, and how to handle duplicates.

## Operations

- [Read your API activity](https://echonova.ai/docs/developers/activity.md): Open Developers Activity, read the Overview, Trends, Explore and Logs tabs, and know exactly which requests and credits the page counts.
- [Read the request log](https://echonova.ai/docs/developers/request-logs.md): Open the Request Log tab, read what each column means, find the call your system made, and know which requests are never recorded.
- [Errors](https://echonova.ai/docs/developers/errors.md): Every HTTP status and errorMessage the v1 API returns, when each one happens, what to do about it, and how asynchronous jobs report failure.
- [Latency best practices](https://echonova.ai/docs/developers/best-practices-latency.md): How to get results back sooner and waste fewer requests, using the sync and async endpoints, the rate limit, the job timeout and the webhooks as they behave.
- [Security best practices](https://echonova.ai/docs/developers/best-practices-security.md): How to keep an API key from leaking, limit what a leaked key can do, replace a key safely, trust only genuine webhooks, and audit what your keys did.
