Submit YouTube Transcripts task
curl --request POST \
--url https://api.socq.ai/v1/youtube/transcripts \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"urls": [
"<string>"
],
"language": "<string>",
"callback_url": "<string>"
}
'import requests
url = "https://api.socq.ai/v1/youtube/transcripts"
payload = {
"urls": ["<string>"],
"language": "<string>",
"callback_url": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({urls: ['<string>'], language: '<string>', callback_url: '<string>'})
};
fetch('https://api.socq.ai/v1/youtube/transcripts', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.socq.ai/v1/youtube/transcripts",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'urls' => [
'<string>'
],
'language' => '<string>',
'callback_url' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.socq.ai/v1/youtube/transcripts"
payload := strings.NewReader("{\n \"urls\": [\n \"<string>\"\n ],\n \"language\": \"<string>\",\n \"callback_url\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.socq.ai/v1/youtube/transcripts")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"urls\": [\n \"<string>\"\n ],\n \"language\": \"<string>\",\n \"callback_url\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.socq.ai/v1/youtube/transcripts")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"urls\": [\n \"<string>\"\n ],\n \"language\": \"<string>\",\n \"callback_url\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"code": 200,
"data": {
"task_id": "A1B2C3D4E5F6G7H8",
"status": "queued",
"created_time": "2026-07-17T10:29:30"
}
}{
"code": 123,
"error": {
"message": "<string>",
"type": "<string>"
}
}{
"code": 123,
"error": {
"message": "<string>",
"type": "<string>"
}
}{
"code": 123,
"error": {
"message": "<string>",
"type": "<string>"
}
}YouTube Transcripts
Collect plain-text transcripts from public YouTube videos.
POST
/
v1
/
youtube
/
transcripts
Submit YouTube Transcripts task
curl --request POST \
--url https://api.socq.ai/v1/youtube/transcripts \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"urls": [
"<string>"
],
"language": "<string>",
"callback_url": "<string>"
}
'import requests
url = "https://api.socq.ai/v1/youtube/transcripts"
payload = {
"urls": ["<string>"],
"language": "<string>",
"callback_url": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({urls: ['<string>'], language: '<string>', callback_url: '<string>'})
};
fetch('https://api.socq.ai/v1/youtube/transcripts', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.socq.ai/v1/youtube/transcripts",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'urls' => [
'<string>'
],
'language' => '<string>',
'callback_url' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.socq.ai/v1/youtube/transcripts"
payload := strings.NewReader("{\n \"urls\": [\n \"<string>\"\n ],\n \"language\": \"<string>\",\n \"callback_url\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.socq.ai/v1/youtube/transcripts")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"urls\": [\n \"<string>\"\n ],\n \"language\": \"<string>\",\n \"callback_url\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.socq.ai/v1/youtube/transcripts")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"urls\": [\n \"<string>\"\n ],\n \"language\": \"<string>\",\n \"callback_url\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"code": 200,
"data": {
"task_id": "A1B2C3D4E5F6G7H8",
"status": "queued",
"created_time": "2026-07-17T10:29:30"
}
}{
"code": 123,
"error": {
"message": "<string>",
"type": "<string>"
}
}{
"code": 123,
"error": {
"message": "<string>",
"type": "<string>"
}
}{
"code": 123,
"error": {
"message": "<string>",
"type": "<string>"
}
}YouTube Transcripts
Collect one plain-text transcript for each public video URL.{
"urls": ["https://www.youtube.com/watch?v=VIDEO_ID"],
"language": "en"
}
language is an optional BCP-47 preferred language. If it is unavailable, another available language may be returned. Always use the result’s language field as the actual transcript language.
Videos without an available transcript do not produce a result.
Result Item
{
"id": "VIDEO_ID",
"platform": "youtube",
"resource": "transcripts",
"type": "transcript",
"url": "https://www.youtube.com/watch?v=VIDEO_ID",
"title": "Example video",
"text": "Plain-text transcript content...",
"language": "en",
"available_languages": ["en", "es"],
"format": "plaintext",
"transcript_source": "user_generated",
"collected_at": "2026-07-15T10:30:00",
"extra": {}
}
Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Body
application/json
⌘I

