X-API-Key header and you’re authenticated.
Creating an API key
Go to the API Keys page
In the kycert dashboard, navigate to Settings → Developer → API Keys.
Name the key
Enter a descriptive name that identifies where this key is used, for example
Production Integration - ERP System or Onboarding Service - Staging. You’ll see this name in audit logs and the revocation list.Select the environment
Choose Live for production requests or Sandbox for development and testing. This selection determines the key prefix and the data the key can access — you cannot switch a key between environments after creation.
Select scopes
Choose only the permissions your integration needs:
runs:write— create bureau runsruns:read— read run status, decisions, and analysisdetail:read— access per-source technical detail (requires support approval)
runs:write alone is sufficient. Add runs:read if your service also polls run status or lists run history.Using your key
Include the key in theX-API-Key header on every request:
Authorization header. Both formats are accepted and equivalent — X-API-Key is recommended for simplicity:
Key scopes
Each API key carries a set of scopes that restrict what it can do. Requests with a valid key but insufficient scope return403 Forbidden.
| Scope | Allows |
|---|---|
runs:write | Create bureau runs (POST /api/v1/bureau/runs) |
runs:read | Read run status and results (GET /api/v1/bureau/runs, GET /api/v1/bureau/runs/:id, GET /api/v1/bureau/runs/:id/analysis) |
detail:read | Access per-source technical detail (GET /api/v1/bureau/runs/:id/detail) — requires support approval |
Key prefixes
The key prefix tells you which environment a key targets:| Prefix | Environment | Uses |
|---|---|---|
sk_live_ | Production | Real bureau queries against live data sources |
sk_test_ | Sandbox | Fixture data — no credits consumed, no real queries |
Pinning an API version
Include thex-kycert-api-version header to pin your integration to a stable API version:
Multi-tenant isolation
Each API key is bound to your tenant. You can only access runs, templates, and results that belong to your brokerage. Requests for resources owned by another tenant return404 — not 403 — so your existence is not exposed to other tenants.
Revoking a key
Go to Settings → Developer → API Keys and click Revoke next to the key. Revocation is immediate — in-flight requests using the revoked key return401 from that point forward. To rotate a key safely: create the new key, deploy the new key to your system, verify it works, then revoke the old key.
Security best practices
Auth error codes
| HTTP status | Code | Meaning |
|---|---|---|
401 | missing_api_key | No X-API-Key header (or Authorization: Bearer) was provided |
401 | invalid_api_key | The key is revoked, inactive, or does not exist |
403 | insufficient_scope | The key is valid but lacks the required scope for this operation |
403 | subject_type_not_allowed | The key is restricted to PF or PJ but the request targets the other type |