Python
import requests
url = "https://api.musicgpt.com/api/public/v1/audio_transcribe"
headers = {"Authorization": "<API_KEY>"}
payload = {
"language": "en",
"translate": True,
"transcription_format": "plain_text",
"word_timestamps": True
}
# Option 1: audio_url
payload["audio_url"] = "<YOUR_AUDIO_URL>"
response = requests.post(url, headers=headers, data=payload)
# Option 2: File Upload
# with open("audio.mp3", "rb") as f:
# files = {"audio_file": f}
# response = requests.post(url, headers=headers, data=payload, files=files)
print(response.json())curl --request POST \
--url https://api.musicgpt.com/api/public/v1/audio_transcribe \
--header 'Authorization: <api-key>' \
--header 'Content-Type: multipart/form-data' \
--form 'audio_url=<string>' \
--form 'audio_file=<string>' \
--form language=en \
--form translate=false \
--form transcription_format=plain_text \
--form translation_format=plain_text \
--form word_timestamps=false \
--form webhook_url=http://your-webhook-url.com/callback \
--form 0.audio_file='@example-file' \
--form 1.audio_file='@example-file'const form = new FormData();
form.append('audio_url', '<string>');
form.append('audio_file', '<string>');
form.append('language', 'en');
form.append('translate', 'false');
form.append('transcription_format', 'plain_text');
form.append('translation_format', 'plain_text');
form.append('word_timestamps', 'false');
form.append('webhook_url', 'http://your-webhook-url.com/callback');
form.append('0.audio_file', '{
"fileName": "example-file"
}');
form.append('1.audio_file', '{
"fileName": "example-file"
}');
const options = {method: 'POST', headers: {Authorization: '<api-key>'}};
options.body = form;
fetch('https://api.musicgpt.com/api/public/v1/audio_transcribe', 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.musicgpt.com/api/public/v1/audio_transcribe",
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=\"audio_url\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"audio_file\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"language\"\r\n\r\nen\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"translate\"\r\n\r\nfalse\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"transcription_format\"\r\n\r\nplain_text\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"translation_format\"\r\n\r\nplain_text\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"word_timestamps\"\r\n\r\nfalse\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"webhook_url\"\r\n\r\nhttp://your-webhook-url.com/callback\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"0.audio_file\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n{\r\n \"fileName\": \"example-file\"\r\n}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"1.audio_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 => [
"Authorization: <api-key>",
"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.musicgpt.com/api/public/v1/audio_transcribe"
payload := strings.NewReader("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"audio_url\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"audio_file\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"language\"\r\n\r\nen\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"translate\"\r\n\r\nfalse\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"transcription_format\"\r\n\r\nplain_text\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"translation_format\"\r\n\r\nplain_text\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"word_timestamps\"\r\n\r\nfalse\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"webhook_url\"\r\n\r\nhttp://your-webhook-url.com/callback\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"0.audio_file\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n{\r\n \"fileName\": \"example-file\"\r\n}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"1.audio_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("Authorization", "<api-key>")
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.musicgpt.com/api/public/v1/audio_transcribe")
.header("Authorization", "<api-key>")
.header("Content-Type", "multipart/form-data; boundary=---011000010111000001101001")
.body("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"audio_url\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"audio_file\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"language\"\r\n\r\nen\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"translate\"\r\n\r\nfalse\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"transcription_format\"\r\n\r\nplain_text\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"translation_format\"\r\n\r\nplain_text\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"word_timestamps\"\r\n\r\nfalse\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"webhook_url\"\r\n\r\nhttp://your-webhook-url.com/callback\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"0.audio_file\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n{\r\n \"fileName\": \"example-file\"\r\n}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"1.audio_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.musicgpt.com/api/public/v1/audio_transcribe")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = '<api-key>'
request["Content-Type"] = 'multipart/form-data; boundary=---011000010111000001101001'
request.body = "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"audio_url\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"audio_file\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"language\"\r\n\r\nen\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"translate\"\r\n\r\nfalse\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"transcription_format\"\r\n\r\nplain_text\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"translation_format\"\r\n\r\nplain_text\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"word_timestamps\"\r\n\r\nfalse\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"webhook_url\"\r\n\r\nhttp://your-webhook-url.com/callback\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"0.audio_file\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n{\r\n \"fileName\": \"example-file\"\r\n}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"1.audio_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{
"success": true,
"task_id": "cade1dea-a9fb-49d3-a5b2-52f786ea5ad3",
"conversion_id": "1c5a2543-5b99-499c-8bb4-28424497e60f",
"eta": 46,
"credit_estimate": 0.04,
"message": "",
"status": "IN_QUEUE"
}{
"success": false,
"error": "Internal Server Error"
}Features
Audio Transcribe
Processes an audio file to generate a transcription of the spoken content with support for language detection, translation, and multiple output formats.
POST
/
v1
/
audio_transcribe
Python
import requests
url = "https://api.musicgpt.com/api/public/v1/audio_transcribe"
headers = {"Authorization": "<API_KEY>"}
payload = {
"language": "en",
"translate": True,
"transcription_format": "plain_text",
"word_timestamps": True
}
# Option 1: audio_url
payload["audio_url"] = "<YOUR_AUDIO_URL>"
response = requests.post(url, headers=headers, data=payload)
# Option 2: File Upload
# with open("audio.mp3", "rb") as f:
# files = {"audio_file": f}
# response = requests.post(url, headers=headers, data=payload, files=files)
print(response.json())curl --request POST \
--url https://api.musicgpt.com/api/public/v1/audio_transcribe \
--header 'Authorization: <api-key>' \
--header 'Content-Type: multipart/form-data' \
--form 'audio_url=<string>' \
--form 'audio_file=<string>' \
--form language=en \
--form translate=false \
--form transcription_format=plain_text \
--form translation_format=plain_text \
--form word_timestamps=false \
--form webhook_url=http://your-webhook-url.com/callback \
--form 0.audio_file='@example-file' \
--form 1.audio_file='@example-file'const form = new FormData();
form.append('audio_url', '<string>');
form.append('audio_file', '<string>');
form.append('language', 'en');
form.append('translate', 'false');
form.append('transcription_format', 'plain_text');
form.append('translation_format', 'plain_text');
form.append('word_timestamps', 'false');
form.append('webhook_url', 'http://your-webhook-url.com/callback');
form.append('0.audio_file', '{
"fileName": "example-file"
}');
form.append('1.audio_file', '{
"fileName": "example-file"
}');
const options = {method: 'POST', headers: {Authorization: '<api-key>'}};
options.body = form;
fetch('https://api.musicgpt.com/api/public/v1/audio_transcribe', 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.musicgpt.com/api/public/v1/audio_transcribe",
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=\"audio_url\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"audio_file\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"language\"\r\n\r\nen\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"translate\"\r\n\r\nfalse\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"transcription_format\"\r\n\r\nplain_text\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"translation_format\"\r\n\r\nplain_text\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"word_timestamps\"\r\n\r\nfalse\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"webhook_url\"\r\n\r\nhttp://your-webhook-url.com/callback\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"0.audio_file\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n{\r\n \"fileName\": \"example-file\"\r\n}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"1.audio_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 => [
"Authorization: <api-key>",
"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.musicgpt.com/api/public/v1/audio_transcribe"
payload := strings.NewReader("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"audio_url\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"audio_file\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"language\"\r\n\r\nen\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"translate\"\r\n\r\nfalse\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"transcription_format\"\r\n\r\nplain_text\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"translation_format\"\r\n\r\nplain_text\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"word_timestamps\"\r\n\r\nfalse\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"webhook_url\"\r\n\r\nhttp://your-webhook-url.com/callback\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"0.audio_file\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n{\r\n \"fileName\": \"example-file\"\r\n}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"1.audio_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("Authorization", "<api-key>")
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.musicgpt.com/api/public/v1/audio_transcribe")
.header("Authorization", "<api-key>")
.header("Content-Type", "multipart/form-data; boundary=---011000010111000001101001")
.body("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"audio_url\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"audio_file\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"language\"\r\n\r\nen\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"translate\"\r\n\r\nfalse\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"transcription_format\"\r\n\r\nplain_text\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"translation_format\"\r\n\r\nplain_text\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"word_timestamps\"\r\n\r\nfalse\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"webhook_url\"\r\n\r\nhttp://your-webhook-url.com/callback\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"0.audio_file\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n{\r\n \"fileName\": \"example-file\"\r\n}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"1.audio_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.musicgpt.com/api/public/v1/audio_transcribe")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = '<api-key>'
request["Content-Type"] = 'multipart/form-data; boundary=---011000010111000001101001'
request.body = "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"audio_url\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"audio_file\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"language\"\r\n\r\nen\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"translate\"\r\n\r\nfalse\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"transcription_format\"\r\n\r\nplain_text\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"translation_format\"\r\n\r\nplain_text\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"word_timestamps\"\r\n\r\nfalse\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"webhook_url\"\r\n\r\nhttp://your-webhook-url.com/callback\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"0.audio_file\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n{\r\n \"fileName\": \"example-file\"\r\n}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"1.audio_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{
"success": true,
"task_id": "cade1dea-a9fb-49d3-a5b2-52f786ea5ad3",
"conversion_id": "1c5a2543-5b99-499c-8bb4-28424497e60f",
"eta": 46,
"credit_estimate": 0.04,
"message": "",
"status": "IN_QUEUE"
}{
"success": false,
"error": "Internal Server Error"
}Convert your audio recordings into high-accuracy text using AI.
Audio Transcribe enables seamless transcription for podcasts, interviews, lectures, meetings, and more.
Use this endpoint to transcribe audio recordings into text.
- Fast and accurate speech-to-text conversion
- Supports multiple languages
- Instant or asynchronous transcription with webhook support
Endpoint
POST /v1/audio_transcribe
Sample Output
Transcript output for a short sample recording:“Welcome to the show. Today we are talking about how machines learn to listen, and what that means for the music you hear every day. Let’s get started.”
Try it Yourself
Visit the Audio Transcribe Endpoint Explorer to upload audio files and get instant transcripts.Request Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
audio_url | String | Optional | URL to the audio file you want to transcribe. Either audio_url or audio_file must be provided. |
audio_file | File | Optional | Upload the audio file directly. Either audio_url or audio_file must be provided. |
language | String | Optional | Language code (e.g., en, es, fr) for targeted accuracy |
webhook_url | String | Optional | Webhook URL to receive the transcription asynchronously |
content-type: multipart/form-data
Note: Either audio_file or audio_url must be provided.
Sample Request
Python
import requests
url = "https://api.musicgpt.com/api/public/v1/audio_transcribe"
headers = {"Authorization": "<API_KEY>"}
payload = {
"language": "en",
"translate": True,
"transcription_format": "plain_text",
"word_timestamps": True
}
# Option 1: audio_url
payload["audio_url"] = "<YOUR_AUDIO_URL>"
response = requests.post(url, headers=headers, data=payload)
# Option 2: File Upload
# with open("audio.mp3", "rb") as f:
# files = {"audio_file": f}
# response = requests.post(url, headers=headers, data=payload, files=files)
print(response.json())
Sample Response
Success (200 OK)
{
"success":true,
"task_id":"cade1dea-a9fb-49d3-a5b2-52f786ea5ad3",
"conversion_id":"1c5a2543-5b99-499c-8bb4-28424497e60f",
"eta":46,
"credit_estimate":0.04,
"message":"",
"status":"IN_QUEUE"
}
Webhook Response
When transcription completes, your webhook will receive:{
"success": true,
"conversion_type": "Audio Transcription",
"task_id": "cade1dea-a9fb-49d3-a5b2-52f786ea5ad3",
"conversion_id": "1c5a2543-5b99-499c-8bb4-28424497e60f",
"transcription": "Welcome to the show. Today we are talking about how machines learn to listen.",
"translation": null,
"detected_language": "en",
"word_timestamps": [
{"word": "Welcome", "start": 0.0, "end": 0.42},
{"word": "to", "start": 0.42, "end": 0.55},
{"word": "the", "start": 0.55, "end": 0.68},
{"word": "show", "start": 0.68, "end": 1.01}
]
}
Payload and Request Formation
Authorizations
Body
multipart/form-data
- Option 1
- Option 2
Input audio URL (supported format: YouTube URL).
Audio file to upload and process directly.
Language spoken in the audio (empty for auto-detection).
Example:
"en"
Whether to translate the transcription to English.
Example:
false
Format of the transcribed output.
Available options:
plain_text, formatted_text, srt, vtt Example:
"plain_text"
Format of the translated output (currently unused).
Available options:
plain_text, formatted_text, srt, vtt Example:
"plain_text"
Whether to include word-level timestamps.
Example:
false
Callback URL for async processing results.
Example:
"http://your-webhook-url.com/callback"