{"openapi":"3.1.0","info":{"title":"Punycode / IDN API","version":"1.0.0","description":"Convert internationalized domain names (IDNs) between their human-readable Unicode form and the ASCII Punycode form (xn--…) that DNS actually uses. Encode a Unicode domain like münchen.de or 例え.jp (or even an emoji label like ☕.example) to ASCII, decode an xn-- domain back to Unicode, and convert a whole URL's host in either direction. Handles accents, non-Latin scripts and emoji. Useful for IDN domain handling, email and URL validation, DNS tooling, and spotting homograph / look-alike domains. Pure local IDNA conversion — no key, no third-party service, instant. Live. 4 endpoints. Distinct from Public-Suffix-List domain parsing and from generic text encoders.","contact":{"name":"PremiumApi","url":"https://www.oanor.com/by/premiumapi"}},"servers":[{"url":"https://api.oanor.com/punycode-api","description":"oanor gateway"}],"tags":[{"name":"IDN"},{"name":"Meta"}],"components":{"securitySchemes":{"oanorKey":{"type":"apiKey","in":"header","name":"x-oanor-key","description":"Get your key at https://www.oanor.com/developer/keys"}}},"security":[{"oanorKey":[]}],"paths":{"/v1/decode":{"get":{"operationId":"get_v1_decode","tags":["IDN"],"summary":"Punycode to Unicode","description":"","parameters":[{"name":"domain","in":"query","required":true,"description":"xn-- domain","schema":{"type":"string"},"example":"xn--mnchen-3ya.de"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"input":"xn--mnchen-3ya.de","changed":true,"unicode":"münchen.de","was_punycode":true},"meta":{"timestamp":"2026-06-02T16:51:54.715Z","request_id":"799ce861-9731-42cd-a186-2ef37d61fa81"},"status":"ok","message":"Punycode to Unicode","success":true}}}},"401":{"description":"Missing or invalid x-oanor-key header"},"402":{"description":"Active subscription required"},"429":{"description":"Rate-limit or monthly quota reached"},"502":{"description":"Upstream did not respond"}}}},"/v1/encode":{"get":{"operationId":"get_v1_encode","tags":["IDN"],"summary":"Unicode domain to Punycode","description":"","parameters":[{"name":"domain","in":"query","required":true,"description":"Unicode domain","schema":{"type":"string"},"example":"münchen.de"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"ascii":"xn--mnchen-3ya.de","input":"münchen.de","is_idn":true,"changed":true},"meta":{"timestamp":"2026-06-02T16:51:54.813Z","request_id":"0efda403-259c-4af4-bc26-207c280c00f4"},"status":"ok","message":"Unicode domain to Punycode","success":true}}}},"401":{"description":"Missing or invalid x-oanor-key header"},"402":{"description":"Active subscription required"},"429":{"description":"Rate-limit or monthly quota reached"},"502":{"description":"Upstream did not respond"}}}},"/v1/url":{"get":{"operationId":"get_v1_url","tags":["IDN"],"summary":"Convert a URL host","description":"","parameters":[{"name":"url","in":"query","required":true,"description":"Full URL","schema":{"type":"string"},"example":"https://例え.jp/path"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"input":"https://例え.jp/path","is_idn":true,"protocol":"https","ascii_url":"https://xn--r8jz45g.jp/path","hostname_ascii":"xn--r8jz45g.jp","hostname_unicode":"例え.jp"},"meta":{"timestamp":"2026-06-02T16:51:54.906Z","request_id":"259b8042-aa45-41ae-aefd-745fc0c3655a"},"status":"ok","message":"Convert a URL host","success":true}}}},"401":{"description":"Missing or invalid x-oanor-key header"},"402":{"description":"Active subscription required"},"429":{"description":"Rate-limit or monthly quota reached"},"502":{"description":"Upstream did not respond"}}}},"/v1/meta":{"get":{"operationId":"get_v1_meta","tags":["Meta"],"summary":"Spec","description":"","parameters":[],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"auth":"none upstream; this gateway requires x-api-key","name":"Punycode / IDN API","note":"Convert internationalized domain names between Unicode and Punycode (ASCII, xn--). /v1/encode?domain=münchen.de → xn--mnchen-3ya.de ; /v1/decode?domain=xn--mnchen-3ya.de → münchen.de ; /v1/url?url= converts a full URL's host. Handles accents, non-Latin scripts and emoji labels. Useful for IDN domains, email/URL validation and homograph awareness. Instant, nothing stored.","source":"Local IDNA conversion (punycode) — no key, no upstream","endpoints":4},"meta":{"timestamp":"2026-06-02T16:51:55.008Z","request_id":"42f38dc5-3c0d-47ba-b04d-872bb46b19ad"},"status":"ok","message":"Meta","success":true}}}},"401":{"description":"Missing or invalid x-oanor-key header"},"402":{"description":"Active subscription required"},"429":{"description":"Rate-limit or monthly quota reached"},"502":{"description":"Upstream did not respond"}}}}},"x-oanor-pricing":[{"slug":"free","name":"Free","price_cents_month":0,"monthly_call_quota":1280,"rps_limit":2,"hard_limit":true},{"slug":"starter","name":"Starter","price_cents_month":460,"monthly_call_quota":17000,"rps_limit":8,"hard_limit":true},{"slug":"pro","name":"Pro","price_cents_month":2420,"monthly_call_quota":160000,"rps_limit":20,"hard_limit":true},{"slug":"mega","name":"Mega","price_cents_month":6020,"monthly_call_quota":820000,"rps_limit":50,"hard_limit":true}],"x-oanor-marketplace-url":"https://www.oanor.com/api/punycode-api"}