NgamiaNgamia

Audio Tools

Generate speech and sound effects through Ngamia with catalog pricing and binary audio responses.

Ngamia keeps ElevenLabs credentials server-side and exposes audio operations with Ngamia authentication and credit controls. Discover model IDs and prices with GET /v1/models; inspect your balance with GET /v1/billing/balance.

Read this page in four groups: generation (sound effects, dialogue, music), audio processing (conversion, isolation, alignment, dubbing), voice assets (library, design, clone management), and PVC (consent, samples, speaker selection, verification, training). For the Bonga conversation and standard speech endpoints, start with Bonga and speech.

Your user → Your app → Ngamia audio API → Configured audio provider
              ↑              ↓                        │
              └─ playback ← audio, text, or job state ┘

The protected Ngamia web app includes an Audio studio at /audio. It provides speech, music, sound effects, two-speaker dialogue, transcription, voice conversion, noise isolation, transcript alignment, and voice management. Results can be played and downloaded in the browser. The page uses the logged-in account session and the same Ngamia credit rates as API calls; no ElevenLabs key belongs in the browser. Model availability depends on the enabled catalog and provider account.

Sound effects

POST/v1/audio/sound-effectsAPI key or JWT

Choose the enabled elevenlabs/eleven_text_to_sound_v2 model from the live catalog. Duration is required so Ngamia can reserve credits before generation. ElevenLabs currently accepts durations from 0.5 to 30 seconds.

curl --fail-with-body https://api.ngamia.cc/v1/audio/sound-effects \
  -H "Authorization: Bearer $NGAMIA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model":"elevenlabs/eleven_text_to_sound_v2",
    "text":"A short bright notification chime with a warm wooden resonance",
    "duration_seconds":2.5,
    "loop":false,
    "prompt_influence":0.65
  }' \
  -D sound-effect.headers \
  -o sound-effect.mp3

The success body is raw audio bytes; use the response Content-Type to determine the format. Ngamia returns X-Generation-Id when ElevenLabs supplies one. Errors are JSON. Sound effects use the model's per-generation request price shown in the live catalog; duration_seconds controls output length, not the Ngamia billing unit. Provider costs remain unknown until ElevenLabs reports an exact request cost.

FieldRequiredDescription
modelYesEnabled audio generation model from GET /v1/models.
textYesDescribe the sound effect, up to 4,000 characters.
duration_secondsYesRequested length, 0.5–30 seconds.
loopNoAsk the model for a seamless loop.
prompt_influenceNoModel-specific prompt adherence value from 0 to 1.
output_formatNoProvider format supported by the configured account plan.

Music planning and rendering

Use POST /v1/music/plans to preview a structured arrangement, then render it with POST /v1/music after the user approves the duration and estimated credit charge. Use /v1/music/detailed when your app needs the generated audio plus composition plan and song metadata in one multipart response. /v1/music/detailed/stream sends composition metadata and audio chunks as server-sent events; it can also include word timestamps and waveform data. Both detailed routes use the same generation price as /v1/music. Plan creation does not render audio and currently has no Ngamia credit charge; provider rate limits still apply.

Speech and transcription

Use POST /v1/audio/speech for text-to-speech and POST /v1/audio/speech/stream to stream generated audio for low-latency playback. For subtitle timing, POST /v1/audio/speech/with-timestamps returns JSON with base64 audio plus character and word alignments; /v1/audio/speech/stream/with-timestamps streams JSON chunks with audio and alignment data. Decode each chunk's audio_base64 and consume its timing data as it arrives. Both routes use the same catalog character pricing as speech generation.

Use POST /v1/audio/transcriptions for speech-to-text. Multipart requests can set timestamps_granularity=word or character, diarize=true, num_speakers, diarization_threshold, and tag_audio_events. The response includes words with available time and speaker labels, and language_probability when supplied by the model. Those fields are optional; timestamps require a granularity setting. Separately billed ElevenLabs add-ons such as keyterms and entity detection are not currently forwarded. Ngamia filters unknown multipart fields to prevent silently enabling unpriced provider features.

