Verification records
Look up verifications you've already made, and summarise usage.
Your organization's verifications, newest first. A key sees only its own environment (test keys see test verifications).
ApiKeyAuthorizationBearer <token>Your API key. sk_test_… keys use the sandbox (sample data, free); sk_live_… keys query the real sources and are charged.
limit?integerPage size, 1 to 100.
1 <= value <= 10020cursor?stringnextCursor from the previous page.
apiCode?stringOnly this API, e.g. identity.national-id.
status?string"PENDING""COMPLETED""FAILED"One page of verifications.
application/json- response
data*array<>nextCursor*|Pass as cursor for the next page; null on the last page.
curl -X GET 'https://restapi.nilinde.com/v1/verifications'{ "data": [ { "id": "cmhd2k7q80001s60h3x9f2a1b", "api": "tax.kra-pin", "status": "COMPLETED", "environment": "LIVE", "result": { "found": true, "idNumber": "12345678", "taxpayer": { "pin": "A000000000S", "name": "JANE WANJIKU DOE" } }, "error": null, "cost": "50", "latencyMs": 412, "createdAt": "2026-10-30T09:15:02.118Z", "completedAt": "2026-10-30T09:15:02.530Z" } ], "nextCursor": null}Calls, success rate and cost per API over a period (default: the last 30 days).
ApiKeyAuthorizationBearer <token>Your API key. sk_test_… keys use the sandbox (sample data, free); sk_live_… keys query the real sources and are charged.
from?stringStart (inclusive), ISO 8601.
date-timeto?stringEnd (exclusive), ISO 8601.
date-timeThe summary.
application/json- response
from?stringdate-timeto?stringdate-timeenvironment?string"LIVE""TEST"calls?integerAll verifications in the period.
completed?integersuccessRate?|Completed share of finished verifications, from 0 to 1.
totalCost?stringTotal charged in KES.
byApi?array<>curl -X GET 'https://restapi.nilinde.com/v1/verifications/summary?from=2026-10-01T00%3A00%3A00Z&to=2026-11-01T00%3A00%3A00Z'{ "from": "2026-10-01T00:00:00.000Z", "to": "2026-11-01T00:00:00.000Z", "environment": "LIVE", "calls": 128, "completed": 126, "successRate": 0.984375, "totalCost": "6300", "byApi": [ { "apiCode": "identity.national-id", "calls": 100, "completed": 99, "failed": 1, "cost": "4950" }, { "apiCode": "tax.kra-pin", "calls": 28, "completed": 27, "failed": 1, "cost": "1350" } ]}Fetch a verification again by its id, e.g. after a timeout or to show a past result.
ApiKeyAuthorizationBearer <token>Your API key. sk_test_… keys use the sandbox (sample data, free); sk_live_… keys query the real sources and are charged.
id*stringThe verification.
application/json- response
One verification. Returned by every verification API, by GET /v1/verifications/{id}, and in webhooks.
id*stringUnique id; use it to fetch the verification again.
api*stringThe verification API that was called, e.g. identity.national-id.
status*stringCOMPLETED includes "not found" answers; FAILED means the source failed and the charge was refunded.
"PENDING""COMPLETED""FAILED"environment*stringTEST for test keys (sandbox data), LIVE for live keys.
"LIVE""TEST"result*|The answer, specific to each API (see its examples). Always has found: false when the source holds no record.
error*|Set when status is FAILED.
cost*stringAmount charged in KES, as a decimal string. "0" for test keys and failed verifications.
latencyMs?|Time the source took to answer, in milliseconds.
createdAt*stringdate-timecompletedAt?|date-timecurl -X GET 'https://restapi.nilinde.com/v1/verifications/cmhd2k7q80001s60h3x9f2a1b'{ "id": "cmhd2k7q80001s60h3x9f2a1b", "api": "tax.kra-pin", "status": "COMPLETED", "environment": "LIVE", "result": { "found": true, "idNumber": "12345678", "taxpayer": { "pin": "A000000000S", "name": "JANE WANJIKU DOE" } }, "error": null, "cost": "50", "latencyMs": 412, "createdAt": "2026-10-30T09:15:02.118Z", "completedAt": "2026-10-30T09:15:02.530Z"}Background checks
Police clearance (certificate of good conduct) verification against the DCI portal.
Billing and usage
Live verifications are paid from your organization's **prepaid wallet**, in Kenyan shillings (KES). **Bundles and prices** Your organization is on a bundle. The bundle sets which verification APIs you can call, the price of each, and optionally a monthly call quota. You can see your bundle and prices in the dashboard under **Billing**. **How a call is charged** 1. When a live call starts, its price is reserved from your wallet. If the balance is too low, the call is rejected with `402 INSUFFICIENT_FUNDS` and no lookup is made. 2. If the source answers, whether "found" or "not found", the charge stands. The amount is in the verification's `cost` field. 3. If the source fails (`502`), **the charge is refunded automatically** before the response is sent. 4. A retry with the same `Idempotency-Key` is never charged twice. Test-key calls cost nothing (`cost: "0"`). **Topping up** Top up from the dashboard's billing page, using M-Pesa (STK push to your phone). The wallet is credited as soon as the payment is confirmed. Wallet statements, payment receipts and CSV exports are also in the dashboard. **Checking from code** An API key can read your balance and this month's usage with the two endpoints below. Use them to alert your team before the balance runs out.