Audio API
Discover speech and transcription models, supported voices, formats and prices.
Last updated on
Use one workspace API key for two operations:
| Operation | Endpoint | Successful response |
|---|---|---|
| Speech synthesis (TTS) | POST /v1/audio/speech | Audio bytes |
| Transcription (STT) | POST /v1/audio/transcriptions | JSON with recognized text |
The same endpoints are also available under /api/v1/audio/*. Set the base URL once; do not repeat /v1. See authentication to create a key. Supplier credentials are not needed.
Choose a model and voice
The unified catalog includes Audio alongside text, image, video and Decisions:
curl --fail-with-body --silent --show-error \
'https://api.cicora.ai/api/models?kind=audio' -o audio-models.json
jq '.data[] | {id, available, audio}' audio-models.jsonUse the exact id as model. audio.operations lists speech and/or transcription; audio.profiles describes verified combinations and limits. A speech profile contains voice IDs, formats, sample rates, channels and speed ranges. A transcription profile lists accepted audio geometry, languages and optional features. Choose a complete compatible profile; values from different profiles cannot always be combined.
available describes catalog access and pricing readiness, not a guarantee that a supplier will respond at this instant. Your workspace, key limits and balance are checked at execution. /v1/models serves text-compatible model discovery; use /api/models?kind=audio for Audio.
Listen to voice samples in the cabinet's Audio → Speech gallery, then select the model and voice. The gallery is a preview library; sample text and recording are not a promise that every new generation sounds identical. A voice can work with more than one model. Send its public voice ID, not its display name or gallery item ID.
Prices and accounting
Read audio.pricing for the selected operation. Each tariff has currency, revision and components. A component specifies meter, unitQuantity, unitPrice, roundingIncrement and minimumQuantity. Character meters also define the character-counting method; duration meters define channel grouping. A short recording can therefore be billed at a minimum duration. Do not assume Audio uses text-token prices or that every model bills by the same unit.
The customer tariff is fixed when an operation starts. Balance and key spending limits apply to Audio. Check the final charge in Usage; optional transcription usage fields describe measured usage and may be absent. The response does not publish a synthetic usage.cost in USD.
Requests, jobs and retries
The public API returns the result on the same HTTP request. Speech is a binary byte stream; transcription waits for JSON. Cabinet generation runs as a background job and appears in its history. A cabinet job URL is not a public API polling endpoint.
A disconnected request may already have reached the supplier. Do not automatically repeat a request after a timeout or partial audio delivery. Preserve the request time and any request identifier, check Usage, and make an explicit retry decision. session_id groups metadata; it is not an idempotency key.
Compatibility and optional features
The request shapes follow the OpenRouter TTS interface and STT interface. Supported models, limits, error bodies and accounting are platform-specific. Model and voice IDs from another service are not automatically available here.
Both operations accept provider.data_collection (allow/deny) and provider.zdr. A strict policy requires a verified supporting route; unknown metadata does not satisfy it. provider.options carries provider-keyed JSON options only where supported. The optional session_id and user strings are limited to 256 characters; trace is a JSON metadata object. These fields do not enable another platform's logging integrations.
Music generation, realtime conversations, translation and persistent voice training are not part of these endpoints. Multi-speaker input, reference recordings, diarization and keyterms require explicit model support.