Verkossa toimiva translitterointityökalu ja API

Muunna yli 27 kirjoitusjärjestelmää välittömästi latinalaiseksi – täydellinen SEO-slugien, normalisoidun haun ja dataputkien tarpeisiin.

Mitä voit tehdä?
Haun normalisointi

Indeksoi ja hae sekakirjoitus­tekstiä yhtenä kokonaisuutena.

SEO-slugit

Luo siistit monikieliset URL-osoitteet lennossa.

Dataputket

Syötä luetteloihin tai NLP-työnkulkuihin yhtenäistä tekstiä.

Kokeile livenä
99.9 % Käyttöaika
12.5ms Vastaus
20 req/s
0.009 Krediittejä / pyyntö

Transliterator API


POST https://api.yeb.to/v1/transliterator
Parametri Tyyppi Pak. Kuvaus
api_key string kyllä Auth key
lang string val. ISO code of input script
text string kyllä Input text (max. 255 chars)
type string val. plain | slug | snake | camel | capital | upper | lower
delimiter string val. Custom delimiter for slug/snake

Pyyntöesimerkit

{
  "api_key":"YOUR_KEY",
  "lang":"bg",
  "text":"пример"
}
{
  "api_key":"YOUR_KEY",
  "lang":"ru",
  "text":"тест транслитерация",
  "type":"slug",
  "delimiter":"_"
}

API-integraatiot

curl -X POST https://api.yeb.to/v1/transliterator \
  -H "Content-Type: application/json" \
  -d '{"api_key":"YOUR_KEY","lang":"bg","text":"пример","type":"slug","delimiter":"-"}'
Route::post('/transliterate', function () {
    $data = Http::post('https://api.yeb.to/v1/transliterator', [
        'api_key'   => config('services.transliterator.key'),
        'lang'      => 'bg',
        'text'      => 'пример',
        'type'      => 'slug',
        'delimiter' => '-',
    ]);
    return $data->json();
});
$r = Http::post('https://api.yeb.to/v1/transliterator', [
    'api_key'=>'YOUR_KEY','lang'=>'bg','text'=>'пример',
    'type'=>'slug','delimiter'=>'-'
]);
echo $r->json();
fetch('https://api.yeb.to/v1/transliterator', {
  method:'POST',
  headers:{'Content-Type':'application/json'},
  body:JSON.stringify({api_key:'YOUR_KEY',lang:'bg',text:'пример',type:'slug',delimiter:'-'})
}).then(r=>r.json()).then(console.log);
import requests, json
payload = {"api_key":"YOUR_KEY","lang":"bg","text":"пример","type":"slug","delimiter":"-"}
r = requests.post('https://api.yeb.to/v1/transliterator', headers={'Content-Type':'application/json'},
                  data=json.dumps(payload))
print(r.json())

Response Example

{
  "result":"primer","original":"пример","lang":"bg",
  "type":"slug","delimiter":"-","response_code":200,"response_time_ms":37
}
{
  "error":"Invalid API key","code":401,
  "response_code":401,"response_time_ms":12
}

Vastauskoodit

CodeDescription
200 SuccessRequest processed OK.
400 Bad RequestInput validation failed.
401 UnauthorizedMissing / wrong API key.
403 ForbiddenKey inactive or not allowed.
429 Rate LimitToo many requests.
500 Server ErrorUnexpected failure.

transliterate

transliterator 0.0090 credits

Parameters

API Key
query · string · required
Language
query · string
Text
query · string · required
Output type
query · string
Delimiter
query · string

Code Samples


                
                
                
            

Response

Status:
Headers

                
Body

                

Verkossa toimiva translitterointityökalu ja API — Practical Guide

A hands-on guide to Verkossa toimiva translitterointityökalu ja API: what it does, when to use each mode, the parameters that actually matter, and how to read responses for SEO slugs, filenames, app identifiers, and more.

#What Transliterator solves

Send a text in any supported script (e.g., Cyrillic, Greek) and get a clean Latin version and/or a specific formatting: slug, snake_case, camelCase, Capital Case, UPPER, or lower. Perfect for SEO URLs, file/ID normalization, search indexing, and consistent UI labels.

#Endpoint & when to use it

#POST https://api.yeb.to/v1/transliterator

  • Best for: Turning any input into a safe, predictable string for URLs, filenames, database keys, and user-facing titles.
  • How it works: We transliterate to Latin and then apply the chosen type transform (slug/snake/camel/etc.).
  • Idempotent: Same input parameters → same output; safe to cache.

#Quick start

# Plain transliteration (auto-detect language)
curl -X POST "https://api.yeb.to/v1/transliterator" \
  -H "Content-Type: application/json" \
  -d '{ "api_key": "YOUR_KEY", "text": "пример" }'
