curl --request POST \
--url https://{environment-subdomain}.idmetagroup.com/api/v3/verifications/australia-aec-passthrough \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"dob": "15-03-1990",
"familyName": "Smith",
"state": "NSW",
"postcode": "2000",
"suburb": "Sydney"
}
'import requests
url = "https://{environment-subdomain}.idmetagroup.com/api/v3/verifications/australia-aec-passthrough"
payload = {
"dob": "15-03-1990",
"familyName": "Smith",
"state": "NSW",
"postcode": "2000",
"suburb": "Sydney"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
dob: '15-03-1990',
familyName: 'Smith',
state: 'NSW',
postcode: '2000',
suburb: 'Sydney'
})
};
fetch('https://{environment-subdomain}.idmetagroup.com/api/v3/verifications/australia-aec-passthrough', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://{environment-subdomain}.idmetagroup.com/api/v3/verifications/australia-aec-passthrough",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'dob' => '15-03-1990',
'familyName' => 'Smith',
'state' => 'NSW',
'postcode' => '2000',
'suburb' => 'Sydney'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://{environment-subdomain}.idmetagroup.com/api/v3/verifications/australia-aec-passthrough"
payload := strings.NewReader("{\n \"dob\": \"15-03-1990\",\n \"familyName\": \"Smith\",\n \"state\": \"NSW\",\n \"postcode\": \"2000\",\n \"suburb\": \"Sydney\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://{environment-subdomain}.idmetagroup.com/api/v3/verifications/australia-aec-passthrough")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"dob\": \"15-03-1990\",\n \"familyName\": \"Smith\",\n \"state\": \"NSW\",\n \"postcode\": \"2000\",\n \"suburb\": \"Sydney\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://{environment-subdomain}.idmetagroup.com/api/v3/verifications/australia-aec-passthrough")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"dob\": \"15-03-1990\",\n \"familyName\": \"Smith\",\n \"state\": \"NSW\",\n \"postcode\": \"2000\",\n \"suburb\": \"Sydney\"\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"message": "Australia AEC Electoral Roll processed successfully",
"data": {
"isValid": true
},
"verificationStatus": "VERIFIED",
"verificationStatusCode": 3,
"transactionId": "79b6f81c-fc48-42ce-b907-763129b0957e",
"verificationType": "australia_aec",
"metadata": {
"yourRef": "testCase-9002"
},
"createdAt": "2026-08-27 02:49:30+0000"
}AEC Electoral Roll
Verify an Australian AEC Electoral Roll entry by submitting the required electoral roll details to the Australian Document Verification Service (DVS).
curl --request POST \
--url https://{environment-subdomain}.idmetagroup.com/api/v3/verifications/australia-aec-passthrough \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"dob": "15-03-1990",
"familyName": "Smith",
"state": "NSW",
"postcode": "2000",
"suburb": "Sydney"
}
'import requests
url = "https://{environment-subdomain}.idmetagroup.com/api/v3/verifications/australia-aec-passthrough"
payload = {
"dob": "15-03-1990",
"familyName": "Smith",
"state": "NSW",
"postcode": "2000",
"suburb": "Sydney"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
dob: '15-03-1990',
familyName: 'Smith',
state: 'NSW',
postcode: '2000',
suburb: 'Sydney'
})
};
fetch('https://{environment-subdomain}.idmetagroup.com/api/v3/verifications/australia-aec-passthrough', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://{environment-subdomain}.idmetagroup.com/api/v3/verifications/australia-aec-passthrough",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'dob' => '15-03-1990',
'familyName' => 'Smith',
'state' => 'NSW',
'postcode' => '2000',
'suburb' => 'Sydney'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://{environment-subdomain}.idmetagroup.com/api/v3/verifications/australia-aec-passthrough"
payload := strings.NewReader("{\n \"dob\": \"15-03-1990\",\n \"familyName\": \"Smith\",\n \"state\": \"NSW\",\n \"postcode\": \"2000\",\n \"suburb\": \"Sydney\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://{environment-subdomain}.idmetagroup.com/api/v3/verifications/australia-aec-passthrough")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"dob\": \"15-03-1990\",\n \"familyName\": \"Smith\",\n \"state\": \"NSW\",\n \"postcode\": \"2000\",\n \"suburb\": \"Sydney\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://{environment-subdomain}.idmetagroup.com/api/v3/verifications/australia-aec-passthrough")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"dob\": \"15-03-1990\",\n \"familyName\": \"Smith\",\n \"state\": \"NSW\",\n \"postcode\": \"2000\",\n \"suburb\": \"Sydney\"\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"message": "Australia AEC Electoral Roll processed successfully",
"data": {
"isValid": true
},
"verificationStatus": "VERIFIED",
"verificationStatusCode": 3,
"transactionId": "79b6f81c-fc48-42ce-b907-763129b0957e",
"verificationType": "australia_aec",
"metadata": {
"yourRef": "testCase-9002"
},
"createdAt": "2026-08-27 02:49:30+0000"
}Reading the result
Checkdata.isValid to determine whether the submitted details match the issuing agency’s records. A no-match still returns HTTP 200 with success: true — see Introduction to Australia DVS for how to interpret verificationStatus.
Sandbox test data
AEC Electoral Roll sandbox payloads
Authorizations
Use your API token as a Bearer token in the Authorization header.
Headers
"Bearer {your_api_token}"
Body
Date of birth in DD-MM-YYYY format.
"15-03-1990"
Family name on the electoral roll.
State of enrolment.
"NSW"
Postcode of the enrolled address.
"2000"
Suburb of the enrolled address.
"Sydney"
Given name(s) on the electoral roll.
Street name of the enrolled address.
Street type of the enrolled address.
Street number of the enrolled address.
Unit number of the enrolled address, if any.
Habitation name of the enrolled address, if any.
Optional key-value pairs echoed back in the response.
Response
Request processed. Check data.isValid and verificationStatus to determine the outcome.
Show child attributes
Show child attributes
VERIFIED, REJECTED 3 = Verified, 1 = Rejected.
"australia_aec"

