What it’s for
This guide covers two APIs that do from your own systems what the dashboard does on two of its pages.- KYB API (
POST /v1/verify/kyb). It does what the Business checks (KYB) page does. You send the business, its directors and owners, its registration certificate (or CR12) and a proof of address. Sentinel reads both documents, checks the Business Registration Service (BRS) register where it can, and screens the business and every person for sanctions, PEPs and adverse media. See B8 Business checks (KYB) (in Sentinel’s in-app Help). - Capture links API (
/v1/capture-links). It does what the Capture links page does. You create a link, and Sentinel sends it by SMS or WhatsApp, or gives it back to you to share. The customer opens it on their phone, photographs their ID and takes a selfie. That becomes an ordinary KYC check. See B3 Capture links: KYC on the customer’s phone (in Sentinel’s in-app Help).
id at once, and its result arrives by webhook or from GET /v1/verify/{id}. A capture link returns its own id (cap_…). Once the customer submits, the link names the KYC check it became.
Keys, test mode, rate limits and the general error format are in Quick start.
Who can use it
- Any system holding an API key for your organization with the right scope:
- Run business (KYB) checks (
verify:kyb) forPOST /v1/verify/kyb. - Create and manage capture links (
capture) for every/v1/capture-linkscall. - Read check results (
results:read) to read results by polling.
- Run business (KYB) checks (
- Admin and Developer create keys and choose their scopes on the API Keys page. Keys made before scopes existed can call everything.
- Everyone in your organization sees API checks on the Business checks (KYB) page and API links on the Capture links page. A KYB check that doesn’t pass opens a review case. See B11 Deciding a review case (in Sentinel’s in-app Help).
Step by step
The examples read the key from theSENTINEL_API_KEY environment variable. The examples use Sentinel’s production address, https://robust-parakeet-542.convex.site. If API Keys shows a different API address for your organization, use that.
Verify a business
- Base64-encode the registration certificate (or CR12) and a proof of address in the business’s name. Use a JPEG, PNG, WebP or PDF, of up to 4,000,000 base64 characters (about 3 MB) each.
- List every director and owner, between 1 and 50 people. Give each person’s ID number and date of birth: Sentinel screens each one and compares them with the BRS register.
- Send the request.
curl
Node (built-in fetch, Node 18+)
Python (requests)
- Wait for the
sentinel.scan.completewebhook (see Webhooks), or pollGET /v1/verify/{id}.
Send a capture link
- Choose how the link reaches the customer, with
method:smsorwhatsapp: Sentinel sends it tocontact, a phone number in international format, such as+254712345678.link: Sentinel only gives it back to you, for example to show in your app or send in your own email.
- Choose the page’s language with
language:enfor English orswfor Kiswahili. - Optionally, fill in what you already know in
prefill(firstName,lastName,idNumber,dateOfBirth,gender). The customer then doesn’t have to type it, and can’t change it. AddexternalRefwith your customer ID.
201 with the link’s details. The link field holds the customer’s address, and it is shown only in this answer. Keep it if you’ll send it yourself.
Follow a link and cancel it
- One link:
GET /v1/capture-links/{id}. Whenstatusissubmitted,verificationIdis the KYC check it became. Read the check withGET /v1/verify/{verificationId}, or wait for its webhook. - All links, newest first:
GET /v1/capture-links?limit=50. To get the next page, passbefore=with thenextCursorfrom the previous answer. - Cancel a link:
DELETE /v1/capture-links/{id}. A pending or opened link stops working, and its prefilled details are removed. A link that has been submitted or has expired stays as it is.
What each result means
A KYB check (GET /v1/verify/{id})
The verdict works as on the KYB page: pass, review (a person needs to look) or reject. A finished check also carries a kyb object:
The full report, with the documents, ownership and any owners the register shows but you didn’t declare, is on the check’s page in the dashboard.
A capture link
delivery is not_sent for link, and pending, sent or failed for SMS and WhatsApp. When it’s failed, deliveryFailure says why.
Test keys
- A KYB check with a test key comes back at once as
completedandpass, withsandbox: true. Nothing is checked or charged, and the files are deleted. - A capture link with a test key comes back with
sandbox: trueandlink: null. Nothing is stored or sent.
Errors
Common questions
When is a KYB check charged?
When it finishes, at the KYB price on your plan, as on the dashboard. A request refused with400, 402 or 403 costs nothing, and its files are deleted.
When is a capture link charged?
The link is free. The KYC check is charged when the customer submits, at the KYC price.How long does Sentinel keep KYB documents sent through the API?
For your data retention period, like the rest of the check. They are deleted when the check is purged. See A11 Data retention and data requests (in Sentinel’s in-app Help).Can I send the KYB documents as links instead of files?
Not through the API. Send the files themselves; Sentinel doesn’t download documents from your servers.Why doesn’t the customer receive the SMS?
Checkdelivery and deliveryFailure on the link. If messaging isn’t set up for your organization yet, use method: "link" and send the link yourself.
Related guides
- Quick start
- KYC API
- Results and credits
- Webhooks
- B3 Capture links: KYC on the customer’s phone (in Sentinel’s in-app Help)
- B8 Business checks (KYB) (in Sentinel’s in-app Help)