# SEO slug with custom delimiter
curl -X POST "https://api.yeb.to/v1/transliterator" \
  -H "Content-Type: application/json" \
  -d '{ "api_key": "YOUR_KEY", "lang": "ru", "text": "тест транслитерация", "type": "slug", "delimiter": "_" }'

#Parameters that actually matter

ParamRequiredWhat to pass in practiceWhy it matters
api_key Yes Send from server/edge. Don’t expose raw keys in client JS. Auth & rate limiting.
text Yes Up to 255 chars; emojis and unsupported symbols are stripped. Primary content to process.
lang No ISO code of input script (e.g., bg, ru, el). If omitted, we auto-detect. Improves accuracy for ambiguous inputs.
type No plain | slug | snake | camel | capital | upper | lower Choose the output format you need.
delimiter No Use with slug/snake to set the separator (default - for slug, _ for snake). Brand-consistent URLs and identifiers.

#Choosing the right type

TypeUse it forNotes
plainReadable Latin outputNo case/spacing changes; punctuation trimmed.
slugSEO URLsLowercase, spaces → delimiter, trims duplicates: пример тестprimer-test.
snakeDatabase keys, filenamesLowercase + _ (or custom delimiter).
camelCode identifiersprimerTest style.
capitalUI labelsPrimer Test title case.
upperSorting / normalizationAll caps.
lowerCase-insensitive searchAll lowercase.

#Reading & acting on responses

{
  "result": "primer",
  "original": "пример",
  "lang": "bg",
  "type": "slug",
  "delimiter": "-",
  "response_code": 200,
  "response_time_ms": 37
}
  • result — the processed string; use this directly in URLs/keys/UI.
  • original — what you sent (after trimming); handy for logs and idempotency checks.
  • lang — detected or provided language; helps debug unexpected mappings.
  • type, delimiter — echo of your chosen transform; store alongside to rebuild exactly.

#Typical errors & how to fix

{ "error": "Missing \"text\" parameter", "code": 422 }
{ "error": "Unsupported type: foo", "code": 422 }
  • 422 missing/invalid: Provide text; ensure type ∈ allowed list.
  • 401 invalid key: Rotate your key; send from server/edge only.
  • 413 too long: Keep text ≤ 255 chars; pre-trim user input.

#Troubleshooting & field notes

  1. Unexpected characters: Emojis/symbols are removed; if you need them, store the original separately.
  2. Spaces & dashes: For slug/snake we collapse repeated separators (---).
  3. Custom brand separators: Use delimiter to enforce _, ., or even no delimiter.
  4. Language ambiguity: Specify lang when inputs can be mixed (e.g., Serbian Cyrillic vs. Russian).
  5. Batching: For bulk imports, keep requests ≤ 100 rps and reuse connections; cache deterministic results.

#API Changelog

2025-10-20
Added capital output type and improved auto-detection for mixed scripts. Normalized duplicate separators in slug/snake.
2025-10-12
Custom delimiter now supported for both slug and snake. Minor Cyrillic → Latin mapping refinements (BG/RU).
2025-10-01
Public v1 release with plain, slug, snake, camel, upper, lower. Max input length set to 255 chars.

Usein kysytyt kysymykset

Tuemme täydellistä translitterointia seuraaville kirjoitusjärjestelmille:
ar (arabia), be (valkovenäjä), bg (bulgaria), bn (bengali), el (kreikka), gu (gujarati), he (heprea), hi (hindi), hy (armenia), ja (japani),
ka (georgia), kk (kazakki), km (khmer), ko (korea), ky (kirgiisi), mk (makedonia), mn (mongolia), my (burma), ne (nepali),
ru (venäjä), si (sinhala), sr (serbia), ta (tamili), tg (tadžikki), th (thai), uk (ukraina), zh-Hans (kiina, yksinkertaistettu), zh-Hant (kiina, perinteinen).

Käytämme hyvin testattuja avoimen lähdekoodin karttoja ja käytäntöjä (ISO-standardeja tai de facto -verkkostandardeja). Tarkkuus on tyypillisesti yli 95 % yleisille sanoille.

Enintään 20 pyyntöä / sekunti per avain. Ei päivä- tai kuukausirajoja – maksat vain käytön mukaan.

Käytämme krediittijärjestelmää. Osta kerran – krediitit eivät koskaan vanhene eikä tilausmaksuja ole.

Jokainen HTTP-kutsu on yksi pyyntö; jokainen pyyntö kuluttaa tietyn määrän krediittejä käytettävästä päätepisteestä riippuen.

Kyllä. Ne eivät vanhene ennen kuin käytät ne (mutta niitä ei palauteta).

Krediittejä ei voi hyvittää. Osta siis vain tarvitsemasi määrä – voit lisätä saldoa milloin tahansa.

Hinnat ilmoitetaan krediitteinä, ei dollareina. Jokaisella päätepisteellä on oma hintansa – katso yllä oleva “Krediittejä / pyyntö” -merkintä.
← Takaisin API-rajapintoihin