Just the integration bits. Authenticate, create applicants, drop the hosted flow into your product, receive signed webhooks. No theory, no glossary — every page is something you'll ship code for.
API Version: V1.0Last Updated: May 2026Audience: Engineering
QUICKSTART · 1/2Token & applicants
Five minutes from credentials to a verifiable user. Copy, paste, swap your IDs in.
1. Get a token
# curl
curl -X POST https://products.nebi.com/v1/oauth/token \
-H "Content-Type: application/json" \
-d '{
"grantType": "client_credentials",
"clientId": "YOUR_CLIENT_ID",
"clientSecret": "YOUR_CLIENT_SECRET"
}'
You get back an accessToken. Cache it for an hour. On 401, ask for a new one.
2. Create an applicant
// JavaScript
const res = await fetch('https://products.nebi.com/v1/applicants', {
method: 'POST',
headers: {
'Authorization': `Bearer ${accessToken}`,
'Content-Type': 'application/json'
},
body: JSON.stringify({
externalId: 'user_12345',
verificationLevel: 'basic-kyc',
languageCode: 'en'
})
});
const { applicantId, verificationUrl } = await res.json();
Embed verificationUrl in an iframe, send it as a link, or render the QR.
What you got back
applicantId— uppercase GUID; store if you want to reference by our ID later.verificationUrl— the hosted flow link. Embed, send, or render the QR.status— usuallypendingon first creation.wasAlreadyCreated—trueif you've called this endpoint before with the sameexternalId.
Idempotent on externalId: same request returns the same applicant with a fresh URL. Safe to retry on network errors.