Happy Scribe Transcriptions API
List, retrieve, update, and delete transcriptions.
List, retrieve, update, and delete transcriptions.
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/happyscribe-transcriptions-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: Happy Scribe Exports Transcriptions API
description: The Happy Scribe API turns audio and video into text and subtitles programmatically. Submit work through the Orders API (automatic/machine or professional/human service), manage the resulting transcriptions, export finished transcripts into 15+ formats (SRT, VTT, STL, DOCX, PDF, TXT, JSON, CSV, XLSX, and editing-suite formats), and administer organizations and their members. Files are ingested by public URL or via a signed upload. All requests are REST over HTTPS and authenticated with a Bearer API token from your Happy Scribe account settings. Base URL https://www.happyscribe.com/api/v1. Endpoint paths and fields are grounded in the public developer documentation (dev.happyscribe.com); request/response schemas below are honestly modeled from that documentation and may not enumerate every field.
version: '1.0'
contact:
name: Happy Scribe
url: https://dev.happyscribe.com
servers:
- url: https://www.happyscribe.com/api/v1
description: Happy Scribe API v1
security:
- bearerAuth: []
tags:
- name: Transcriptions
description: List, retrieve, update, and delete transcriptions.
paths:
/transcriptions:
get:
operationId: listTranscriptions
tags:
- Transcriptions
summary: List transcriptions
description: Lists transcriptions in an organization.
parameters:
- name: organization_id
in: query
required: false
description: Filter transcriptions by organization.
schema:
type: string
- name: folder_id
in: query
required: false
description: Filter transcriptions by folder.
schema:
type: string
responses:
'200':
description: A list of transcriptions.
content:
application/json:
schema:
type: object
properties:
results:
type: array
items:
$ref: '#/components/schemas/Transcription'
'401':
$ref: '#/components/responses/Unauthorized'
post:
operationId: createTranscription
tags:
- Transcriptions
summary: Create a transcription (deprecated)
description: Deprecated. Creating a transcription directly is superseded by the Orders API; use POST /orders instead. Retained here because it remains documented for backward compatibility.
deprecated: true
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/TranscriptionInput'
responses:
'201':
description: The created transcription.
content:
application/json:
schema:
$ref: '#/components/schemas/Transcription'
'401':
$ref: '#/components/responses/Unauthorized'
'422':
$ref: '#/components/responses/ValidationError'
/transcriptions/{id}:
parameters:
- $ref: '#/components/parameters/Id'
get:
operationId: getTranscription
tags:
- Transcriptions
summary: Retrieve a transcription
description: Retrieves a single transcription by ID, including its state and metadata.
responses:
'200':
description: The requested transcription.
content:
application/json:
schema:
$ref: '#/components/schemas/Transcription'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
patch:
operationId: updateTranscription
tags:
- Transcriptions
summary: Update a transcription
description: Updates editable details of a transcription, such as its name or folder.
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
name:
type: string
folder_id:
type: string
responses:
'200':
description: The updated transcription.
content:
application/json:
schema:
$ref: '#/components/schemas/Transcription'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
'422':
$ref: '#/components/responses/ValidationError'
delete:
operationId: deleteTranscription
tags:
- Transcriptions
summary: Delete a transcription
description: Deletes a transcription.
responses:
'204':
description: The transcription was deleted.
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
/transcriptions/{id}/summary:
parameters:
- $ref: '#/components/parameters/Id'
get:
operationId: getTranscriptionSummary
tags:
- Transcriptions
summary: Retrieve a transcription summary
description: Retrieves the AI-generated summary for a transcription (for example, a meeting summary), when available.
responses:
'200':
description: The transcription summary.
content:
application/json:
schema:
type: object
properties:
id:
type: string
summary:
type: string
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
components:
responses:
ValidationError:
description: The request payload failed validation.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
NotFound:
description: The requested resource was not found.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
Unauthorized:
description: Missing or invalid Bearer token.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
schemas:
Transcription:
type: object
properties:
id:
type: string
name:
type: string
state:
type: string
description: Processing state of the transcription.
language:
type: string
audioLengthInSeconds:
type: number
costInCents:
type: integer
createdAt:
type: string
format: date-time
updatedAt:
type: string
format: date-time
Error:
type: object
properties:
error:
type: string
message:
type: string
TranscriptionInput:
type: object
required:
- name
- language
- tmp_url
- organization_id
properties:
name:
type: string
language:
type: string
description: BCP-47 language code of the audio.
tmp_url:
type: string
format: uri
description: Public or signed URL of the media file to transcribe.
service:
type: string
enum:
- auto
- pro
- alignment
organization_id:
type: string
folder_id:
type: string
is_subtitle:
type: boolean
default: false
tags:
type: array
items:
type: string
parameters:
Id:
name: id
in: path
required: true
description: The unique identifier of the resource.
schema:
type: string
securitySchemes:
bearerAuth:
type: http
scheme: bearer
description: 'API token from your Happy Scribe account settings, passed as `Authorization: Bearer YOUR_API_TOKEN`.'