Every API here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for apis
7 MCP tools reach this
find_apisBrowse and filter every API in the catalog.
get_api_artifactsOne API's artifacts, grouped by type.
get_openapiThe primary OpenAPI for this API.
find_similar_apisAPIs that look like this one.
apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
resolveTurn a domain, URL or GitHub org into the provider it belongs to.
find_cohortsEvery scored population of providers in the catalog.
All 92 tools →
Call it yourself
curl for this page
This API
curl "https://apis.io/api/v1/apis/eden-ai-audio-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we
store it to create your key and to recognise you if you sign in with another
provider. See our Privacy Policy and
Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: Eden Ai Audio API
version: '1.0'
description: 'Operations tagged Audio across 2 of this provider''s published API definitions: eden-ai-openapi.yml, eden-ai-v3-openapi.json. Each path carries the servers of the definition it was published in.'
servers:
- url: https://api.edenai.run/v2
description: Production
- url: https://api.edenai.run
description: Production server
tags:
- name: Audio
paths:
/audio/speech_to_text_async:
post:
summary: Submit async speech-to-text job
operationId: audioSpeechToTextAsyncCreate
tags:
- Audio
requestBody:
required: true
content:
multipart/form-data:
schema:
type: object
required:
- providers
- file
properties:
providers:
type: string
file:
type: string
format: binary
language:
type: string
responses:
'200':
description: Job submitted
security:
- bearerAuth: []
servers:
- url: https://api.edenai.run/v2
description: Production
/audio/speech_to_text_async/{public_id}:
get:
summary: Get async speech-to-text job result
operationId: audioSpeechToTextAsyncGet
tags:
- Audio
parameters:
- in: path
name: public_id
required: true
schema:
type: string
responses:
'200':
description: Job status / result
security:
- bearerAuth: []
servers:
- url: https://api.edenai.run/v2
description: Production
/v3/audio/transcriptions:
post:
tags:
- Audio
summary: Audio Transcriptions
description: 'OpenAI-compatible speech-to-text endpoint.
Accepts either ``multipart/form-data`` (OpenAI SDK shape: a ``file`` upload
plus text fields) or ``application/json`` (``file_id`` / ``file_url`` plus
text fields). Content-Type drives dispatch.'
operationId: audio_transcriptions_v3_audio_transcriptions_post
requestBody:
content:
application/json:
schema:
properties:
routing:
anyOf:
- $ref: '#/components/schemas/ProviderRoutingPreferences'
- type: 'null'
description: 'How to pick between the providers that serve the requested model. Applies when `model` is a model name with no provider prefix (e.g. ''gpt-5.5''); ignored for a concrete ''provider/model'' id, which already names its provider. With model=''@edenai'' the platform chooses the model too: `quality_cost` steers that choice, and the provider fields apply whenever the chosen model is a provider-less name.'
model:
type: string
title: Model
description: provider/model, e.g. 'openai/whisper-1'
language:
anyOf:
- type: string
- type: 'null'
title: Language
description: ISO-639-1 language code of the input audio (e.g. 'en'). Omit to let the provider auto-detect where supported.
prompt:
anyOf:
- type: string
- type: 'null'
title: Prompt
description: Optional text to guide the model's style or continue a prior audio segment's context.
response_format:
anyOf:
- type: string
- type: 'null'
title: Response Format
description: 'Transcript format: ''json'', ''text'', ''srt'', ''verbose_json'', or ''vtt''. Provider support varies; forwarded as-is.'
timestamp_granularities:
anyOf:
- items:
type: string
type: array
- type: 'null'
title: Timestamp Granularities
description: Timestamp granularities to populate with 'verbose_json' (['word'] and/or ['segment']).
temperature:
anyOf:
- type: number
maximum: 1.0
minimum: 0.0
- type: 'null'
title: Temperature
description: Sampling temperature between 0 and 1.
user:
anyOf:
- type: string
- type: 'null'
title: User
description: End-user identifier for abuse tracking.
file_id:
anyOf:
- type: string
- type: 'null'
title: File Id
description: Id of a file previously uploaded to Eden AI.
file_url:
anyOf:
- type: string
- type: 'null'
title: File Url
description: An https URL or a base64 data URL pointing at the audio.
type: object
required:
- model
title: TranscriptionJsonBody
description: 'JSON request body, references the audio by ``file_id`` or ``file_url``.
Exactly one of ``file_id`` (an Eden upload id) or ``file_url`` (an https URL
or a ``data:audio/...;base64,...`` URL) must be set.'
required: true
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/TranscriptionResponse'
security:
- AuthBearer: []
servers:
- url: https://api.edenai.run
description: Production server
/v3/audio/transcriptions/models:
get:
tags:
- Audio
summary: List Transcription Models
description: List speech-to-text models available in the caller's region.
operationId: list_transcription_models_v3_audio_transcriptions_models_get
parameters:
- name: view
in: query
required: false
schema:
enum:
- endpoints
- models
type: string
description: How to group the listing. 'endpoints' (default) is one entry per provider/model id, unchanged. 'models' is one entry per routable model name with its provider endpoints nested underneath — send that name as `model` to let Eden AI choose the provider.
default: endpoints
title: View
description: How to group the listing. 'endpoints' (default) is one entry per provider/model id, unchanged. 'models' is one entry per routable model name with its provider endpoints nested underneath — send that name as `model` to let Eden AI choose the provider.
responses:
'200':
description: Successful Response
content:
application/json:
schema:
anyOf:
- $ref: '#/components/schemas/ListModelsResponse'
- $ref: '#/components/schemas/ListModelsWithEndpointsResponse'
title: Response List Transcription Models V3 Audio Transcriptions Models Get
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
servers:
- url: https://api.edenai.run
description: Production server
/v3/audio/speech:
post:
tags:
- Audio
summary: Audio Speech
description: 'OpenAI-compatible text-to-speech endpoint.
Accepts a JSON body (``model``, ``input``, ``voice`` plus optional
``response_format`` / ``speed`` / ``instructions``) and returns raw audio
bytes; ``cost`` and ``provider`` are returned in the ``x-edenai-*`` response
headers.'
operationId: audio_speech_v3_audio_speech_post
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/SpeechBody'
required: true
responses:
'200':
description: Successful Response
content:
application/json:
schema: {}
audio/mpeg:
schema:
type: string
format: binary
audio/ogg:
schema:
type: string
format: binary
audio/aac:
schema:
type: string
format: binary
audio/flac:
schema:
type: string
format: binary
audio/wav:
schema:
type: string
format: binary
audio/pcm:
schema:
type: string
format: binary
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
security:
- AuthBearer: []
servers:
- url: https://api.edenai.run
description: Production server
/v3/audio/speech/models:
get:
tags:
- Audio
summary: List Speech Models
description: List text-to-speech models available in the caller's region.
operationId: list_speech_models_v3_audio_speech_models_get
parameters:
- name: view
in: query
required: false
schema:
enum:
- endpoints
- models
type: string
description: How to group the listing. 'endpoints' (default) is one entry per provider/model id, unchanged. 'models' is one entry per routable model name with its provider endpoints nested underneath — send that name as `model` to let Eden AI choose the provider.
default: endpoints
title: View
description: How to group the listing. 'endpoints' (default) is one entry per provider/model id, unchanged. 'models' is one entry per routable model name with its provider endpoints nested underneath — send that name as `model` to let Eden AI choose the provider.
responses:
'200':
description: Successful Response
content:
application/json:
schema:
anyOf:
- $ref: '#/components/schemas/ListModelsResponse'
- $ref: '#/components/schemas/ListModelsWithEndpointsResponse'
title: Response List Speech Models V3 Audio Speech Models Get
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
servers:
- url: https://api.edenai.run
description: Production server
components:
schemas:
SpeechBody:
properties:
routing:
anyOf:
- $ref: '#/components/schemas/ProviderRoutingPreferences'
- type: 'null'
description: 'How to pick between the providers that serve the requested model. Applies when `model` is a model name with no provider prefix (e.g. ''gpt-5.5''); ignored for a concrete ''provider/model'' id, which already names its provider. With model=''@edenai'' the platform chooses the model too: `quality_cost` steers that choice, and the provider fields apply whenever the chosen model is a provider-less name.'
model:
type: string
title: Model
description: provider/model, e.g. 'openai/tts-1'
input:
type: string
title: Input
description: The text to synthesize into audio.
voice:
type: string
title: Voice
description: Voice preset, e.g. 'alloy'.
response_format:
anyOf:
- type: string
- type: 'null'
title: Response Format
description: 'Audio format: ''mp3'', ''opus'', ''aac'', ''flac'', ''wav'', or ''pcm''. Defaults to ''mp3''. Note: Gemini TTS models always return WAV and ignore this field.'
speed:
anyOf:
- type: number
- type: 'null'
title: Speed
description: Playback speed. OpenAI/Azure TTS accept 0.25-4.0; other providers may use a different range or ignore it.
instructions:
anyOf:
- type: string
- type: 'null'
title: Instructions
description: Optional guidance for voice and delivery style.
type: object
required:
- model
- input
- voice
title: SpeechBody
description: 'OpenAI-compatible text-to-speech request.
Synthesizes ``input`` text into audio with the given ``voice``. Unknown
top-level fields are dropped.'
TranscriptionResponse:
properties:
cost:
anyOf:
- type: number
- type: 'null'
title: Cost
provider:
anyOf:
- type: string
- type: 'null'
title: Provider
text:
anyOf:
- type: string
- type: 'null'
title: Text
usage:
anyOf:
- additionalProperties: true
type: object
- type: 'null'
title: Usage
additionalProperties: true
type: object
title: TranscriptionResponse
description: 'OpenAI-compatible transcription response, plus Eden ``cost`` / ``provider``.
The provider''s full transcript payload passes through — ``text`` plus any
``language``, ``duration``, ``words``, and ``segments`` the provider returns
— alongside the Eden-added ``cost`` and ``provider`` fields.'
Capabilities:
properties:
input_modalities:
items:
type: string
type: array
title: Input Modalities
output_modalities:
items:
type: string
type: array
title: Output Modalities
supports_reasoning:
type: boolean
title: Supports Reasoning
default: false
supports_web_search:
type: boolean
title: Supports Web Search
default: false
supports_tool_choice:
type: boolean
title: Supports Tool Choice
default: false
supports_computer_use:
type: boolean
title: Supports Computer Use
default: false
supports_prompt_caching:
type: boolean
title: Supports Prompt Caching
default: false
supports_response_schema:
type: boolean
title: Supports Response Schema
default: false
supports_system_messages:
type: boolean
title: Supports System Messages
default: false
supports_function_calling:
type: boolean
title: Supports Function Calling
default: false
supports_native_streaming:
type: boolean
title: Supports Native Streaming
default: false
supports_assistant_prefill:
type: boolean
title: Supports Assistant Prefill
default: false
supports_embedding_image_input:
type: boolean
title: Supports Embedding Image Input
default: false
supports_parallel_function_calling:
type: boolean
title: Supports Parallel Function Calling
default: false
additionalProperties: true
type: object
title: Capabilities
description: 'Model capability flags. Unknown flags are preserved so consumers keep working when
new capabilities are introduced without a coordinated release.'
ListModelsResponse:
properties:
object:
type: string
const: list
title: Object
description: Object type
default: list
data:
items:
$ref: '#/components/schemas/ModelObject'
type: array
title: Data
description: List of models
type: object
required:
- data
title: ListModelsResponse
description: List models response.
ValidationError:
properties:
loc:
items:
anyOf:
- type: string
- type: integer
type: array
title: Location
msg:
type: string
title: Message
type:
type: string
title: Error Type
type: object
required:
- loc
- msg
- type
title: ValidationError
ProviderRoutingPreferences:
properties:
sort:
anyOf:
- type: string
enum:
- cost
- speed
- latency
- exact
- type: 'null'
title: Sort
description: What to optimise for when several providers serve the requested model. 'cost' (default) picks the cheapest for this request's shape; 'speed' the highest tokens/second; 'latency' the fastest to first token; 'exact' the most reliable at producing well-formed tool calls / structured output. Health is always a filter first — no mode will route you to a failing provider. Can also be written as a model suffix, e.g. 'gpt-5.5:speed'.
sticky:
anyOf:
- type: boolean
- type: 'null'
title: Sticky
description: Keep a conversation on the provider holding its prompt cache. On by default, and only ever active for models whose providers discount cache reads. Set false to route every request independently on price instead. Naming an explicit `sort` also takes priority over cache affinity.
allow_fallbacks:
type: boolean
title: Allow Fallbacks
description: 'Whether other providers of the same model may be tried when the chosen one fails. Set false to pin the request to the single best provider: it then fails rather than silently moving to another seller. useful when a cache-warm prompt would cold-miss elsewhere. This governs PROVIDERS of the requested model only; models you list in `fallbacks` are your own choice and are always kept.'
default: true
quality_cost:
anyOf:
- type: integer
maximum: 10.0
minimum: 0.0
- type: 'null'
title: Quality Cost
description: 'Only with model=''@edenai'': how far to trade answer quality for cost when the platform chooses the MODEL. 0 asks for the best model for the request, 10 for the cheapest model that can still handle it, values in between blend the two; omit it to leave the choice to the platform (quality first). This is the one `routing` field that steers the model rather than the provider — `sort` never changes which model is chosen.'
allowed_providers:
anyOf:
- items:
type: string
type: array
- type: 'null'
title: Allowed Providers
description: Restrict routing to these providers, e.g. ['openai', 'anthropic']. Only providers that serve the requested model are considered, so an entry that does not sell it is simply inert. If none of them do, the request fails rather than falling back to a provider you excluded. Case-insensitive. Applies to routed providers only. a concrete 'provider/model' you named in `fallbacks` is your own choice and is kept.
type: object
title: ProviderRoutingPreferences
description: 'How to choose between SELLERS of one model — and, with ``@edenai``, how far to trade
quality for cost when the platform chooses the model.
The seller fields are only meaningful when `model` is a canonical name (`gpt-5.5`) rather than a concrete
`provider/model` — with a concrete id there is nothing to choose between. For choosing the
MODEL itself see ``router_candidates`` and ``model="@edenai"``, which is a different router;
``quality_cost`` below is the one field here that speaks to it.'
ModelWithEndpoints:
properties:
id:
type: string
title: Id
description: The routable model name, with no provider prefix (e.g. 'gpt-oss-120b'). Send this as `model` to let Eden AI choose which provider serves it.
object:
type: string
const: model
title: Object
description: Object type
default: model
created:
type: integer
title: Created
description: Unix timestamp of the newest endpoint serving this model
default: 0
owned_by:
type: string
title: Owned By
description: Who authored the model, independent of who sells it
default: ''
mode:
anyOf:
- type: string
- type: 'null'
title: Mode
description: 'What the model does: ''chat'', ''embedding'', ''stt'', ''tts'' or ''image_generation''. Lets a caller tell an LLM from a voice.'
endpoints:
items:
$ref: '#/components/schemas/ModelObject'
type: array
title: Endpoints
description: Every provider endpoint serving this model, each with its own pricing, context length, capabilities and regions.
endpoint_count:
type: integer
title: Endpoint Count
description: How many provider endpoints serve this model
readOnly: true
type: object
required:
- id
- endpoints
- endpoint_count
title: ModelWithEndpoints
description: 'One routable model name and the provider endpoints behind it.
Deliberately carries NO pricing, context window or capability of its own. Those vary between
the sellers of one model — `gpt-oss-120b` spans a 9.5x input-price range, two context lengths
and six distinct capability sets across ten sellers — so a value here would be wrong for most
of the group. Each endpoint keeps its own, unchanged.
``endpoints`` entries are the same :class:`ModelObject` the flat listing returns, field for
field, which is what makes this view a pure regrouping: a caller reading
``data[].endpoints[]`` sees exactly what it reads from ``data[]`` today.'
RegionObject:
properties:
code:
type: string
title: Code
description: Region code (e.g., 'us-east-1')
name:
type: string
title: Name
description: Region display name
type: object
required:
- code
- name
title: RegionObject
description: Region where a model is available.
HTTPValidationError:
properties:
detail:
items:
$ref: '#/components/schemas/ValidationError'
type: array
title: Detail
type: object
title: HTTPValidationError
ModelObject:
properties:
id:
type: string
title: Id
description: Model identifier (e.g., 'openai/gpt-4')
object:
type: string
const: model
title: Object
description: Object type
default: model
created:
type: integer
title: Created
description: Unix timestamp of model creation/release
owned_by:
type: string
title: Owned By
description: Provider/organization that owns the model
model_name:
type: string
title: Model Name
description: Model name without provider prefix
context_length:
anyOf:
- type: integer
- type: 'null'
title: Context Length
description: Maximum context length in tokens
description:
anyOf:
- type: string
- type: 'null'
title: Description
description: Model description
source:
anyOf:
- type: string
- type: 'null'
title: Source
description: Model source URL
capabilities:
$ref: '#/components/schemas/Capabilities'
description: Model capabilities
pricing:
additionalProperties: true
type: object
title: Pricing
description: Pricing information after any applicable discounts have been applied
list_pricing:
additionalProperties: true
type: object
title: List Pricing
description: Provider list pricing, before any discounts are applied
discount:
anyOf:
- type: number
- type: 'null'
title: Discount
description: Discount applied to the model (0-1 range)
regions:
items:
$ref: '#/components/schemas/RegionObject'
type: array
title: Regions
description: Regions where this model is available
alias_of:
anyOf:
- type: string
- type: 'null'
title: Alias Of
description: 'Set when this entry is an alias (e.g. ''gemini-pro-latest''): the real model_id it currently resolves to. None for concrete models.'
type: object
required:
- id
- created
- owned_by
- model_name
title: ModelObject
description: Extended model object with full metadata.
ListModelsWithEndpointsResponse:
properties:
object:
type: string
const: list
title: Object
description: Object type
default: list
data:
items:
$ref: '#/components/schemas/ModelWithEndpoints'
type: array
title: Data
description: List of routable models
type: object
required:
- data
title: ListModelsWithEndpointsResponse
description: '`?view=models` response: routable names, each with its provider endpoints.
Named for the public vocabulary rather than the internal one: Pydantic class names become
OpenAPI schema titles and generated SDK classes, and a caller never needs the word
"canonical" -- to them these are simply models, and the rows behind them endpoints.'
securitySchemes:
bearerAuth:
type: http
scheme: bearer
bearerFormat: API key
AuthBearer:
type: http
scheme: bearer
x-refined-from:
- eden-ai-openapi.yml
- eden-ai-v3-openapi.json