These routes use catalog models and keep the provider credential private. For the combined transcribe → text reply → spoken response workflow, use Bonga.

Pronunciation dictionaries

Create a dictionary for account-specific names or terms, then pass its Ngamia id to speech or dialogue requests. Ngamia checks ownership and resolves the latest provider version before forwarding the synthesis request. Dictionaries do not add a separate Ngamia credit charge; the speech or dialogue request uses its normal model price.

curl --fail-with-body https://api.ngamia.cc/v1/audio/pronunciation-dictionaries \
  -H "Authorization: Bearer $NGAMIA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name":"Company names","rules":[{"type":"alias","string_to_replace":"Ngamia","alias":"NGAH-mee-ah"}]}'

The returned dictionary id is a Ngamia UUID. Use it as pronunciation_dictionary_id; omit version_id to always use the latest rules:

{
  "model": "elevenlabs/eleven_v3",
  "voice": "VOICE_ID",
  "input": "Welcome to Ngamia.",
  "pronunciation_dictionary_locators": [
    { "pronunciation_dictionary_id": "NGAMIA_DICTIONARY_UUID" }
  ]
}

Use PATCH /v1/audio/pronunciation-dictionaries/{dictionaryID} to rename a dictionary, PUT .../{dictionaryID}/rules to replace its complete rule set, and DELETE .../{dictionaryID} to archive it upstream and remove its Ngamia record. Supported rule types are alias and phoneme; phoneme tags work only with compatible speech model families, while aliases are the broader fallback. Up to three owned dictionaries may be attached to one speech or dialogue request. The account deletion flow archives its dictionaries. Rule text is private customer data: request telemetry records route and outcome metadata without bodies or rule values. See ElevenLabs' dictionary guide and supported rule APIs.

List dictionaries, retrieve one, rename it, replace its complete rules, or delete it with these account-scoped calls:

curl --fail-with-body https://api.ngamia.cc/v1/audio/pronunciation-dictionaries \
  -H "Authorization: Bearer $NGAMIA_API_KEY"
curl --fail-with-body "https://api.ngamia.cc/v1/audio/pronunciation-dictionaries/$DICTIONARY_ID" \
  -H "Authorization: Bearer $NGAMIA_API_KEY"
curl --fail-with-body -X PATCH "https://api.ngamia.cc/v1/audio/pronunciation-dictionaries/$DICTIONARY_ID" \
  -H "Authorization: Bearer $NGAMIA_API_KEY" -H "Content-Type: application/json" \
  -d '{"name":"Updated company names"}'
curl --fail-with-body -X PUT "https://api.ngamia.cc/v1/audio/pronunciation-dictionaries/$DICTIONARY_ID/rules" \
  -H "Authorization: Bearer $NGAMIA_API_KEY" -H "Content-Type: application/json" \
  -d '{"rules":[{"type":"alias","string_to_replace":"Ngamia","alias":"NGAH-mee-ah"}]}'
curl --fail-with-body -X DELETE "https://api.ngamia.cc/v1/audio/pronunciation-dictionaries/$DICTIONARY_ID" \
  -H "Authorization: Bearer $NGAMIA_API_KEY"
curl --fail-with-body https://api.ngamia.cc/v1/audio/speech/with-timestamps \
  -H "Authorization: Bearer $NGAMIA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model":"elevenlabs/eleven_multilingual_v2","voice":"VOICE_ID","input":"Karibu Ngamia."}'
 
curl --no-buffer --fail-with-body https://api.ngamia.cc/v1/audio/speech/stream/with-timestamps \
  -H "Authorization: Bearer $NGAMIA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model":"elevenlabs/eleven_multilingual_v2","voice":"VOICE_ID","input":"Karibu Ngamia."}'

