VeroID

API Reference

Complete VeroID API documentation

Base URLs

EnvironmentBase URLKey
DVS testhttps://test-api.veroid.com.ausk_test_*
Productionhttps://api.veroid.com.ausk_live_*

Live keys are only issued after VeroID approves your account for production DVS, and return 403 on every endpoint until then. See Authentication.

All requests must include the X-API-Key header.

Verify Document

Verify an identity document against official government records.

POST /v1/verify

Request Headers

HeaderRequiredDescription
Content-TypeYesMust be application/json
X-API-KeyYesYour API key

Common Request Fields

Every request requires documentType, consentAttestedAt, and consentVersion, plus the document-specific fields - see Document Types for per-document schemas.

FieldTypeRequiredDescription
documentTypestringYesOne of: drivers_licence, passport, medicare, visa, birth_certificate, citizenship, immicard, marriage_certificate, change_of_name_certificate, death_certificate, centrelink, asic_msic
consentAttestedAtstringYesISO 8601 datetime recording when the subject gave consent to their identity being verified (e.g. 2026-05-19T10:30:00Z). Required by DVS T&Cs clause 19.2.
consentVersionstringYesVersion of the privacy disclosure shown to the subject at the time of consent (e.g. "1.0"). Required by DVS T&Cs clause 19.3.
givenNamestringMost typesGiven name. Field limits vary by document type. Not used for Medicare (use fullName instead), Centrelink (use name), or ASIC/MSIC (use nameOnCard).
familyNamestringMost typesFamily name. Field limits vary by document type. Not used for Medicare, Centrelink, or ASIC/MSIC.
dateOfBirthstringMost typesFull date YYYY-MM-DD required for driver's licence, Centrelink, ASIC/MSIC, change of name certificate, and death certificate. Partial dates (YYYY, YYYY-MM) accepted for passport, visa, birth certificate, citizenship, immicard. Optional for Medicare.

Response (POST /v1/verify)

The real-time verification result is returned in the response body. The status and match fields reflect the DVS outcome and are only available here - they are not stored or retrievable via the GET endpoints.

{
  "success": true,
  "verificationId": "ver_abc123xyz",
  "documentType": "drivers_licence",
  "status": "success",
  "match": true,
  "responseCode": "Y",
  "message": "The data in the request matches data held by the issuer",
  "timestamp": "2024-01-15T10:30:00.000Z",
  "environment": "live",
  "requestId": "req_xyz789"
}

When responseCode is N or D, an errors array may be present with field-level detail from the issuer. See Expanded Responses below.

DVS test environment records

For integration testing against the real DVS test hub (not the simulated sandbox), use the confirmed IVS/Fujitsu test records published on the Sandbox page. Each case includes the full request body and the expected responseCode: only records where both verification cycles matched the expected outcome are listed.

Requires a sk_test_* key and an account approved for the DVS test hub. Send requests to https://test-api.veroid.com.au/v1/verify. sk_live_* keys only work on https://api.veroid.com.au.

Expanded Responses

DVS expanded responses (VersionNumber=2) give field-level detail when a verification does not match or hits a data error. VeroID requests VersionNumber=2 on every verify call and passes expanded detail through in the errors array on POST /v1/verify.

Not stored. Expanded responses appear only in the real-time POST response. They are not persisted or returned by GET /v1/verify/:id or GET /v1/verify, per DVS terms and conditions 12.5 - the same rule that applies to match and responseCode.

When expanded responses appear

  • responseCode is N (no match) or D (data error at the issuer)
  • The document issuer supports VersionNumber=2 for that document type (most major issuers do; some may return only the primary code)
  • DVS returns at most one expanded error per request - the first field the issuer flags

Y (match) responses do not include an errors array. S (system error) responses typically do not either.

errors entry schema

FieldTypeDescription
sourcestringWhere the message originated - typically Issuer or DVS
fieldstringOptional. The request field that failed to match (e.g. FamilyName, BirthDate, LicenceNumber)
messagestringHuman-readable explanation from the issuer (e.g. "Name does not match", "Date of birth does not match.")

