Gladia Pre-recorded V2 API
The Pre-recorded V2 API from Gladia — 3 operation(s) for pre-recorded v2.
The Pre-recorded V2 API from Gladia — 3 operation(s) for pre-recorded v2.
openapi: 3.0.3
info:
title: Gladia Control AudioToText Pre-recorded V2 API
description: Gladia AI audio infrastructure API for speech-to-text transcription via REST and WebSocket. Supports asynchronous pre-recorded audio processing and real-time live transcription with speaker diarization, automatic language detection across 100+ languages, and audio intelligence features.
version: '1.0'
contact: {}
servers:
- url: https://api.gladia.io/
description: Gladia API production URL
tags:
- name: Pre-recorded V2
paths:
/v2/pre-recorded:
post:
operationId: PreRecordedController_initPreRecordedJob_v2
parameters: []
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/InitTranscriptionRequest'
responses:
'201':
description: The pre recorded job has been initiated
content:
application/json:
schema:
$ref: '#/components/schemas/InitPreRecordedTranscriptionResponse'
'400':
description: Something is wrong with the request
content:
application/json:
schema:
$ref: '#/components/schemas/BadRequestErrorResponse'
'401':
description: You don't have the permissions to initiate a new pre recorded job
content:
application/json:
schema:
$ref: '#/components/schemas/UnauthorizedErrorResponse'
'422':
description: The parameters you gave are incorrect
content:
application/json:
schema:
$ref: '#/components/schemas/UnprocessableEntityErrorResponse'
security:
- x_gladia_key: []
summary: Initiate a new pre recorded job
tags:
- Pre-recorded V2
get:
operationId: PreRecordedController_getPreRecordedJobs_v2
parameters:
- name: offset
required: false
in: query
description: The starting point for pagination. A value of 0 starts from the first item.
schema:
minimum: 0
default: 0
type: integer
- name: limit
required: false
in: query
description: The maximum number of items to return. Useful for pagination and controlling data payload size.
schema:
minimum: 1
default: 20
type: integer
- name: date
required: false
in: query
description: Filter items relevant to a specific date in ISO format (YYYY-MM-DD).
schema:
format: date-time
example: '2026-06-12'
type: string
- name: before_date
required: false
in: query
description: Include items that occurred before the specified date in ISO format.
schema:
format: date-time
example: '2026-06-12T21:00:09.947Z'
type: string
- name: after_date
required: false
in: query
description: Filter for items after the specified date. Use with `before_date` for a range. Date in ISO format.
schema:
format: date-time
example: '2026-06-12T21:00:09.947Z'
type: string
- name: status
required: false
in: query
description: Filter the list based on item status. Accepts multiple values from the predefined list.
schema:
example:
- done
type: array
items:
type: string
enum:
- queued
- processing
- done
- error
- name: custom_metadata
required: false
in: query
schema:
additionalProperties: true
example:
user: John Doe
type: object
responses:
'200':
description: A list of pre recorded jobs matching the parameters.
content:
application/json:
schema:
$ref: '#/components/schemas/ListPreRecordedResponse'
'401':
description: You don't have the permissions to access pre recorded jobs
content:
application/json:
schema:
$ref: '#/components/schemas/UnauthorizedErrorResponse'
security:
- x_gladia_key: []
summary: Get pre recorded jobs based on query parameters
tags:
- Pre-recorded V2
/v2/pre-recorded/{id}:
get:
operationId: PreRecordedController_getPreRecordedJob_v2
parameters:
- name: id
required: true
in: path
description: Id of the pre recorded job
schema:
example: 45463597-20b7-4af7-b3b3-f5fb778203ab
type: string
responses:
'200':
description: The pre recorded job's metadata
content:
application/json:
schema:
$ref: '#/components/schemas/PreRecordedResponse'
'401':
description: You don't have the permissions to access the pre recorded job
content:
application/json:
schema:
$ref: '#/components/schemas/UnauthorizedErrorResponse'
'404':
description: The pre recorded job doesn't exist or has been deleted
content:
application/json:
schema:
$ref: '#/components/schemas/NotFoundErrorResponse'
security:
- x_gladia_key: []
summary: Get the pre recorded job's metadata
tags:
- Pre-recorded V2
delete:
operationId: PreRecordedController_deletePreRecordedJob_v2
parameters:
- name: id
required: true
in: path
description: Id of the pre recorded job
schema:
example: 45463597-20b7-4af7-b3b3-f5fb778203ab
type: string
responses:
'202':
description: The pre recorded job has been successfully deleted
'401':
description: You don't have the permissions to delete this pre recorded job
content:
application/json:
schema:
$ref: '#/components/schemas/UnauthorizedErrorResponse'
'403':
description: The pre recorded job is not in a deletable state
content:
application/json:
schema:
$ref: '#/components/schemas/ForbiddenErrorResponse'
'404':
description: The pre recorded job doesn't exist or has been deleted
content:
application/json:
schema:
$ref: '#/components/schemas/NotFoundErrorResponse'
security:
- x_gladia_key: []
summary: Delete the pre recorded job
tags:
- Pre-recorded V2
/v2/pre-recorded/{id}/file:
get:
operationId: PreRecordedController_getAudio_v2
parameters:
- name: id
required: true
in: path
description: Id of the pre recorded job
schema:
example: 45463597-20b7-4af7-b3b3-f5fb778203ab
type: string
responses:
'200':
description: The audio file used for this pre recorded job
content:
application/octet-stream:
schema:
type: string
format: binary
example: <binary>
'401':
description: You don't have the permissions to access this pre recorded job or its audio file
content:
application/json:
schema:
$ref: '#/components/schemas/UnauthorizedErrorResponse'
'404':
description: The pre recorded job or its audio file doesn't exist or has been deleted
content:
application/json:
schema:
$ref: '#/components/schemas/NotFoundErrorResponse'
security:
- x_gladia_key: []
summary: Download the audio file used for this pre recorded job
tags:
- Pre-recorded V2
components:
schemas:
StructuredDataExtractionDTO:
type: object
properties:
success:
type: boolean
description: The audio intelligence model succeeded to get a valid output
is_empty:
type: boolean
description: The audio intelligence model returned an empty value
exec_time:
type: number
description: Time audio intelligence model took to complete the task
error:
description: '`null` if `success` is `true`. Contains the error details of the failed model'
nullable: true
allOf:
- $ref: '#/components/schemas/AddonErrorDTO'
results:
type: string
description: If `structured_data_extraction` has been enabled, results of the AI structured data extraction for the defined classes.
required:
- success
- is_empty
- exec_time
- error
- results
SubtitlesConfigDTO:
type: object
properties:
formats:
type: array
description: Subtitles formats you want your transcription to be formatted to
default:
- srt
minItems: 1
example:
- srt
items:
$ref: '#/components/schemas/SubtitlesFormatEnum'
minimum_duration:
type: number
description: Minimum duration of a subtitle in seconds
minimum: 0
maximum_duration:
type: number
description: Maximum duration of a subtitle in seconds
minimum: 1
maximum: 30
maximum_characters_per_row:
type: integer
description: Maximum number of characters per row in a subtitle
minimum: 1
maximum_rows_per_caption:
type: integer
description: Maximum number of rows per caption
minimum: 1
maximum: 5
style:
description: 'Style of the subtitles. Compliance mode refers to : https://loc.gov/preservation/digital/formats//fdd/fdd000569.shtml#:~:text=SRT%20files%20are%20basic%20text,alongside%2C%20example%3A%20%22MyVideo123'
default: default
allOf:
- $ref: '#/components/schemas/SubtitlesStyleEnum'
DiarizationDTO:
type: object
properties:
success:
type: boolean
description: The audio intelligence model succeeded to get a valid output
is_empty:
type: boolean
description: The audio intelligence model returned an empty value
exec_time:
type: number
description: Time audio intelligence model took to complete the task
error:
description: '`null` if `success` is `true`. Contains the error details of the failed model'
nullable: true
allOf:
- $ref: '#/components/schemas/AddonErrorDTO'
results:
description: '[Deprecated] If `diarization` has been enabled, the diarization result will appear here'
type: array
items:
$ref: '#/components/schemas/UtteranceDTO'
required:
- success
- is_empty
- exec_time
- error
- results
NamedEntityRecognitionResult:
type: object
properties:
entity_type:
type: string
text:
type: string
start:
type: number
end:
type: number
required:
- entity_type
- text
- start
- end
NamedEntityRecognitionDTO:
type: object
properties:
success:
type: boolean
description: The audio intelligence model succeeded to get a valid output
is_empty:
type: boolean
description: The audio intelligence model returned an empty value
exec_time:
type: number
description: Time audio intelligence model took to complete the task
error:
description: '`null` if `success` is `true`. Contains the error details of the failed model'
nullable: true
allOf:
- $ref: '#/components/schemas/AddonErrorDTO'
results:
description: If `named_entity_recognition` has been enabled, the detected entities.
nullable: true
type: array
items:
$ref: '#/components/schemas/NamedEntityRecognitionResult'
required:
- success
- is_empty
- exec_time
- error
- results
WordDTO:
type: object
properties:
word:
type: string
description: Spoken word
start:
type: number
description: Start timestamps in seconds of the spoken word
end:
type: number
description: End timestamps in seconds of the spoken word
confidence:
type: number
description: Confidence on the transcribed word (1 = 100% confident)
required:
- word
- start
- end
- confidence
SummarizationConfigDTO:
type: object
properties:
type:
description: The type of summarization to apply
default: general
allOf:
- $ref: '#/components/schemas/SummaryTypesEnum'
SummarizationDTO:
type: object
properties:
success:
type: boolean
description: The audio intelligence model succeeded to get a valid output
is_empty:
type: boolean
description: The audio intelligence model returned an empty value
exec_time:
type: number
description: Time audio intelligence model took to complete the task
error:
description: '`null` if `success` is `true`. Contains the error details of the failed model'
nullable: true
allOf:
- $ref: '#/components/schemas/AddonErrorDTO'
results:
type: string
description: If `summarization` has been enabled, summary of the transcription
nullable: true
required:
- success
- is_empty
- exec_time
- error
- results
TranscriptionLanguageCodeEnum:
type: string
enum:
- af
- am
- ar
- as
- az
- ba
- be
- bg
- bn
- bo
- br
- bs
- ca
- cs
- cy
- da
- de
- el
- en
- es
- et
- eu
- fa
- fi
- fo
- fr
- gl
- gu
- ha
- haw
- he
- hi
- hr
- ht
- hu
- hy
- id
- is
- it
- ja
- jw
- ka
- kk
- km
- kn
- ko
- la
- lb
- ln
- lo
- lt
- lv
- mg
- mi
- mk
- ml
- mn
- mr
- ms
- mt
- my
- ne
- nl
- nn
- 'no'
- oc
- pa
- pl
- ps
- pt
- ro
- ru
- sa
- sd
- si
- sk
- sl
- sn
- so
- sq
- sr
- su
- sv
- sw
- ta
- te
- tg
- th
- tk
- tl
- tr
- tt
- uk
- ur
- uz
- vi
- yi
- yo
- zh
description: Specify the language in which it will be pronounced when sound comparison occurs. Default to transcription language.
SentimentAnalysisDTO:
type: object
properties:
success:
type: boolean
description: The audio intelligence model succeeded to get a valid output
is_empty:
type: boolean
description: The audio intelligence model returned an empty value
exec_time:
type: number
description: Time audio intelligence model took to complete the task
error:
description: '`null` if `success` is `true`. Contains the error details of the failed model'
nullable: true
allOf:
- $ref: '#/components/schemas/AddonErrorDTO'
results:
type: string
description: If `sentiment_analysis` has been enabled, Gladia will analyze the sentiments and emotions of the audio
required:
- success
- is_empty
- exec_time
- error
- results
InitPreRecordedTranscriptionResponse:
type: object
properties:
id:
type: string
description: Id of the job
format: uuid
example: 45463597-20b7-4af7-b3b3-f5fb778203ab
result_url:
type: string
description: Prebuilt URL with your transcription `id` to fetch the result
example: https://api.gladia.io/v2/transcription/45463597-20b7-4af7-b3b3-f5fb778203ab
format: uri
required:
- id
- result_url
FileResponse:
type: object
properties:
id:
type: string
description: The file id
filename:
type: string
nullable: true
description: The name of the uploaded file
source:
type: string
nullable: true
description: The link used to download the file if audio_url was used
audio_duration:
type: number
nullable: true
description: Duration of the audio file
example: 3600
number_of_channels:
type: integer
nullable: true
description: Number of channels in the audio file
minimum: 1
example: 1
required:
- id
- filename
- source
- audio_duration
- number_of_channels
UnprocessableEntityErrorResponse:
type: object
properties:
timestamp:
type: string
description: Date of when the error occurred
example: '2023-12-28T09:04:17.210Z'
path:
type: string
description: Path to the API endpoint
example: /v2/transcription/45463597-20b7-4af7-b3b3-f5fb778203ab
request_id:
type: string
description: Debug id
example: G-821fe9df
statusCode:
type: number
description: HTTP status code of the error
example: 422
message:
type: string
description: Error message
example: Invalid parameter
required:
- timestamp
- path
- request_id
- statusCode
- message
NotFoundErrorResponse:
type: object
properties:
timestamp:
type: string
description: Date of when the error occurred
example: '2023-12-28T09:04:17.210Z'
path:
type: string
description: Path to the API endpoint
example: /v2/transcription/45463597-20b7-4af7-b3b3-f5fb778203ab
request_id:
type: string
description: Debug id
example: G-821fe9df
statusCode:
type: number
description: HTTP status code of the error
example: 404
message:
type: string
description: Error message
example: Not found
required:
- timestamp
- path
- request_id
- statusCode
- message
DisplayModeDTO:
type: object
properties:
success:
type: boolean
description: The audio intelligence model succeeded to get a valid output
is_empty:
type: boolean
description: The audio intelligence model returned an empty value
exec_time:
type: number
description: Time audio intelligence model took to complete the task
error:
description: '`null` if `success` is `true`. Contains the error details of the failed model'
nullable: true
allOf:
- $ref: '#/components/schemas/AddonErrorDTO'
results:
description: If `display_mode` has been enabled, proposes an alternative display output.
nullable: true
type: array
items:
type: string
required:
- success
- is_empty
- exec_time
- error
- results
BadRequestErrorResponse:
type: object
properties:
timestamp:
type: string
description: Date of when the error occurred
example: '2023-12-28T09:04:17.210Z'
path:
type: string
description: Path to the API endpoint
example: /v2/transcription/45463597-20b7-4af7-b3b3-f5fb778203ab
request_id:
type: string
description: Debug id
example: G-821fe9df
statusCode:
type: number
description: HTTP status code of the error
example: 400
message:
type: string
description: Error message
example: Content-Type is missing Multipart Boundary.
validation_errors:
description: List of validation errors, if any
example:
- Field "language" must be a string
- Field "min_speakers" must be a number
type: array
items:
type: string
required:
- timestamp
- path
- request_id
- statusCode
- message
PiiRedactionConfigDTO:
type: object
properties:
entity_types:
description: The entity types to redact
example:
- GDPR
- HEALTH_INFORMATION
- HIPAA_SAFE_HARBOR
- QUEBEC_PRIVACY_ACT
- EMAIL_ADDRESS
- NAME
- PHONE_NUMBER
allOf:
- $ref: '#/components/schemas/PiiRedactionEntityTypeEnum'
processed_text_type:
type: string
description: The type of processed text to return (marker or mask)
enum:
- MARKER
- MASK
example: MARKER
UtteranceDTO:
type: object
properties:
start:
type: number
description: Start timestamp in seconds of this utterance
end:
type: number
description: End timestamp in seconds of this utterance
confidence:
type: number
description: Confidence on the transcribed utterance (1 = 100% confident)
channel:
type: integer
description: Audio channel of where this utterance has been transcribed from
minimum: 0
speaker:
type: integer
description: If `diarization` enabled, speaker identification number
minimum: 0
words:
description: List of words of the utterance, split by timestamp
type: array
items:
$ref: '#/components/schemas/WordDTO'
text:
type: string
description: Transcription for this utterance
language:
description: Spoken language in this utterance
example: en
allOf:
- $ref: '#/components/schemas/TranscriptionLanguageCodeEnum'
required:
- start
- end
- confidence
- channel
- words
- text
- language
AudioToLlmListConfigDTO:
type: object
properties:
prompts:
description: The list of prompts applied on the audio transcription
example:
- Extract the key points from the transcription
minItems: 1
type: array
items:
type: array
model:
type: string
description: The model to use for the prompt execution. You can find the list of supported models [here](https://openrouter.ai/models).
default: openai/gpt-5.4-nano
required:
- prompts
InitTranscriptionRequest:
type: object
properties:
custom_vocabulary:
type: boolean
description: '**[Beta]** Can be either boolean to enable custom_vocabulary for this audio or an array with specific vocabulary list to feed the transcription model with'
default: false
custom_vocabulary_config:
description: '**[Beta]** Custom vocabulary configuration, if `custom_vocabulary` is enabled'
allOf:
- $ref: '#/components/schemas/CustomVocabularyConfigDTO'
callback_url:
type: string
description: '**[Deprecated]** Use `callback`/`callback_config` instead. Callback URL we will do a `POST` request to with the result of the transcription'
example: http://callback.example
format: uri
deprecated: true
callback:
type: boolean
description: Enable callback for this transcription. If true, the `callback_config` property will be used to customize the callback behaviour
default: false
callback_config:
description: Customize the callback behaviour (url and http method)
allOf:
- $ref: '#/components/schemas/CallbackConfigDto'
subtitles:
type: boolean
description: Enable subtitles generation for this transcription
default: false
subtitles_config:
description: Configuration for subtitles generation if `subtitles` is enabled
allOf:
- $ref: '#/components/schemas/SubtitlesConfigDTO'
diarization:
type: boolean
description: Enable speaker recognition (diarization) for this audio
default: false
diarization_config:
description: Speaker recognition configuration, if `diarization` is enabled
allOf:
- $ref: '#/components/schemas/DiarizationConfigDTO'
translation:
type: boolean
description: '**[Beta]** Enable translation for this audio'
default: false
translation_config:
description: '**[Beta]** Translation configuration, if `translation` is enabled'
allOf:
- $ref: '#/components/schemas/TranslationConfigDTO'
summarization:
type: boolean
description: Enable summarization for this audio
default: false
summarization_config:
description: Summarization configuration, if `summarization` is enabled
allOf:
- $ref: '#/components/schemas/SummarizationConfigDTO'
named_entity_recognition:
type: boolean
description: '**[Alpha]** Enable named entity recognition for this audio'
default: false
custom_spelling:
type: boolean
description: '**[Alpha]** Enable custom spelling for this audio'
default: false
custom_spelling_config:
description: '**[Alpha]** Custom spelling configuration, if `custom_spelling` is enabled'
allOf:
- $ref: '#/components/schemas/CustomSpellingConfigDTO'
sentiment_analysis:
type: boolean
description: Enable sentiment analysis for this audio
default: false
audio_to_llm:
type: boolean
description: Enable audio to LLM processing for this audio
default: false
audio_to_llm_config:
description: Audio to LLM configuration, if `audio_to_llm` is enabled
allOf:
- $ref: '#/components/schemas/AudioToLlmListConfigDTO'
pii_redaction:
type: boolean
description: Enable PII redaction for this audio
default: false
pii_redaction_config:
description: PII redaction configuration, if `pii_redaction` is enabled
allOf:
- $ref: '#/components/schemas/PiiRedactionConfigDTO'
custom_metadata:
type: object
description: Custom metadata you can attach to this transcription
example:
user: John Doe
additionalProperties: true
sentences:
type: boolean
description: Enable sentences for this audio
default: false
punctuation_enhanced:
type: boolean
description: '**[Alpha]** Use enhanced punctuation for this audio'
default: false
language_config:
description: Specify the language configuration
allOf:
- $ref: '#/components/schemas/LanguageConfig'
audio_url:
type: string
description: URL to a Gladia file or to an external audio or video file
example: http://files.gladia.io/example/audio-transcription/split_infinity.wav
format: uri
required:
- audio_url
SubtitleDTO:
type: object
properties:
format:
description: Format of the current subtitle
example: srt
allOf:
- $ref: '#/components/schemas/SubtitlesFormatEnum'
subtitles:
type: string
description: Transcription on the asked subtitle format
required:
- format
- subtitles
TranscriptionDTO:
type: object
properties:
full_transcript:
type: string
description: All transcription on text format without any other information
languages:
type: array
description: All the detected languages in the audio sorted from the most detected to the less detected
example:
- en
items:
$ref: '#/components/schemas/TranscriptionLanguageCodeEnum'
sentences:
description: If `sentences` has been enabled, sentences results
type: array
items:
$ref: '#/components/schemas/SentencesDTO'
subtitles:
description: If `subtitles` has been enabled, subtitles results
type: array
items:
$ref: '#/components/schemas/SubtitleDTO'
utterances:
description: Transcribed speech utterances present in the audio
type: array
items:
$ref: '#/components/schemas/UtteranceDTO'
required:
- full_transcript
- languages
- utterances
CallbackMethodEnum:
type: string
enum:
- POST
- PUT
description: 'The HTTP method to be used. Allowed values are `POST` or `PUT` (default: `POST`)'
CustomVocabularyConfigDTO:
type: object
properties:
vocabulary:
type: array
description: 'Specific vocabulary list to feed the transcription model with. Each item can be a string or an object with the following properties: value, intensity, pronunciations, language.'
example:
- Westeros
- value: Stark
- value: Night's Watch
pronunciations:
- Nightz Watch
intensity: 0.4
language: en
items:
oneOf:
- $ref: '#/components/schemas/CustomVocabularyEntryDTO'
- type: string
default_intensity:
type: number
description: Default intensity for the custom vocabulary
example: 0.5
minimum: 0
maximum: 1
required:
- vocabulary
TranscriptionResultDTO:
type: object
properties:
metadata:
description: Metadata for the given transcription & audio file
allOf:
- $ref: '#/components/schemas/TranscriptionMetadataDTO'
transcription:
description: Transcription of the audio speech
allOf:
- $ref: '#/components/schemas/TranscriptionDTO'
translation:
description: If `translation` has been enabled, translation of the audio speech transcription
allOf:
- $ref: '#/components/schemas/TranslationDTO'
summarization:
description: If `summarization` has been enabled, summarization of the audio speech transcription
allOf:
- $ref: '#/components/schemas/SummarizationDTO'
moderation:
description: If `moderation` has been enabled, moderation of the audio speech transcription
allOf:
- $ref: '#/components/schemas/ModerationDTO'
named_entity_recognition:
description: If `named_entity_recognition` has been enabled, the detected entities
allOf:
- $ref: '#/components/schemas/NamedEntityRecognitionDTO'
name_consistency:
description: If `name_consistency` has been enabled, Gladia will improve consistency of the names accross the transcription
allOf:
- $ref: '#/components/schemas/NamesConsistencyDTO'
structured_data_extraction:
description: If `s
# --- truncated at 32 KB (60 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/gladia/refs/heads/main/openapi/gladia-pre-recorded-v2-api-openapi.yml