Management · Saved Voices
Saved Voices API
Pre-approved organizations can register Korean and English voice samples and reuse them in DIVE saved mode.
Register voice
Send audio and an exact transcript for at least one language as multipart/form-data. Organizations without saved-voice approval receive E4101/403.
URL
https://agitvxptajouhvoatxio.supabase.co/functions/v1/register-dive-voice-v1Authentication and headers
Store API keys in server environment variables and send them only in request headers.
X-API-Key: {YOUR_API_KEY}
Content-Type: multipart/form-data; boundary=...Request fields
namestringRequiredName to save for the voice.
Up to 50 characters
descriptionstringOptionalVoice description.
Up to 200 characters
audioFileKoFileConditionalKorean audio file.
Required when audioFileEn is absent
audioTextKostringConditionalExact transcript of the Korean audio file.
Paired with audioFileKo; must contain Korean
audioFileEnFileConditionalEnglish audio file.
Required when audioFileKo is absent
audioTextEnstringConditionalExact transcript of the English audio file.
Paired with audioFileEn; must not contain Korean
Request example
curl -X POST "https://agitvxptajouhvoatxio.supabase.co/functions/v1/register-dive-voice-v1" \
-H "X-API-Key: {YOUR_API_KEY}" \
-F "name=Customer support voice" \
-F "audioFileKo=@voice-ko.wav" \
-F "audioTextKo=Hello. This is the customer support voice."Response
Registration result
idUUIDRequiredID of the created voice.
namestringRequiredSaved name.
status"completed"RequiredFor a bilingual request, reference-token generation succeeded for at least one language. It does not mean both languages succeeded.
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"name": "Customer support voice",
"status": "completed"
}E4201 / E4203 · Input or audio error
A multipart field is missing, a language transcript is invalid, or a decoded file is outside the 2–20 second range.
E4101 · Pre-approval required
The organization does not have access to saved voices.
E5002 · Voice file storage temporarily unavailable
The uploaded voice files could not be stored. The API does not return completed and removes the voice and files created by this request. If that cleanup also fails, the voice remains in failed status.
- Accepted extensions are wav, mp3, m4a, webm, ogg, and flac; each audio file must be 2–20 seconds long.
- The multipart request and the combined uploaded audio are each limited to 50 MiB.
- The voice and its files are stored only after every uploaded file passes duration validation. Validation failures leave no voice or file behind.
- For a bilingual request, status is currently completed even when token generation succeeds for only one language. The response has no per-language failure reason; the list exposes only englishAvailable, with no separate Korean-availability field.
- A Korean-only registration attempts English generation in the background, so englishAvailable may be false immediately after completed. Background failures are not added to the registration response.
- Legacy audioFile/audioText fields remain supported, but new integrations should use the per-language fields.
List voices
Lists the organization's saved voices in newest-first order.
URL
https://agitvxptajouhvoatxio.supabase.co/functions/v1/list-dive-voices-v1Authentication and headers
Store API keys in server environment variables and send them only in request headers.
X-API-Key: {YOUR_API_KEY}Response
List response
voicesobject[]RequiredList of id, name, description, englishAvailable, usageCount, status, and createdAt values.
{
"voices": [
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"name": "Customer support voice",
"description": null,
"englishAvailable": false,
"usageCount": 0,
"status": "completed",
"createdAt": "2026-07-28T00:00:00.000Z"
}
]
}Delete voice
Deletes an organization-owned voice and its stored reference files.
URL
https://agitvxptajouhvoatxio.supabase.co/functions/v1/delete-dive-voice-v1/{id}Authentication and headers
Store API keys in server environment variables and send them only in request headers.
X-API-Key: {YOUR_API_KEY}Path parameters
idUUIDRequiredSaved voice ID to delete.
Response
Deleted
The response body is empty.
E5001 · Voice deletion failed
The stored voice files or the voice could not be deleted. If file deletion fails, the voice is kept.
- The voice is deleted only after all of its stored voice files are removed. If file deletion fails, the API returns E5001 and keeps the voice.