YouTube Video Captions
https://api.sandbase.ai/v1/api/youtube/web-v2/video-captionsReturns available video caption tracks or transcripts in multiple formats, filtered by video identifier and language code.
- Price
- $0.01USD / callFirst 100 calls per day free (shared per organization)
- Method
- POST
- Response
- JSON
- Parameters
- 0 required · 4 optional
Try the model
Playground
[
{
"data": {
"content": "1\n00:00:00,080 --> 00:00:04,000\nCloud flare has released an AI agents\n\n2\n00:00:01,880 --> 00:00:06,240\nSDK it's durable objects but with\n\n3\n00:00:04,000 --> 00:00:08,000\nsuperpowers this makes building agents\n\n4\n00:00:06,240 --> 00:00:09,880\nmuch much easier as it handles the\n\n5\n00:00:08,000 --> 00:00:12,000\ncomplex parts for you like persisting\n\n6\n00:00:09,880 --> 00:00:14,000\nState handling long running tasks and\n\n7\n00:00:12,000 --> 00:00:15,440\neven horizontal scaling this is just the\n\n8\n00:00:14,000 --> 00:00:17,080\nbeginning too the road map talks of\n\n9\n00:00:15,440 --> 00:00:19,119\nadding better integration with email\n\n10\n00:00:17,080 --> 00:00:21,840\napis for more human in the loop use\n\n11\n00:00:19,119 --> 00:00:23,880\ncases using web RTC for voice and video\n\n12\n00:00:21,840 --> 00:00:25,840\na built-in evaluation framework and even\n\n13\n00:00:23,880 --> 00:00:27,640\nthe ability to self-host agents on your\n\n14\n00:00:25,840 --> 00:00:29,480\nown infrastructure this all sounds\n\n15\n00:00:27,640 --> 00:00:30,759\nawesome maybe they'll even add an agent\n\n16\n00:00:29,480 --> 00:00:32,880\nthat gets you to hit that subscribe\n\n17\n00:00:30,759 --> 00:00:35,120\nbutton let's jump straight into the demo\n\n18\n00:00:32,880 --> 00:00:37,079\nnow this is using the agents SDK starter\n\n19\n00:00:35,120 --> 00:00:38,840\nI'll leave links to it below the demo is\n\n20\n00:00:37,079 --> 00:00:40,520\na chatbot but do keep in mind this isn't\n\n21\n00:00:38,840 --> 00:00:42,760\nthe only thing that agents are for you\n\n22\n00:00:40,520 --> 00:00:44,520\ncan use agents anywhere you can code it\n\n23\n00:00:42,760 --> 00:00:46,520\ncould even be an agent calling another\n\n24\n00:00:44,520 --> 00:00:48,600\nagent CH is obviously just a great way\n\n25\n00:00:46,520 --> 00:00:50,840\nto demo and develop these now I think\n\n26\n00:00:48,600 --> 00:00:52,960\nthe agents SDK is best showcased with\n\n27\n00:00:50,840 --> 00:00:55,320\nthe schedule task feature so if I go\n\n28\n00:00:52,960 --> 00:00:57,320\nahead and ask this in 10 seconds tell me\n\n29\n00:00:55,320 --> 00:00:58,600\nabout better stack and hit enter you can\n\n30\n00:00:57,320 --> 00:01:00,640\nsee that it's going to go ahead and\n\n31\n00:00:58,600 --> 00:01:02,280\nrespond saying it's scheduled that task\n\n32\n00:01:00,640 --> 00:01:04,320\nbut this isn't just local now I can go\n\n33\n00:01:02,280 --> 00:01:06,240\nahead and refresh this page I could shut\n\n34\n00:01:04,320 --> 00:01:08,280\ndown the dev server and I can come back\n\n35\n00:01:06,240 --> 00:01:10,159\nand it will still perform this action\n\n36\n00:01:08,280 --> 00:01:12,560\nthis is because it's an agent instance\n\n37\n00:01:10,159 --> 00:01:14,520\non a durable object it can sleep for\n\n38\n00:01:12,560 --> 00:01:15,840\nminutes hours and days and there you go\n\n39\n00:01:14,520 --> 00:01:17,439\nafter 10 seconds you can see it's\n\n40\n00:01:15,840 --> 00:01:19,320\ntelling me about what better stack is\n\n41\n00:01:17,439 --> 00:01:20,840\nthis agent instance and durable object\n\n42\n00:01:19,320 --> 00:01:23,119\nis also what allows me to open this up\n\n43\n00:01:20,840 --> 00:01:24,920\nin another browser and have it synced\n\n44\n00:01:23,119 --> 00:01:26,520\nthis even works when you need a human in\n\n45\n00:01:24,920 --> 00:01:28,799\nthe loop so if I ask it what the weather\n\n46\n00:01:26,520 --> 00:01:30,320\nis in London it has a weather tool you\n\n47\n00:01:28,799 --> 00:01:31,880\ncan see that it need to me to approve\n\n48\n00:01:30,320 --> 00:01:33,680\ncalling this tool but you can see it was\n\n49\n00:01:31,880 --> 00:01:35,479\nsynced over there in the Chrome browser\n\n50\n00:01:33,680 --> 00:01:37,079\nas well now I can go ahead and refresh\n\n51\n00:01:35,479 --> 00:01:38,560\nthis page several times and I'm always\n\n52\n00:01:37,079 --> 00:01:40,159\ngoing to get back to whether it wants my\n\n53\n00:01:38,560 --> 00:01:42,159\napproval for that get weather\n\n54\n00:01:40,159 --> 00:01:43,720\ninformation and go ahead and hit approve\n\n55\n00:01:42,159 --> 00:01:45,399\nhere and again you can see it's syncing\n\n56\n00:01:43,720 --> 00:01:47,240\nup nicely so it would happily wait\n\n57\n00:01:45,399 --> 00:01:49,200\nminutes hours or days for me to approve\n\n58\n00:01:47,240 --> 00:01:51,000\nthat task thanks to it being a durable\n\n59\n00:01:49,200 --> 00:01:53,399\nobject as someone who has built this out\n\n60\n00:01:51,000 --> 00:01:55,520\nin other apps it's insane how easy this\n\n61\n00:01:53,399 --> 00:01:57,399\nis I ran the starter and now I've got\n\n62\n00:01:55,520 --> 00:01:59,039\nall of this infrastructure we're getting\n\n63\n00:01:57,399 --> 00:02:00,960\nstateful server lists thanks to this\n\n64\n00:01:59,039 --> 00:02:02,479\nbeing built on those able objects so\n\n65\n00:02:00,960 --> 00:02:04,320\nlet's take a look at the code behind\n\n66\n00:02:02,479 --> 00:02:05,880\nthis starting out in the react code you\n\n67\n00:02:04,320 --> 00:02:08,319\ncan see that we connect to an agent with\n\n68\n00:02:05,880 --> 00:02:10,520\nthe ID of chat now the use agent Hook is\n\n69\n00:02:08,319 --> 00:02:12,200\ncoming from the SDK this manages the\n\n70\n00:02:10,520 --> 00:02:14,160\nwebsocket connection for you which is\n\n71\n00:02:12,200 --> 00:02:16,200\nsuper nice I've also seen mentions that\n\n72\n00:02:14,160 --> 00:02:17,959\nother Frameworks will be supported soon\n\n73\n00:02:16,200 --> 00:02:19,800\nso for this app it's a single shared\n\n74\n00:02:17,959 --> 00:02:21,959\nagent this is why the browsers were\n\n75\n00:02:19,800 --> 00:02:23,720\nsynced you can also use agent routing so\n\n76\n00:02:21,959 --> 00:02:25,599\nyou could set up an agent per user or\n\n77\n00:02:23,720 --> 00:02:28,200\neven an agent per workflow so you could\n\n78\n00:02:25,599 --> 00:02:30,040\nuse the user's ID as the agent ID so you\n\n79\n00:02:28,200 --> 00:02:31,200\ncan have millions of Agents without\n\n80\n00:02:30,040 --> 00:02:33,160\nneeding to think about the\n\n81\n00:02:31,200 --> 00:02:35,280\ninfrastructure the agent state is\n\n82\n00:02:33,160 --> 00:02:36,840\nactually stored in a SQL database within\n\n83\n00:02:35,280 --> 00:02:38,760\neach instance which you can then\n\n84\n00:02:36,840 --> 00:02:40,400\ninteract with we can see this better in\n\n85\n00:02:38,760 --> 00:02:42,200\nthis demo here as you can see I can\n\n86\n00:02:40,400 --> 00:02:44,239\nincrement this counter I can change the\n\n87\n00:02:42,200 --> 00:02:46,080\ntext input and the Color Picker and it's\n\n88\n00:02:44,239 --> 00:02:47,200\nsyncing between my two browsers and it\n\n89\n00:02:46,080 --> 00:02:49,440\nwill even handle things like\n\n90\n00:02:47,200 --> 00:02:51,440\nreconnecting this is super easy to do\n\n91\n00:02:49,440 --> 00:02:53,440\nthanks to that SQL database as you can\n\n92\n00:02:51,440 --> 00:02:55,159\nsee with our use agent hook here all I'd\n\n93\n00:02:53,440 --> 00:02:56,760\nneed to do is have an on state update\n\n94\n00:02:55,159 --> 00:02:58,599\nmethod so when we receive any State\n\n95\n00:02:56,760 --> 00:03:00,360\nupdates from the agent and then we can\n\n96\n00:02:58,599 --> 00:03:02,120\ntie this back into our react code by\n\n97\n00:03:00,360 --> 00:03:03,959\njust saying set sync state which is our\n\n98\n00:03:02,120 --> 00:03:05,560\nused State hook then if we want to go\n\n99\n00:03:03,959 --> 00:03:07,519\nahead and actually update that database\n\n100\n00:03:05,560 --> 00:03:09,720\nor update the agent State all we need to\n\n101\n00:03:07,519 --> 00:03:11,480\ndo is called agent. setstate and this is\n\n102\n00:03:09,720 --> 00:03:14,480\nactually a higher level API around the\n\n103\n00:03:11,480 --> 00:03:16,440\nSQL itself you can use agent. SQL but it\n\n104\n00:03:14,480 --> 00:03:17,879\nis recommended to use the set State one\n\n105\n00:03:16,440 --> 00:03:19,480\nit's awesome how easy it makes this\n\n106\n00:03:17,879 --> 00:03:21,239\ninfrastructure this will really help you\n\n107\n00:03:19,480 --> 00:03:23,200\nbuild things like realtime features\n\n108\n00:03:21,239 --> 00:03:25,360\nmulti- window or even Multi-Device\n\n109\n00:03:23,200 --> 00:03:27,280\nsyncing the SQL database can even be\n\n110\n00:03:25,360 --> 00:03:29,439\ngreat for the user history and adding\n\n111\n00:03:27,280 --> 00:03:31,080\nthat back into the context of a chat\n\n112\n00:03:29,439 --> 00:03:32,840\nback to exploring the starter code\n\n113\n00:03:31,080 --> 00:03:35,159\nthough the server dots is where the\n\n114\n00:03:32,840 --> 00:03:36,840\nagent itself is actually created you can\n\n115\n00:03:35,159 --> 00:03:38,760\nsee in this case we're using AI chat\n\n116\n00:03:36,840 --> 00:03:40,599\nagent this is just an extension of the\n\n117\n00:03:38,760 --> 00:03:42,360\nbase agent class that adds in chat\n\n118\n00:03:40,599 --> 00:03:44,120\ncapabilities so you don't need this if\n\n119\n00:03:42,360 --> 00:03:46,480\nyou're not doing something chat-like you\n\n120\n00:03:44,120 --> 00:03:48,319\njust use the base agent class now we go\n\n121\n00:03:46,480 --> 00:03:49,680\nahead and create an agent by extending\n\n122\n00:03:48,319 --> 00:03:51,840\nthis you can see down here we have a\n\n123\n00:03:49,680 --> 00:03:54,000\nchat agent and that extends AI chat\n\n124\n00:03:51,840 --> 00:03:56,079\nagent then in here we can handle things\n\n125\n00:03:54,000 --> 00:03:57,640\nlike on chat message now what I really\n\n126\n00:03:56,079 --> 00:03:59,400\nlove about this is that it works with\n\n127\n00:03:57,640 --> 00:04:02,079\ntons of AI models as long as they\n\n128\n00:03:59,400 --> 00:04:03,840\nsupport the open AI API schema but more\n\n129\n00:04:02,079 --> 00:04:06,200\nspecifically I love that it's working\n\n130\n00:04:03,840 --> 00:04:08,239\nwith the AI SDK which in my opinion is\n\n131\n00:04:06,200 --> 00:04:09,959\nthe best way to do anything with AI in\n\n132\n00:04:08,239 --> 00:04:11,640\nJavaScript a cool thing you can do\n\n133\n00:04:09,959 --> 00:04:13,959\nthough if you use the cloudflare workers\n\n134\n00:04:11,640 --> 00:04:15,640\nAI is you can do model routing this\n\n135\n00:04:13,959 --> 00:04:17,359\nactually allows you to Route requests to\n\n136\n00:04:15,640 --> 00:04:19,199\ndifferent AI models based on whether\n\n137\n00:04:17,359 --> 00:04:20,880\nthey're reachable rate limiting your\n\n138\n00:04:19,199 --> 00:04:22,759\nclient or if you've exceeded your cost\n\n139\n00:04:20,880 --> 00:04:24,120\nbudget for a specific provider which\n\n140\n00:04:22,759 --> 00:04:25,600\nlet's face it it's probably going to be\n\n141\n00:04:24,120 --> 00:04:27,440\nclawed I'll leave links to the\n\n142\n00:04:25,600 --> 00:04:29,440\ndocumentation that goes through that the\n\n143\n00:04:27,440 --> 00:04:30,759\nnext important part is the tools file\n\n144\n00:04:29,440 --> 00:04:32,280\nthis is this is where we add in our\n\n145\n00:04:30,759 --> 00:04:34,680\ncapabilities again we're actually\n\n146\n00:04:32,280 --> 00:04:36,479\ndefining Tools in here using the AI SDK\n\n147\n00:04:34,680 --> 00:04:38,639\nwhich is super cool now one thing we did\n\n148\n00:04:36,479 --> 00:04:40,520\nsee earlier in our demo is when I asked\n\n149\n00:04:38,639 --> 00:04:42,280\nit for the weather in London it needed\n\n150\n00:04:40,520 --> 00:04:44,600\nhuman in the lube so it asked me for\n\n151\n00:04:42,280 --> 00:04:46,039\napproval before running the function to\n\n152\n00:04:44,600 --> 00:04:47,720\ndo that all you need to do on your tool\n\n153\n00:04:46,039 --> 00:04:49,320\ncall is actually emit the execute\n\n154\n00:04:47,720 --> 00:04:51,400\nfunction you can see down here on the\n\n155\n00:04:49,320 --> 00:04:52,919\nget local time one we do have an execute\n\n156\n00:04:51,400 --> 00:04:54,759\nfunction this means this will run\n\n157\n00:04:52,919 --> 00:04:56,960\nautomatically once I ask it for the\n\n158\n00:04:54,759 --> 00:04:58,320\nlocal time in a certain location now\n\n159\n00:04:56,960 --> 00:05:00,240\nwhat's the function that's actually run\n\n160\n00:04:58,320 --> 00:05:01,759\nthen when we get the weather information\n\n161\n00:05:00,240 --> 00:05:03,800\nfor that you go to the bottom of this\n\n162\n00:05:01,759 --> 00:05:05,080\nfile and there's an executions object\n\n163\n00:05:03,800 --> 00:05:06,880\nand this is the function that's actually\n\n164\n00:05:05,080 --> 00:05:08,400\nrun once the user approves that tool\n\n165\n00:05:06,880 --> 00:05:10,080\ncall there are obvious see quite basic\n\n166\n00:05:08,400 --> 00:05:11,680\ntools so the schedule tool is where we\n\n167\n00:05:10,080 --> 00:05:14,080\nsee some of the features of the agents\n\n168\n00:05:11,680 --> 00:05:15,919\nSDK if I scroll up here on our schedule\n\n169\n00:05:14,080 --> 00:05:17,560\ntask tool you can see that we take in a\n\n170\n00:05:15,919 --> 00:05:19,639\ntype which can be scheduled this is if\n\n171\n00:05:17,560 --> 00:05:21,039\nit's a specific date and time it can be\n\n172\n00:05:19,639 --> 00:05:23,039\ndelayed that's when I say something like\n\n173\n00:05:21,039 --> 00:05:25,319\nin 10 seconds and then it can also be a\n\n174\n00:05:23,039 --> 00:05:27,120\nChron expression as well then in the\n\n175\n00:05:25,319 --> 00:05:29,240\nexecute we need to go ahead and get the\n\n176\n00:05:27,120 --> 00:05:31,360\nagent context once we've got the agent\n\n177\n00:05:29,240 --> 00:05:33,639\ncontext we can call the schedule method\n\n178\n00:05:31,360 --> 00:05:35,479\non our agent this will take in either a\n\n179\n00:05:33,639 --> 00:05:38,000\nDAT it will take in a Chron expression\n\n180\n00:05:35,479 --> 00:05:39,600\nor the time to wait in seconds then it\n\n181\n00:05:38,000 --> 00:05:41,400\ntakes in the Callback function so this\n\n182\n00:05:39,600 --> 00:05:43,160\nis the method that should be called\n\n183\n00:05:41,400 --> 00:05:45,199\nafter that specific time frame and then\n\n184\n00:05:43,160 --> 00:05:47,280\nwe can also pass through payload data to\n\n185\n00:05:45,199 --> 00:05:49,759\nthe actual method now the execute task\n\n186\n00:05:47,280 --> 00:05:51,680\nmethod is defined in our server. TS we\n\n187\n00:05:49,759 --> 00:05:54,080\nDefine this on our agent itself so where\n\n188\n00:05:51,680 --> 00:05:55,960\nwe have that chat extends AI chat agent\n\n189\n00:05:54,080 --> 00:05:57,800\nafter we have the on chat message we\n\n190\n00:05:55,960 --> 00:05:59,039\nalso have this execute task and again\n\n191\n00:05:57,800 --> 00:06:00,520\nyou can see that we can take through a\n\n192\n00:05:59,039 --> 00:06:02,240\ndescription and this is what's passed\n\n193\n00:06:00,520 --> 00:06:04,199\nthrough with that payload so once this\n\n194\n00:06:02,240 --> 00:06:06,400\nruns after our schedule essentially all\n\n195\n00:06:04,199 --> 00:06:08,000\nthis one is doing is acting as the user\n\n196\n00:06:06,400 --> 00:06:10,240\nwhen I said tell me about better stack\n\n197\n00:06:08,000 --> 00:06:12,240\nin 10 seconds after 10 seconds it went\n\n198\n00:06:10,240 --> 00:06:14,039\nahead and inserted a message into the\n\n199\n00:06:12,240 --> 00:06:15,840\nchat history that essentially acted as\n\n200\n00:06:14,039 --> 00:06:18,120\nthe user and said tell me about better\n\n201\n00:06:15,840 --> 00:06:19,960\nstack so that's how that feature worked\n\n202\n00:06:18,120 --> 00:06:22,319\nso it's a simple but powerful feature\n\n203\n00:06:19,960 --> 00:06:24,199\nit's why I love llms it would be so hard\n\n204\n00:06:22,319 --> 00:06:26,080\nto take in that text in plain English\n\n205\n00:06:24,199 --> 00:06:28,000\nthen convert it to either dates delays\n\n206\n00:06:26,080 --> 00:06:30,039\nor repeating time frames without the use\n\n207\n00:06:28,000 --> 00:06:32,199\nof llms it's all about taking in that\n\n208\n00:06:30,039 --> 00:06:34,199\nunstructured data making it structured\n\n209\n00:06:32,199 --> 00:06:35,639\nor even being able to do the reverse\n\n210\n00:06:34,199 --> 00:06:37,440\nthere's so much power to be unlocked\n\n211\n00:06:35,639 --> 00:06:39,400\nhere with the SDK there's even examples\n\n212\n00:06:37,440 --> 00:06:41,120\nof RG and browsing the web on that\n\n213\n00:06:39,400 --> 00:06:42,840\ndocumentation so be sure to check that\n\n214\n00:06:41,120 --> 00:06:44,800\nout plus there's even official hono\n\n215\n00:06:42,840 --> 00:06:46,199\nmiddleware which is super cool to see\n\n216\n00:06:44,800 --> 00:06:48,160\nI'm super excited to see what will be\n\n217\n00:06:46,199 --> 00:06:49,639\nbuilt on this I love the idea of a\n\n218\n00:06:48,160 --> 00:06:51,360\npersonal assistant that will follow you\n\n219\n00:06:49,639 --> 00:06:53,319\naround wherever you are so I can give it\n\n220\n00:06:51,360 --> 00:06:55,120\na task on my computer like books and\n\n221\n00:06:53,319 --> 00:06:56,800\nflight and maybe when I'm out and about\n\n222\n00:06:55,120 --> 00:06:58,280\nit sends me an email and I can even\n\n223\n00:06:56,800 --> 00:07:00,039\nrespond to it if it needs more\n\n224\n00:06:58,280 --> 00:07:02,080\ninformation let me know what you think\n\n225\n00:07:00,039 --> 00:07:06,199\nin the comments down below subscribe and\n\n226\n00:07:02,080 --> 00:07:06,199\nas always see you in the next one",
"format": "srt",
"language_code": "en",
"language_name": "English",
"video_id": "l4tHKJFQvRg"
}
}
]Examples
Select an example to load its inputs and result into the playground.
Model card
Specifications
Pricing
- Base price
- $0.01 / run
- Daily free calls
- First 100 calls per day free (shared per organization)
Request & response
- Method
- POST
- Request body
- application/json
- Response
- application/json
- Execution
- sync
Parameters
- format
- string (srt, xml, json3, txt) · optional
- language_code
- string · optional
- video_id
- string · optional
- video_url
- string · optional
Access
- Provider
- YouTube
- API
- Platform API
- Base URL
- https://api.sandbase.ai
- Endpoint
- /v1/api/youtube/web-v2/video-captions
- Authentication
- Bearer API key
API README
YouTube Video Captions API
Fetch YouTube caption lists or full subtitle text by providing video_id or video_url. Specify language_code to retrieve subtitle text or leave it empty to inspect available caption tracks.
Use cases
- Extract subtitles in TXT or SRT formats for video summarization workflows.
- Inspect all available subtitle tracks and languages for a specific video.
- Download structured JSON3 transcript data for search indexing.
Request
curl -X POST "https://api.sandbase.ai/v1/api/youtube/web-v2/video-captions" \
-H "Authorization: Bearer $SANDBASE_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
format | string | No | Caption format |
video_id | string | No | Video ID (recommended) |
video_url | string | No | Full video URL (optional) |
language_code | string | No | Language code (e.g. en, zh-Hans, a.en), returns available caption list if empty |
Notes
- Leaving
language_codeempty returns the list of available caption tracks. - Supported
formatoptions includesrt,xml,json3, andtxt. - Providing
video_idis recommended instead ofvideo_url.
Related APIs
- YouTube Channel Community Posts: Returns community posts from a specific YouTube channel, including text content, polls, votes, and comment counts.
- YouTube Channel Description: Returns YouTube channel details including subscriber counts, video totals, view counts, joined date, and social links.
- YouTube Channel ID from URL: Resolves a YouTube channel URL to its canonical channel ID.
Start building
Send your first request
Platform API endpoint with unified authentication and usage tracking.
# The quoted heredoc keeps Unicode and shell metacharacters unchanged.
result=$(curl --fail-with-body --silent \
-X POST "https://api.sandbase.ai/v1/api/youtube/web-v2/video-captions" \
-H "Authorization: Bearer $SANDBASE_API_KEY" \
-H "Content-Type: application/json" \
--data-binary @- <<'SANDBASE_JSON'
{
"format": "srt",
"video_id": "l4tHKJFQvRg",
"language_code": "en"
}
SANDBASE_JSON
)
printf '%s\n' "$result"Explore more
Related APIs
| API | Price | Response | Released |
|---|---|---|---|
YouTube Video CaptionsThis API YouTube | $0.01 per call | JSON | Jul 31, 2026 |
YouTube | $0.0015 per call | JSON | Jul 31, 2026 |
YouTube | $0.0015 per call | JSON | Jul 31, 2026 |
YouTube | $0.0015 per call | JSON | Jul 31, 2026 |
YouTube | $0.0015 per call | JSON | Jul 31, 2026 |
YouTube | $0.0015 per call | JSON | Jul 31, 2026 |
Questions
FAQ
How do I use the YouTube Video Captions API?
Send a POST request to https://api.sandbase.ai/v1/api/youtube/web-v2/video-captions with your SandBase API key in the Authorization header (Bearer) and the parameters as a JSON body. You can also try it in the Playground on this page without writing code.
How much does the YouTube Video Captions API cost?
$0.01 per call. Every organization gets 100 free calls per UTC day, shared across eligible SandBase APIs including this one; after that each call is billed at this price from your SandBase balance. There is no subscription.
What parameters does the YouTube Video Captions API accept?
No parameters are required. Optional: format (one of srt, xml, json3, txt), language_code (string), video_id (string) and video_url (string). The Parameters table and the Playground on this page list every field.
What does the YouTube Video Captions API return?
A JSON response returned in the same HTTP request (synchronous).
Do I need a YouTube developer account or API key?
No. YouTube Video Captions runs through SandBase, so one SandBase API key covers this endpoint and every other API and model in the catalog. You do not need to apply for YouTube API access separately.
