Skip to content

Audio Studio API

API Reference: View the complete Arc XP Audio API specification

The Audio Studio API produces studio audio: working pieces of audio such as Host Reads. This guide covers the generally available Studio operations: managing studio audio records, creating Host Reads (including using text-to-speech), uploading audio, and loudness normalization. It uses the same base URL and authentication as the rest of the Audio Center API; see the specification for exhaustive request and response fields.

Studio audio records

Manage studio audio records under /studio:

Terminal window
# List studio audio
curl -H "Authorization: Bearer YOUR_API_TOKEN" \
https://api.[org].arcpublishing.com/audiocenter/api/editorial/v1/studio/
# Get one
curl -H "Authorization: Bearer YOUR_API_TOKEN" \
https://api.[org].arcpublishing.com/audiocenter/api/editorial/v1/studio/{studio_audio_id}
# Delete one
curl -X DELETE https://api.[org].arcpublishing.com/audiocenter/api/editorial/v1/studio/{studio_audio_id} \
-H "Authorization: Bearer YOUR_API_TOKEN"

Each record has a purpose (host_read or general) and follows the same processing_status lifecycle as audio clips. Records created through Host Reads default to host_read; records created any other way (including through normalization) default to general.

Host Reads (text-to-speech)

Create a Host Read from text in a single request. Provide input_text (up to 30,000 characters) and voice_id; name, purpose, and per-request pronunciation_ids are optional.

Terminal window
curl -X POST https://api.[org].arcpublishing.com/audiocenter/api/editorial/v1/studio/tts \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "Segment intro",
"input_text": "The text to be narrated.",
"voice_id": "voice_abc123"
}'

Retrieve available voices and preview them exactly as for clip text-to-speech (TTS); see Text-to-Speech for voices (/settings/voices), previews (/tts/preview), and pronunciation dictionaries. Generation is asynchronous: include Accept: text/event-stream to receive server-sent events (SSE) progress, or omit it for a 202 Accepted.

Upload studio audio

To upload audio you already have instead of generating it, create a studio audio record, then request a presigned URL and upload the bytes directly to it:

Terminal window
curl -X POST "https://api.[org].arcpublishing.com/audiocenter/api/editorial/v1/studio/{studio_audio_id}/upload/presigned?file_name=host-read.mp3" \
-H "Authorization: Bearer YOUR_API_TOKEN"

The response includes an upload_url and a notification_url. Upload the bytes to the upload_url with a PUT, then subscribe to the notification_url for processing progress, the same presigned flow used for clips.

Loudness normalization

Normalization targets default to podcast-friendly values (lufs -16.0, true_peak -1.5 dBTP, loudness_range 11.0 LU); all are optional.

Normalize a clip or episode in place

Loudness-normalizes the source’s audio in place. Include Accept: text/event-stream for SSE progress, or omit it for a 202 Accepted.

Terminal window
curl -X POST https://api.[org].arcpublishing.com/audiocenter/api/editorial/v1/clips/{audio_id}/normalize \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{ "lufs": -16.0, "true_peak": -1.5, "loudness_range": 11.0 }'

For episodes, use POST /podcasts/{podcast_id}/episodes/{episode_guid}/normalize.

Normalize into a new studio audio

To normalize without altering the source, create a new studio audio from it. Provide the source_id (and episode_guid if the source is a podcast episode); use_original defaults to true.

Terminal window
curl -X POST https://api.[org].arcpublishing.com/audiocenter/api/editorial/v1/studio/mix/normalize \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{ "source_id": "AUDIO_ID", "use_original": true, "lufs": -16.0 }'

Returns 201 Created with a Location header pointing at the new studio audio record.