Multi-speaker dialogue

POST/v1/audio/dialogueAPI key or JWT

Send ordered text turns with a voice ID for each turn. The combined text limit is 2,000 characters and the request supports up to 10 turns/unique voices. Cloned voice IDs must belong to the authenticated account. Billing uses the selected catalog speech model's character price. Use /v1/audio/dialogue/stream for audio chunks, /with-timestamps for a JSON response with voice segments and character timing, or /stream/with-timestamps for JSON chunks with audio and alignment data. All variants use the same charge as ordinary dialogue generation.

curl --fail-with-body https://api.ngamia.cc/v1/audio/dialogue \
  -H "Authorization: Bearer $NGAMIA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model":"elevenlabs/eleven_v3","inputs":[{"text":"Welcome to Ngamia.","voice_id":"VOICE_ID_1"},{"text":"Let’s get started.","voice_id":"VOICE_ID_2"}]}' \
  -o dialogue.mp3

The response is raw audio bytes. Discover enabled model IDs with GET /v1/models and format values supported by your ElevenLabs account with its current API documentation.

For the timestamped variants, keep the same model and inputs body and use the matching route. The non-streaming call returns JSON containing audio and alignment; the streaming call emits alignment data as chunks arrive:

curl --fail-with-body https://api.ngamia.cc/v1/audio/dialogue/with-timestamps \
  -H "Authorization: Bearer $NGAMIA_API_KEY" -H "Content-Type: application/json" \
  -d '{"model":"elevenlabs/eleven_v3","inputs":[{"text":"Karibu.","voice_id":"VOICE_ID_1"}]}'
 
curl --no-buffer --fail-with-body https://api.ngamia.cc/v1/audio/dialogue/stream/with-timestamps \
  -H "Authorization: Bearer $NGAMIA_API_KEY" -H "Content-Type: application/json" \
  -d '{"model":"elevenlabs/eleven_v3","inputs":[{"text":"Karibu.","voice_id":"VOICE_ID_1"}]}'

Voice conversion

POST/v1/audio/voice-conversions/{voiceID}API key or JWT
POST/v1/audio/voice-conversions/{voiceID}/streamAPI key or JWT

Upload a mono or multichannel PCM WAV recording, select a voice conversion model from GET /v1/models, and put the target voice ID in the path. The source audio controls the delivery while the selected voice controls the vocal identity. Conversion supports recordings up to five minutes. A customer clone can only be used by the account that created it. Add /stream to the path to receive audio as it is generated.

curl --fail-with-body https://api.ngamia.cc/v1/audio/voice-conversions/$VOICE_ID \
  -H "Authorization: Bearer $NGAMIA_API_KEY" \
  -F "model=elevenlabs/eleven_multilingual_sts_v2" \
  -F "audio=@recording.wav" \
  -F "remove_background_noise=true" \
  -o converted.mp3

The endpoint returns audio bytes. Ngamia reads the WAV duration from the file and bills by the second using the live model catalog price. WAV input is required so the duration used for billing comes from the uploaded file rather than a caller-supplied value.

For the streaming conversion route, append /stream and use the same multipart fields:

curl --fail-with-body "https://api.ngamia.cc/v1/audio/voice-conversions/$VOICE_ID/stream" \
  -H "Authorization: Bearer $NGAMIA_API_KEY" \
  -F "model=elevenlabs/eleven_multilingual_sts_v2" \
  -F "audio=@recording.wav" -o converted-stream.mp3

Voice isolation

POST/v1/audio/isolationsAPI key or JWT
POST/v1/audio/isolations/streamAPI key or JWT

Use voice isolation to remove background noise, music, or room interference from a recording. This operation preserves the speech; it is not a multitrack stem separator. Upload a PCM WAV file up to 25 MiB and one hour long. Billing uses the measured WAV duration and the catalog price. Add /stream to receive the isolated audio incrementally.

