Screening API
Programmatic access to the same screening engine that powers the Kleerance web app. Send a name, get honest, complete matches across OFAC (SDN & Consolidated), UN, EU and UK HMT — with confidence scores and primary-source links you can present to auditors.
Base URL
https://kleerance.com/api/v1Authentication
All requests require a Bearer token in the Authorization header. Generate keys from the API keys page (Growth & Enterprise plans). Keys look like klr_live_… — treat them like passwords and never commit them to source control.
Authorization: Bearer klr_live_YOUR_KEY_HEREScreen a name
Request body
| Field | Type | Description |
|---|---|---|
| query | string (2–200) | Name or entity to screen. Required. |
| limit | integer (1–50) | Max matches to return. Default 25. |
| source_short_code | string[] | Restrict to specific lists, e.g. ["OFAC-SDN","UN-CONS"]. Omit for all lists. |
Example request
cURLcurl -X POST https://kleerance.com/api/v1/screen \ -H "Authorization: Bearer klr_live_YOUR_KEY_HERE" \ -H "Content-Type: application/json" \ -d '{ "query": "Vladimir Putin", "limit": 10 }'
Example response
200 OK{ "query": "Vladimir Putin", "matches": [ { "entity_id": "b1e2...", "slug": "vladimir-putin-ofac-sdn", "name": "PUTIN, Vladimir Vladimirovich", "entity_type": "person", "aliases": ["Putin, V.V.", "Владимир Путин"], "programs": ["UKRAINE-EO13661", "RUSSIA-EO14024"], "score": 100, "matched_name": "PUTIN, Vladimir Vladimirovich", "matched_field": "primary", "source": { "id": "0f2c...", "name": "OFAC Specially Designated Nationals", "short_code": "OFAC-SDN" }, "primary_source_url": "https://kleerance.com/sanctions/vladimir-putin-ofac-sdn" } ], "meta": { "count": 1, "plan": "growth", "monthly_limit": 10000, "remaining_this_period": 9873, "disclaimer": "Informational screening only — not a consumer report under the FCRA. Always verify potential matches against the primary-source record before acting." } }
Response fields
Every match in the matches array includes:
name— the primary name on the sanctioned entity's record.aliases,programs— supporting metadata.score— confidence 0–100 (100 = exact match).matched_name/matched_field— the specific string that produced the score, and whether it came from the primary name or an alias.source— issuing list (e.g. OFAC-SDN) with human-readable name and code.primary_source_url— canonical Kleerance page you can link auditors to.
The API returns the same complete results the website shows — we never truncate the match list or hide the count.
Rate limits & quotas
Quotas are enforced per user, per billing period. Every successful response includes headers:
X-RateLimit-Limit: 10000
X-RateLimit-Remaining: 9873| Plan | API access | Monthly calls |
|---|---|---|
| Free | — | — |
| Essentials | — | — |
| Growth | ✓ | 10,000 |
| Enterprise | ✓ | Unlimited |
A per-key burst limit of 60 requests / minute also applies, regardless of plan, to protect the service from sudden spikes.
Errors
Errors return a JSON body of shape { "error": { "code", "message", ... } }.
| Status | Code | Meaning |
|---|---|---|
| 400 | invalid_body | Malformed JSON or missing/invalid fields. |
| 401 | invalid_api_key | Missing, malformed, or revoked API key. |
| 402 | plan_upgrade_required | Current plan does not include API access. |
| 429 | quota_exceeded | Monthly call quota reached. Resets next billing cycle. |
| 429 | rate_limited | Per-key burst limit (60/min) exceeded. Retry after 60s. |
| 500 | internal | Server error. Safe to retry after a short backoff. |
Compliance framing
Kleerance provides informational screening only — it is not a consumer report under the Fair Credit Reporting Act (FCRA) or a substitute for legal counsel. Every match should be verified against the issuing authority's primary-source record before any decision affecting a person or entity is made. The primary_source_url on each match links to that record's canonical Kleerance page, which cites the issuing list.