Skip to content
Last updated

Individual Document Verification lets you verify the identity documents stored against an Entity in BNDRY. BNDRY checks the structured document data — document number, expiry date, issuing authority, and other typed fields — against authoritative government sources, returning a result you can use to drive compliance decisions.

What You Can Do

  • Verify government-issued identity documents stored against an individual Entity
  • Trigger verification programmatically via the API or automatically through Policies
  • Track verification results as Activity Logs on the Entity profile
  • Verify Passports, Driver's Licences, Birth Certificates, Medicare Cards (AU), and Visas

How It Works

The job checks the structured fields of a stored Document against authoritative records. The process is asynchronous — you create a job, run it, then poll for the result.

  1. Store a Document against the Entity with the relevant identity fields (e.g., document number, date of birth, expiry date).
  2. Create an ID Verification Job — a named, reusable job configuration.
  3. Run the job, specifying the Entity and the document type to verify.
  4. Poll for the result using the operation ID returned from the run.

Prerequisites

Before running an ID Verification job:

  • The Entity must exist in BNDRY as an individual entity.
  • The Entity must have a Document of the relevant type stored against it, with all required fields populated.
Storing Documents first

Documents can be created via the BNDRY UI or Documents API. The idType you supply when running a verification job must match a Document type stored against the entity — for example, if you pass PASSPORT, the entity must have a Passport Document with all required fields.

Using the API

Why 'Job' in the API?

You'll notice we use "verification" when describing the product capability, but "job" appears in API resource names like IndividualEntityIDVerificationJob. This follows Google's API design standards for long-running operations (AIP-152), ensuring reliable and predictable behaviour for asynchronous workflows.

Step 1: Create an ID Verification Job

Create a job by POSTing to /v1alpha/individualEntityIDVerificationJobs. You must supply a unique individualEntityIdVerificationJobId — this becomes the final component of the job's resource name and must be 4–63 lowercase alphanumeric characters or hyphens.

curl -i -X POST \
  'https://api.bndry.app/v1alpha/individualEntityIDVerificationJobs?individualEntityIdVerificationJobId=individual-entity-id-verification-job-001' \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
  -H 'Content-Type: application/json' \
  -d '{
    "name": "individualEntityIDVerificationJobs/individual-entity-id-verification-job-2024-0127-743891",
    "createTime": "2023-01-15T01:30:15.01Z",
    "updateTime": "2023-01-15T01:30:15.01Z"
  }'

BNDRY returns the created job resource:

{
  "name": "individualEntityIDVerificationJobs/id-verification-job-001",
  "createTime": "2024-01-27T10:00:00Z",
  "updateTime": "2024-01-27T10:00:00Z"
}

Step 2: Run the Job

Run the job with a POST to /v1alpha/individualEntityIDVerificationJobs/{job}:run, specifying the entity to verify and the document type to check. The idType must match a Document type stored against the entity.

What if multiple documents exist for the specified type?

The most recently updated document of the specified type will be used for the verification.

curl -i -X POST \
  https://api.bndry.app/v1alpha/individualEntityIDVerificationJobs/id-verification-job-001:run \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
  -H 'Content-Type: application/json' \
  -d '{
    "entityResourceName": "entities/acme-corp-001",
    "idType": "PASSPORT"
  }'

BNDRY returns a reference to the long-running operation. The job runs asynchronously, so done will initially be false.

{
  "name": "individualEntityIDVerificationJobs/id-verification-job-001/operations/4f61bfab-def3-426f-9c1f-77032c8eb551",
  "metadata": {
    "@type": "type.googleapis.com/bndry.api.risk.entities.v1alpha.RunIndividualEntityIDVerificationJobMetadata"
  },
  "done": false
}

Step 3: Poll for the Result

Use the operation name returned in Step 2 to poll for the verification result. When verification is complete, done is true.

curl -i -X GET \
  https://api.bndry.app/v1alpha/individualEntityIDVerificationJobs/id-verification-job-001/operations/4f61bfab-def3-426f-9c1f-77032c8eb551 \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>'
{
  "name": "individualEntityIDVerificationJobs/id-verification-job-001/operations/4f61bfab-def3-426f-9c1f-77032c8eb551",
  "metadata": {
    "@type": "type.googleapis.com/bndry.api.risk.entities.v1alpha.RunIndividualEntityIDVerificationJobMetadata"
  },
  "done": true
}

Managing Jobs

Retrieve a Job

Retrieve the details of an existing job by its resource name.

curl -i -X GET \
  https://api.bndry.app/v1alpha/individualEntityIDVerificationJobs/id-verification-job-001 \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>'

List Jobs

List all ID Verification jobs. Results are paginated — use pageSize (max 100) and pageToken to page through results.

curl -i -X GET \
  'https://api.bndry.app/v1alpha/individualEntityIDVerificationJobs?pageSize=25&pageToken=ChAIAhABGAEiAggC&skip=0' \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>'

API Reference

OperationEndpoint
Create an ID Verification JobPOST /v1alpha/individualEntityIDVerificationJobs
Run an ID Verification JobPOST /v1alpha/individualEntityIDVerificationJobs/{job}:run
Get OperationGET /v1alpha/individualEntityIDVerificationJobs/{job}/operations/{operation}
Retrieve a JobGET /v1alpha/individualEntityIDVerificationJobs/{job}
List JobsGET /v1alpha/individualEntityIDVerificationJobs