Документация для MCP. https://context7.com/pgeth/auphonic-api
- API Overview
- Simple API
- JSON API: Complex Operations
- API Details and Advanced Features
- Query Data
- Update and Delete Resources
- Multitrack Productions
- Authentication
- Webhooks
- External Service Integration
- API Examples
The Auphonic REST API allows you to integrate our complete services and algorithms into your scripts, external workflows and third-party applications. If you run/use a podcast hosting (or similar) service, it is also possible to integrate your service as publishing target within Auphonic.
Our API comes in two flavours:
- A Simple API for quick shell scripts and batch processing of multiple files.
- A complete JSON API for full control.
The Simple API can upload files, set metadata, save and start productions in a single request by referencing an existing Preset, without storing an internal state. This makes it ideal for quick shell scripts and batch processing of multiple files.
If you want to have full control, like detailed file formats or outgoing services without the use of predefined presets, you should use our JSON API. The JSON-based API might require multiple requests and parsing of the JSON response (when uploading files and sending JSON data).
The Auphonic APIs can be used by any tool or programming language which is able to perform HTTP requests. All examples in this documentation utilize the command line tool curl for demonstration purpose.
Resources (presets, productions, services, etc.) are always referenced using an UUID, which is a unique string of 22 characters out of [a-zA-Z0-9].
Authentication is possible with API Key Authentication, HTTP Basic Authentication and OAuth 2.0 Authentication. All documentation examples use API Key Authentication, which is our recommended method for accessing your own resources.
The Auphonic Simple API should be used for small scripts like batch processing of multiple files. It is possible to upload files, set metadata, reference an existing Preset, save and start productions in a single multipart/form-data HTTP request. This makes it ideal for quick shell scripts and easy integrations.
The following POST request creates a new production and references an existing Preset:
curl -X POST https://auphonic.com/api/simple/productions.json \
-H "Authorization: bearer {api_key}" \
-F "preset=ceigtvDv8jH6NaK52Z5eXH" \
-F "title=My First Production" \
-F "input_file=@/home/user/your_audio_or_video_file.mp3" \
-F "action=start"Parameters:
api_key: your Auphonic API Keypreset: UUID of the referenced presettitle: the title metadata tag of the productioninput_file: the local audio or video file you want to uploadaction: can be start to start your production, or save to just save the data without starting the production
Note: When uploading files, curl needs an "@" in front of the filename!
It's also possible to fetch a file from an external HTTP server as input audio:
curl -X POST https://auphonic.com/api/simple/productions.json \
-H "Authorization: bearer {api_key}" \
-F "preset=ceigtvDv8jH6NaK52Z5eXH" \
-F "title=My First HTTP Production" \
-F "input_file=https://your_server.com/somefile.mp3" \
-F "action=start"When fetching files from SFTP, FTP, Dropbox, Amazon S3, SoundCloud or other External Services:
curl -X POST https://auphonic.com/api/simple/productions.json \
-H "Authorization: bearer {api_key}" \
-F "preset=ceigtvDv8jH6NaK52Z5eXH" \
-F "service=pmefeNCzkyT4TbRbDmoCDf" \
-F "input_file=my_dropbox_file.mp3" \
-F "title=My First Dropbox Production" \
-F "action=start"Parameters:
service: the UUID of your registered external serviceinput_file: the filename of the input file (e.g. on the Dropbox server)preset: the UUID of the preset you want to use
Various Metadata Tags can be set:
curl -X POST https://auphonic.com/api/simple/productions.json \
-H "Authorization: bearer {api_key}" \
-F "preset=ceigtvDv8jH6NaK52Z5eXH" \
-F "title=My First Production" \
-F "artist=The Artist" \
-F "album=Our Album" \
-F "track=1" \
-F "subtitle=Our subtitle" \
-F "append_chapters=true" \
-F "summary=Our very long summary." \
-F "genre=Podcast" \
-F "year=2012" \
-F "publisher=that's me" \
-F "url=https://auphonic.com" \
-F "license=Creative Commons Attribution 3.0 Austria" \
-F "license_url=http://creativecommons.org/licenses/by/3.0/at/" \
-F "tags=podcast, auphonic api, metadata" \
-F "image=@/home/user/your_image.jpg" \
-F "input_file=@/home/user/your_audio_or_video_file.mp3" \
-F "action=start"You can upload an additional text file with Chapter Marks:
curl -X POST https://auphonic.com/api/simple/productions.json \
-H "Authorization: bearer {api_key}" \
-F "preset=ceigtvDv8jH6NaK52Z5eXH" \
-F "title=Production with Chapters" \
-F "input_file=@/home/user/your_audio_or_video_file.mp3" \
-F "chapters=@/home/user/chapters.txt" \
-F "action=start"The text file must contain the start time in HH:MM:ss[.mmm] and a title for each chapter. Example:
00:00:00.000 Intro1 <http://url1.com>
00:00:10.000 Baby prepares to rock
00:00:30.000 Baby rocks the house
00:01:00.000 One Minute
00:01:30.000 End <http://url2.at/ha>
Audio algorithms can be enabled, disabled and parameters can be set:
curl -X POST https://auphonic.com/api/simple/productions.json \
-H "Authorization: bearer {api_key}" \
-F "preset=ceigtvDv8jH6NaK52Z5eXH" \
-F "title=Production with Detailed Algorithms" \
-F "input_file=@/home/user/your_audio_or_video_file.mp3" \
-F "filtering=true" \
-F "leveler=false" \
-F "normloudness=true" \
-F "loudnesstarget=-24" \
-F "maxpeak=-2" \
-F "denoise=false" \
-F "denoiseamount=100" \
-F "silence_cutter=true" \
-F "filler_cutter=true" \
-F "cough_cutter=true" \
-F "action=start"Our JSON-based API can be used for complex workflows and detailed control.
Multiple steps might be necessary to create and start an audio post production:
Step 1: Create a production and reference the preset you want to use. Step 2 (optional): Upload your local input file and add it to the newly created production. Step 3 (optional): Start the audio post production on our servers.
Step 1: Create a new Production:
curl -X POST -H "Content-Type: application/json" \
https://auphonic.com/api/productions.json \
-H "Authorization: bearer {api_key}" \
-d '{
"preset": "ceigtvDv8jH6NaK52Z5eXH",
"metadata": { "title": "My first Production" }
}'This returns JSON data containing the UUID of the newly created production:
{
"status_code": 200,
"form_errors": {},
"error_code": null,
"error_message": "",
"data": {
"uuid": "KKw7AxpLrDBQKLVnQCBtCh"
}
}Step 2: Upload a local input file:
curl -X POST https://auphonic.com/api/production/KKw7AxpLrDBQKLVnQCBtCh/upload.json \
-H "Authorization: bearer {api_key}" \
-F "input_file=@/home/user/your_audio_file.mp3"Step 3: Start the audio post production:
curl -X POST https://auphonic.com/api/production/KKw7AxpLrDBQKLVnQCBtCh/start.json \
-H "Authorization: bearer {api_key}"The local file upload step is not necessary if you fetch a file from an external HTTP server:
curl -X POST -H "Content-Type: application/json" \
https://auphonic.com/api/productions.json \
-H "Authorization: bearer {api_key}" \
-d '{
"preset": "ceigtvDv8jH6NaK52Z5eXH",
"input_file": "https://your_server.com/somefile.mp3",
"metadata": { "title": "My first HTTP Production" },
"action": "start"
}'Create a new production with Chapter Marks:
curl -X POST -H "Content-Type: application/json" \
https://auphonic.com/api/productions.json \
-H "Authorization: bearer {api_key}" \
-d '{
"preset": "ceigtvDv8jH6NaK52Z5eXH",
"input_file": "http://your_server.com/somefile.mp3",
"metadata": { "title": "My first Production with Chapters" },
"chapters": [
{"start": "00:00:00", "title": "Start Chapter", "url": "http://auphonic.com"},
{"start": "00:02:18", "title": "Second Chapter"},
{"start": "00:04:41", "title": "Chapter with Image", "image": "https://auphonic.com/static/images/logo.png"}
]
}'Audio Metadata can be set using the metadata parameter:
curl -X POST -H "Content-Type: application/json" \
https://auphonic.com/api/productions.json \
-H "Authorization: bearer {api_key}" \
-d '{
"metadata": {
"title": "Production Title",
"artist": "The Artist",
"album": "Our Album",
"track": 1,
"subtitle": "Our subtitle",
"append_chapters": true,
"summary": "Our very long summary.",
"genre": "Podcast",
"year": 2012,
"publisher": "that's me",
"url": "https://auphonic.com",
"license": "Creative Commons Attribution 3.0 Austria",
"license_url": "http://creativecommons.org/licenses/by/3.0/at/",
"tags": ["podcast", "auphonic api", "metadata"],
"location": {
"latitude": "47.070",
"longitude": "15.439"
}
}
}'Add Output Files to an existing production:
curl -H "Content-Type: application/json" -X POST \
https://auphonic.com/api/production/{uuid}.json \
-H "Authorization: bearer {api_key}" \
-d '{
"output_files": [
{"format":"mp3", "bitrate":"96"},
{"format":"aac", "bitrate":"64"},
{"format":"flac"}
]
}'Available output formats include:
mp3,mp3-vbr(MP3 with variable bitrate)vorbis(Ogg Vorbis),opus(Opus Codec)aac(MP4/M4A),flac,alac(MP4/M4A)wav(16-bit PCM),wav-24bit(24-bit PCM)video(same format as input)audiogram(Waveform Video)
Control how output filenames are constructed:
{"format":"mp3", "bitrate":"48", "filename":"MyFilename.mp3", "mono_mixdown":true}Setting Audio Algorithms parameters:
curl -H "Content-Type: application/json" -X POST \
https://auphonic.com/api/production/{uuid}.json \
-H "Authorization: bearer {api_key}" \
-d '{
"algorithms": {
"leveler": true, "normloudness": true, "loudnesstarget": -23,
"filtering": true, "denoise": false, "denoiseamount": 0
}
}'Add an Intro and Outro:
curl -X POST -H "Content-Type: application/json" \
https://auphonic.com/api/production/{uuid}.json \
-H "Authorization: bearer {api_key}" \
-d '{
"multi_input_files": [
{
"service": "pmefeNCzkyT4TbRbDmoCDf",
"input_file": "my_dropbox_file.mp3",
"type": "intro"
}
]
}'Add speech recognition to a production:
curl -X POST -H "Content-Type: application/json" \
https://auphonic.com/api/production/{uuid}.json \
-H "Authorization: bearer {api_key}" \
-d '{
"speech_recognition": {
"language": "en",
"keywords": ["keyword1", "keyword2"],
"shownotes": true
}
}'Example of setting all details in a single request:
curl -X POST -H "Content-Type: application/json" \
https://auphonic.com/api/productions.json \
-H "Authorization: bearer {api_key}" \
-d '{
"metadata": {
"title": "Production Title",
"artist": "The Artist",
"album": "Our Album",
"track": 1,
"summary": "Our very long summary.",
"genre": "Podcast",
"year": 2012,
"tags": ["podcast", "auphonic api", "metadata"]
},
"output_files": [
{"format": "mp3", "bitrate": "96"},
{"format": "flac"}
],
"algorithms": {
"filtering": true, "leveler": true,
"normloudness": true, "denoise": true,
"loudnesstarget": -23, "denoiseamount": 12
},
"input_file": "http://your_server.com/somefile.mp3",
"action": "start"
}'curl https://auphonic.com/api/production/{uuid}/status.json \
-H "Authorization: bearer {api_key}"curl https://auphonic.com/api/production/{uuid}.json \
-H "Authorization: bearer {api_key}"curl https://auphonic.com/api/productions.json \
-H "Authorization: bearer {api_key}"Parameters:
limit: Limits the number of returned productionsoffset: List starts at the defined numberuuids_only: only return UUIDsminimal_data: only minimal data for each production
curl https://auphonic.com/api/services.json \
-H "Authorization: bearer {api_key}"All result files are listed with download URLs in the API response:
curl https://auphonic.com/api/download/audio-result/{uuid}/filename.mp3 \
-H "Authorization: bearer {api_key}" -Lcurl -X POST -H "Content-Type: application/json" \
https://auphonic.com/api/production/{uuid}.json \
-H "Authorization: bearer {api_key}" \
-d '{"metadata": {"title": "New Title", "track": 2}}'curl -X DELETE https://auphonic.com/api/production/{uuid}.json \
-H "Authorization: bearer {api_key}"curl -X POST https://auphonic.com/api/production/{uuid}/stop.json \
-H "Authorization: bearer {api_key}"Reset a production to its initial state while keeping the input file:
curl -X POST -H "Content-Type: application/json" \
https://auphonic.com/api/production/{uuid}.json \
-H "Authorization: bearer {api_key}" \
-d '{
"reset_data": true,
"metadata": {"title": "New Title"},
"output_files": [{"format":"mp3"}]
}'An Auphonic Multitrack post production takes multiple parallel input audio tracks/files, analyzes and processes them individually as well as combined and creates the final mixdown automatically.
curl -X POST -H "Content-Type: application/json" \
https://auphonic.com/api/productions.json \
-H "Authorization: bearer {api_key}" \
-d '{
"multi_input_files": [
{"type": "multitrack", "id": "speech track"},
{"type": "multitrack", "id": "music track"}
],
"metadata": { "title": "My first Multitrack Production" },
"output_files": [{"format": "mp3"}],
"is_multitrack": true
}'Parameters:
is_multitrack: must be set to truetype: must be set tomultitrackfor each trackid: a readable identifier for each track
curl -X POST https://auphonic.com/api/production/{uuid}/upload.json \
-H "Authorization: bearer {api_key}" \
-F "speech track=@/home/user/file-for-track1.wav" \
-F "music track=@/home/user/file-for-track2.wav"curl -X POST -H "Content-Type: application/json" \
https://auphonic.com/api/productions.json \
-H "Authorization: bearer {api_key}" \
-d '{
"multi_input_files": [
{
"type": "multitrack", "id": "speech track",
"algorithms": {"denoise": true}
},
{
"type": "multitrack", "id": "music track",
"algorithms": {"filtering": false, "backforeground": "background"}
}
],
"algorithms": {
"loudnesstarget": -23,
"leveler": true,
"gate": true,
"crossgate": true
},
"is_multitrack": true
}'To get back the individual, processed tracks:
curl -X POST -H "Content-Type: application/json" \
https://auphonic.com/api/productions.json \
-H "Authorization: bearer {api_key}" \
-d '{
"output_files": [
{"format": "tracks", "ending": "wav.zip"},
{"format": "tracks", "ending": "flac.zip"}
],
"is_multitrack": true
}'Add the API Key to the authorization header:
curl https://auphonic.com/api/productions.json \
-H "Authorization: bearer {api_key}"Or as a GET parameter:
curl https://auphonic.com/api/productions.json?bearer_token={api_key}curl https://auphonic.com/api/productions.json -u username:passwordStep 1: Register an Auphonic App at the Auphonic Apps Page
Step 2: Redirect user to confirmation page:
https://auphonic.com/oauth2/authorize/?client_id={client_id}&redirect_uri={redirect_uri}&response_type=code
Step 3: Obtain access token:
curl -X POST https://auphonic.com/oauth2/token/ \
-F "client_id={client_id}" \
-F "client_secret={client_secret}" \
-F "redirect_uri={redirect_uri}" \
-F "grant_type=authorization_code" \
-F "code={grant_code}"Step 4: Use access token:
curl https://auphonic.com/api/productions.json \
-H "Authorization: Bearer {access_token}"Webhooks are HTTP POST callbacks to automate the interaction with Auphonic after processing is finished.
curl -X POST -H "Content-Type: application/json" \
https://auphonic.com/api/productions.json \
-H "Authorization: bearer {api_key}" \
-d '{
"preset": "iWfe3DUoKLFxF7pJzoq5qa",
"input_file": "http://auphonic.com/media/audio-examples/file.m4a",
"webhook": "https://your-server.com/callback"
}'After production is finished, Auphonic calls your webhook URI with:
Parameters sent:
uuid: the uuid of your productionstatus_string: eitherDoneorErrorstatus: 3 forDoneor 2 forError
Example webhook call:
curl -X POST https://your-web-hook.com/endpoint \
-d "status=3&status_string=Done&uuid=zeigtvDv8jH6NaK52Z5eXH"Integrate your service as an External Service within Auphonic.
Setup an Auphonic OAuth app following the OAuth 2.0 Authentication Flow for Web Apps.
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer {access_token_of_your_user}" \
https://auphonic.com/api/service/connect.json \
-d '{
"display_name": "My Family Podcast",
"webhook_url": "https://your-service.fm/userXY/webhook/token/",
"custom_data": "any-data-string-you-want"
}'Auphonic will invoke your webhook URL using JWT-encoded POST request:
curl -X POST -H "Content-Type: application/jwt" \
https://your-service.fm/userXY/webhook/token/ \
-d 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9...'Decode using your OAuth client_secret:
import jwt
data = jwt.decode(
jwt_token,
your_oauth_client_secret,
algorithms=["HS256"]
)
# Returns: {"uuid": "production_uuid", "custom_data": "your_data"}function createCORSRequest(method, url) {
var xhr = new XMLHttpRequest();
if ("withCredentials" in xhr) {
xhr.open(method, url, true);
} else if (typeof XDomainRequest != "undefined") {
xhr = new XDomainRequest();
xhr.open(method, url);
} else {
xhr = null;
}
return xhr;
}
function createProduction() {
var xhr = new createCORSRequest("POST", "https://auphonic.com/api/simple/productions.json");
xhr.setRequestHeader("Authorization", "Bearer XXXXXXX");
var formData = new FormData();
formData.append("title", "javascript upload test");
formData.append("artist", "me");
formData.append("loudnesstarget", -23);
formData.append("action", "start");
formData.append("input_file", document.querySelector('#files').files[0]);
xhr.send(formData);
}
document.getElementById('files').addEventListener('change', createProduction, false);HTML form:
<input type="file" id="files" name="files[]" multiple />function createCORSRequest(method, url) {
var xhr = new XMLHttpRequest();
if ("withCredentials" in xhr) {
xhr.open(method, url, true);
} else if (typeof XDomainRequest != "undefined") {
xhr = new XDomainRequest();
xhr.open(method, url);
} else {
xhr = null;
}
return xhr;
}
function get_token() {
return 'XXXXXXX'; // your OAuth2 bearer token
}
// Create production using JSON API
var xhr = createCORSRequest("POST", "https://auphonic.com/api/productions.json");
xhr.setRequestHeader("Content-Type", "application/json");
xhr.setRequestHeader("Authorization", "Bearer " + get_token());
xhr.onload = function(e) {
console.log("Production: created");
var response = JSON.parse(e.target.response);
var production_uuid = response.data.uuid;
var file = document.querySelector('#files').files[0];
if (file) {
console.log("File Upload: started");
var url = 'https://auphonic.com/api/production/{uuid}/upload.json'.replace('{uuid}', production_uuid);
var xhr2 = createCORSRequest("POST", url);
xhr2.setRequestHeader("Authorization", "Bearer " + get_token());
xhr2.upload.addEventListener("progress", function(e) {
console.log((e.loaded / e.total) * 100);
}, false);
xhr2.onload = function(e) {
console.log("File Upload: Done");
};
var formData = new FormData();
formData.append('input_file', file);
xhr2.send(formData);
}
};
xhr.send(JSON.stringify({"metadata":{"title": "test upload 2"}}));Using Simple API for batch processing:
#!/bin/bash
for file in *.mp3; do
curl -X POST https://auphonic.com/api/simple/productions.json \
-H "Authorization: bearer {api_key}" \
-F "preset=ceigtvDv8jH6NaK52Z5eXH" \
-F "title=$file" \
-F "input_file=@$file" \
-F "action=start"
doneComplete workflow with metadata and publishing:
curl -X POST -H "Content-Type: application/json" \
https://auphonic.com/api/productions.json \
-H "Authorization: bearer {api_key}" \
-d '{
"metadata": {
"title": "Episode 42: The Answer",
"artist": "My Podcast",
"album": "Season 2",
"track": 42,
"genre": "Podcast",
"summary": "In this episode we discuss the meaning of life.",
"tags": ["philosophy", "life", "answers"]
},
"output_files": [
{"format": "mp3", "bitrate": "128"},
{"format": "aac", "bitrate": "64"}
],
"outgoing_services": [
{"uuid": "your_podcast_host_service_uuid"}
],
"algorithms": {
"leveler": true,
"normloudness": true,
"loudnesstarget": -16,
"filtering": true
},
"input_file": "https://your-server.com/raw-episode-42.wav",
"webhook": "https://your-cms.com/auphonic-webhook",
"action": "start"
}'Monitor production status:
#!/bin/bash
UUID="your_production_uuid"
while true; do
STATUS=$(curl -s "https://auphonic.com/api/production/$UUID/status.json" \
-H "Authorization: bearer {api_key}" | \
jq -r '.data.status_string')
echo "Status: $STATUS"
if [ "$STATUS" = "Done" ] || [ "$STATUS" = "Error" ]; then
break
fi
sleep 30
done
echo "Production finished with status: $STATUS"- Use webhooks instead of polling for status updates
- Batch operations when possible using the Simple API
- Cache preset UUIDs to avoid repeated lookups
- Use appropriate timeouts for long-running operations
Always check HTTP status codes and parse error responses:
response=$(curl -w "%{http_code}" -s -o response.json \
-X POST https://auphonic.com/api/productions.json \
-H "Authorization: bearer {api_key}" \
-d '{"invalid": "data"}')
if [ "$response" -eq 200 ]; then
echo "Success"
else
echo "Error: HTTP $response"
cat response.json
fi- Always use HTTPS for API requests
- Store API keys securely, never in client-side code
- Use OAuth 2.0 for third-party applications
- Validate webhook signatures for external service integrations
- Implement proper authentication for your webhook endpoints
- Use lossless formats (WAV, FLAC) for input when possible
- Choose appropriate bitrates for output formats:
- MP3: 96-128 kbps for podcasts, 192+ for music
- AAC: 64-96 kbps for podcasts, 128+ for music
- Opus: 48-64 kbps for podcasts (most efficient)
- Always include title, artist, and genre
- Use consistent naming conventions
- Include episode numbers in track field for podcasts
- Add descriptive summaries for better discoverability
- Use tags for categorization and search
- 400 Bad Request: Invalid JSON or missing required parameters
- 401 Unauthorized: Invalid or missing API key/token
- 403 Forbidden: Insufficient permissions or credits
- 404 Not Found: Invalid UUID or resource doesn't exist
- 413 Payload Too Large: File size exceeds limits
- 429 Too Many Requests: Rate limit exceeded
- Ensure file format is supported (MP3, WAV, M4A, FLAC, etc.)
- Check file size limits (varies by account type)
- Use correct Content-Type headers for requests
- Verify @ prefix for local files in curl commands
- Verify API key is active and has sufficient permissions
- Check OAuth token expiration
- Ensure proper Authorization header format:
Bearer {token} - Test with HTTP Basic auth if other methods fail
- Verify webhook URL is accessible from external sources
- Check that endpoint accepts POST requests
- Implement proper error handling and return appropriate HTTP codes
- Log incoming webhook data for debugging
- Production:
https://auphonic.com/api/ - Simple API:
https://auphonic.com/api/simple/
Authorization: Bearer {api_key}
Authorization: Bearer {access_token} # OAuth
- JSON requests:
Content-Type: application/json - File uploads:
multipart/form-data(automatic with curl -F) - Webhooks:
application/x-www-form-urlencodedormultipart/form-data
| Method | Endpoint | Purpose |
|---|---|---|
| POST | /productions.json |
Create production |
| GET | /productions.json |
List productions |
| GET | /production/{uuid}.json |
Get production details |
| POST | /production/{uuid}/upload.json |
Upload files |
| POST | /production/{uuid}/start.json |
Start processing |
| DELETE | /production/{uuid}.json |
Delete production |
| GET | /services.json |
List external services |
| GET | /presets.json |
List presets |
| POST | /simple/productions.json |
Simple API endpoint |
This completes the comprehensive Auphonic API documentation. The API provides powerful audio processing capabilities with flexible integration options for various workflows and applications.