curl --request POST \
--url https://api.deapi.ai/api/v1/client/transcribe/price-calculation \
--header 'Accept: <accept>' \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: multipart/form-data' \
--form 'source_url=https://www.youtube.com/watch?v=jNQXAC9IVRw' \
--form include_ts=false \
--form model=WhisperLargeV3 \
--form 1.source_file='@example-file'import requests
url = "https://api.deapi.ai/api/v1/client/transcribe/price-calculation"
files = { "1.source_file": ("example-file", open("example-file", "rb")) }
payload = {
"source_url": "https://www.youtube.com/watch?v=jNQXAC9IVRw",
"include_ts": "false",
"model": "WhisperLargeV3"
}
headers = {
"Accept": "<accept>",
"Authorization": "Bearer <token>"
}
response = requests.post(url, data=payload, files=files, headers=headers)
print(response.text)const form = new FormData();
form.append('source_url', 'https://www.youtube.com/watch?v=jNQXAC9IVRw');
form.append('include_ts', 'false');
form.append('model', 'WhisperLargeV3');
form.append('1.source_file', '{
"fileName": "example-file"
}');
const options = {method: 'POST', headers: {Accept: '<accept>', Authorization: 'Bearer <token>'}};
options.body = form;
fetch('https://api.deapi.ai/api/v1/client/transcribe/price-calculation', 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/transcribe/price-calculation",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"source_url\"\r\n\r\nhttps://www.youtube.com/watch?v=jNQXAC9IVRw\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"include_ts\"\r\n\r\nfalse\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"model\"\r\n\r\nWhisperLargeV3\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"1.source_file\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n{\r\n \"fileName\": \"example-file\"\r\n}\r\n-----011000010111000001101001--",
CURLOPT_HTTPHEADER => [
"Accept: <accept>",
"Authorization: Bearer <token>",
"Content-Type: multipart/form-data"
],
]);
$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/transcribe/price-calculation"
payload := strings.NewReader("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"source_url\"\r\n\r\nhttps://www.youtube.com/watch?v=jNQXAC9IVRw\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"include_ts\"\r\n\r\nfalse\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"model\"\r\n\r\nWhisperLargeV3\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"1.source_file\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n{\r\n \"fileName\": \"example-file\"\r\n}\r\n-----011000010111000001101001--")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Accept", "<accept>")
req.Header.Add("Authorization", "Bearer <token>")
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/transcribe/price-calculation")
.header("Accept", "<accept>")
.header("Authorization", "Bearer <token>")
.body("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"source_url\"\r\n\r\nhttps://www.youtube.com/watch?v=jNQXAC9IVRw\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"include_ts\"\r\n\r\nfalse\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"model\"\r\n\r\nWhisperLargeV3\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"1.source_file\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n{\r\n \"fileName\": \"example-file\"\r\n}\r\n-----011000010111000001101001--")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.deapi.ai/api/v1/client/transcribe/price-calculation")
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.body = "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"source_url\"\r\n\r\nhttps://www.youtube.com/watch?v=jNQXAC9IVRw\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"include_ts\"\r\n\r\nfalse\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"model\"\r\n\r\nWhisperLargeV3\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"1.source_file\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n{\r\n \"fileName\": \"example-file\"\r\n}\r\n-----011000010111000001101001--"
response = http.request(request)
puts response.read_body{
"data": {
"price": 0.25
}
}{
"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."
}Transcribe Price Calculation
Unified endpoint for calculating transcription price. Provide one of: source_url, source_file, or duration_seconds.
curl --request POST \
--url https://api.deapi.ai/api/v1/client/transcribe/price-calculation \
--header 'Accept: <accept>' \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: multipart/form-data' \
--form 'source_url=https://www.youtube.com/watch?v=jNQXAC9IVRw' \
--form include_ts=false \
--form model=WhisperLargeV3 \
--form 1.source_file='@example-file'import requests
url = "https://api.deapi.ai/api/v1/client/transcribe/price-calculation"
files = { "1.source_file": ("example-file", open("example-file", "rb")) }
payload = {
"source_url": "https://www.youtube.com/watch?v=jNQXAC9IVRw",
"include_ts": "false",
"model": "WhisperLargeV3"
}
headers = {
"Accept": "<accept>",
"Authorization": "Bearer <token>"
}
response = requests.post(url, data=payload, files=files, headers=headers)
print(response.text)const form = new FormData();
form.append('source_url', 'https://www.youtube.com/watch?v=jNQXAC9IVRw');
form.append('include_ts', 'false');
form.append('model', 'WhisperLargeV3');
form.append('1.source_file', '{
"fileName": "example-file"
}');
const options = {method: 'POST', headers: {Accept: '<accept>', Authorization: 'Bearer <token>'}};
options.body = form;
fetch('https://api.deapi.ai/api/v1/client/transcribe/price-calculation', 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/transcribe/price-calculation",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"source_url\"\r\n\r\nhttps://www.youtube.com/watch?v=jNQXAC9IVRw\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"include_ts\"\r\n\r\nfalse\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"model\"\r\n\r\nWhisperLargeV3\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"1.source_file\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n{\r\n \"fileName\": \"example-file\"\r\n}\r\n-----011000010111000001101001--",
CURLOPT_HTTPHEADER => [
"Accept: <accept>",
"Authorization: Bearer <token>",
"Content-Type: multipart/form-data"
],
]);
$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/transcribe/price-calculation"
payload := strings.NewReader("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"source_url\"\r\n\r\nhttps://www.youtube.com/watch?v=jNQXAC9IVRw\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"include_ts\"\r\n\r\nfalse\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"model\"\r\n\r\nWhisperLargeV3\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"1.source_file\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n{\r\n \"fileName\": \"example-file\"\r\n}\r\n-----011000010111000001101001--")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Accept", "<accept>")
req.Header.Add("Authorization", "Bearer <token>")
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/transcribe/price-calculation")
.header("Accept", "<accept>")
.header("Authorization", "Bearer <token>")
.body("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"source_url\"\r\n\r\nhttps://www.youtube.com/watch?v=jNQXAC9IVRw\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"include_ts\"\r\n\r\nfalse\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"model\"\r\n\r\nWhisperLargeV3\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"1.source_file\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n{\r\n \"fileName\": \"example-file\"\r\n}\r\n-----011000010111000001101001--")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.deapi.ai/api/v1/client/transcribe/price-calculation")
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.body = "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"source_url\"\r\n\r\nhttps://www.youtube.com/watch?v=jNQXAC9IVRw\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"include_ts\"\r\n\r\nfalse\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"model\"\r\n\r\nWhisperLargeV3\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"1.source_file\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n{\r\n \"fileName\": \"example-file\"\r\n}\r\n-----011000010111000001101001--"
response = http.request(request)
puts response.read_body{
"data": {
"price": 0.25
}
}{
"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."
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Headers
application/json Body
Transcription price calculation parameters
- Option 1
- Option 2
- Option 3
URL of video/audio to estimate price for. Mutually exclusive with source_file and duration_seconds. 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.
"WhisperLargeV3"
Response
Calculated price for transcription.
Show child attributes
Show child attributes
Was this page helpful?