deterministic
no-api-key
text
unicode
transliteration

Cyrillic transliteration to Latin (ISO 9:1995, BGN/PCGN Russian)

Cyrillic transliteration to Latin using a named standard: ISO 9:1995 (one-to-one, with diacritics, covering the full standard: Russian, other Slavic, historic and non-Slavic Cyrillic letters) or BGN/PCGN, which is the Russian system only (Ukrainian, Serbian and other letters are passed through unmapped). Returns the transliteration, the source script, the standard, the mapped fraction and the unmapped characters. Other scripts are rejected with UNSUPPORTED_VALUE.

Output (data): result, source_script (Unicode script name; Latin when the text has no Cyrillic, which is returned unchanged), standard (string: the validated standard, iso-9 by default; on text with no Cyrillic it is echoed although no character needed converting), coverage (0-1 fraction of non-ASCII characters mapped), unmapped (characters passed through). iso-9 maps every letter of ISO 9:1995 (Russian, Ukrainian, Belarusian, Serbian, Macedonian, Bulgarian, historic and non-Slavic Cyrillic, e.g. і -> ì, ѣ -> ě, ә -> a̋, қ -> k̦); a base letter plus combining marks is one unit. bgn-pcgn is the Russian system only: other Cyrillic letters are returned unmapped and lower coverage.

Deterministic: identical input returns identical output, so the response is served with Cache-Control: private, max-age=31536000, immutable (the paying client may cache it indefinitely; shared caches must not, because the response is paid).

Sources: romanisation-tables ISO 9:1995 (full Cyrillic repertoire) and BGN/PCGN Russian system (published 2026-09-29, character correspondences (facts); see sources/translit.md). Echoed in meta.sources.

Price: $0.05 USDC per call (x402, Base). Route contract version 1.0.0. Docs: https://api.duoleads.com/docs#text-transliterate

get/v1/text/transliterate

Request

  • Base URL: https://api.duoleads.com
  • URL: https://api.duoleads.com/v1/text/transliterate
  • Auth: none declared

Query parameters

textstring required

Text to transliterate, at most 2048 characters. Accepted: at most 2048 characters.

fromstring

Source script name (cyrillic), or auto (default). Accepted: cyrillic or auto.

standardstring

Romanisation standard: iso-9 (default; all ISO 9:1995 Cyrillic letters) or bgn-pcgn (BGN/PCGN Russian system, Russian letters only). Accepted: iso-9 or bgn-pcgn (Russian letters only) for cyrillic.

case'preserve' | 'lower' | 'upper'

preserve (default), lower or upper. Accepted: preserve, lower, upper.

Response

Paid and settled. data is route-specific; a route that judges its input returns 200 with data.valid: false for a bad value.

okunknown required
route'/v1/text/transliterate' required
version'1.0.0' required

Changes

No recorded changes to this operation across all 1 revision of this API.