curl --request POST \
--url https://api.deapi.ai/api/v1/client/vid2txt \
--header 'Accept: <accept>' \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"video_url": "https://www.youtube.com/watch?v=jNQXAC9IVRw",
"include_ts": false,
"model": "WhisperLargeV3",
"return_result_in_response": false,
"webhook_url": "https://your-server.com/webhooks/deapi"
}
'import requests
url = "https://api.deapi.ai/api/v1/client/vid2txt"
payload = {
"video_url": "https://www.youtube.com/watch?v=jNQXAC9IVRw",
"include_ts": False,
"model": "WhisperLargeV3",
"return_result_in_response": False,
"webhook_url": "https://your-server.com/webhooks/deapi"
}
headers = {
"Accept": "<accept>",
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
Accept: '<accept>',
Authorization: 'Bearer <token>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
video_url: 'https://www.youtube.com/watch?v=jNQXAC9IVRw',
include_ts: false,
model: 'WhisperLargeV3',
return_result_in_response: false,
webhook_url: 'https://your-server.com/webhooks/deapi'
})
};
fetch('https://api.deapi.ai/api/v1/client/vid2txt', 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.deapi.ai/api/v1/client/vid2txt",
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([
'video_url' => 'https://www.youtube.com/watch?v=jNQXAC9IVRw',
'include_ts' => false,
'model' => 'WhisperLargeV3',
'return_result_in_response' => false,
'webhook_url' => 'https://your-server.com/webhooks/deapi'
]),
CURLOPT_HTTPHEADER => [
"Accept: <accept>",
"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.deapi.ai/api/v1/client/vid2txt"
payload := strings.NewReader("{\n \"video_url\": \"https://www.youtube.com/watch?v=jNQXAC9IVRw\",\n \"include_ts\": false,\n \"model\": \"WhisperLargeV3\",\n \"return_result_in_response\": false,\n \"webhook_url\": \"https://your-server.com/webhooks/deapi\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Accept", "<accept>")
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.deapi.ai/api/v1/client/vid2txt")
.header("Accept", "<accept>")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"video_url\": \"https://www.youtube.com/watch?v=jNQXAC9IVRw\",\n \"include_ts\": false,\n \"model\": \"WhisperLargeV3\",\n \"return_result_in_response\": false,\n \"webhook_url\": \"https://your-server.com/webhooks/deapi\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.deapi.ai/api/v1/client/vid2txt")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Accept"] = '<accept>'
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"video_url\": \"https://www.youtube.com/watch?v=jNQXAC9IVRw\",\n \"include_ts\": false,\n \"model\": \"WhisperLargeV3\",\n \"return_result_in_response\": false,\n \"webhook_url\": \"https://your-server.com/webhooks/deapi\"\n}"
response = http.request(request)
puts response.read_body{
"data": {
"request_id": "c08a339c-73e5-4d67-a4d5-231302fbff9a"
}
}{
"data": {},
"message": "<string>",
"errors": [
"<unknown>"
],
"statusCode": 123
}{
"data": {},
"message": "<string>",
"errors": [
"<unknown>"
],
"statusCode": 123
}{
"message": "The selected model does not support Text To Image.",
"errors": {
"model": [
"The selected model does not support Text To Image."
]
}
}{
"message": "Too Many Attempts."
}Video-to-Text (Transcription)
Unique Platform Support: deAPI is one of the few APIs offering direct transcription from YT, TikTok, Twitch VODs, X and Kick videos — no need to download files first. Just paste the URL.
curl --request POST \
--url https://api.deapi.ai/api/v1/client/vid2txt \
--header 'Accept: <accept>' \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"video_url": "https://www.youtube.com/watch?v=jNQXAC9IVRw",
"include_ts": false,
"model": "WhisperLargeV3",
"return_result_in_response": false,
"webhook_url": "https://your-server.com/webhooks/deapi"
}
'import requests
url = "https://api.deapi.ai/api/v1/client/vid2txt"
payload = {
"video_url": "https://www.youtube.com/watch?v=jNQXAC9IVRw",
"include_ts": False,
"model": "WhisperLargeV3",
"return_result_in_response": False,
"webhook_url": "https://your-server.com/webhooks/deapi"
}
headers = {
"Accept": "<accept>",
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
Accept: '<accept>',
Authorization: 'Bearer <token>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
video_url: 'https://www.youtube.com/watch?v=jNQXAC9IVRw',
include_ts: false,
model: 'WhisperLargeV3',
return_result_in_response: false,
webhook_url: 'https://your-server.com/webhooks/deapi'
})
};
fetch('https://api.deapi.ai/api/v1/client/vid2txt', 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.deapi.ai/api/v1/client/vid2txt",
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([
'video_url' => 'https://www.youtube.com/watch?v=jNQXAC9IVRw',
'include_ts' => false,
'model' => 'WhisperLargeV3',
'return_result_in_response' => false,
'webhook_url' => 'https://your-server.com/webhooks/deapi'
]),
CURLOPT_HTTPHEADER => [
"Accept: <accept>",
"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.deapi.ai/api/v1/client/vid2txt"
payload := strings.NewReader("{\n \"video_url\": \"https://www.youtube.com/watch?v=jNQXAC9IVRw\",\n \"include_ts\": false,\n \"model\": \"WhisperLargeV3\",\n \"return_result_in_response\": false,\n \"webhook_url\": \"https://your-server.com/webhooks/deapi\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Accept", "<accept>")
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.deapi.ai/api/v1/client/vid2txt")
.header("Accept", "<accept>")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"video_url\": \"https://www.youtube.com/watch?v=jNQXAC9IVRw\",\n \"include_ts\": false,\n \"model\": \"WhisperLargeV3\",\n \"return_result_in_response\": false,\n \"webhook_url\": \"https://your-server.com/webhooks/deapi\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.deapi.ai/api/v1/client/vid2txt")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Accept"] = '<accept>'
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"video_url\": \"https://www.youtube.com/watch?v=jNQXAC9IVRw\",\n \"include_ts\": false,\n \"model\": \"WhisperLargeV3\",\n \"return_result_in_response\": false,\n \"webhook_url\": \"https://your-server.com/webhooks/deapi\"\n}"
response = http.request(request)
puts response.read_body{
"data": {
"request_id": "c08a339c-73e5-4d67-a4d5-231302fbff9a"
}
}{
"data": {},
"message": "<string>",
"errors": [
"<unknown>"
],
"statusCode": 123
}{
"data": {},
"message": "<string>",
"errors": [
"<unknown>"
],
"statusCode": 123
}{
"message": "The selected model does not support Text To Image.",
"errors": {
"model": [
"The selected model does not support Text To Image."
]
}
}{
"message": "Too Many Attempts."
}slug, check specific limits and features, and verify LoRA availability.WhisperLargeV3Ct2. A TikTok video_url sent with any other model — WhisperLargeV3 included — is rejected with 422 and nothing is charged. YouTube, Twitch VODs, X and Kick run on either model. Note that the v1 Model Selection endpoint does not list WhisperLargeV3Ct2, but v1 accepts the slug; v2 lists it normally.Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Headers
application/json Body
Video transcription parameters
Public video URL to transcribe. Supported platforms: YouTube, TikTok, Twitch, Kick, X. A TikTok URL is only accepted with model: WhisperLargeV3Ct2 — paired with any other model it is rejected with 422.
"https://www.youtube.com/watch?v=jNQXAC9IVRw"
Should transcription include timestamps. Required - send false for plain text or true for timestamped segments.
false
The model to use for transcription. Available models can be retrieved via the GET /api/v1/client/models endpoint.
"WhisperLargeV3"
If true, the result will be returned directly in the response instead of only download url. Optional parameter.
false
Optional HTTPS URL to receive webhook notifications for job status changes (processing, completed, failed). Must be HTTPS. Max 2048 characters. See Webhook Documentation for payload structure and authentication details.
2048"https://your-server.com/webhooks/deapi"
Response
ID of the inference request.
Information from success endpoint
Show child attributes
Show child attributes
Was this page helpful?