curl --fail-with-body https://api.ngamia.cc/v1/audio/isolations \
  -H "Authorization: Bearer $NGAMIA_API_KEY" \
  -F "model=elevenlabs/voice_isolator" \
  -F "audio=@noisy-recording.wav" \
  -o isolated.mp3

Both operations return raw audio bytes with the provider content type and X-Generation-Id when available. Their streaming variants use the same measured duration and catalog pricing as non-streaming requests. The initial Ngamia upload contract accepts WAV input; the upstream supports additional formats, which can be added once Ngamia can meter their duration reliably.

curl --fail-with-body https://api.ngamia.cc/v1/audio/isolations/stream \
  -H "Authorization: Bearer $NGAMIA_API_KEY" \
  -F "model=elevenlabs/voice_isolator" \
  -F "audio=@noisy-recording.wav" -o isolated-stream.mp3

Transcript alignment

POST/v1/audio/alignmentsAPI key or JWT

Use forced alignment when you already know the transcript and need timestamps for subtitles, captions, or word highlighting. Ngamia accepts PCM WAV up to 25 MiB and one hour, plus plain transcript text (up to 675,000 characters). The model selects a priced Scribe transcription model; alignment is billed using its per-second catalog rate, matching the upstream Speech to Text price. Diarization is not supported.

curl --fail-with-body https://api.ngamia.cc/v1/audio/alignments \
  -H "Authorization: Bearer $NGAMIA_API_KEY" \
  -F "model=elevenlabs/scribe_v2" \
  -F "text=Welcome to Ngamia. Your voice tools are ready." \
  -F "file=@welcome.wav"

The JSON response contains characters and words, each with start and end times, plus a loss score. This route aligns the transcript you provide; it does not recognize speech or correct transcript errors.

Audio dubbing

POST/v1/audio/dubbingsAPI key or JWT
GET/v1/audio/dubbings/{id}API key or JWT
GET/v1/audio/dubbings/{id}/contentAPI key or JWT

Upload one PCM WAV file (up to 100 MiB and one hour) and a BCP-47 target language. Source language is an optional hint. Ngamia measures duration from the WAV data, reserves credits using the enabled Dubbing v2 catalog rate, then creates a durable owner-scoped job. Poll its status URL; when status is completed, download the rendered WAV through Ngamia. Provider project IDs and temporary signed download URLs stay private. A failed provider job releases its credit reservation.

curl --fail-with-body https://api.ngamia.cc/v1/audio/dubbings \
  -H "Authorization: Bearer $NGAMIA_API_KEY" \
  -F "model=elevenlabs/dubbing_v2" \
  -F "source_language=en" \
  -F "target_language=sw" \
  -F "file=@recording.wav"
# Read the job_id from the standard Ngamia response envelope.
curl --fail-with-body "https://api.ngamia.cc/v1/audio/dubbings/$JOB_ID" \
  -H "Authorization: Bearer $NGAMIA_API_KEY"
curl --fail-with-body "https://api.ngamia.cc/v1/audio/dubbings/$JOB_ID/content" \
  -H "Authorization: Bearer $NGAMIA_API_KEY" -o dubbed.wav

The Audio studio at /audio provides the same workflow with an upload form, job progress, playback, and download. Dubbing charges by measured source duration per target language; check the live model rate in GET /v1/models before submitting.

Voice design

Design a synthetic voice

Generate candidate voice previews from a description, then listen and choose one in your client. Ngamia bills the required preview text once at the selected model's speech character rate; ElevenLabs generates multiple candidates for that one text charge. Description length is 20–1,000 characters and preview text is 100–1,000 characters. This endpoint returns base64 MP3 samples and generated voice IDs. Ngamia records which account received each preview ID.

curl --fail-with-body https://api.ngamia.cc/v1/audio/voices/design/previews \
  -H "Authorization: Bearer $NGAMIA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model":"elevenlabs/eleven_multilingual_v2","voice_description":"A calm, warm East African woman with a clear, measured narration style.","text":"Welcome to Ngamia. This voice preview shows how the narrator sounds across a short paragraph, with enough words to hear the accent, pacing, and tone clearly."}'

