Overview
Validation (Turkish ID, IBAN, tax number), Türkiye data, finance (TCMB FX) and developer tools (UUID, hash, QR, barcode) in a single API.
Note: Turkish ID, IBAN and tax number validation is algorithmic (format and check digit). It is not an official lookup in NVİ, GİB or bank records and does not prove that the number belongs to a real person, account or taxpayer.
Response format
The same JSON envelope on every endpoint
Every endpoint returns the same envelope:
success: whether the request succeeded.data: the result of the service.error: on failure, the code and message fields.meta: the service name, processing time (elapsedMs) and data source (source: live, cache or offline).
Endpoint paths follow the form /api/v1/<category>/<service>.
Validation endpoints
POST /api/v1/dogrulama
Body: {"value":"..."}
/tckimlik: algorithmic validation of the Turkish ID number./vergino: algorithmic validation of the tax number (VKN)./iban: TR IBAN validation; when valid, it returns the bank and the formatted IBAN./kredikarti: Luhn validation; when valid, it returns the card type./eposta: format check and a DNS lookup of the domain.
For invalid values the reason field explains why. The ID, tax number, IBAN and card checks are algorithmic; no official registry is queried.
Türkiye data
GET /api/v1/turkiye
/iller: the list of 81 provinces with plate code, name, region and area code./plaka?kod=34 and /il?plaka=34: province by plate code./alankodu?kod=312: province by telephone area code./postakodu?kod=34000: the first two digits of the postal code correspond to the plate code./ilceler?plaka=34: the districts of a province.
A missing required parameter returns 400 with INVALID_REQUEST.
TCMB exchange rates and conversion
GET /api/v1/finans
/doviz: TCMB daily exchange rates; ?kod=USD filters a single rate./cevir?amount=100&from=USD&to=TRY: converts an amount using TCMB rates; the calculation goes through TRY using the forex selling rate./birim?value=100&from=km&to=mil: length, weight and temperature unit conversion (offline).
Rates are cached briefly; meta.source tells you whether the response came live or from the cache. If TCMB is unreachable and there is no cache, you get 502 with UPSTREAM_UNAVAILABLE.
Developer tools
/api/v1/arac
GET /uuid: generates between one and 100 UUIDs.GET /parola: generates a password of 4–128 characters; symbols, digits and upper case are selectable.POST /hash: computes a hash.POST /base64: encodes or decodes Base64 (encode / decode).POST /slug: turns text into a URL-friendly slug.POST /qr: generates a QR code (up to 2000 characters).POST /barkod: generates a barcode (up to 200 characters).
Invalid input returns 400 with INVALID_REQUEST and an explanatory message.
Error codes and limits
400 / INVALID_REQUEST: a missing or invalid parameter.404 / NOT_FOUND: unknown routes under /api are answered with the same JSON envelope rather than an HTML page.429: the per-IP quota (120 requests per 60 seconds) was exceeded.502 / UPSTREAM_UNAVAILABLE: an external source such as TCMB is unreachable.
The limit applies only to the API routes; the interface, documentation and Swagger are not affected by the quota. The API routes accept cross-origin requests.
Trying and monitoring
- Catalogue: the home page and service list; each service page has a Try it panel.
- Swagger: public documentation and a call interface for every endpoint at
/swagger. - Health endpoint:
/healthz returns status and version, and can be wired to monitoring tools. - The interface is available in Turkish and English.