Kaqir API
Base URL https://api.kaqir.com · read-only · JSON · rate limit 10 requests/second per IP. No key is needed for verification. Screening endpoints are open during the pilot; contact admin@nodiumtech.com for a key and terms.
1. Verify a record (Kaqir Verify)
Every certificate carries a blob_sha256 — the SHA-256 of the exact list snapshot a result came from. Anyone can check it was recorded on the stated day and anchored to Bitcoin, without trusting this server.
GET /api/dogrula?sha=<blob_sha256>
GET /api/dogrula?gun=YYYY-MM-DD # a whole day's anchor
GET /kanit/YYYY-MM-DD.jsonl # the day's ledger slice (append-only lines)
GET /kanit/YYYY-MM-DD.jsonl.ots # OpenTimestamps proof → Bitcoin block
GET /kanit/YYYY-MM-DD.jsonl.tsr # RFC 3161 timestamp (freetsa.org)
GET /kanit/kokler.txt # day → record count → root sha256
Human page: /dogrula. The response lists the steps to repeat locally (sha256sum, ots info, a public block explorer).
2. Screen names (Kaqir Screen)
GET /api/tarama?isimler=Rosneft,Huawei[&tarih=2026-09-01]
POST /api/tarama Content-Type: application/json
{"isimler": ["Rosneft", "Acme Widgets LLC"], "tarih": "2026-09-01"} # ≤ 5000 names, 2 MB
GET /api/tarama-durum # index status (lists, names, versions)
Response (abridged):
{
"sorgu_tarihi": "2026-09-01", // "en son" when no date was given
"kaynak_sayisi": 84,
"kesin_eslesme": 1, "olasi_inceleme": 1, "temiz": 0,
"indeks_disi": [], // sources whose version for that date is still being indexed
"tekrar_dene_sn": null, // retry hint when indeks_disi is non-empty
"vurusler": [{
"isim": "Rosneft", "listede": true, "incelenecek": true,
"kesin": [{"yargi": "ABD — Consolidated Screening List", "ad": "Rosneft",
"blob_sha256": "7cf431f6…", "snapshot": "2026-09-18T22:20:41Z", "lisans": "birincil"}],
"olasi": [{"yargi": "UK — OFSI", "ad": "Rosneft Trading S.A.", "yontem": "alt-küme",
"blob_sha256": "4d3103bf…", "snapshot": "…", "lisans": "birincil"}]
}],
"kanit_zinciri": "…/api/dogrula?sha=<blob_sha256>"
}
| Field | Meaning |
kesin | Exact normalised-name match. Treat as listed. |
olasi | Partial (alt-küme: all query tokens appear in the name) or phonetic (fonetik(0.87): Soundex + similarity ≥ 0.82). Needs a human decision. False negatives are possible for heavily transliterated variants. |
lisans | birincil: primary government source (US CSL, EU FSF, UN, UK OFSI, Canada, Switzerland, Japan, Australia) — usable commercially. research: sourced via OpenSanctions (CC BY-NC 4.0) — a signal only, until a reseller licence is in place. |
tarih / as-of | Screens against the list versions that were current on that day. First historical query for a day may return some sources as indeks_disi; retry after tekrar_dene_sn. |
3. MCP (for AI agents)
The same capabilities are exposed as MCP tools over stdio: kure_tarama, kure_dogrula, plus the archive tools kure_beslemeler, kure_simdi, kure_gecmis, kure_degisim, kure_kanit, kure_ara. Ask for the endpoint.
4. What is archived
380 public feeds every 15 minutes (or at the source's own cadence): sanctions, PEP and debarment lists, company registries (UK Companies House PSC, US states), security advisories, status pages, ships, aircraft, earthquakes, news, provider pricing and terms pages. Raw bodies are content-addressed; each day's ledger is anchored to Bitcoin at 00:30 UTC. Raw data is not redistributed; certificates and derived answers are.
Kaqir runs on küre (Turkish for “globe”), our archive engine.