The response contains a previews array. Decode each audio_base_64 value to play it. model selects the catalog speech price; params.design_model selects the upstream Voice Design model and defaults to eleven_multilingual_ttv_v2. Only eleven_multilingual_ttv_v2 and eleven_ttv_v3 are accepted for design_model.

Save the selected candidate with POST /v1/audio/voices/design/create. A preview belongs to the account that generated it, can be saved once within 30 days, and takes one of the account's five custom voice slots. The saved voice_id works with speech and dialogue endpoints and appears in GET /v1/audio/voices.

curl --fail-with-body https://api.ngamia.cc/v1/audio/voices/design/create \
  -H "Authorization: Bearer $NGAMIA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"generated_voice_id":"PREVIEW_ID","voice_name":"Ngamia narrator","voice_description":"A calm, warm East African woman with a clear, measured narration style."}'

You can remix one of your custom voices or an eligible community voice. The source must belong to your account or be available for remixing under the community library rules. The preview text is required and billed at the selected speech model's character price. Save a remix candidate with the same create endpoint; Ngamia records it as a voice_remix asset.

curl --fail-with-body https://api.ngamia.cc/v1/audio/voices/$VOICE_ID/remix/previews \
  -H "Authorization: Bearer $NGAMIA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model":"elevenlabs/eleven_multilingual_v2","voice_description":"Make the voice sound brighter and slightly faster, while keeping its warm character.","text":"Welcome to Ngamia. This preview lets you hear how the updated voice sounds in a clear and natural narration style."}'

Voice cloning

Ngamia supports customer-owned Instant Voice Clones (IVC), Professional Voice Clones (PVC), and synthetic voices saved from Voice Design. Each account can keep up to five custom voices across these types. Your voice list contains only voices owned by your Ngamia account; speech synthesis rejects a voice owned by another Ngamia account. Uploaded samples are forwarded to ElevenLabs and are not saved by Ngamia. The resulting voices remain in Ngamia's ElevenLabs workspace until you delete them. Search the shared community voice library to choose a ready-made voice.

Before creating a clone, get permission from the speaker and confirm the right to use their voice. Setting consent_confirmed=true means: “I own this voice or have the speaker's explicit permission to create and use this clone.” The API records the Ngamia user, clone ID, consent text version, and confirmation time. PVC requires an ElevenLabs Creator plan or higher; the provider account's plan, credits, and voice limits apply. Ngamia does not charge credits for voice creation or training.

Creating a clone currently does not debit Ngamia credits; the configured ElevenLabs account's plan and voice limits still apply. When an Ngamia user deletes their account, Ngamia also removes that user's clones from ElevenLabs.

curl --fail-with-body https://api.ngamia.cc/v1/audio/voices/clones \
  -H "Authorization: Bearer $NGAMIA_API_KEY" \
  -F "name=My approved voice" \
  -F "description=Voice for my own narration" \
  -F "consent_confirmed=true" \
  -F "files=@voice-sample.mp3"

You may send up to five samples in files (MP3, WAV, M4A, FLAC, OGG, or WebM); combined sample bytes are limited to 4 MiB. Use clean recordings with one speaker and little background noise. Ngamia returns an owned voice_id; pass it as voice to POST /v1/audio/speech.

If ElevenLabs marks an Instant Voice Clone as requiring verification, Ngamia attempts to delete that provider clone and returns 422. Do not automatically retry after a network timeout because the upstream may have created the voice before the connection failed.

Professional Voice Clone (PVC)

