Speechmatics Jobs API
The Jobs API from Speechmatics — 4 operation(s) for jobs.
The Jobs API from Speechmatics — 4 operation(s) for jobs.
openapi: 3.0.3
info:
title: Speechmatics Batch Transcription API Keys Jobs API
version: 2.0.0
description: The Speechmatics Automatic Speech Recognition REST API is used to submit ASR jobs and receive the results. The supported job type is transcription of audio files. Supports 55+ languages, speaker diarization, translation, summarization, sentiment analysis, topic detection, and custom vocabulary.
contact:
email: support@speechmatics.com
x-providerName: speechmatics
x-serviceName: batch-transcription-api
servers:
- url: https://asr.api.speechmatics.com/v2
description: Speechmatics Batch ASR API (EU)
- url: https://eu1.asr.api.speechmatics.com/v2
description: Speechmatics Batch ASR API (EU1)
- url: https://usa.asr.api.speechmatics.com/v2
description: Speechmatics Batch ASR API (USA)
security:
- bearerAuth: []
tags:
- name: Jobs
paths:
/jobs:
post:
summary: Create a new job
operationId: createJob
tags:
- Jobs
requestBody:
required: true
content:
multipart/form-data:
schema:
type: object
required:
- config
properties:
config:
type: string
description: JSON containing a JobConfig model.
data_file:
type: string
format: binary
description: The audio data file to be processed.
parameters:
- name: X-SM-Processing-Data
in: header
required: false
schema:
type: string
description: On-prem processing settings JSON (parallel_engines, user_id).
responses:
'201':
description: Job created
content:
application/json:
schema:
$ref: '#/components/schemas/CreateJobResponse'
'400':
description: Bad request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'429':
description: Rate Limited
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
get:
summary: List all jobs
operationId: listJobs
tags:
- Jobs
parameters:
- name: created_before
in: query
required: false
schema:
type: string
format: date-time
description: Cursor for paginating by creation time.
- name: limit
in: query
required: false
schema:
type: integer
minimum: 1
maximum: 100
description: Limit on number of items returned.
- name: include_deleted
in: query
required: false
schema:
type: boolean
description: Include deleted jobs in response.
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/RetrieveJobsResponse'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'422':
description: Unprocessable Entity
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'429':
description: Rate Limited
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/jobs/{jobid}:
get:
summary: Get job details
operationId: getJob
tags:
- Jobs
parameters:
- name: jobid
in: path
required: true
schema:
type: string
description: ID of the job.
example: a1b2c3d4e5
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/RetrieveJobResponse'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'404':
description: Not found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'410':
description: Gone (expired)
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'429':
description: Rate Limited
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
delete:
summary: Delete a job
operationId: deleteJob
tags:
- Jobs
parameters:
- name: jobid
in: path
required: true
schema:
type: string
description: ID of the job to delete.
example: a1b2c3d4e5
- name: force
in: query
required: false
schema:
type: boolean
description: Force terminate a running job.
responses:
'200':
description: Job deleted
content:
application/json:
schema:
$ref: '#/components/schemas/DeleteJobResponse'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'404':
description: Not found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'410':
description: Gone
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'423':
description: Locked (running job, use force=true)
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'429':
description: Rate Limited
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/jobs/{jobid}/transcript:
get:
summary: Get transcript for a job
operationId: getTranscript
tags:
- Jobs
parameters:
- name: jobid
in: path
required: true
schema:
type: string
example: a1b2c3d4e5
- name: format
in: query
required: false
schema:
type: string
enum:
- json-v2
- txt
- srt
description: Transcription output format (default json-v2).
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/RetrieveTranscriptResponse'
text/plain:
schema:
type: string
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'404':
description: Not found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'410':
description: Gone
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'429':
description: Rate Limited
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/jobs/{jobid}/log:
get:
summary: Get log file for a job
operationId: getJobLog
tags:
- Jobs
parameters:
- name: jobid
in: path
required: true
schema:
type: string
example: a1b2c3d4e5
responses:
'200':
description: OK
content:
text/plain:
schema:
type: string
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'404':
description: Not found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'410':
description: Gone
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'429':
description: Rate Limited
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'501':
description: Not Implemented
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
components:
schemas:
JobDetails:
type: object
required:
- created_at
- data_name
- id
- status
properties:
created_at:
type: string
format: date-time
data_name:
type: string
text_name:
type: string
duration:
type: integer
minimum: 0
id:
type: string
example: a1b2c3d4e5
status:
type: string
enum:
- running
- done
- rejected
- deleted
- expired
config:
$ref: '#/components/schemas/JobConfig'
lang:
type: string
errors:
type: array
items:
$ref: '#/components/schemas/JobDetailError'
AutoChaptersConfig:
type: object
RecognitionDisplay:
type: object
required:
- direction
properties:
direction:
type: string
enum:
- ltr
- rtl
NotificationConfig:
type: object
required:
- url
properties:
url:
type: string
description: URL for job completion callback.
contents:
type: array
items:
type: string
enum:
- jobinfo
- transcript
- transcript.json-v2
- transcript.txt
- transcript.srt
- data
- text
method:
type: string
enum:
- post
- put
auth_headers:
type: array
items:
type: string
TrackingData:
type: object
properties:
title:
type: string
description: The title of the job.
reference:
type: string
description: External system reference.
tags:
type: array
items:
type: string
details:
type: object
description: Customer-defined JSON structure.
additionalProperties: true
ErrorResponse:
type: object
required:
- code
- error
properties:
code:
type: integer
description: The HTTP status code.
minimum: 100
error:
type: string
description: The error message.
enum:
- Bad Request
- File Expired
- Forbidden
- Resource Locked
- Format Not Supported
- Internal Server Error
- Job error
- Job Expired
- Job In Progress
- Job is not of type transcription
- Job not found
- Job rejected
- Job rejected due to invalid audio
- Job rejected due to invalid text
- Malformed request
- Missing callback
- Missing data_file
- No language selected
- Not Implemented
- Permission Denied
- Requested product not available
- Transcription not ready
- Log file not available
- Unprocessable Entity
- Max concurrent running jobs exceeded
detail:
type: string
description: The details of the error.
DataFetchConfig:
type: object
required:
- url
properties:
url:
type: string
auth_headers:
type: array
items:
type: string
description: A list of additional headers to be added to the input fetch request.
TopicDetectionConfig:
type: object
properties:
topics:
type: array
items:
type: string
SpeakersInputItem:
type: object
required:
- label
- speaker_identifiers
properties:
label:
type: string
minLength: 1
speaker_identifiers:
type: array
minItems: 1
uniqueItems: true
items:
type: string
JobConfig:
type: object
required:
- type
properties:
type:
type: string
enum:
- transcription
fetch_data:
$ref: '#/components/schemas/DataFetchConfig'
fetch_text:
$ref: '#/components/schemas/DataFetchConfig'
transcription_config:
$ref: '#/components/schemas/TranscriptionConfig'
notification_config:
type: array
items:
$ref: '#/components/schemas/NotificationConfig'
tracking:
$ref: '#/components/schemas/TrackingData'
output_config:
$ref: '#/components/schemas/OutputConfig'
translation_config:
$ref: '#/components/schemas/TranslationConfig'
language_identification_config:
$ref: '#/components/schemas/LanguageIdentificationConfig'
summarization_config:
$ref: '#/components/schemas/SummarizationConfig'
sentiment_analysis_config:
$ref: '#/components/schemas/SentimentAnalysisConfig'
topic_detection_config:
$ref: '#/components/schemas/TopicDetectionConfig'
auto_chapters_config:
$ref: '#/components/schemas/AutoChaptersConfig'
audio_events_config:
$ref: '#/components/schemas/AudioEventsConfig'
TranscriptionConfig:
type: object
required:
- language
properties:
language:
type: string
description: Language model to process the audio input (ISO language code).
domain:
type: string
description: Specialized model domain (e.g. finance, medical).
output_locale:
type: string
description: Language locale for transcription output.
model:
$ref: '#/components/schemas/Model'
operating_point:
$ref: '#/components/schemas/OperatingPoint'
deprecated: true
additional_vocab:
type: array
items:
type: object
required:
- content
properties:
content:
type: string
sounds_like:
type: array
items:
type: string
description: List of custom words or phrases with optional pronunciations.
punctuation_overrides:
type: object
properties:
sensitivity:
type: number
format: float
minimum: 0
maximum: 1
description: Controls punctuation density (0-1, default 0.5).
permitted_marks:
type: array
items:
type: string
description: Accepted punctuation marks.
diarization:
type: string
enum:
- none
- speaker
- channel
description: Speaker or channel label attribution mode.
channel_diarization_labels:
type: array
items:
type: string
pattern: ^[A-Za-z0-9._]+$
description: Labels for channel diarization.
enable_entities:
type: boolean
description: Include entity objects (dates, numbers) in transcription results.
max_delay_mode:
type: string
enum:
- fixed
- flexible
audio_filtering_config:
type: object
properties:
volume_threshold:
type: number
format: float
minimum: 0
maximum: 100
transcript_filtering_config:
type: object
properties:
remove_disfluencies:
type: boolean
replacements:
type: array
items:
type: object
required:
- from
- to
additionalProperties: false
properties:
from:
type: string
to:
type: string
speaker_diarization_config:
type: object
properties:
prefer_current_speaker:
type: boolean
speaker_sensitivity:
type: number
format: float
minimum: 0
maximum: 1
get_speakers:
type: boolean
speakers:
type: array
items:
$ref: '#/components/schemas/SpeakersInputItem'
JobDetailError:
type: object
required:
- timestamp
- message
properties:
timestamp:
type: string
example: 2021-07-14 11:53:49.242000+00:00
message:
type: string
example: Audio fetch error, http status 418
RecognitionAlternative:
type: object
required:
- content
- confidence
- language
properties:
content:
type: string
confidence:
type: number
format: float
language:
type: string
display:
$ref: '#/components/schemas/RecognitionDisplay'
speaker:
type: string
tags:
type: array
items:
type: string
TranslationConfig:
type: object
required:
- target_languages
properties:
target_languages:
type: array
maxItems: 5
items:
type: string
RetrieveTranscriptResponse:
type: object
required:
- format
- job
- metadata
- results
properties:
format:
type: string
example: '2.7'
job:
type: object
metadata:
type: object
results:
type: array
items:
$ref: '#/components/schemas/RecognitionResult'
speakers:
type: array
items:
$ref: '#/components/schemas/SpeakersResultItem'
translations:
type: object
additionalProperties:
type: array
items:
$ref: '#/components/schemas/TranslationSentence'
summary:
$ref: '#/components/schemas/SummarizationResult'
RecognitionResult:
type: object
required:
- start_time
- end_time
- type
properties:
channel:
type: string
start_time:
type: number
format: float
end_time:
type: number
format: float
volume:
type: number
format: float
minimum: 0
maximum: 100
is_eos:
type: boolean
type:
type: string
enum:
- word
- punctuation
- entity
alternatives:
type: array
items:
$ref: '#/components/schemas/RecognitionAlternative'
attaches_to:
type: string
enum:
- previous
- next
- both
- none
SummarizationConfig:
type: object
properties:
content_type:
type: string
enum:
- auto
- informative
- conversational
summary_length:
type: string
enum:
- brief
- detailed
default: brief
summary_type:
type: string
enum:
- paragraphs
- bullets
SpeakersResultItem:
type: object
required:
- label
- speaker_identifiers
properties:
label:
type: string
minLength: 1
speaker_identifiers:
type: array
minItems: 1
uniqueItems: true
items:
type: string
OutputConfig:
type: object
properties:
srt_overrides:
type: object
properties:
max_line_length:
type: integer
max_lines:
type: integer
CreateJobResponse:
type: object
required:
- id
properties:
id:
type: string
description: The unique ID assigned to the job.
example: a1b2c3d4e5
Model:
type: string
description: Specific model to use in transcription.
enum:
- standard
- enhanced
AudioEventsConfig:
type: object
properties:
types:
type: array
items:
type: string
LanguageIdentificationConfig:
type: object
properties:
expected_languages:
type: array
items:
type: string
low_confidence_action:
type: string
enum:
- allow
- reject
- use_default_language
default_language:
type: string
SummarizationResult:
type: object
properties:
content:
type: string
RetrieveJobResponse:
type: object
required:
- job
properties:
job:
$ref: '#/components/schemas/JobDetails'
DeleteJobResponse:
type: object
required:
- job
properties:
job:
$ref: '#/components/schemas/JobDetails'
SentimentAnalysisConfig:
type: object
TranslationSentence:
type: object
properties:
start_time:
type: number
format: float
end_time:
type: number
format: float
content:
type: string
speaker:
type: string
channel:
type: string
RetrieveJobsResponse:
type: object
required:
- jobs
properties:
jobs:
type: array
items:
$ref: '#/components/schemas/JobDetails'
OperatingPoint:
type: string
description: Deprecated. Use model instead.
enum:
- standard
- enhanced
deprecated: true
securitySchemes:
bearerAuth:
type: apiKey
in: header
name: Authorization
description: 'Bearer token authentication. Use the format: Bearer $API_KEY_OR_JWT'