OpenAI
Translation
Use DeerAPI to call the Translation endpoint with request details, response details, examples, and an OpenAPI playground.
POST
/
v1
/
audio
/
translations
cURL
curl -s 'https://api.deerapi.com/v1/audio/translations' \
-H "Authorization: Bearer $DEERAPI_KEY" \
-F 'model=whisper-1' \
-F 'prompt=A cinematic shot of a quiet city street at sunset.' \
-F 'response_format=json' \
-F 'file=@/path/to/audio.mp3'import os
import requests
url = "https://api.deerapi.com/v1/audio/translations"
headers = {"Authorization": "Bearer " + os.environ["DEERAPI_KEY"]}
data = {
"model": "whisper-1",
"prompt": "A cinematic shot of a quiet city street at sunset.",
"response_format": "json"
}
files = {"file": open("/path/to/audio.mp3", "rb")}
response = requests.post(url, headers=headers, data=data, files=files)
print(response.json())
const form = new FormData();
form.append("model", "whisper-1");
form.append("prompt", "A cinematic shot of a quiet city street at sunset.");
form.append("response_format", "json");
form.append("file", new Blob(["replace with file bytes"]), "audio.mp3");
const response = await fetch("https://api.deerapi.com/v1/audio/translations", {
method: "POST",
headers: { Authorization: `Bearer ${process.env.DEERAPI_KEY}` },
body: form,
});
console.log(await response.json());
<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.deerapi.com/v1/audio/translations",
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=\"model\"\r\n\r\nwhisper-1\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n@/path/to/audio.mp3\r\n-----011000010111000001101001--",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: multipart/form-data; boundary=---011000010111000001101001"
],
]);
$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.deerapi.com/v1/audio/translations"
payload := strings.NewReader("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"model\"\r\n\r\nwhisper-1\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n@/path/to/audio.mp3\r\n-----011000010111000001101001--")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "multipart/form-data; boundary=---011000010111000001101001")
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.deerapi.com/v1/audio/translations")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "multipart/form-data; boundary=---011000010111000001101001")
.body("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"model\"\r\n\r\nwhisper-1\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n@/path/to/audio.mp3\r\n-----011000010111000001101001--")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.deerapi.com/v1/audio/translations")
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"] = 'multipart/form-data; boundary=---011000010111000001101001'
request.body = "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"model\"\r\n\r\nwhisper-1\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n@/path/to/audio.mp3\r\n-----011000010111000001101001--"
response = http.request(request)
puts response.read_body{
"text": "Hello, welcome to DeerAPI."
}Overview
Use this endpoint to call the Translation workflow through DeerAPI. The API reference on this page shows the request schema, response schema, authentication requirements, and runnable examples for the configured endpoint.Before you start
Use the DeerAPI base URL and pass your API Key in theAuthorization header:
https://api.deerapi.com
Authorization: Bearer $DEERAPI_KEY
Model selection
Choose a current model ID from the live pricing page. Model availability changes over time, so avoid copying a model ID from an old project without checking the live list first.Implementation notes
- Use the OpenAPI playground for the exact request fields accepted by this endpoint.
- Keep API Keys on the server side when you build production applications.
- Log the request ID from failed calls so support can investigate the request.
- Retry
429,500, and503responses with exponential backoff.
Authorizations
Use a DeerAPI API Key as a Bearer token.
Body
multipart/form-data
The audio file to translate. Supported formats: flac, mp3, mp4, mpeg, mpga, m4a, ogg, wav, webm.
The audio translation model to use. Choose a current speech model from the Models page.
Optional text to guide the model's style or continue a previous audio segment. The prompt should be in English.
The output format for the translation.
Available options:
json, text, srt, verbose_json, vtt Sampling temperature between 0 and 1. Higher values produce more random output; lower values are more focused. When set to 0, the model auto-adjusts temperature using log probability.
Required range:
0 <= x <= 1Response
200 - application/json
The translation result in English.
The translated text in English.
⌘I
cURL
curl -s 'https://api.deerapi.com/v1/audio/translations' \
-H "Authorization: Bearer $DEERAPI_KEY" \
-F 'model=whisper-1' \
-F 'prompt=A cinematic shot of a quiet city street at sunset.' \
-F 'response_format=json' \
-F 'file=@/path/to/audio.mp3'import os
import requests
url = "https://api.deerapi.com/v1/audio/translations"
headers = {"Authorization": "Bearer " + os.environ["DEERAPI_KEY"]}
data = {
"model": "whisper-1",
"prompt": "A cinematic shot of a quiet city street at sunset.",
"response_format": "json"
}
files = {"file": open("/path/to/audio.mp3", "rb")}
response = requests.post(url, headers=headers, data=data, files=files)
print(response.json())
const form = new FormData();
form.append("model", "whisper-1");
form.append("prompt", "A cinematic shot of a quiet city street at sunset.");
form.append("response_format", "json");
form.append("file", new Blob(["replace with file bytes"]), "audio.mp3");
const response = await fetch("https://api.deerapi.com/v1/audio/translations", {
method: "POST",
headers: { Authorization: `Bearer ${process.env.DEERAPI_KEY}` },
body: form,
});
console.log(await response.json());
<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.deerapi.com/v1/audio/translations",
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=\"model\"\r\n\r\nwhisper-1\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n@/path/to/audio.mp3\r\n-----011000010111000001101001--",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: multipart/form-data; boundary=---011000010111000001101001"
],
]);
$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.deerapi.com/v1/audio/translations"
payload := strings.NewReader("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"model\"\r\n\r\nwhisper-1\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n@/path/to/audio.mp3\r\n-----011000010111000001101001--")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "multipart/form-data; boundary=---011000010111000001101001")
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.deerapi.com/v1/audio/translations")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "multipart/form-data; boundary=---011000010111000001101001")
.body("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"model\"\r\n\r\nwhisper-1\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n@/path/to/audio.mp3\r\n-----011000010111000001101001--")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.deerapi.com/v1/audio/translations")
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"] = 'multipart/form-data; boundary=---011000010111000001101001'
request.body = "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"model\"\r\n\r\nwhisper-1\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n@/path/to/audio.mp3\r\n-----011000010111000001101001--"
response = http.request(request)
puts response.read_body{
"text": "Hello, welcome to DeerAPI."
}