Skip to main content
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())
<?php
$url = 'https://api.musicgpt.com/api/public/v1/audio_transcribe';
$headers = ['Authorization: <API_KEY>'];

$data = [
    'language' => 'en',
    'translate' => true,
    'transcription_format' => 'srt',
    'word_timestamps' => true
];

// Option 1: audio_url
$data['audio_url'] = '<YOUR_AUDIO_URL>';

// Option 2: File Upload
// $data['audio_file'] = new CURLFile('audio.mp3');

$ch = curl_init($url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
echo $response;
package main

import (
	"bytes"
	"fmt"
	"io"
	"mime/multipart"
	"net/http"
	"os"
)

func main() {
	url := "https://api.musicgpt.com/api/public/v1/audio_transcribe"
	apiKey := "<API_KEY>"

	body := &bytes.Buffer{}
	writer := multipart.NewWriter(body)

	writer.WriteField("language", "en")
	writer.WriteField("translate", "true")
	writer.WriteField("transcription_format", "srt")
	writer.WriteField("word_timestamps", "true")

	// Option 1: audio_url
	writer.WriteField("audio_url", "<YOUR_AUDIO_URL>")

	// Option 2: File Upload
	// file, _ := os.Open("audio.mp3")
	// defer file.Close()
	// part, _ := writer.CreateFormFile("audio_file", "audio.mp3")
	// io.Copy(part, file)

	writer.Close()

	req, _ := http.NewRequest("POST", url, body)
	req.Header.Add("Authorization", apiKey)
	req.Header.Add("Content-Type", writer.FormDataContentType())

	resp, _ := http.DefaultClient.Do(req)
	defer resp.Body.Close()

	response, _ := io.ReadAll(resp.Body)
	fmt.Println(string(response))
}
// Java example omitted for brevity. Request if needed.
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=https://example.com/audio.mp3 \
  --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', 'https://example.com/audio.mp3');
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));
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\nhttps://example.com/audio.mp3\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": "transcribe123",
  "conversion_id": "conv456",
  "eta": -1,
  "credit_estimate": 100.1,
  "message": "Successfully published to queue"
}
{
  "success": false,
  "error": "Either audio_url or audio_file must be provided."
}
{
  "success": false,
  "error": "Internal Server Error"
}

Authorizations

Authorization
string
header
required

Body

multipart/form-data
audio_url
string
required

Input audio URL (supported format: YouTube URL).

Example:

"https://example.com/audio.mp3"

audio_file
file

Audio file to upload and process directly.

language
string

Language spoken in the audio (empty for auto-detection).

Example:

"en"

translate
boolean

Whether to translate the transcription to English.

Example:

false

transcription_format
enum<string>

Format of the transcribed output.

Available options:
plain_text,
formatted_text,
srt,
vtt
Example:

"plain_text"

translation_format
enum<string>

Format of the translated output (currently unused).

Available options:
plain_text,
formatted_text,
srt,
vtt
Example:

"plain_text"

word_timestamps
boolean

Whether to include word-level timestamps.

Example:

false

webhook_url
string

Callback URL for async processing results.

Example:

"http://your-webhook-url.com/callback"

Response

Successfully initiated transcription

success
boolean
task_id
string
conversion_id
string
eta
integer
credit_estimate
number<float>
message
string