curl --request POST \
--url https://audimee.com/api/v1/audio-analysis \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"audioUrl": "https://example.com/audio/my-recording.wav"
}
'import requests
url = "https://audimee.com/api/v1/audio-analysis"
payload = { "audioUrl": "https://example.com/audio/my-recording.wav" }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({audioUrl: 'https://example.com/audio/my-recording.wav'})
};
fetch('https://audimee.com/api/v1/audio-analysis', 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://audimee.com/api/v1/audio-analysis",
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([
'audioUrl' => 'https://example.com/audio/my-recording.wav'
]),
CURLOPT_HTTPHEADER => [
"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://audimee.com/api/v1/audio-analysis"
payload := strings.NewReader("{\n \"audioUrl\": \"https://example.com/audio/my-recording.wav\"\n}")
req, _ := http.NewRequest("POST", url, payload)
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://audimee.com/api/v1/audio-analysis")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"audioUrl\": \"https://example.com/audio/my-recording.wav\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://audimee.com/api/v1/audio-analysis")
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"] = 'application/json'
request.body = "{\n \"audioUrl\": \"https://example.com/audio/my-recording.wav\"\n}"
response = http.request(request)
puts response.read_body{
"pitchRange": {
"low": 52,
"high": 69
},
"effectsDetection": {
"instrumental": false,
"reverbEcho": false
}
}Analyse audio
Measures the vocal range of the singer in an audio file. Compare pitchRange with a voice model’s pitchRange to choose a pitchShift for the conversion, and use effectsDetection to judge whether the audio is clean enough to convert well. The call is synchronous — the response carries the result.
audioUrl must be an http or https URL. Supported formats: wav, mp3, flac, ogg, m4a, aif and aiff — detected from the URL extension when present, otherwise from the downloaded file itself.
curl --request POST \
--url https://audimee.com/api/v1/audio-analysis \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"audioUrl": "https://example.com/audio/my-recording.wav"
}
'import requests
url = "https://audimee.com/api/v1/audio-analysis"
payload = { "audioUrl": "https://example.com/audio/my-recording.wav" }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({audioUrl: 'https://example.com/audio/my-recording.wav'})
};
fetch('https://audimee.com/api/v1/audio-analysis', 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://audimee.com/api/v1/audio-analysis",
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([
'audioUrl' => 'https://example.com/audio/my-recording.wav'
]),
CURLOPT_HTTPHEADER => [
"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://audimee.com/api/v1/audio-analysis"
payload := strings.NewReader("{\n \"audioUrl\": \"https://example.com/audio/my-recording.wav\"\n}")
req, _ := http.NewRequest("POST", url, payload)
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://audimee.com/api/v1/audio-analysis")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"audioUrl\": \"https://example.com/audio/my-recording.wav\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://audimee.com/api/v1/audio-analysis")
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"] = 'application/json'
request.body = "{\n \"audioUrl\": \"https://example.com/audio/my-recording.wav\"\n}"
response = http.request(request)
puts response.read_body{
"pitchRange": {
"low": 52,
"high": 69
},
"effectsDetection": {
"instrumental": false,
"reverbEcho": false
}
}Authorizations
Static API key issued by Audimee, passed as Authorization: Bearer {token}.
Body
Publicly reachable http or https URL of the audio file. A supported audio extension in the URL helps format detection but is not required.
Response
The analysis result.
Vocal range of the singer as MIDI note numbers — the same unit as a voice model's pitchRange. null when the range could not be measured.
Show child attributes
Show child attributes
Effects detected on the audio, using the same thresholds as the web app's quality check. A true flag means the audio contains signals that degrade conversion quality — consider isolating the vocal before converting. null when the backend response carried no effects signals.
Show child attributes
Show child attributes