Verifications
A verification asks Vindex to verify one of your customers: a person (KYC) or a company (KYB). Your customer completes Vindex's hosted flow, Vindex screens and reviews, and you get the outcome and the reports.
The life of a verification
created and charged at submitted.status is the state to build on. stage is finer progress you can show your own team or your customer; it may gain values over time, so treat unknown stages as "in progress".
Nothing sensitive leaks through the stage
Enhanced due diligence and any suspicious-activity review all show as under_review. That keeps Vindex and you clear of tipping-off rules, and it means you can show the stage to your customer safely.
Hosted links
Creating a verification returns hosted_link.url. Send it to your customer however suits you: email, SMS, or a button in your app. It works on phones, where most customers complete it.
link_expires_in (seconds) from one hour to 30 days. A verification whose link expires before the customer submits becomes expired and its credits are released.POST /v1/verifications/{id}/hosted_link issues a fresh link and the previous one stops working. Use it when a link expired, was lost, or Vindex needs more from the customer.redirect_url, with verification_id and status added to it. Use it for a "thanks" page only, never as proof: always read the verification with your key.curl -X POST https://api.vindexgrid.com/v1/verifications/ver_0vZ3kq9XfJ1mB7c2Lr8sTy/hosted_link \
-H "Authorization: Bearer $VINDEX_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "link_expires_in": 259200 }'The token stays out of logs
The secret part of a link comes after #, which browsers never send to servers, so it doesn't end up in web logs or analytics. Treat the link like a password all the same: it lets someone complete your customer's verification.
What your customer sees
A Vindex page with your name and logo (set them under Developers → Settings). Before anything else it shows a data-protection notice that names your company as the collector and Vindex as processing on your behalf, the purpose, the data collected, who receives it, how long it is kept, and their rights. They confirm three things: they accept, they consent to the face check, and they are 18 or over.
Then they complete Vindex's usual filing: their details, identity documents, and a short video selfie. They don't pay anything; the case fee comes from your credits. Afterwards they see the status of their verification, never screening results.
Vindex doesn't email your customers
You own the relationship. Vindex sends nothing to customers who come through your link; tell them what happens next yourself.
Credits for a verification
The price is held from your balance when you create the verification, and charged when your customer submits. If the link expires, or you cancel before they submit, the hold is released and nothing is charged. The verification's credits object shows the price, what is held and what was charged. More in Credits and billing.
curl -X POST https://api.vindexgrid.com/v1/verifications/ver_0vZ3kq9XfJ1mB7c2Lr8sTy/cancel \
-H "Authorization: Bearer $VINDEX_API_KEY"When Vindex needs more
Sometimes a reviewer needs another document or an answer. The verification moves to action_required and you get a verification.action_required webhook. Send your customer back to Vindex: create a new hosted link if the old one expired. When they answer, the verification returns to submitted (verification.resubmitted). Re-submission is never charged again.
Outcomes and your decision
approvedapproved_with_conditionsconditions you should apply (for example re-verifying an address within 6 months).rejectedrisk_rating (such as low, medium or high) comes with the outcome. Vindex's outcome is a recommendation: the decision to onboard stays yours. Record it, so your audit trail shows who decided and when:
curl https://api.vindexgrid.com/v1/verifications/ver_0vZ3kq9XfJ1mB7c2Lr8sTy/partner_decision \
-H "Authorization: Bearer $VINDEX_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "decision": "accepted", "decided_by": "Priya Nair, onboarding team" }'Reports
Once a verification is decided, download its PDFs with your key:
outcome_lettercustomer_reportcurl -G https://api.vindexgrid.com/v1/verifications/ver_0vZ3kq9XfJ1mB7c2Lr8sTy/report \
-H "Authorization: Bearer $VINDEX_API_KEY" \
-d type=customer_report \
-o customer-report.pdfA report.ready webhook tells you when each report can be downloaded; before that, the call returns 409 report_not_ready. Reports contain personal data: store them as securely as your other customer records.
Company verifications
Send "type": "company" with a company object (legal name, registration number, country, and the contact who will complete the flow). Company verifications work fully in test mode today. Live company verifications are coming soon; until then a live request returns 403 feature_not_enabled.
Never send Aadhaar numbers
Vindex refuses any request containing what looks like an Aadhaar number (422 validation_failed). Customers provide their documents in the hosted flow, where Aadhaar is masked and always optional.
Something missing or unclear? Signed-in users can tell us from Feedback in the app.
