API Documentation
Learn how to integrate Transcriptly's API into your application.
Base URL
All API requests should be made to:
https://transcriptly.org/api/v1
API Key Header
Include your API key in the request header:
X-API-Key: your_api_key_here
Getting 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.
/transcript
Request 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": [ { "id": number, "text": "string", "startMs": number, "endMs": number, "startTimeText": "string" } ], "videoDetails": { "title": "string", "author": "string", "authorUrl": "string", "thumbnailUrl": "string", "description": "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[].id | number | Unique identifier for the transcript segment |
data.transcripts[].text | string | Transcript text content |
data.transcripts[].startMs | number | Start time in milliseconds |
data.transcripts[].endMs | number | End time in milliseconds |
data.transcripts[].startTimeText | string | Formatted start time (e.g., "00:01:23") |
data.videoDetails.title | string | Video title |
data.videoDetails.author | string | Channel name |
data.videoDetails.authorUrl | string | Channel URL |
data.videoDetails.thumbnailUrl | string | Video thumbnail image URL |
data.videoDetails.description | string | Video description |
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.