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

Verify customersSend your customer a Vindex link. They upload documents, consent and do a face check; Vindex reviews and decides.
Screen namesCheck a person or company against sanctions, PEP and adverse-media lists, one by one or 100 at a time.
Get toldSigned webhooks tell your server when a customer submits, when Vindex needs more, and when it decides.
Pay as you goBuy credits, spend them per verification or screening. Test mode is free.

How it works

  1. 1Your serverCreate a verificationOne POST. You get back an id and a hosted link.
  2. 2Your customerComplete Vindex's flowDocuments, consent and a face check, branded with your name.
  3. 3VindexScreen and reviewWorld-Check screening, document checks and a human review.
  4. 4Your serverReceive a webhookverification.decided, signed so you know it's from Vindex.
  5. 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. 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:

    Terminal
    export VINDEX_API_KEY=vdx_test_...
    
    curl https://api.vindexgrid.com/v1/me -H "Authorization: Bearer $VINDEX_API_KEY"
  2. 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. 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. 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 in Approved, Conditional, Rejected or ActionRequired. More test controls.

  5. 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. 6

    Fetch the result and the PDF. The webhook says which verification changed; your server reads the details with its key.

    Terminal
    curl 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

Download the whole guide as a PDFEvery page here and the full reference, with contents and bookmarks, to read offline or share with your team.

Something missing or unclear? Signed-in users can tell us from Feedback in the app.