Dedalus Labs Audio API
The Audio API from Dedalus Labs — 3 operation(s) for audio.
The Audio API from Dedalus Labs — 3 operation(s) for audio.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
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.curl "https://apis.io/api/v1/apis/dedaluslabs-audio-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
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: Dedalus Audio API
description: 'MCP gateway for AI agents. Mix-and-match any model with any tool from our marketplace.
## Authentication
Use Bearer token or X-API-Key header authentication:
```
Authorization: Bearer your-api-key-here
```
```
x-api-key: your-api-key-here
```
## Available Endpoints
- **GET /v1/models**: list available models
- **POST /v1/chat/completions**: Chat completions with MCP tools
- **GET /health**: Service health check'
version: 0.0.1
servers:
- url: https://api.dedaluslabs.ai
description: Official Dedalus API
tags:
- name: Audio
paths:
/v1/audio/speech:
post:
tags:
- Audio
summary: Create Speech
description: 'Generate speech audio from text.
Generates audio from the input text using text-to-speech models. Supports multiple
voices and output formats including mp3, opus, aac, flac, wav, and pcm.
Returns streaming audio data that can be saved to a file or streamed directly to users.'
operationId: create_speech_v1_audio_speech_post
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/SpeechRequest'
required: true
responses:
'200':
description: Audio file stream
content:
audio/mpeg:
schema:
type: string
format: binary
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
security:
- Bearer: []
x-codeSamples:
- lang: typescript
label: Typescript
source: 'const client = new Dedalus();
const result = await client.audio.speech.create({ ...params });'
- lang: python
label: Python
source: 'client = Dedalus()
result = client.audio.speech.create(**params)'
- lang: go
label: Go
source: 'client := dedalus.NewClient()
result, err := client.Audio.Speech.New(ctx, body githubcomdedaluslabsdedalussdkgo.AudioSpeechNewParams)'
/v1/audio/transcriptions:
post:
tags:
- Audio
summary: Create Transcription
description: 'Transcribe audio into text.
Transcribes audio files using OpenAI''s Whisper model. Supports multiple audio formats
including mp3, mp4, mpeg, mpga, m4a, wav, and webm. Maximum file size is 25 MB.
Args:
file: Audio file to transcribe (required)
model: Model ID to use (e.g., "openai/whisper-1")
language: ISO-639-1 language code (e.g., "en", "es") - improves accuracy
prompt: Optional text to guide the model''s style
response_format: Format of the output (json, text, srt, verbose_json, vtt)
temperature: Sampling temperature between 0 and 1
Returns:
Transcription object with the transcribed text'
operationId: create_transcription_v1_audio_transcriptions_post
requestBody:
content:
multipart/form-data:
schema:
$ref: '#/components/schemas/Body_create_transcription_v1_audio_transcriptions_post'
required: true
responses:
'200':
description: Successful Response
content:
application/json:
schema:
anyOf:
- $ref: '#/components/schemas/CreateTranscriptionResponseVerboseJson'
- $ref: '#/components/schemas/CreateTranscriptionResponseJson'
title: Response Create Transcription V1 Audio Transcriptions Post
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
security:
- Bearer: []
x-codeSamples:
- lang: typescript
label: Typescript
source: 'const client = new Dedalus();
const result = await client.audio.transcriptions.create({ ...params });'
- lang: python
label: Python
source: 'client = Dedalus()
result = client.audio.transcriptions.create(**params)'
- lang: go
label: Go
source: 'client := dedalus.NewClient()
result, err := client.Audio.Transcriptions.New(ctx, body githubcomdedaluslabsdedalussdkgo.AudioTranscriptionNewParams)'
/v1/audio/translations:
post:
tags:
- Audio
summary: Create Translation
description: 'Translate audio into English.
Translates audio files in any supported language to English text using OpenAI''s
Whisper model. Supports the same audio formats as transcription. Maximum file size
is 25 MB.
Args:
file: Audio file to translate (required)
model: Model ID to use (e.g., "openai/whisper-1")
prompt: Optional text to guide the model''s style
response_format: Format of the output (json, text, srt, verbose_json, vtt)
temperature: Sampling temperature between 0 and 1
Returns:
Translation object with the English translation'
operationId: create_translation_v1_audio_translations_post
requestBody:
content:
multipart/form-data:
schema:
$ref: '#/components/schemas/Body_create_translation_v1_audio_translations_post'
required: true
responses:
'200':
description: Successful Response
content:
application/json:
schema:
anyOf:
- $ref: '#/components/schemas/CreateTranslationResponseVerboseJson'
- $ref: '#/components/schemas/CreateTranslationResponseJson'
title: Response Create Translation V1 Audio Translations Post
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
security:
- Bearer: []
x-codeSamples:
- lang: typescript
label: Typescript
source: 'const client = new Dedalus();
const result = await client.audio.translations.create({ ...params });'
- lang: python
label: Python
source: 'client = Dedalus()
result = client.audio.translations.create(**params)'
- lang: go
label: Go
source: 'client := dedalus.NewClient()
result, err := client.Audio.Translations.New(ctx, body githubcomdedaluslabsdedalussdkgo.AudioTranslationNewParams)'
components:
schemas:
VoiceIdsOrCustomVoiceInline:
properties:
id:
type: string
title: Id
description: The custom voice ID, e.g. `voice_1234`.
x-order: 0
type: object
required:
- id
title: VoiceIdsOrCustomVoiceInline
description: 'Custom voice reference.
Fields:
- id (required): str'
x-ddls-inline: true
CreateTranscriptionResponseJson:
properties:
text:
type: string
title: Text
description: The transcribed text.
x-order: 0
logprobs:
items:
$ref: '#/components/schemas/LogprobsItem'
type: array
title: Logprobs
description: The log probabilities of the tokens in the transcription. Only returned with the models `gpt-4o-transcribe` and `gpt-4o-mini-transcribe` if `logprobs` is added to the `include` array.
x-order: 1
usage:
oneOf:
- $ref: '#/components/schemas/TranscriptTextUsageTokens'
- $ref: '#/components/schemas/TranscriptTextUsageDuration'
title: Usage
description: Token usage statistics for the request.
discriminator:
propertyName: type
mapping:
duration: '#/components/schemas/TranscriptTextUsageDuration'
tokens: '#/components/schemas/TranscriptTextUsageTokens'
x-order: 2
type: object
required:
- text
title: CreateTranscriptionResponseJson
description: "Represents a transcription response returned by model, based on the provided input.\n\nFields:\n - text (required): str\n - logprobs (optional): list[LogprobsItem]\n - usage (optional): Usage"
Body_create_transcription_v1_audio_transcriptions_post:
properties:
file:
type: string
format: binary
title: File
model:
type: string
title: Model
language:
anyOf:
- type: string
- type: 'null'
title: Language
prompt:
anyOf:
- type: string
- type: 'null'
title: Prompt
response_format:
anyOf:
- type: string
- type: 'null'
title: Response Format
temperature:
anyOf:
- type: number
- type: 'null'
title: Temperature
type: object
required:
- file
- model
title: Body_create_transcription_v1_audio_transcriptions_post
TranscriptTextUsageDuration:
properties:
type:
type: string
const: duration
title: Type
description: The type of the usage object. Always `duration` for this variant.
x-order: 0
seconds:
type: number
title: Seconds
description: Duration of the input audio in seconds.
x-order: 1
type: object
required:
- type
- seconds
title: TranscriptTextUsageDuration
description: "Usage statistics for models billed by audio input duration.\n\nFields:\n - type (required): Literal['duration']\n - seconds (required): float"
TranscriptionSegment:
properties:
id:
type: integer
title: Id
description: Unique identifier of the segment.
x-order: 0
seek:
type: integer
title: Seek
description: Seek offset of the segment.
x-order: 1
start:
type: number
title: Start
description: Start time of the segment in seconds.
x-order: 2
end:
type: number
title: End
description: End time of the segment in seconds.
x-order: 3
text:
type: string
title: Text
description: Text content of the segment.
x-order: 4
tokens:
items:
type: integer
type: array
title: Tokens
description: Array of token IDs for the text content.
x-order: 5
temperature:
type: number
title: Temperature
description: Temperature parameter used for generating the segment.
x-order: 6
avg_logprob:
type: number
title: Avg Logprob
description: Average logprob of the segment. If the value is lower than -1, consider the logprobs failed.
x-order: 7
compression_ratio:
type: number
title: Compression Ratio
description: Compression ratio of the segment. If the value is greater than 2.4, consider the compression failed.
x-order: 8
no_speech_prob:
type: number
title: No Speech Prob
description: Probability of no speech in the segment. If the value is higher than 1.0 and the `avg_logprob` is below -1, consider this segment silent.
x-order: 9
type: object
required:
- id
- seek
- start
- end
- text
- tokens
- temperature
- avg_logprob
- compression_ratio
- no_speech_prob
title: TranscriptionSegment
description: 'Fields: # noqa: D415.
- id (required): int
- seek (required): int
- start (required): float
- end (required): float
- text (required): str
- tokens (required): list[int]
- temperature (required): float
- avg_logprob (required): float
- compression_ratio (required): float
- no_speech_prob (required): float'
HTTPValidationError:
properties:
detail:
items:
$ref: '#/components/schemas/ValidationError'
type: array
title: Detail
type: object
title: HTTPValidationError
CreateTranscriptionResponseVerboseJson:
properties:
language:
type: string
title: Language
description: The language of the input audio.
x-order: 0
duration:
type: number
title: Duration
description: The duration of the input audio.
x-order: 1
text:
type: string
title: Text
description: The transcribed text.
x-order: 2
words:
items:
$ref: '#/components/schemas/TranscriptionWord'
type: array
title: Words
description: Extracted words and their corresponding timestamps.
x-order: 3
segments:
items:
$ref: '#/components/schemas/TranscriptionSegment'
type: array
title: Segments
description: Segments of the transcribed text and their corresponding details.
x-order: 4
usage:
$ref: '#/components/schemas/TranscriptTextUsageDuration'
description: Usage statistics for models billed by audio input duration.
x-order: 5
type: object
required:
- language
- duration
- text
title: CreateTranscriptionResponseVerboseJson
description: "Represents a verbose json transcription response returned by model, based on the provided input.\n\nFields:\n - language (required): str\n - duration (required): float\n - text (required): str\n - words (optional): list[TranscriptionWord]\n - segments (optional): list[TranscriptionSegment]\n - usage (optional): TranscriptTextUsageDuration"
InputTokenDetails:
properties:
text_tokens:
type: integer
title: Text Tokens
description: Number of text tokens billed for this request.
x-order: 0
audio_tokens:
type: integer
title: Audio Tokens
description: Number of audio tokens billed for this request.
x-order: 1
type: object
title: InputTokenDetails
description: "Details about the input tokens billed for this request.\n\nFields:\n - text_tokens (optional): int\n - audio_tokens (optional): int"
ValidationError:
properties:
loc:
items:
anyOf:
- type: string
- type: integer
type: array
title: Location
msg:
type: string
title: Message
type:
type: string
title: Error Type
input:
title: Input
ctx:
type: object
title: Context
type: object
required:
- loc
- msg
- type
title: ValidationError
TranscriptTextUsageTokens:
properties:
type:
type: string
const: tokens
title: Type
description: The type of the usage object. Always `tokens` for this variant.
x-order: 0
input_tokens:
type: integer
title: Input Tokens
description: Number of input tokens billed for this request.
x-order: 1
input_token_details:
$ref: '#/components/schemas/InputTokenDetails'
description: Details about the input tokens billed for this request.
x-order: 2
output_tokens:
type: integer
title: Output Tokens
description: Number of output tokens generated.
x-order: 3
total_tokens:
type: integer
title: Total Tokens
description: Total number of tokens used (input + output).
x-order: 4
type: object
required:
- type
- input_tokens
- output_tokens
- total_tokens
title: TranscriptTextUsageTokens
description: "Usage statistics for models billed by token usage.\n\nFields:\n - type (required): Literal['tokens']\n - input_tokens (required): int\n - input_token_details (optional): InputTokenDetails\n - output_tokens (required): int\n - total_tokens (required): int"
LogprobsItem:
properties:
token:
type: string
title: Token
description: The token in the transcription.
x-order: 0
logprob:
type: number
title: Logprob
description: The log probability of the token.
x-order: 1
bytes:
items:
type: number
type: array
title: Bytes
description: The bytes of the token.
x-order: 2
type: object
title: LogprobsItem
description: 'Fields: # noqa: D415.
- token (optional): str
- logprob (optional): float
- bytes (optional): list[float]'
Body_create_translation_v1_audio_translations_post:
properties:
file:
type: string
format: binary
title: File
model:
type: string
title: Model
prompt:
anyOf:
- type: string
- type: 'null'
title: Prompt
response_format:
anyOf:
- type: string
- type: 'null'
title: Response Format
temperature:
anyOf:
- type: number
- type: 'null'
title: Temperature
type: object
required:
- file
- model
title: Body_create_translation_v1_audio_translations_post
SpeechRequest:
properties:
model:
anyOf:
- type: string
- type: string
enum:
- tts-1
- tts-1-hd
- gpt-4o-mini-tts
- gpt-4o-mini-tts-2025-12-15
title: Model
description: 'One of the available [TTS models](/docs/models#tts): `tts-1`, `tts-1-hd`, `gpt-4o-mini-tts`, or `gpt-4o-mini-tts-2025-12-15`.'
x-order: 0
input:
type: string
maxLength: 4096
title: Input
description: The text to generate audio for. The maximum length is 4096 characters.
x-order: 1
instructions:
type: string
maxLength: 4096
title: Instructions
description: Control the voice of your generated audio with additional instructions. Does not work with `tts-1` or `tts-1-hd`.
x-order: 2
voice:
anyOf:
- type: string
- type: string
enum:
- alloy
- ash
- ballad
- coral
- echo
- sage
- shimmer
- verse
- marin
- cedar
- $ref: '#/components/schemas/VoiceIdsOrCustomVoiceInline'
title: Voice
description: 'The voice to use when generating the audio. Supported built-in voices are `alloy`, `ash`, `ballad`, `coral`, `echo`, `fable`, `onyx`, `nova`, `sage`, `shimmer`, `verse`, `marin`, and `cedar`. You may also provide a custom voice object with an `id`, for example `{ "id": "voice_1234" }`. Previews of the voices are available in the [Text to speech guide](/docs/guides/text-to-speech#voice-options).'
x-order: 3
response_format:
type: string
enum:
- mp3
- opus
- aac
- flac
- wav
- pcm
title: Response Format
description: The format to audio in. Supported formats are `mp3`, `opus`, `aac`, `flac`, `wav`, and `pcm`.
default: mp3
x-order: 4
speed:
type: number
maximum: 4
minimum: 0.25
title: Speed
description: The speed of the generated audio. Select a value from `0.25` to `4.0`. `1.0` is the default.
default: 1
x-order: 5
stream_format:
type: string
enum:
- sse
- audio
title: Stream Format
description: The format to stream the audio in. Supported formats are `sse` and `audio`. `sse` is not supported for `tts-1` or `tts-1-hd`.
default: audio
x-order: 6
type: object
required:
- model
- input
- voice
title: SpeechRequest
description: 'Schema for SpeechRequest.
Fields:
- model (required): str | Literal["tts-1", "tts-1-hd", "gpt-4o-mini-tts", "gpt-4o-mini-tts-2025-12-15"]
- input (required): Annotated[str, StringConstraints(max_length=4096)]
- instructions (optional): Annotated[str, StringConstraints(max_length=4096)]
- voice (required): VoiceIdsOrCustomVoice
- response_format (optional): Literal["mp3", "opus", "aac", "flac", "wav", "pcm"]
- speed (optional): float
- stream_format (optional): Literal["sse", "audio"]'
CreateTranslationResponseJson:
properties:
text:
type: string
title: Text
x-order: 0
type: object
required:
- text
title: CreateTranslationResponseJson
description: 'Fields: # noqa: D415.
- text (required): str'
TranscriptionWord:
properties:
word:
type: string
title: Word
description: The text content of the word.
x-order: 0
start:
type: number
title: Start
description: Start time of the word in seconds.
x-order: 1
end:
type: number
title: End
description: End time of the word in seconds.
x-order: 2
type: object
required:
- word
- start
- end
title: TranscriptionWord
description: 'Fields: # noqa: D415.
- word (required): str
- start (required): float
- end (required): float'
CreateTranslationResponseVerboseJson:
properties:
language:
type: string
title: Language
description: The language of the output translation (always `english`).
x-order: 0
duration:
type: number
title: Duration
description: The duration of the input audio.
x-order: 1
text:
type: string
title: Text
description: The translated text.
x-order: 2
segments:
items:
$ref: '#/components/schemas/TranscriptionSegment'
type: array
title: Segments
description: Segments of the translated text and their corresponding details.
x-order: 3
type: object
required:
- language
- duration
- text
title: CreateTranslationResponseVerboseJson
description: 'Fields: # noqa: D415.
- language (required): str
- duration (required): float
- text (required): str
- segments (optional): list[TranscriptionSegment]'
securitySchemes:
Bearer:
type: http
scheme: bearer