Skip to content

Pronunciation API — Reference

The Pronunciation API gives your application programmatic access to NameDrop’s pronunciation database — search names, generate phonetic guides, and fetch or synthesize pronunciation audio. It is the authenticated developer surface of the same service behind the public Names API.

New here? Two short guides come first:

  • Quickstart — start a free trial and generate a key from your dashboard.
  • Using your API key — already have an nd_live_… key? Make your first call.

This page is the complete endpoint reference.

https://names-api.namedropiome.workers.dev

Send your key in the x-api-key header on every request:

Terminal window
curl -H "x-api-key: nd_live_xxxxxxxx" \
"https://names-api.namedropiome.workers.dev/search?q=smith"

Keys are issued per organization and managed from the dashboard — generate, restrict to specific domains, and revoke. Requests from your registered first-party origins may be served without a key; everyone else must send one.

TierRequests / dayAPI keysAudio generationHow to get it
Trial200 (and 200 total over 14 days)2Self-serve, 14-day free trial
Starter5,0005Paid
Pro25,00020Paid
Enterprise100,000100Paid

During the trial, keys are also capped at 200 total calls across the 14 days. Daily limits reset at 00:00 UTC. Audio generation (/generate-audio) is available on Pro and Enterprise only. To raise limits or unlock audio generation, contact us to upgrade.

/search returns one or more Name objects in data:

{
"id": "abc123",
"name": "Smith",
"gender": "Unisex",
"cultural_origin": "English",
"country_origin": ["United Kingdom", "United States"],
"phonetic_simple": "smith",
"phonetic_variants": { "es": "smiz" },
"meaning": "occupational name for a metalworker",
"audio_file": "Smith.mp3"
}

country_origin is an array. phonetic_variants is an object keyed by culture code (present when culture-specific phonetics exist). Fields may be null when unknown.


All endpoints require the x-api-key header. The base URL https://names-api.namedropiome.workers.dev is omitted from the paths below.

Parses honorifics (Dr., Mr., Mrs., …) and extracts the first name from full-name queries, then returns the best matches. If nothing matches, it generates a phonetic on the fly.

ParamTypeRequiredNotes
qstringyesName to search (may include honorifics / a full name).
countrystringnoISO-2 code (e.g. BR, US). With it, returns up to 5 matches from that country; without it, up to 3 best matches.
Terminal window
curl -H "x-api-key: nd_live_xxxxxxxx" \
"https://names-api.namedropiome.workers.dev/search?q=Dr.%20Maria%20Gomes&country=BR"
const res = await fetch(
"https://names-api.namedropiome.workers.dev/search?q=Maria&country=BR",
{ headers: { "x-api-key": "nd_live_xxxxxxxx" } }
);
const { data, parsed } = await res.json();
{
"success": true,
"data": [ { "name": "Maria", "cultural_origin": "Portuguese", "phonetic_simple": "mah-REE-ah", "audio_file": "Maria.mp3" } ],
"query": "Dr. Maria Gomes",
"parsed": { "original": "Dr. Maria Gomes", "matched": "maria", "type": "first_name_country" },
"country": "BR"
}

parsed.type is one of exact_full_name, first_name_country, first_name, or generated.

GET /phonetic — phonetic guide for any name

Section titled “GET /phonetic — phonetic guide for any name”

Returns a human-friendly phonetic respelling for any name — including names not in the database — without a lookup. The optional culture hint selects a native-language ruleset (e.g. Indian → Hindi); otherwise English rules apply.

ParamTypeRequiredNotes
namestringyesThe name to render phonetically.
culturestringnoOrigin hint (e.g. Indian, Japanese, Arabic).
Terminal window
curl -H "x-api-key: nd_live_xxxxxxxx" \
"https://names-api.namedropiome.workers.dev/phonetic?name=Hanuman&culture=Indian"
{ "success": true, "name": "Hanuman", "culture": "Indian", "language": "Hindi", "phonetic": "HUH-noo-mahn" }

No parameters. Returns each cultural origin with how many names carry it.

Terminal window
curl -H "x-api-key: nd_live_xxxxxxxx" \
"https://names-api.namedropiome.workers.dev/cultures"
{ "success": true, "data": [ { "cultural_origin": "English", "count": 4213 }, { "cultural_origin": "Japanese", "count": 1180 } ] }

GET /audio/{id} — get a signed audio URL

Section titled “GET /audio/{id} — get a signed audio URL”

Returns a fresh presigned URL (valid ~1 hour) for an existing recording. Use the id from a /search result.

ParamTypeRequiredNotes
idstringyesPath parameter (name id).
culturestringnoRetrieve a culture-specific variant.
{ "success": true, "audio_url": "https://.../Smith.mp3?signature=...", "audio_file": "Smith.mp3" }

Returns 404 when no audio exists for that id.

POST /generate-audio — synthesize pronunciation audio

Section titled “POST /generate-audio — synthesize pronunciation audio”

Generates TTS audio when no human recording exists, and returns a presigned URL (valid ~1 hour).

Body fieldTypeRequiredNotes
namestringyesThe name to synthesize.
culturestringnoCulture code (e.g. es) to influence the accent.
Terminal window
curl -X POST "https://names-api.namedropiome.workers.dev/generate-audio" \
-H "x-api-key: nd_live_xxxxxxxx" \
-H "Content-Type: application/json" \
-d '{ "name": "Siobhan", "culture": "ga" }'
{ "success": true, "audio_file": "Siobhan.mp3", "audio_url": "https://.../Siobhan.mp3?signature=...", "culture": "ga" }

POST /names/request — request a missing name

Section titled “POST /names/request — request a missing name”

Submit a name you’d like added to the database.

Body fieldTypeRequiredNotes
namestringyesThe name to request.
genderstringnoe.g. Female, Male, Unisex.
cultural_originstringnoe.g. Arabic.
countrystringnoCountry of origin.
meaningstringnoMeaning of the name.
emailstringnoContact email.
notestringnoAdditional context.
{ "success": true, "message": "Name request received", "id": "req_..." }

These don’t require x-api-key:

  • GET / — health check: { "name", "version", "status", "endpoints" }.
  • POST /names/{id}/feedback — submit a pronunciation vote. Body: { "vote": "up" | "down", "reason"?: "accurate" | "wrong_pronunciation" | "wrong_language" | "audio_quality" }. Rate-limited to 5 votes per IP per day. Returns 201 { "success": true, "id": "..." }.
StatusBody codeMeaning
400Missing/invalid parameter (e.g. no name).
401Missing or invalid API key.
402trial_expiredThe 14-day trial window has ended — upgrade.
402trial_exhaustedThe 200-call trial cap is used up — upgrade.
403tier_not_allowedEndpoint needs a higher plan (e.g. audio generation on trial/starter).
404Resource (e.g. name id) not found.
429Daily rate limit for your tier exceeded.

Trial 402 and tier 403 responses carry a stable code field — branch on it, not on the message text:

{ "success": false, "error": "Trial period has ended", "code": "trial_expired" }

The worker serves a live, always-current OpenAPI spec and an interactive explorer:

  • Interactive docs (Scalar): https://names-api.namedropiome.workers.dev/docs
  • OpenAPI spec (YAML): https://names-api.namedropiome.workers.dev/openapi.yaml