PVC is only for the authenticated caller's own voice. Confirm speaker_is_voice_owner=true; permission from someone else is not sufficient for this endpoint. It is a staged workflow: create a draft, upload clean training samples, retrieve the CAPTCHA, submit the speaker's recording, then start training. Keep the returned voice_id; each step checks that the voice belongs to the authenticated account. Training runs asynchronously at ElevenLabs, and the provider account's plan and usage limits apply. ElevenLabs recommends substantially more clean speech than the IVC sample upload; follow its current PVC recording guidance.

Create draft + confirm ownership → Upload samples → Review sample/status
                                                    ↓
Get CAPTCHA → Speaker records it → Submit verification
                                  ↓ approved       ↓ unavailable
                             Start training      Manual review
                                  ↓                   └──→ Review
                             Poll status → Use trained voice
curl --fail-with-body https://api.ngamia.cc/v1/audio/voices/pvc \
  -H "Authorization: Bearer $NGAMIA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name":"My verified voice","language":"en","description":"My narration voice","speaker_is_voice_owner":true}'
 
curl --fail-with-body https://api.ngamia.cc/v1/audio/voices/pvc/$VOICE_ID/samples \
  -H "Authorization: Bearer $NGAMIA_API_KEY" \
  -F "files=@sample-1.wav" -F "files=@sample-2.wav"
 
curl --fail-with-body https://api.ngamia.cc/v1/audio/voices/pvc/$VOICE_ID/captcha \
  -H "Authorization: Bearer $NGAMIA_API_KEY"
 
curl --fail-with-body https://api.ngamia.cc/v1/audio/voices/pvc/$VOICE_ID/verify \
  -H "Authorization: Bearer $NGAMIA_API_KEY" \
  -F "recording=@owner-reading-challenge.wav"
 
curl --fail-with-body -X POST https://api.ngamia.cc/v1/audio/voices/pvc/$VOICE_ID/train \
  -H "Authorization: Bearer $NGAMIA_API_KEY" \
  -H "Content-Type: application/json" -d '{}'

Sample upload accepts up to 20 files and 100 MiB combined; verification recordings are limited to 20 MiB. Read current sample, verification, and training state with GET /v1/audio/voices/pvc/$VOICE_ID. Voice/sample processing and training happen in ElevenLabs. The PVC endpoints return the provider's sample/challenge/status data inside Ngamia's standard response envelope. Use the returned voice with the normal speech and dialogue endpoints after training completes. Do not retry create blindly after a timeout because the upstream may already have created the PVC draft. ElevenLabs locks a PVC once it reaches verification and says it cannot be deleted while it remains unverified. Since Ngamia also cleans up owned provider voices during account deletion, finish the PVC verification flow before deleting the Ngamia account.

Check the PVC draft and training status at any point:

curl --fail-with-body "https://api.ngamia.cc/v1/audio/voices/pvc/$VOICE_ID" \
  -H "Authorization: Bearer $NGAMIA_API_KEY"

Manual review is a fallback when CAPTCHA verification fails or cannot be completed. The required evidence varies by case, so contact ElevenLabs support before uploading documents. POST /v1/audio/voices/pvc/{voiceID}/verify/manual accepts up to ten files, 20 MiB combined, and optional extra_text. Ngamia forwards verification documents to the provider without retaining them. Only upload the evidence requested for your case; identity documents are sensitive. Check PVC status after the request before attempting training.

Use this request only when the provider's fallback review process is appropriate for the speaker:

curl --fail-with-body https://api.ngamia.cc/v1/audio/voices/pvc/$VOICE_ID/verify/manual \
  -H "Authorization: Bearer $NGAMIA_API_KEY" \
  -F "files=@provider-requested-evidence.pdf" \
  -F "extra_text=I am the speaker and could not complete the challenge verification."

For recordings with multiple speakers, start separation for each sample and poll until it completes:

curl --fail-with-body -X POST https://api.ngamia.cc/v1/audio/voices/pvc/$VOICE_ID/samples/$SAMPLE_ID/speakers \
  -H "Authorization: Bearer $NGAMIA_API_KEY"
 