Example - no match (N)

{
  "success": true,
  "verificationId": "ver_abc123xyz",
  "documentType": "drivers_licence",
  "status": "failed",
  "match": false,
  "responseCode": "N",
  "message": "The data in the request does not match data held by the issuer",
  "errors": [
    { "source": "Issuer", "field": "FamilyName", "message": "Name does not match" }
  ],
  "timestamp": "2024-01-15T10:30:00.000Z",
  "environment": "live",
  "requestId": "req_xyz789"
}

Example - data error (D)

{
  "success": true,
  "verificationId": "ver_abc123xyz",
  "documentType": "drivers_licence",
  "status": "failed",
  "match": false,
  "responseCode": "D",
  "message": "A data error occurred at the issuer",
  "errors": [
    { "source": "DVS", "message": "Record not held at source" }
  ],
  "timestamp": "2024-01-15T10:30:00.000Z",
  "environment": "live",
  "requestId": "req_xyz789"
}

In sandbox, use the dvsnomatch and dvsdata family-name triggers to receive sample expanded errors - see Sandbox Mode.

POST response fields

FieldTypeDescription
successbooleanAlways true when DVS returned a result (including N and D)
verificationIdstringVeroID verification ID for audit and GET lookups
statusstringsuccess (Y), failed (N/D), or error (S)
matchbooleantrue only when responseCode is Y
responseCodestringDVS result code: Y, N, D, or S
messagestringHuman-readable description of the primary DVS code
errorsarrayOptional. Expanded field-level detail when present (see above)
timestampstringISO 8601 datetime of the verification
environmentstringsandbox or live
requestIdstringEcho of your X-Request-Id header, if provided
vrnstringLive only. DVS Verification Request Number

DVS Response Codes

These are the only four codes returned by the DVS Hub (per DVS Interface Specification Table 22):

CodeStatusMeaning
YsuccessThe data in the request matches data held by the issuer
NfailedThe data in the request does not match data held by the issuer
DfailedA data error occurred at the issuer (e.g. record not held at source)
SerrorA system error occurred at the issuer or in the DVS Hub - safe to retry

GET Endpoint Status Values

The GET /v1/verify/:id and GET /v1/verify endpoints return a status field representing the processing state of the request - not the match outcome, which is only in the real-time POST response.

StatusMeaning
pendingVerification in progress
completedDVS processed the request and returned a result (Y, N, or D)
errorSystem error occurred (DVS returned S, or network/timeout failure)

Get Verification

Retrieve the processing state of a previous verification. The match result (match, responseCode, errors) is not stored and will not appear here - it is only available in the real-time POST response. See DVS T&Cs 12.5.

GET /v1/verify/:id

Response (GET /v1/verify/:id)

{
  "verificationId": "ver_abc123xyz",
  "documentType": "drivers_licence",
  "status": "completed",
  "environment": "live",
  "requestedAt": "2026-05-19T10:30:00.000Z",
  "completedAt": "2026-05-19T10:30:01.200Z"
}

If the verification encountered a system error, an error object is included:

{
  "verificationId": "ver_abc123xyz",
  "documentType": "drivers_licence",
  "status": "error",
  "environment": "live",
  "requestedAt": "2026-05-19T10:30:00.000Z",
  "completedAt": "2026-05-19T10:30:01.200Z",
  "error": {
    "code": "DVS_SYSTEM_ERROR",
    "message": "A system error occurred at the issuer or in the Hub"
  }
}

List Verifications

List your recent verifications.

GET /v1/verify

Query Parameters

ParameterDefaultDescription
limit20Max results (1-100)
offset0Pagination offset

Screening

Screen persons and organisations against sanctions, PEP, and optional adverse media. See Screening API for full documentation.

POST /v1/screening

Live screening is available after the developer onboarding fee is paid. DVS Manager approval is not required for screening endpoints.


Health Check

Check API status. No authentication required.

GET /health