API Integration Guide

1. Get Your API Key

Sign up on RapidAPI and subscribe to any EasySubAPI plan to get your API key.

2. Making API Requests

Use the following endpoint to download subtitles:

POST https://easysubapi.p.rapidapi.com/api/easysubapi-get-transcript

Example requests:

curl --request POST \
	--url https://easysubapi.p.rapidapi.com/api/easysubapi-get-transcript \
	--header 'Content-Type: application/json' \
	--header 'x-rapidapi-host: easysubapi.p.rapidapi.com' \
	--header 'x-rapidapi-key: YOUR_API_KEY' \
	--data '{"video_id":"CN1Y0mxA_o8"}'
import requests

url = "https://easysubapi.p.rapidapi.com/api/easysubapi-get-transcript"

payload = { "video_id": "CN1Y0mxA_o8" }
headers = {
	"x-rapidapi-key": "YOUR_API_KEY",
	"x-rapidapi-host": "easysubapi.p.rapidapi.com",
	"Content-Type": "application/json"
}

response = requests.post(url, json=payload, headers=headers)

print(response.json())
const request = require('request');

const options = {
  method: 'POST',
  url: 'https://easysubapi.p.rapidapi.com/api/easysubapi-get-transcript',
  headers: {
    'x-rapidapi-key': 'YOUR_API_KEY',
    'x-rapidapi-host': 'easysubapi.p.rapidapi.com',
    'Content-Type': 'application/json'
  },
  body: {
    video_id: 'CN1Y0mxA_o8'
  },
  json: true
};

request(options, function (error, response, body) {
	if (error) throw new Error(error);

	console.log(body);
});

3. Handling Responses

{
  "message": "Results found",
  "result": [
    {
      "data": {
        "@timestamp": "2025-08-06T06:35:16.146708",
        "frames": [
          {
            "from_time": 0,
            "message": "Hello everyone, welcome to this tutorial",
            "to_time": 4
          },
          {
            "from_time": 4,
            "message": "Today we'll learn about advanced techniques",
            "to_time": 8
          },
          {
            "from_time": 8,
            "message": "Even though this video is in Russian, you get English subtitles",
            "to_time": 12
          }
          ...
        ],
        "language": "en",
        "platform": "youtube",
        "video_id": "0Spytc4u55E"
      }
    }
  ],
  "status": 200
}

For example, if the video is in Russian, the API response might look like this:

{
  "message": "Results found",
  "result": [
    {
      "data": {
        "@timestamp": "2025-08-06T06:35:16.146708",
        "frames": [
          {
            "from_time": 0,
            "message": "okay so in this video we're going to be",
            "to_time": 4
          },
          {
            "from_time": 1,
            "message": "talking about the good old Apple card",
            "to_time": 5
          },
          {
            "from_time": 4,
            "message": "that came out in",
            "to_time": 9
          },
          {
            "from_time": 667,
            "message": "the video but with that being said I see",
            "to_time": 674
          },
          {
            "from_time": 670,
            "message": "y'all on the next one",
            "to_time": 673
          }
        ],
        "language": "en",
        "platform": "youtube",
        "video_id": "0Spytc4u55E"
      }
    }
  ],
  "status": 200
}