curl --fail-with-body https://api.ngamia.cc/v1/audio/voices/pvc/$VOICE_ID/samples/$SAMPLE_ID/speakers \
  -H "Authorization: Bearer $NGAMIA_API_KEY"

The status response lists detected speaker IDs. Listen to a candidate with GET /v1/audio/voices/pvc/$VOICE_ID/samples/$SAMPLE_ID/speakers/$SPEAKER_ID/audio, then select the speaker for training:

curl --fail-with-body "https://api.ngamia.cc/v1/audio/voices/pvc/$VOICE_ID/samples/$SAMPLE_ID/speakers/$SPEAKER_ID/audio" \
  -H "Authorization: Bearer $NGAMIA_API_KEY" -o speaker-preview.wav
curl --fail-with-body -X POST https://api.ngamia.cc/v1/audio/voices/pvc/$VOICE_ID/samples/$SAMPLE_ID \
  -H "Authorization: Bearer $NGAMIA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"selected_speaker_ids":["SPEAKER_ID"]}'

You can update a sample's trims, filename, or background-noise removal with the same update endpoint, or remove the sample with DELETE /v1/audio/voices/pvc/$VOICE_ID/samples/$SAMPLE_ID. If all recordings already contain only the target speaker, separation is optional.

Remove an unusable sample from the draft:

curl --fail-with-body -X DELETE \
  "https://api.ngamia.cc/v1/audio/voices/pvc/$VOICE_ID/samples/$SAMPLE_ID" \
  -H "Authorization: Bearer $NGAMIA_API_KEY"

List your clones with GET /v1/audio/voices. Rename a clone with PATCH /v1/audio/voices/clones/$VOICE_ID:

curl --fail-with-body https://api.ngamia.cc/v1/audio/voices \
  -H "Authorization: Bearer $NGAMIA_API_KEY"
curl --fail-with-body -X PATCH \
  "https://api.ngamia.cc/v1/audio/voices/clones/$VOICE_ID" \
  -H "Authorization: Bearer $NGAMIA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name":"My narration voice"}'

Read or update synthesis settings at /v1/audio/voices/clones/$VOICE_ID/settings. Settings include stability, similarity boost, style, speed, and speaker boost; all settings operations are restricted to your own clones.

curl --fail-with-body "https://api.ngamia.cc/v1/audio/voices/clones/$VOICE_ID/settings" \
  -H "Authorization: Bearer $NGAMIA_API_KEY"
 
curl --fail-with-body -X POST "https://api.ngamia.cc/v1/audio/voices/clones/$VOICE_ID/settings" \
  -H "Authorization: Bearer $NGAMIA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"stability":0.55,"similarity_boost":0.8,"style":0.1,"use_speaker_boost":true}'

Delete one with:

curl --fail-with-body -X DELETE \
  "https://api.ngamia.cc/v1/audio/voices/clones/$VOICE_ID" \
  -H "Authorization: Bearer $NGAMIA_API_KEY"

Deletion removes the voice from ElevenLabs and Ngamia. Other Ngamia accounts receive a not-found response when they try to list or delete your clone.

Voice library

GET/v1/audio/voices/libraryAPI key or JWT

Search shared community voices by name, language, gender, or accent. Ngamia excludes voices with custom rates so a selected voice uses the catalog’s published model price. The response includes preview URLs and a pagination token. Use page_size up to 30 and pass the returned next_page_token as page_token to fetch more.

curl --fail-with-body \
  "https://api.ngamia.cc/v1/audio/voices/library?language=sw&search=narrator&page_size=20" \
  -H "Authorization: Bearer $NGAMIA_API_KEY"

The shared library endpoint does not return personal or workspace voices from the configured provider account. Voice availability and playback rights follow the upstream library and account entitlements.

Do not send ElevenLabs keys from a browser or mobile client. Keep raw audio private, avoid logging audio or transcripts, and let the person recording decide whether their sample is retained.