API Documentation
Learn how to integrate Transcriptly's API into your application and generate transcripts programmatically.
Base URL
All API requests should be made to:
https://transcriptly.org/api/v1API Key Header
Include your API key in the request header:
X-API-Key: your_api_key_hereGetting Your API Key
- Sign in to your Transcriptly account
- Navigate to the API Keys page in your dashboard
- Click "Create API Key" to generate a new key
- Copy your API key and store it securely
Note: You can create multiple API keys for different applications or environments. Each key can be individually revoked if needed.
/transcriptRequest Body
{
"url": "string (required) - YouTube video URL",
"language": "string (optional) - Language code, defaults to 'en'"
}Request Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| url | string | Yes | The YouTube video URL. Must be a valid YouTube video URL in one of these formats:
|
| language | string | No | The language code for the transcript. If not specified, defaults to "en" (English). Common language codes: en (English), es (Spanish), fr (French), de (German), ja (Japanese), zh (Chinese) |
Example Request in Postman
Headers

Request Body

These examples show how to configure the request in Postman, including the required API key header and request body parameters.
Response
{
"code": 200,
"message": "success",
"data": {
"videoId": "string",
"languageName": "string",
"languageCode": "string",
"transcripts": {
"languageName": "string",
"languageCode": "string",
"segments": [
{
"id": number,
"text": "string",
"startMs": number,
"endMs": number,
"startTimeText": "string"
}
]
},
"videoDetails": {
"title": "string",
"description": "string",
"author": "string",
"authorUrl": "string",
"thumbnailUrl": "string",
"lengthSeconds": number
},
"availableLanguages": [
{
"name": "string",
"code": "string",
"isGenerated": boolean
}
]
}
}Response Fields
| Field | Type | Description |
|---|---|---|
| code | number | HTTP status code (200 for success) |
| message | string | Status message ("success" for successful requests) |
| data.videoId | string | YouTube video ID |
| data.languageName | string | Full name of the transcript language (e.g., "English") |
| data.languageCode | string | ISO language code (e.g., "en") |
| data.transcripts | object | Object containing transcript data |
| data.transcripts.languageName | string | Full name of the transcript language (e.g., "English") |
| data.transcripts.languageCode | string | ISO language code (e.g., "en") |
| data.transcripts.segments[].id | number | Unique identifier for the transcript segment |
| data.transcripts.segments[].text | string | Transcript text content |
| data.transcripts.segments[].startMs | number | Start time in milliseconds |
| data.transcripts.segments[].endMs | number | End time in milliseconds |
| data.transcripts.segments[].startTimeText | string | Formatted start time (e.g., "00:01:23") |
| data.videoDetails.title | string | Video title |
| data.videoDetails.description | string | Video description |
| data.videoDetails.author | string | Channel name |
| data.videoDetails.authorUrl | string | Channel URL |
| data.videoDetails.thumbnailUrl | string | Video thumbnail image URL |
| data.videoDetails.lengthSeconds | number | Video duration in seconds |
| data.availableLanguages[].name | string | Full name of available language |
| data.availableLanguages[].code | string | ISO language code |
| data.availableLanguages[].isGenerated | boolean | Whether the language is generated by AI |
Rate Limits
Requests are limited based on your subscription plan. Rate limit information is included in the response headers:
- X-RateLimit-Limit: Maximum requests per hour
- X-RateLimit-Reset: Time when the rate limit resets
Credits
Each successful transcript generation consumes 10 credits. The number of credits consumed is returned in the X-Credits-Consumed header.