{"openapi":"3.1.0","info":{"title":"temsor API","version":"1.0.0","description":"Turkish-domain data APIs plus a growing archive of public time series. Most endpoints are deterministic and answer in single-digit milliseconds.\n\nEvery success carries the same envelope: `{ ok, data, meta }`. Every failure: `{ ok:false, error:{code,message} }`.\n\nAuth: `Authorization: Bearer fk_live_…` or `x-api-key`. Calls without a key work on a narrow per-IP demo quota, so you can try any endpoint before signing up.\n\n**Plans:** Free free — 2,000 credits, 2 rps · Starter $19/mo — 50,000 credits, 10 rps · Pro $79/mo — 300,000 credits, 30 rps · Scale $299/mo — 2,000,000 credits, 100 rps"},"servers":[{"url":"https://api.temsor.com"}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer"},"apiKeyHeader":{"type":"apiKey","in":"header","name":"x-api-key"}},"responses":{"Error":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"const":false},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]},"requestId":{"type":"string"}},"required":["ok","error"]}}}}}},"security":[{"bearerAuth":[]},{"apiKeyHeader":[]}],"tags":[{"name":"Compliance"},{"name":"Time Series"},{"name":"Address"},{"name":"Calendar"},{"name":"Finance"},{"name":"Validation"}],"paths":{"/v1/sanctions/screen":{"post":{"tags":["Compliance"],"summary":"Screens a name against the US OFAC, UN Security Council and EU consolidated sanctions lists with transliteration-aware fuzzy matching.","description":"Cyrillic and Arabic names are transliterated, titles and corporate suffixes are stripped, and known spelling families are unified — \"Abd al-Rahman\", \"Abdul Rahman\" and \"Abdulrahman\" reach the same record. Every hit explains itself: which name matched, whether it was an alias the source flags as weak, and how the birth year and country compared. Supply `birthYear` whenever you have it; it removes most false positives. `asOf` screens against the lists as they stood on a past date, which is the question auditors actually ask — note that this is bounded by when our archive begins, reported in `coverage`.\n\n**Credits per call:** 5 · **Operation id:** `sanctions_screen`","operationId":"sanctions_screen","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"const":true},"data":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"query":{"type":"object","properties":{"name":{"type":"string"},"normalized":{"type":"string"},"type":{"type":"string"},"birthYear":{"anyOf":[{"type":"number"},{"type":"null"}]},"country":{"anyOf":[{"type":"string"},{"type":"null"}]},"asOf":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["name","normalized","type","birthYear","country","asOf"],"additionalProperties":false},"screened":{"type":"boolean"},"hitCount":{"type":"number"},"highestScore":{"type":"number"},"decision":{"type":"string","enum":["match","possible","weak","clear"]},"matches":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"score":{"type":"number"},"decision":{"type":"string","enum":["match","possible","weak"]},"source":{"type":"string"},"sourceUrl":{"type":"string"},"type":{"type":"string"},"primaryName":{"type":"string"},"matchedName":{"type":"string"},"matchedNameKind":{"type":"string"},"programs":{"type":"array","items":{"type":"string"}},"countries":{"type":"array","items":{"type":"string"}},"birthDates":{"type":"array","items":{"type":"string"}},"placesOfBirth":{"type":"array","items":{"type":"string"}},"addresses":{"type":"array","items":{"type":"string"}},"documents":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string"},"number":{"type":"string"},"country":{"type":"string"}},"required":["type","number"],"additionalProperties":false}},"listedOn":{"anyOf":[{"type":"string"},{"type":"null"}]},"remarks":{"anyOf":[{"type":"string"},{"type":"null"}]},"firstSeen":{"type":"string"},"lastSeen":{"type":"string"},"delistedAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"reasons":{"type":"array","items":{"type":"string"}}},"required":["id","score","decision","source","sourceUrl","type","primaryName","matchedName","matchedNameKind","programs","countries","birthDates","placesOfBirth","addresses","documents","listedOn","remarks","firstSeen","lastSeen","delistedAt","reasons"],"additionalProperties":false}},"coverage":{"type":"array","items":{"type":"object","properties":{"source":{"type":"string"},"records":{"type":"number"},"lastRun":{"anyOf":[{"type":"string"},{"type":"null"}]},"archiveFrom":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["source","records","lastRun","archiveFrom"],"additionalProperties":false}},"notice":{"type":"string"},"warnings":{"type":"array","items":{"type":"string"}}},"required":["query","screened","hitCount","highestScore","decision","matches","coverage","notice","warnings"],"additionalProperties":false},"meta":{"type":"object","properties":{"credits":{"type":"integer"},"cached":{"type":"boolean"},"requestId":{"type":"string"},"durationMs":{"type":"integer"}}}},"required":["ok","data"]}}}},"400":{"$ref":"#/components/responses/Error"},"401":{"$ref":"#/components/responses/Error"},"402":{"$ref":"#/components/responses/Error"},"429":{"$ref":"#/components/responses/Error"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"name":{"type":"string","minLength":2,"maxLength":200,"description":"Name to screen — person or organisation."},"type":{"default":"any","description":"Restrict to one subject type. Narrowing this removes most false positives.","type":"string","enum":["any","individual","entity","vessel","aircraft"]},"birthYear":{"description":"Known birth year. The single strongest false-positive filter available.","type":"integer","minimum":1850,"maximum":2100},"country":{"description":"Known country or nationality.","type":"string","maxLength":60},"sources":{"description":"Defaults to all lists.","type":"array","items":{"type":"string","enum":["OFAC_SDN","UN","EU"]}},"minScore":{"default":0.75,"description":"Score floor. 0.92+ reads as a match, 0.80+ as possible.","type":"number","minimum":0.5,"maximum":1},"limit":{"default":10,"type":"integer","minimum":1,"maximum":50},"asOf":{"description":"Screen against the lists as they stood on this date. Limited by when our archive begins.","type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}},"required":["name"]}}}}},"get":{"tags":["Compliance"],"summary":"Screens a name against the US OFAC, UN Security Council and EU consolidated sanctions lists with transliteration-aware fuzzy matching.","description":"Cyrillic and Arabic names are transliterated, titles and corporate suffixes are stripped, and known spelling families are unified — \"Abd al-Rahman\", \"Abdul Rahman\" and \"Abdulrahman\" reach the same record. Every hit explains itself: which name matched, whether it was an alias the source flags as weak, and how the birth year and country compared. Supply `birthYear` whenever you have it; it removes most false positives. `asOf` screens against the lists as they stood on a past date, which is the question auditors actually ask — note that this is bounded by when our archive begins, reported in `coverage`.\n\n**Credits per call:** 5 · **Operation id:** `sanctions_screen`\n\nIn the GET form every field is a query parameter; object and array fields are JSON-encoded.","operationId":"sanctions_screen_get","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"const":true},"data":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"query":{"type":"object","properties":{"name":{"type":"string"},"normalized":{"type":"string"},"type":{"type":"string"},"birthYear":{"anyOf":[{"type":"number"},{"type":"null"}]},"country":{"anyOf":[{"type":"string"},{"type":"null"}]},"asOf":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["name","normalized","type","birthYear","country","asOf"],"additionalProperties":false},"screened":{"type":"boolean"},"hitCount":{"type":"number"},"highestScore":{"type":"number"},"decision":{"type":"string","enum":["match","possible","weak","clear"]},"matches":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"score":{"type":"number"},"decision":{"type":"string","enum":["match","possible","weak"]},"source":{"type":"string"},"sourceUrl":{"type":"string"},"type":{"type":"string"},"primaryName":{"type":"string"},"matchedName":{"type":"string"},"matchedNameKind":{"type":"string"},"programs":{"type":"array","items":{"type":"string"}},"countries":{"type":"array","items":{"type":"string"}},"birthDates":{"type":"array","items":{"type":"string"}},"placesOfBirth":{"type":"array","items":{"type":"string"}},"addresses":{"type":"array","items":{"type":"string"}},"documents":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string"},"number":{"type":"string"},"country":{"type":"string"}},"required":["type","number"],"additionalProperties":false}},"listedOn":{"anyOf":[{"type":"string"},{"type":"null"}]},"remarks":{"anyOf":[{"type":"string"},{"type":"null"}]},"firstSeen":{"type":"string"},"lastSeen":{"type":"string"},"delistedAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"reasons":{"type":"array","items":{"type":"string"}}},"required":["id","score","decision","source","sourceUrl","type","primaryName","matchedName","matchedNameKind","programs","countries","birthDates","placesOfBirth","addresses","documents","listedOn","remarks","firstSeen","lastSeen","delistedAt","reasons"],"additionalProperties":false}},"coverage":{"type":"array","items":{"type":"object","properties":{"source":{"type":"string"},"records":{"type":"number"},"lastRun":{"anyOf":[{"type":"string"},{"type":"null"}]},"archiveFrom":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["source","records","lastRun","archiveFrom"],"additionalProperties":false}},"notice":{"type":"string"},"warnings":{"type":"array","items":{"type":"string"}}},"required":["query","screened","hitCount","highestScore","decision","matches","coverage","notice","warnings"],"additionalProperties":false},"meta":{"type":"object","properties":{"credits":{"type":"integer"},"cached":{"type":"boolean"},"requestId":{"type":"string"},"durationMs":{"type":"integer"}}}},"required":["ok","data"]}}}},"400":{"$ref":"#/components/responses/Error"},"401":{"$ref":"#/components/responses/Error"},"402":{"$ref":"#/components/responses/Error"},"429":{"$ref":"#/components/responses/Error"}},"parameters":[{"name":"name","in":"query","required":true,"description":"Name to screen — person or organisation.","schema":{"type":"string","minLength":2,"maxLength":200,"description":"Name to screen — person or organisation."}},{"name":"type","in":"query","required":false,"description":"Restrict to one subject type. Narrowing this removes most false positives.","schema":{"default":"any","description":"Restrict to one subject type. Narrowing this removes most false positives.","type":"string","enum":["any","individual","entity","vessel","aircraft"]}},{"name":"birthYear","in":"query","required":false,"description":"Known birth year. The single strongest false-positive filter available.","schema":{"description":"Known birth year. The single strongest false-positive filter available.","type":"integer","minimum":1850,"maximum":2100}},{"name":"country","in":"query","required":false,"description":"Known country or nationality.","schema":{"description":"Known country or nationality.","type":"string","maxLength":60}},{"name":"sources","in":"query","required":false,"description":"Defaults to all lists.","schema":{"type":"string"}},{"name":"minScore","in":"query","required":false,"description":"Score floor. 0.92+ reads as a match, 0.80+ as possible.","schema":{"default":0.75,"description":"Score floor. 0.92+ reads as a match, 0.80+ as possible.","type":"number","minimum":0.5,"maximum":1}},{"name":"limit","in":"query","required":false,"schema":{"default":10,"type":"integer","minimum":1,"maximum":50}},{"name":"asOf","in":"query","required":false,"description":"Screen against the lists as they stood on this date. Limited by when our archive begins.","schema":{"description":"Screen against the lists as they stood on this date. Limited by when our archive begins.","type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}}]}},"/v1/series/history":{"post":{"tags":["Time Series"],"summary":"Returns the accumulated history of public data series with change statistics and a source receipt for every point.","description":"Currently ingesting the Turkish Central Bank daily FX bulletin (`tcmb.usd`, `tcmb.eur`, …), normalised to one unit so JPY-style 100-unit quotes stop biting. Leave `seriesId` empty to list the catalogue. `fillGaps` carries the last value across weekends and holidays; `includeEvidence` attaches the source URL and content hash for every point, so a value can still be defended years later.\n\n**Credits per call:** 2 · **Operation id:** `series_history`","operationId":"series_history","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"const":true},"data":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"series":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"},"source":{"type":"string"},"unit":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","title","source","unit"],"additionalProperties":false},{"type":"null"}]},"catalog":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"},"source":{"type":"string"},"points":{"type":"number"}},"required":["id","title","source","points"],"additionalProperties":false}},"range":{"type":"object","properties":{"from":{"anyOf":[{"type":"string"},{"type":"null"}]},"to":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["from","to"],"additionalProperties":false},"points":{"type":"array","items":{"type":"object","properties":{"at":{"type":"string"},"value":{"anyOf":[{"type":"number"},{"type":"null"}]},"filled":{"type":"boolean"},"evidence":{"type":"object","properties":{"sourceUrl":{"anyOf":[{"type":"string"},{"type":"null"}]},"contentHash":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["sourceUrl","contentHash"],"additionalProperties":false}},"required":["at","value","filled"],"additionalProperties":false}},"stats":{"anyOf":[{"type":"object","properties":{"count":{"type":"number"},"first":{"anyOf":[{"type":"number"},{"type":"null"}]},"last":{"anyOf":[{"type":"number"},{"type":"null"}]},"min":{"anyOf":[{"type":"number"},{"type":"null"}]},"max":{"anyOf":[{"type":"number"},{"type":"null"}]},"changePct":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["count","first","last","min","max","changePct"],"additionalProperties":false},{"type":"null"}]},"warnings":{"type":"array","items":{"type":"string"}}},"required":["series","catalog","range","points","stats","warnings"],"additionalProperties":false},"meta":{"type":"object","properties":{"credits":{"type":"integer"},"cached":{"type":"boolean"},"requestId":{"type":"string"},"durationMs":{"type":"integer"}}}},"required":["ok","data"]}}}},"400":{"$ref":"#/components/responses/Error"},"401":{"$ref":"#/components/responses/Error"},"402":{"$ref":"#/components/responses/Error"},"429":{"$ref":"#/components/responses/Error"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"seriesId":{"type":"string","minLength":2,"maxLength":64,"description":"Seri kimliği, ör. `tcmb.usd`. Boş bırakılırsa katalog döner."},"from":{"description":"Başlangıç tarihi (dahil).","type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"to":{"description":"Bitiş tarihi (dahil).","type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"limit":{"default":365,"type":"integer","minimum":1,"maximum":3650},"fillGaps":{"default":false,"type":"boolean"},"includeEvidence":{"default":false,"description":"Her nokta için kaynak URL ve içerik özetini döndürür.","type":"boolean"}}}}}}},"get":{"tags":["Time Series"],"summary":"Returns the accumulated history of public data series with change statistics and a source receipt for every point.","description":"Currently ingesting the Turkish Central Bank daily FX bulletin (`tcmb.usd`, `tcmb.eur`, …), normalised to one unit so JPY-style 100-unit quotes stop biting. Leave `seriesId` empty to list the catalogue. `fillGaps` carries the last value across weekends and holidays; `includeEvidence` attaches the source URL and content hash for every point, so a value can still be defended years later.\n\n**Credits per call:** 2 · **Operation id:** `series_history`\n\nIn the GET form every field is a query parameter; object and array fields are JSON-encoded.","operationId":"series_history_get","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"const":true},"data":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"series":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"},"source":{"type":"string"},"unit":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","title","source","unit"],"additionalProperties":false},{"type":"null"}]},"catalog":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"},"source":{"type":"string"},"points":{"type":"number"}},"required":["id","title","source","points"],"additionalProperties":false}},"range":{"type":"object","properties":{"from":{"anyOf":[{"type":"string"},{"type":"null"}]},"to":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["from","to"],"additionalProperties":false},"points":{"type":"array","items":{"type":"object","properties":{"at":{"type":"string"},"value":{"anyOf":[{"type":"number"},{"type":"null"}]},"filled":{"type":"boolean"},"evidence":{"type":"object","properties":{"sourceUrl":{"anyOf":[{"type":"string"},{"type":"null"}]},"contentHash":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["sourceUrl","contentHash"],"additionalProperties":false}},"required":["at","value","filled"],"additionalProperties":false}},"stats":{"anyOf":[{"type":"object","properties":{"count":{"type":"number"},"first":{"anyOf":[{"type":"number"},{"type":"null"}]},"last":{"anyOf":[{"type":"number"},{"type":"null"}]},"min":{"anyOf":[{"type":"number"},{"type":"null"}]},"max":{"anyOf":[{"type":"number"},{"type":"null"}]},"changePct":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["count","first","last","min","max","changePct"],"additionalProperties":false},{"type":"null"}]},"warnings":{"type":"array","items":{"type":"string"}}},"required":["series","catalog","range","points","stats","warnings"],"additionalProperties":false},"meta":{"type":"object","properties":{"credits":{"type":"integer"},"cached":{"type":"boolean"},"requestId":{"type":"string"},"durationMs":{"type":"integer"}}}},"required":["ok","data"]}}}},"400":{"$ref":"#/components/responses/Error"},"401":{"$ref":"#/components/responses/Error"},"402":{"$ref":"#/components/responses/Error"},"429":{"$ref":"#/components/responses/Error"}},"parameters":[{"name":"seriesId","in":"query","required":false,"description":"Seri kimliği, ör. `tcmb.usd`. Boş bırakılırsa katalog döner.","schema":{"type":"string","minLength":2,"maxLength":64,"description":"Seri kimliği, ör. `tcmb.usd`. Boş bırakılırsa katalog döner."}},{"name":"from","in":"query","required":false,"description":"Başlangıç tarihi (dahil).","schema":{"description":"Başlangıç tarihi (dahil).","type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}},{"name":"to","in":"query","required":false,"description":"Bitiş tarihi (dahil).","schema":{"description":"Bitiş tarihi (dahil).","type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}},{"name":"limit","in":"query","required":false,"schema":{"default":365,"type":"integer","minimum":1,"maximum":3650}},{"name":"fillGaps","in":"query","required":false,"schema":{"default":false,"type":"boolean"}},{"name":"includeEvidence","in":"query","required":false,"description":"Her nokta için kaynak URL ve içerik özetini döndürür.","schema":{"default":false,"description":"Her nokta için kaynak URL ve içerik özetini döndürür.","type":"boolean"}}]}},"/v1/tr/address/parse":{"post":{"tags":["Address"],"summary":"Splits a free-form Turkish address into neighbourhood, street, building, floor, flat, district, province and postcode.","description":"Handles the abbreviation chaos (Mah./Mh., Cd./Cad., Sk./Sok., No:12/5, K:3 D:7), cross-checks the province against the postcode, repairs misspelled district names against a dictionary, and returns a confidence score. Anything it could not place is listed in `unparsed` — nothing is dropped silently. Built for shipping, checkout and CRM systems that receive Turkish addresses typed by humans.\n\n**Credits per call:** 1 · **Operation id:** `tr_address_parse`","operationId":"tr_address_parse","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"const":true},"data":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"raw":{"type":"string"},"normalized":{"anyOf":[{"type":"string"},{"type":"null"}]},"province":{"anyOf":[{"type":"string"},{"type":"null"}]},"provinceCode":{"anyOf":[{"type":"number"},{"type":"null"}]},"district":{"anyOf":[{"type":"string"},{"type":"null"}]},"districtSource":{"anyOf":[{"type":"string","enum":["dictionary","heuristic"]},{"type":"null"}]},"neighborhood":{"anyOf":[{"type":"string"},{"type":"null"}]},"street":{"anyOf":[{"type":"object","properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}]},"type":{"type":"string"}},"required":["name","type"],"additionalProperties":false},{"type":"null"}]},"streets":{"type":"array","items":{"type":"object","properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}]},"type":{"type":"string"}},"required":["name","type"],"additionalProperties":false}},"building":{"anyOf":[{"type":"object","properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}]},"type":{"type":"string"}},"required":["name","type"],"additionalProperties":false},{"type":"null"}]},"block":{"anyOf":[{"type":"string"},{"type":"null"}]},"buildingNumber":{"anyOf":[{"type":"string"},{"type":"null"}]},"floor":{"anyOf":[{"type":"string"},{"type":"null"}]},"apartment":{"anyOf":[{"type":"string"},{"type":"null"}]},"postalCode":{"anyOf":[{"type":"string"},{"type":"null"}]},"confidence":{"type":"number"},"unparsed":{"type":"array","items":{"type":"string"}},"warnings":{"type":"array","items":{"type":"string"}}},"required":["raw","normalized","province","provinceCode","district","districtSource","neighborhood","street","streets","building","block","buildingNumber","floor","apartment","postalCode","confidence","unparsed","warnings"],"additionalProperties":false},"meta":{"type":"object","properties":{"credits":{"type":"integer"},"cached":{"type":"boolean"},"requestId":{"type":"string"},"durationMs":{"type":"integer"}}}},"required":["ok","data"]}}}},"400":{"$ref":"#/components/responses/Error"},"401":{"$ref":"#/components/responses/Error"},"402":{"$ref":"#/components/responses/Error"},"429":{"$ref":"#/components/responses/Error"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"address":{"type":"string","minLength":3,"maxLength":500,"description":"Serbest metin adres."},"defaultProvince":{"description":"Adreste il geçmiyorsa varsayılacak il.","type":"string"}},"required":["address"]}}}}},"get":{"tags":["Address"],"summary":"Splits a free-form Turkish address into neighbourhood, street, building, floor, flat, district, province and postcode.","description":"Handles the abbreviation chaos (Mah./Mh., Cd./Cad., Sk./Sok., No:12/5, K:3 D:7), cross-checks the province against the postcode, repairs misspelled district names against a dictionary, and returns a confidence score. Anything it could not place is listed in `unparsed` — nothing is dropped silently. Built for shipping, checkout and CRM systems that receive Turkish addresses typed by humans.\n\n**Credits per call:** 1 · **Operation id:** `tr_address_parse`\n\nIn the GET form every field is a query parameter; object and array fields are JSON-encoded.","operationId":"tr_address_parse_get","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"const":true},"data":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"raw":{"type":"string"},"normalized":{"anyOf":[{"type":"string"},{"type":"null"}]},"province":{"anyOf":[{"type":"string"},{"type":"null"}]},"provinceCode":{"anyOf":[{"type":"number"},{"type":"null"}]},"district":{"anyOf":[{"type":"string"},{"type":"null"}]},"districtSource":{"anyOf":[{"type":"string","enum":["dictionary","heuristic"]},{"type":"null"}]},"neighborhood":{"anyOf":[{"type":"string"},{"type":"null"}]},"street":{"anyOf":[{"type":"object","properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}]},"type":{"type":"string"}},"required":["name","type"],"additionalProperties":false},{"type":"null"}]},"streets":{"type":"array","items":{"type":"object","properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}]},"type":{"type":"string"}},"required":["name","type"],"additionalProperties":false}},"building":{"anyOf":[{"type":"object","properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}]},"type":{"type":"string"}},"required":["name","type"],"additionalProperties":false},{"type":"null"}]},"block":{"anyOf":[{"type":"string"},{"type":"null"}]},"buildingNumber":{"anyOf":[{"type":"string"},{"type":"null"}]},"floor":{"anyOf":[{"type":"string"},{"type":"null"}]},"apartment":{"anyOf":[{"type":"string"},{"type":"null"}]},"postalCode":{"anyOf":[{"type":"string"},{"type":"null"}]},"confidence":{"type":"number"},"unparsed":{"type":"array","items":{"type":"string"}},"warnings":{"type":"array","items":{"type":"string"}}},"required":["raw","normalized","province","provinceCode","district","districtSource","neighborhood","street","streets","building","block","buildingNumber","floor","apartment","postalCode","confidence","unparsed","warnings"],"additionalProperties":false},"meta":{"type":"object","properties":{"credits":{"type":"integer"},"cached":{"type":"boolean"},"requestId":{"type":"string"},"durationMs":{"type":"integer"}}}},"required":["ok","data"]}}}},"400":{"$ref":"#/components/responses/Error"},"401":{"$ref":"#/components/responses/Error"},"402":{"$ref":"#/components/responses/Error"},"429":{"$ref":"#/components/responses/Error"}},"parameters":[{"name":"address","in":"query","required":true,"description":"Serbest metin adres.","schema":{"type":"string","minLength":3,"maxLength":500,"description":"Serbest metin adres."}},{"name":"defaultProvince","in":"query","required":false,"description":"Adreste il geçmiyorsa varsayılacak il.","schema":{"description":"Adreste il geçmiyorsa varsayılacak il.","type":"string"}}]}},"/v1/tr/business-days":{"post":{"tags":["Calendar"],"summary":"Adds business days or counts them between two dates, accounting for Turkish public and religious holidays including half-day eves.","description":"Ramadan and Sacrifice feasts follow the Hijri calendar and cannot be derived reliably by formula, so announced dates are read from a table; years without an official announcement are returned with `confirmed:false` rather than guessed silently. For delivery promises, SLA clocks, payment terms and shipping estimates.\n\n**Credits per call:** 1 · **Operation id:** `tr_business_days`","operationId":"tr_business_days","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"const":true},"data":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"mode":{"type":"string","enum":["add","count"]},"start":{"type":"string"},"end":{"anyOf":[{"type":"string"},{"type":"null"}]},"businessDays":{"anyOf":[{"type":"number"},{"type":"null"}]},"resultDate":{"anyOf":[{"type":"string"},{"type":"null"}]},"holidaysInRange":{"type":"array","items":{"type":"object","properties":{"date":{"type":"string"},"name":{"type":"string"},"type":{"type":"string","enum":["resmi","dini"]},"half":{"type":"boolean"},"confirmed":{"type":"boolean"}},"required":["date","name","type","half","confirmed"],"additionalProperties":false}},"warnings":{"type":"array","items":{"type":"string"}}},"required":["mode","start","end","businessDays","resultDate","holidaysInRange","warnings"],"additionalProperties":false},"meta":{"type":"object","properties":{"credits":{"type":"integer"},"cached":{"type":"boolean"},"requestId":{"type":"string"},"durationMs":{"type":"integer"}}}},"required":["ok","data"]}}}},"400":{"$ref":"#/components/responses/Error"},"401":{"$ref":"#/components/responses/Error"},"402":{"$ref":"#/components/responses/Error"},"429":{"$ref":"#/components/responses/Error"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"start":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"Başlangıç tarihi (YYYY-AA-GG)."},"addDays":{"description":"Bu kadar İŞ GÜNÜ ekle/çıkar.","type":"integer","minimum":-3650,"maximum":3650},"end":{"description":"Verilirse aradaki iş günü sayılır.","type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"countHalfDaysAsWork":{"default":true,"description":"Arife yarım günleri iş günü sayılsın mı?","type":"boolean"}},"required":["start"]}}}}},"get":{"tags":["Calendar"],"summary":"Adds business days or counts them between two dates, accounting for Turkish public and religious holidays including half-day eves.","description":"Ramadan and Sacrifice feasts follow the Hijri calendar and cannot be derived reliably by formula, so announced dates are read from a table; years without an official announcement are returned with `confirmed:false` rather than guessed silently. For delivery promises, SLA clocks, payment terms and shipping estimates.\n\n**Credits per call:** 1 · **Operation id:** `tr_business_days`\n\nIn the GET form every field is a query parameter; object and array fields are JSON-encoded.","operationId":"tr_business_days_get","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"const":true},"data":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"mode":{"type":"string","enum":["add","count"]},"start":{"type":"string"},"end":{"anyOf":[{"type":"string"},{"type":"null"}]},"businessDays":{"anyOf":[{"type":"number"},{"type":"null"}]},"resultDate":{"anyOf":[{"type":"string"},{"type":"null"}]},"holidaysInRange":{"type":"array","items":{"type":"object","properties":{"date":{"type":"string"},"name":{"type":"string"},"type":{"type":"string","enum":["resmi","dini"]},"half":{"type":"boolean"},"confirmed":{"type":"boolean"}},"required":["date","name","type","half","confirmed"],"additionalProperties":false}},"warnings":{"type":"array","items":{"type":"string"}}},"required":["mode","start","end","businessDays","resultDate","holidaysInRange","warnings"],"additionalProperties":false},"meta":{"type":"object","properties":{"credits":{"type":"integer"},"cached":{"type":"boolean"},"requestId":{"type":"string"},"durationMs":{"type":"integer"}}}},"required":["ok","data"]}}}},"400":{"$ref":"#/components/responses/Error"},"401":{"$ref":"#/components/responses/Error"},"402":{"$ref":"#/components/responses/Error"},"429":{"$ref":"#/components/responses/Error"}},"parameters":[{"name":"start","in":"query","required":true,"description":"Başlangıç tarihi (YYYY-AA-GG).","schema":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"Başlangıç tarihi (YYYY-AA-GG)."}},{"name":"addDays","in":"query","required":false,"description":"Bu kadar İŞ GÜNÜ ekle/çıkar.","schema":{"description":"Bu kadar İŞ GÜNÜ ekle/çıkar.","type":"integer","minimum":-3650,"maximum":3650}},{"name":"end","in":"query","required":false,"description":"Verilirse aradaki iş günü sayılır.","schema":{"description":"Verilirse aradaki iş günü sayılır.","type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}},{"name":"countHalfDaysAsWork","in":"query","required":false,"description":"Arife yarım günleri iş günü sayılsın mı?","schema":{"default":true,"description":"Arife yarım günleri iş günü sayılsın mı?","type":"boolean"}}]}},"/v1/tr/invoice/parse":{"post":{"tags":["Finance"],"summary":"Turns a UBL-TR e-Invoice or e-Archive XML document into clean JSON: parties, line items, taxes and totals.","description":"Works regardless of the namespace prefix the sender used (cbc:, cac:, ns0:), normalises single-line documents into arrays, and reports amount mismatches in `warnings` instead of returning quietly wrong totals. The job that costs accounting and expense software the most engineering time.\n\n**Credits per call:** 3 · **Operation id:** `tr_invoice_parse`","operationId":"tr_invoice_parse","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"const":true},"data":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"documentType":{"type":"string"},"profile":{"anyOf":[{"type":"string"},{"type":"null"}]},"invoiceTypeCode":{"anyOf":[{"type":"string"},{"type":"null"}]},"id":{"anyOf":[{"type":"string"},{"type":"null"}]},"uuid":{"anyOf":[{"type":"string"},{"type":"null"}]},"issueDate":{"anyOf":[{"type":"string"},{"type":"null"}]},"issueTime":{"anyOf":[{"type":"string"},{"type":"null"}]},"currency":{"type":"string"},"supplier":{"anyOf":[{"type":"object","properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}]},"taxNumber":{"anyOf":[{"type":"string"},{"type":"null"}]},"taxOffice":{"anyOf":[{"type":"string"},{"type":"null"}]},"identifiers":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}},"address":{"anyOf":[{"type":"object","properties":{"street":{"anyOf":[{"type":"string"},{"type":"null"}]},"building":{"anyOf":[{"type":"string"},{"type":"null"}]},"district":{"anyOf":[{"type":"string"},{"type":"null"}]},"city":{"anyOf":[{"type":"string"},{"type":"null"}]},"postalCode":{"anyOf":[{"type":"string"},{"type":"null"}]},"country":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["street","building","district","city","postalCode","country"],"additionalProperties":false},{"type":"null"}]},"email":{"anyOf":[{"type":"string"},{"type":"null"}]},"phone":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["name","taxNumber","taxOffice","identifiers","address","email","phone"],"additionalProperties":false},{"type":"null"}]},"customer":{"anyOf":[{"type":"object","properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}]},"taxNumber":{"anyOf":[{"type":"string"},{"type":"null"}]},"taxOffice":{"anyOf":[{"type":"string"},{"type":"null"}]},"identifiers":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}},"address":{"anyOf":[{"type":"object","properties":{"street":{"anyOf":[{"type":"string"},{"type":"null"}]},"building":{"anyOf":[{"type":"string"},{"type":"null"}]},"district":{"anyOf":[{"type":"string"},{"type":"null"}]},"city":{"anyOf":[{"type":"string"},{"type":"null"}]},"postalCode":{"anyOf":[{"type":"string"},{"type":"null"}]},"country":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["street","building","district","city","postalCode","country"],"additionalProperties":false},{"type":"null"}]},"email":{"anyOf":[{"type":"string"},{"type":"null"}]},"phone":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["name","taxNumber","taxOffice","identifiers","address","email","phone"],"additionalProperties":false},{"type":"null"}]},"lines":{"type":"array","items":{"type":"object","properties":{"lineNumber":{"type":"number"},"name":{"anyOf":[{"type":"string"},{"type":"null"}]},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"sellerItemCode":{"anyOf":[{"type":"string"},{"type":"null"}]},"buyerItemCode":{"anyOf":[{"type":"string"},{"type":"null"}]},"quantity":{"anyOf":[{"type":"number"},{"type":"null"}]},"unit":{"anyOf":[{"type":"string"},{"type":"null"}]},"unitPrice":{"anyOf":[{"type":"number"},{"type":"null"}]},"lineExtensionAmount":{"anyOf":[{"type":"number"},{"type":"null"}]},"allowanceTotal":{"type":"number"},"taxes":{"type":"array","items":{"type":"object","properties":{"taxableAmount":{"anyOf":[{"type":"number"},{"type":"null"}]},"taxAmount":{"anyOf":[{"type":"number"},{"type":"null"}]},"percent":{"anyOf":[{"type":"number"},{"type":"null"}]},"taxName":{"anyOf":[{"type":"string"},{"type":"null"}]},"taxCode":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["taxableAmount","taxAmount","percent","taxName","taxCode"],"additionalProperties":false}},"vatRate":{"anyOf":[{"type":"number"},{"type":"null"}]},"vatAmount":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["lineNumber","name","description","sellerItemCode","buyerItemCode","quantity","unit","unitPrice","lineExtensionAmount","allowanceTotal","taxes","vatRate","vatAmount"],"additionalProperties":false}},"taxes":{"type":"array","items":{"type":"object","properties":{"taxableAmount":{"anyOf":[{"type":"number"},{"type":"null"}]},"taxAmount":{"anyOf":[{"type":"number"},{"type":"null"}]},"percent":{"anyOf":[{"type":"number"},{"type":"null"}]},"taxName":{"anyOf":[{"type":"string"},{"type":"null"}]},"taxCode":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["taxableAmount","taxAmount","percent","taxName","taxCode"],"additionalProperties":false}},"totals":{"type":"object","properties":{"lineExtensionAmount":{"anyOf":[{"type":"number"},{"type":"null"}]},"taxExclusiveAmount":{"anyOf":[{"type":"number"},{"type":"null"}]},"taxInclusiveAmount":{"anyOf":[{"type":"number"},{"type":"null"}]},"allowanceTotalAmount":{"anyOf":[{"type":"number"},{"type":"null"}]},"payableAmount":{"anyOf":[{"type":"number"},{"type":"null"}]},"taxTotal":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["lineExtensionAmount","taxExclusiveAmount","taxInclusiveAmount","allowanceTotalAmount","payableAmount","taxTotal"],"additionalProperties":false},"notes":{"type":"array","items":{"type":"string"}},"warnings":{"type":"array","items":{"type":"string"}}},"required":["documentType","profile","invoiceTypeCode","id","uuid","issueDate","issueTime","currency","supplier","customer","lines","taxes","totals","notes","warnings"],"additionalProperties":false},"meta":{"type":"object","properties":{"credits":{"type":"integer"},"cached":{"type":"boolean"},"requestId":{"type":"string"},"durationMs":{"type":"integer"}}}},"required":["ok","data"]}}}},"400":{"$ref":"#/components/responses/Error"},"401":{"$ref":"#/components/responses/Error"},"402":{"$ref":"#/components/responses/Error"},"429":{"$ref":"#/components/responses/Error"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"xml":{"type":"string","minLength":20,"maxLength":4000000,"description":"UBL-TR e-Fatura / e-Arşiv XML içeriği."}},"required":["xml"]}}}}},"get":{"tags":["Finance"],"summary":"Turns a UBL-TR e-Invoice or e-Archive XML document into clean JSON: parties, line items, taxes and totals.","description":"Works regardless of the namespace prefix the sender used (cbc:, cac:, ns0:), normalises single-line documents into arrays, and reports amount mismatches in `warnings` instead of returning quietly wrong totals. The job that costs accounting and expense software the most engineering time.\n\n**Credits per call:** 3 · **Operation id:** `tr_invoice_parse`\n\nIn the GET form every field is a query parameter; object and array fields are JSON-encoded.","operationId":"tr_invoice_parse_get","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"const":true},"data":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"documentType":{"type":"string"},"profile":{"anyOf":[{"type":"string"},{"type":"null"}]},"invoiceTypeCode":{"anyOf":[{"type":"string"},{"type":"null"}]},"id":{"anyOf":[{"type":"string"},{"type":"null"}]},"uuid":{"anyOf":[{"type":"string"},{"type":"null"}]},"issueDate":{"anyOf":[{"type":"string"},{"type":"null"}]},"issueTime":{"anyOf":[{"type":"string"},{"type":"null"}]},"currency":{"type":"string"},"supplier":{"anyOf":[{"type":"object","properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}]},"taxNumber":{"anyOf":[{"type":"string"},{"type":"null"}]},"taxOffice":{"anyOf":[{"type":"string"},{"type":"null"}]},"identifiers":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}},"address":{"anyOf":[{"type":"object","properties":{"street":{"anyOf":[{"type":"string"},{"type":"null"}]},"building":{"anyOf":[{"type":"string"},{"type":"null"}]},"district":{"anyOf":[{"type":"string"},{"type":"null"}]},"city":{"anyOf":[{"type":"string"},{"type":"null"}]},"postalCode":{"anyOf":[{"type":"string"},{"type":"null"}]},"country":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["street","building","district","city","postalCode","country"],"additionalProperties":false},{"type":"null"}]},"email":{"anyOf":[{"type":"string"},{"type":"null"}]},"phone":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["name","taxNumber","taxOffice","identifiers","address","email","phone"],"additionalProperties":false},{"type":"null"}]},"customer":{"anyOf":[{"type":"object","properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}]},"taxNumber":{"anyOf":[{"type":"string"},{"type":"null"}]},"taxOffice":{"anyOf":[{"type":"string"},{"type":"null"}]},"identifiers":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}},"address":{"anyOf":[{"type":"object","properties":{"street":{"anyOf":[{"type":"string"},{"type":"null"}]},"building":{"anyOf":[{"type":"string"},{"type":"null"}]},"district":{"anyOf":[{"type":"string"},{"type":"null"}]},"city":{"anyOf":[{"type":"string"},{"type":"null"}]},"postalCode":{"anyOf":[{"type":"string"},{"type":"null"}]},"country":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["street","building","district","city","postalCode","country"],"additionalProperties":false},{"type":"null"}]},"email":{"anyOf":[{"type":"string"},{"type":"null"}]},"phone":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["name","taxNumber","taxOffice","identifiers","address","email","phone"],"additionalProperties":false},{"type":"null"}]},"lines":{"type":"array","items":{"type":"object","properties":{"lineNumber":{"type":"number"},"name":{"anyOf":[{"type":"string"},{"type":"null"}]},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"sellerItemCode":{"anyOf":[{"type":"string"},{"type":"null"}]},"buyerItemCode":{"anyOf":[{"type":"string"},{"type":"null"}]},"quantity":{"anyOf":[{"type":"number"},{"type":"null"}]},"unit":{"anyOf":[{"type":"string"},{"type":"null"}]},"unitPrice":{"anyOf":[{"type":"number"},{"type":"null"}]},"lineExtensionAmount":{"anyOf":[{"type":"number"},{"type":"null"}]},"allowanceTotal":{"type":"number"},"taxes":{"type":"array","items":{"type":"object","properties":{"taxableAmount":{"anyOf":[{"type":"number"},{"type":"null"}]},"taxAmount":{"anyOf":[{"type":"number"},{"type":"null"}]},"percent":{"anyOf":[{"type":"number"},{"type":"null"}]},"taxName":{"anyOf":[{"type":"string"},{"type":"null"}]},"taxCode":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["taxableAmount","taxAmount","percent","taxName","taxCode"],"additionalProperties":false}},"vatRate":{"anyOf":[{"type":"number"},{"type":"null"}]},"vatAmount":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["lineNumber","name","description","sellerItemCode","buyerItemCode","quantity","unit","unitPrice","lineExtensionAmount","allowanceTotal","taxes","vatRate","vatAmount"],"additionalProperties":false}},"taxes":{"type":"array","items":{"type":"object","properties":{"taxableAmount":{"anyOf":[{"type":"number"},{"type":"null"}]},"taxAmount":{"anyOf":[{"type":"number"},{"type":"null"}]},"percent":{"anyOf":[{"type":"number"},{"type":"null"}]},"taxName":{"anyOf":[{"type":"string"},{"type":"null"}]},"taxCode":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["taxableAmount","taxAmount","percent","taxName","taxCode"],"additionalProperties":false}},"totals":{"type":"object","properties":{"lineExtensionAmount":{"anyOf":[{"type":"number"},{"type":"null"}]},"taxExclusiveAmount":{"anyOf":[{"type":"number"},{"type":"null"}]},"taxInclusiveAmount":{"anyOf":[{"type":"number"},{"type":"null"}]},"allowanceTotalAmount":{"anyOf":[{"type":"number"},{"type":"null"}]},"payableAmount":{"anyOf":[{"type":"number"},{"type":"null"}]},"taxTotal":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["lineExtensionAmount","taxExclusiveAmount","taxInclusiveAmount","allowanceTotalAmount","payableAmount","taxTotal"],"additionalProperties":false},"notes":{"type":"array","items":{"type":"string"}},"warnings":{"type":"array","items":{"type":"string"}}},"required":["documentType","profile","invoiceTypeCode","id","uuid","issueDate","issueTime","currency","supplier","customer","lines","taxes","totals","notes","warnings"],"additionalProperties":false},"meta":{"type":"object","properties":{"credits":{"type":"integer"},"cached":{"type":"boolean"},"requestId":{"type":"string"},"durationMs":{"type":"integer"}}}},"required":["ok","data"]}}}},"400":{"$ref":"#/components/responses/Error"},"401":{"$ref":"#/components/responses/Error"},"402":{"$ref":"#/components/responses/Error"},"429":{"$ref":"#/components/responses/Error"}},"parameters":[{"name":"xml","in":"query","required":true,"description":"UBL-TR e-Fatura / e-Arşiv XML içeriği.","schema":{"type":"string","minLength":20,"maxLength":4000000,"description":"UBL-TR e-Fatura / e-Arşiv XML içeriği."}}]}},"/v1/tr/money/to-words":{"post":{"tags":["Finance"],"summary":"Writes a monetary amount out in Turkish words, the way invoices, cheques and promissory notes require.","description":"Applies the rules that trip up generic libraries: Turkish says \"bin\", never \"bir bin\"; the kuruş part is read separately; and both \"1.234,56\" and \"1,234.56\" are accepted and told apart automatically. A mandatory field on Turkish e-invoices, cheques and notes — with no off-the-shelf API until now.\n\n**Credits per call:** 1 · **Operation id:** `tr_money_to_words`","operationId":"tr_money_to_words","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"const":true},"data":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"amount":{"type":"object","properties":{"major":{"type":"string"},"minor":{"type":"number"},"negative":{"type":"boolean"}},"required":["major","minor","negative"],"additionalProperties":false},"currency":{"type":"string"},"words":{"type":"string"},"formatted":{"type":"string"}},"required":["amount","currency","words","formatted"],"additionalProperties":false},"meta":{"type":"object","properties":{"credits":{"type":"integer"},"cached":{"type":"boolean"},"requestId":{"type":"string"},"durationMs":{"type":"integer"}}}},"required":["ok","data"]}}}},"400":{"$ref":"#/components/responses/Error"},"401":{"$ref":"#/components/responses/Error"},"402":{"$ref":"#/components/responses/Error"},"429":{"$ref":"#/components/responses/Error"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"amount":{"anyOf":[{"type":"string"},{"type":"number"}],"description":"Tutar. \"1.234,56\" ve 1234.56 biçimlerinin ikisi de kabul edilir."},"currency":{"default":"TRY","type":"string","enum":["TRY","USD","EUR","GBP"]},"style":{"default":"lower","description":"Çıktı harf biçimi.","type":"string","enum":["lower","title","upper"]},"wrapHash":{"default":false,"type":"boolean"}},"required":["amount"]}}}}},"get":{"tags":["Finance"],"summary":"Writes a monetary amount out in Turkish words, the way invoices, cheques and promissory notes require.","description":"Applies the rules that trip up generic libraries: Turkish says \"bin\", never \"bir bin\"; the kuruş part is read separately; and both \"1.234,56\" and \"1,234.56\" are accepted and told apart automatically. A mandatory field on Turkish e-invoices, cheques and notes — with no off-the-shelf API until now.\n\n**Credits per call:** 1 · **Operation id:** `tr_money_to_words`\n\nIn the GET form every field is a query parameter; object and array fields are JSON-encoded.","operationId":"tr_money_to_words_get","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"const":true},"data":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"amount":{"type":"object","properties":{"major":{"type":"string"},"minor":{"type":"number"},"negative":{"type":"boolean"}},"required":["major","minor","negative"],"additionalProperties":false},"currency":{"type":"string"},"words":{"type":"string"},"formatted":{"type":"string"}},"required":["amount","currency","words","formatted"],"additionalProperties":false},"meta":{"type":"object","properties":{"credits":{"type":"integer"},"cached":{"type":"boolean"},"requestId":{"type":"string"},"durationMs":{"type":"integer"}}}},"required":["ok","data"]}}}},"400":{"$ref":"#/components/responses/Error"},"401":{"$ref":"#/components/responses/Error"},"402":{"$ref":"#/components/responses/Error"},"429":{"$ref":"#/components/responses/Error"}},"parameters":[{"name":"amount","in":"query","required":true,"description":"Tutar. \"1.234,56\" ve 1234.56 biçimlerinin ikisi de kabul edilir.","schema":{"anyOf":[{"type":"string"},{"type":"number"}],"description":"Tutar. \"1.234,56\" ve 1234.56 biçimlerinin ikisi de kabul edilir."}},{"name":"currency","in":"query","required":false,"schema":{"default":"TRY","type":"string","enum":["TRY","USD","EUR","GBP"]}},{"name":"style","in":"query","required":false,"description":"Çıktı harf biçimi.","schema":{"default":"lower","description":"Çıktı harf biçimi.","type":"string","enum":["lower","title","upper"]}},{"name":"wrapHash","in":"query","required":false,"schema":{"default":false,"type":"boolean"}}]}},"/v1/tr/validate":{"post":{"tags":["Validation"],"summary":"Validates Turkish national ID, tax number, IBAN, licence plate, IMEI and barcodes from one endpoint, with type auto-detection.","description":"Goes past a yes/no: resolves the bank behind an IBAN, the province behind a licence plate and the GS1 country prefix behind a barcode. Pure local computation — no upstream service is called, so latency is microseconds and the answer never changes for the same input.\n\n**Credits per call:** 1 · **Operation id:** `tr_validate`","operationId":"tr_validate","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"const":true},"data":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"input":{"type":"string"},"type":{"anyOf":[{"type":"string"},{"type":"null"}]},"valid":{"type":"boolean"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}]},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["input","type","valid","reason","details"],"additionalProperties":false},"meta":{"type":"object","properties":{"credits":{"type":"integer"},"cached":{"type":"boolean"},"requestId":{"type":"string"},"durationMs":{"type":"integer"}}}},"required":["ok","data"]}}}},"400":{"$ref":"#/components/responses/Error"},"401":{"$ref":"#/components/responses/Error"},"402":{"$ref":"#/components/responses/Error"},"429":{"$ref":"#/components/responses/Error"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"value":{"type":"string","minLength":1,"maxLength":64,"description":"Doğrulanacak değer."},"type":{"default":"auto","description":"Belirtilmezse biçimden otomatik tespit edilir.","type":"string","enum":["auto","tckn","vkn","iban","plate","imei","gtin"]}},"required":["value"]}}}}},"get":{"tags":["Validation"],"summary":"Validates Turkish national ID, tax number, IBAN, licence plate, IMEI and barcodes from one endpoint, with type auto-detection.","description":"Goes past a yes/no: resolves the bank behind an IBAN, the province behind a licence plate and the GS1 country prefix behind a barcode. Pure local computation — no upstream service is called, so latency is microseconds and the answer never changes for the same input.\n\n**Credits per call:** 1 · **Operation id:** `tr_validate`\n\nIn the GET form every field is a query parameter; object and array fields are JSON-encoded.","operationId":"tr_validate_get","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"const":true},"data":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"input":{"type":"string"},"type":{"anyOf":[{"type":"string"},{"type":"null"}]},"valid":{"type":"boolean"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}]},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["input","type","valid","reason","details"],"additionalProperties":false},"meta":{"type":"object","properties":{"credits":{"type":"integer"},"cached":{"type":"boolean"},"requestId":{"type":"string"},"durationMs":{"type":"integer"}}}},"required":["ok","data"]}}}},"400":{"$ref":"#/components/responses/Error"},"401":{"$ref":"#/components/responses/Error"},"402":{"$ref":"#/components/responses/Error"},"429":{"$ref":"#/components/responses/Error"}},"parameters":[{"name":"value","in":"query","required":true,"description":"Doğrulanacak değer.","schema":{"type":"string","minLength":1,"maxLength":64,"description":"Doğrulanacak değer."}},{"name":"type","in":"query","required":false,"description":"Belirtilmezse biçimden otomatik tespit edilir.","schema":{"default":"auto","description":"Belirtilmezse biçimden otomatik tespit edilir.","type":"string","enum":["auto","tckn","vkn","iban","plate","imei","gtin"]}}]}}}}