Everything developers and compliance teams need — quick-start guides, a single REST API for KYC, KYB and AML, webhooks, SDKs, and a full error reference. Swiss-hosted, eIDAS 2.0 and nFADP-ready.
Create a sandbox API key from your VerfiX dashboard, then call the verification endpoint. Every request is authenticated with a bearer token and returns a Trust Score with an explainable signal breakdown.
curl https://api.verfix.ch/v1/verifications \
-H "Authorization: Bearer sk_sandbox_..." \
-H "Content-Type: application/json" \
-d '{
"type": "kyc",
"person": { "first_name": "Anna", "last_name": "Keller", "country": "CH" },
"checks": ["document", "face", "aml"]
}'VerfiX uses API keys scoped per environment. Pass your secret key in the Authorization header. Never expose secret keys in client-side code — use the publishable key for hosted flows and the secret key server-side only.
| Key prefix | Scope | Use |
|---|---|---|
pk_live_ | Publishable | Hosted verification widget |
sk_live_ | Secret | Server-side API calls |
sk_sandbox_ | Sandbox | Testing — no real data |
The sandbox mirrors production behaviour with deterministic test fixtures so you can simulate approvals, reviews, and rejections. All data is hosted in Switzerland.
| Environment | Base URL |
|---|---|
| Sandbox | https://api.sandbox.verfix.ch |
| Production | https://api.verfix.ch |
Run document verification, face match, liveness, and AML screening in a single call. Returns a verification object with a Trust Score and per-signal results.
{
"id": "ver_8f2a...",
"type": "kyc",
"status": "approved",
"trust_score": 92,
"signals": {
"document": "pass",
"face_match": "pass",
"liveness": "pass",
"aml": "clear"
},
"created_at": "2027-06-19T10:24:00Z"
}Resolve a legal entity against commercial registries, extract directors and ultimate beneficial owners, and screen the structure for sanctions and adverse media.
curl https://api.verfix.ch/v1/companies \
-H "Authorization: Bearer sk_live_..." \
-d '{ "name": "Example AG", "country": "CH", "registry_id": "CHE-123.456.789" }'Screen names against sanctions lists, PEP databases, and adverse media. Configure match thresholds and ongoing monitoring through the Rules Builder.
curl https://api.verfix.ch/v1/screenings \
-H "Authorization: Bearer sk_live_..." \
-d '{ "name": "Anna Keller", "country": "CH", "lists": ["sanctions","pep","adverse_media"] }'Subscribe to verification lifecycle events. VerfiX signs every payload with an HMAC signature in the VerfiX-Signature header — verify it before trusting the body.
| Event | Fired when |
|---|---|
verification.approved | Decision resolves to approve |
verification.review | Routed to manual review |
verification.rejected | Decision resolves to reject |
screening.match | An AML/PEP match is found |
| Code | Meaning |
|---|---|
400 | Invalid request — check required fields |
401 | Missing or invalid API key |
403 | Key not permitted for this resource |
429 | Rate limit exceeded |
5xx | Service error — retry with backoff |
Sandbox is limited to 60 requests/minute. Production limits are set per contract — enterprise plans include burst capacity and dedicated throughput. A 429 response includes a Retry-After header.
Request sandbox access and we'll provision your keys and a solutions engineer.
Request API access
Swiss Innovation Agency
Swiss Center for Electronics & Microtechnology
Swiss Research Institute for AI
Swiss Association for Digital Trust