Make your first call to the Bynn API in a few minutes.
1Pick a language
2Credentials
3Try It!
Loading…
Try It! to start a request and see the response here!The Bynn API is a REST API for identity verification and fraud detection. It takes JSON, returns JSON, and uses standard HTTP status codes. This page takes you from an API key to a working request.
What the API covers
| Area | What you can do | Start with |
|---|---|---|
| KYC sessions | Create a hosted identity verification session (document, liveness, NFC, phone, email, proof of address) and send the applicant its link or QR code | Create a session, Create a dossier |
| Document fraud detection | Submit a PDF or image and get a forensic analysis for manipulated, fake and AI-generated documents | Create a submission, Retrieve a submission |
| AML screening | Screen a person or a company against sanctions, PEP lists and watchlists | Search AML data |
| Age verification | Estimate age with liveness, or from a single selfie | Age verification with liveness |
| Content moderation | Run text, image, audio or video through a moderation model | Create a moderation inference |
| Face search | Build face collections, enroll faces and search them with a probe image | Create a face collection, Search a collection |
| Webhooks | Receive verification results as they happen, and fetch any webhook payload again by id | Bynn webhooks |
The complete OpenAPI 3.0 definition is at https://api.bynn.com/openapi.json.
Base URL
All requests go over HTTPS to:
https://api.bynn.com/v1Get your API keys
Sign in at dashboard.bynn.com and open Integration, then the API Keys tab. There are two pairs of keys:
- Production keys work on live data and are billed.
- Sandbox keys are for building and testing. They are not billed, and endpoints such as AML search return sample data.
Each pair has a private key and a public key:
| Key | Looks like | Use it |
|---|---|---|
| Private key | private_... or private_sandbox_... | On your server only. Most endpoints need it. |
| Public key | public_... or public_sandbox_... | Where an endpoint asks for it, such as creating a KYC session for a client-side flow. |
Keep your private key on your server. Never put it in a browser, a mobile app or a public repository. If a key leaks, roll it from the same Integration page.
Authenticate
Send your key in the Authorization header as a bearer token:
Authorization: Bearer private_YOUR_KEYHTTP Basic authentication also works: use the key as the username and leave the password empty (curl -u "private_YOUR_KEY:"). Each endpoint in this reference states whether it takes the private or the public key.
Make your first call
This request checks that your private key works and returns the matching public key. It has no side effects and costs nothing.
curl https://api.bynn.com/v1/api_keys/public \
-H "Authorization: Bearer private_sandbox_YOUR_KEY"{
"public_key": "public_sandbox_...",
"is_test": true
}is_test is true for a sandbox key and false for a production key.
Next, run a real check. With a sandbox key this AML search is free and returns a sample match, so you can build against the response shape:
curl https://api.bynn.com/v1/aml/search \
-H "Authorization: Bearer private_sandbox_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"name": "Jane Example", "type": "person"}'{
"query": "Jane Example",
"type": "person",
"total": 1,
"results": [
{
"id": "sample-aml-0001",
"name": "Jane Example",
"schema": "Person",
"match": true,
"score": 0.95,
"topics": ["sanction"],
"birth_date": ["1970-01-01"],
"birth_place": null,
"death_date": null,
"country": ["ru"]
}
]
}With a production key the same request screens the live data and is billed.
Responses and errors
A successful request returns the resource as a JSON object: 200 for reads, 201 for anything that creates something.
A failed request returns a 4xx or 5xx status and an error object with a machine-readable type and a readable message:
{
"error": {
"type": "authentication_error",
"message": "You did not provide a valid PRIVATE API key or the API key has expired."
}
}| Status | Meaning |
|---|---|
400 | The request is missing a parameter or a parameter is invalid. |
401 | The API key is missing, wrong, expired, or the wrong kind (public where private is needed). |
402 | The account cannot cover a billed request. |
404 | The resource does not exist, or does not belong to your organization. |
429 | Too many requests. Wait for the number of seconds in the Retry-After header. |
5xx | Something failed on our side. Retry with backoff. |
Webhooks
Verification results arrive as HTTPS POST requests to an endpoint you configure in Webhook settings. Every delivery is signed with RS256, so check the signature before you trust it, and answer with a 2xx within 10 seconds. Sandbox deliveries carry the X-Test-Mode header.
- Bynn webhooks: setup and delivery
- Webhook security: signature verification and the public key
- Webhook events reference: every event and its payload
SDKs, CLI and MCP
- Web SDK (bynn.js): run the verification flow in the browser.
- Mobile SDK: iOS, Android, React Native and Flutter.
- Bynn CLI: call the API from your terminal, for example to submit local files. Install with
brew install bynn-intelligence/bynn/bynn. - Bynn MCP: connect Claude, ChatGPT, Cursor, VS Code and other MCP clients to Bynn at
https://mcp.bynn.com.
Set up with a coding agent
If you build with a coding agent such as Claude Code, Cursor or GitHub Copilot in VS Code, paste this line into it:
Set up Bynn, ZOREAL, DecisionNode, Agemin and Detector24 for me: fetch https://bynn.com/agent-setup.md and follow it.The agent installs the Bynn skills and the Bynn MCP server and tells you which steps are yours, such as signing in. It never needs you to paste a key into the chat.
Questions or a problem with a request? Write to [email protected].