Live Data in Romanian 13,750 real places 42 counties

Real or fake village

Romania's real village names are stranger than anything we could make up. Almost. Every place in the national register, a name machine trained on all of them, and a quiz: one name is real, one we made up. You pick.

One is fake!

Which one is a real place?

Pick one. Every page load is a new pair.

The name machine

How the fakes are made

A character chain (an order-3 Markov chain, if you like the words) read all 10,236 distinct real names one letter at a time and learned which letter tends to follow every three. To make a name it starts from nothing and keeps picking the next letter the way real names would. Spaces count as letters, which is how it learns "de Sus", "Valea ..." and "... Mare" without being told.

Then the rules. Any name that already exists in the register (a village, a commune, a town or a county, diacritics ignored) is thrown away, and so are clumsy shapes and anything rude. Whatever is left is new, and the API always marks it "exists": false. The same seed gives the same name, so a name or a quiz can be shared as a link.

Base URL: https://api.tasta.space/v1/sate

Endpoints

MethodPathWhat you get
GET/v1/sate/quizOne real name and one made up, as a and b in random order, a signed token and the two answer links. Takes seed and format=text.
GET/v1/sate/quiz/{token}Your guess checked: right or wrong, a quip, the real place in full and the fake's name. Takes format=text.
GET/v1/sate/fakeA made-up name that is nowhere in the register, with seed, permalink and "exists": false. Takes format=text.
GET/v1/sate/randomA real place: type, commune, county, SIRUTA code, coordinates. Takes judet and format=text.
GET/v1/sate/searchReal places whose name contains q, best matches first. Case and diacritics do not matter. Takes judet, page, per_page.
GET/v1/sate/countiesThe 41 counties and București, with the codes judet takes and how many places each has.
GET/v1/sate/signA village entry sign with any name, as SVG or PNG. exit=1 crosses it out, like the one on the way out.
GET/v1/sateCounts, the source and a link to every endpoint.

Parameters

NameExampleDoes
seedmamaligaquiz and fake: the same seed gives the same result, forever. 1 to 64 letters, digits, - or _. Leave it out for a fresh one.
guessaquiz/{token}: a or b.
judetCJrandom and search: one county, by code (CJ, B) or by name, diacritics optional (cluj, bistrita-nasaud).
qfundusearch: 2 to 40 characters. fundu finds Fundu Moldovei, gara finds Lehliu-Gară.
page, per_page2, 10search: per_page is 1 to 50, default 20.
nameCovrigisign: 1 to 40 letters, digits, spaces, dots or hyphens. Long names go on two lines, like on the road.
exit1sign: the sign on the way out, name crossed by a diagonal bar.
formattextOne plain line instead of JSON on quiz, quiz/{token}, fake and random. On sign: svg (default) or png.

Calls

$ curl https://api.tasta.space/v1/sate/quiz
$ curl "https://api.tasta.space/v1/sate/fake?seed=mamaliga&format=text"
$ curl "https://api.tasta.space/v1/sate/random?judet=MM"
$ curl "https://api.tasta.space/v1/sate/search?q=fundu&per_page=5"

A real place looks like this

{
  "data": {
    "name": "Covrigi",
    "type": "sat",
    "is_seat": false,
    "commune": {
      "name": "Văgiulești",
      "type": "comună",
      "siruta": 82779
    },
    "county": {
      "name": "Gorj",
      "code": "GJ"
    },
    "siruta": 82804,
    "coordinates": {
      "lat": 44.7382,
      "lon": 23.1492
    },
    "map": "https://www.openstreetmap.org/?mlat=44.7382&mlon=23.1492#map=14/44.7382/23.1492",
    "sign": "https://api.tasta.space/v1/sate/sign?name=Covrigi",
    "exists": true
  }
}
FieldMeans
typesat (a village), oraș (a town), municipiu (a city) or localitate componentă, a part of a town or city the register lists as a place of its own.
is_seatTrue for the village that is the seat of its commune, and for the main place of a town or city.
communeThe administrative unit it belongs to: a comună, an oraș or a municipiu, with its own SIRUTA code.
sirutaThe place's code in SIRUTA, the national register, and the way to tell apart the many places that share a name.
coordinates, mapWhere it is, from Wikidata, and a link to it on OpenStreetMap. null for the few places Wikidata has no point for.
signIts entry sign, from /v1/sate/sign.

The quiz, without a session

A quiz is two names and a token. The token is the quiz itself (the real place's SIRUTA code, the made-up name and which slot is real) in base64url, plus an HMAC signature. Nothing is stored anywhere: /v1/sate/quiz/{token}?guess=b checks the signature and answers. A token we did not sign, or one that was edited, gets invalid_token.

It is signed, not encrypted. Decode it and you will know the answer. We trust you.

Errors of its own

On top of the hub's errors.

StatusCodeWhen
422invalid_parameterA county that does not exist, a search shorter than 2 letters, a guess that is not a or b, a sign name too long, and so on
422invalid_tokenA quiz token that was not signed here, or was edited
410quiz_expiredA real token whose village has since left the register
GET /v1/sate/sign

Every village gets a sign

A village entry sign that reads Covrigi

Real ones, made-up ones, your own: any name up to 40 characters, set like the Romanian entry sign (white, a black border, the name in black). Add exit=1 for the sign on the way out, with the diagonal bar that is red on the road and orange here.

This one is Covrigi, in Gorj. It is real. The images are cached for a day.

$ curl -o sign.png "https://api.tasta.space/v1/sate/sign?name=Covrigi&exit=1&format=png"
Live, counts against your limit

Try it

https://api.tasta.space/v1/sate/quiz
Press send. The response shows up here, headers included.

            
Where it comes from

Sources and licences

The real places are SIRUTA, the register of Romania's administrative units and localities kept by the Institutul Național de Statistică, in its SIRUTA S1 2026 edition from data.gov.ro, published under CC BY 4.0. That is 13,750 places in 3,181 communes, towns and cities. The register writes names in capitals, mostly with cedillas; here they are in proper case with comma-below ș and ț. Where the register drops a diacritic (Rosiori de Vede for Roșiori de Vede), the Romanian label on Wikidata fills it in, but only when the two differ by nothing else.

Coordinates come from Wikidata, matched on the SIRUTA code, and are CC0. The map links open OpenStreetMap.

The made-up names are made up, by us, from the real ones. None of them is in the register: we check every one before it is served. Spotted a wrong name or a missing diacritic? Write to hello@tasta.space.