The Vindex Grid API
Verify your customers with Vindex, and screen people and companies against sanctions and PEP lists, from inside your own product. Build in test mode for free, then go live.
What you can build
How it works
- 1Your serverCreate a verificationOne POST. You get back an id and a hosted link.
- 2Your customerComplete Vindex's flowDocuments, consent and a face check, branded with your name.
- 3VindexScreen and reviewWorld-Check screening, document checks and a human review.
- 4Your serverReceive a webhookverification.decided, signed so you know it's from Vindex.
- 5Your serverFetch the outcomeOutcome, risk rating, and the outcome letter as a PDF.
Everything you can do has a test mode twin that costs nothing and never reaches Vindex's reviewers, so you can build the whole integration before you go live.
Quickstart
About ten minutes, all in test mode.
- 1
Get a test key. Create a Vindex account and sign in, open the Developers console and turn on developer access. You get a test key that starts
vdx_test_; it is shown once, so keep it in your secrets store. Check it works:Terminalexport VINDEX_API_KEY=vdx_test_... curl https://api.vindexgrid.com/v1/me -H "Authorization: Bearer $VINDEX_API_KEY" - 2
Create a verification for a customer. Send what you already know; they confirm and complete the rest.
curl https://api.vindexgrid.com/v1/verifications \ -H "Authorization: Bearer $VINDEX_API_KEY" \ -H "Idempotency-Key: $(uuidgen)" \ -H "Content-Type: application/json" \ -d '{ "type": "individual", "external_reference": "crm-42", "individual": { "first_name": "Aarav", "last_name": "Sharma", "email": "aarav.sharma@example.com", "country": "IN" }, "redirect_url": "https://acme.example/kyc/done" }' - 3
Send the hosted link (
hosted_link.url) to your customer: by email, SMS or a button in your app. In test mode, open it yourself: accept the notice and choose Complete as test customer. - 4
Pick the outcome. In test mode Vindex decides about 20 seconds after the customer submits. Choose the outcome with
"test_scenario": "reject"when you create the verification, or give the customer a last name ending inApproved,Conditional,RejectedorActionRequired. More test controls. - 5
Receive the webhook. Add an endpoint under Developers → Webhooks (test mode), copy its signing secret, and check every delivery's signature with a Standard Webhooks library:
import os from standardwebhooks.webhooks import Webhook webhook = Webhook(os.environ["VINDEX_WEBHOOK_SECRET"].removeprefix("whsec_")) def handle(raw_body: bytes, headers: dict) -> None: event = webhook.verify(raw_body, headers) # raises if the signature is wrong or stale if event["type"] == "verification.decided": verification_id = event["data"]["id"] ... # fetch it with your key and update your records - 6
Fetch the result and the PDF. The webhook says which verification changed; your server reads the details with its key.
Terminalcurl https://api.vindexgrid.com/v1/verifications/ver_0vZ3kq9XfJ1mB7c2Lr8sTy \ -H "Authorization: Bearer $VINDEX_API_KEY" curl -G https://api.vindexgrid.com/v1/verifications/ver_0vZ3kq9XfJ1mB7c2Lr8sTy/report \ -H "Authorization: Bearer $VINDEX_API_KEY" \ -d type=outcome_letter \ -o outcome-letter.pdf
Test mode is free and simulated
Test verifications never reach Vindex's reviewers, test screenings never reach World-Check, and test credits refill themselves. When your integration works, apply for live access.
Next steps
Something missing or unclear? Signed-in users can tell us from Feedback in the app.
