Digital Address Verification
Contact & AddressVerify a residential address with geo-tagged, timestamped photos captured by the person.
Send a link; the person captures photos of their home, nameplate and surroundings from the address itself. Location, time and device signals are checked for spoofing, the images are analysed and the result is a verified address with evidence, in hours instead of the days a field visit takes.
Endpoint
Request parameters
| Field | Type | Description |
|---|---|---|
person_s_name_and_contact_for_the_capture_link
required
|
string | Person's name and contact for the capture link |
declared_address
required
|
string | Declared address |
Example request
curl -X POST https://app.emver.io/api/sandbox/v1/digital-address-verification \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{
"person_s_name_and_contact_for_the_capture_link": "string",
"declared_address": "string"
}'
import requests
response = requests.post(
"https://app.emver.io/api/sandbox/v1/digital-address-verification",
headers={
"Authorization": "Bearer YOUR_API_KEY",
"Accept": "application/json",
},
json={
"person_s_name_and_contact_for_the_capture_link": "string",
"declared_address": "string"
},
timeout=60,
)
response.raise_for_status()
data = response.json()
const response = await fetch("https://app.emver.io/api/sandbox/v1/digital-address-verification", {
method: "POST",
headers: {
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json",
"Accept": "application/json",
},
body: JSON.stringify({
"person_s_name_and_contact_for_the_capture_link": "string",
"declared_address": "string"
}),
});
const data = await response.json();
$response = Http::withToken('YOUR_API_KEY')
->acceptJson()
->post('https://app.emver.io/api/sandbox/v1/digital-address-verification', {
"person_s_name_and_contact_for_the_capture_link": "string",
"declared_address": "string"
});
$data = $response->json();
Replace YOUR_API_KEY and the placeholder values. Use the switch above to see production URLs.
Response
Structure · 200
{
"status": INTEGER,
"message": STRING,
"data": {
"verification_outcome": STRING,
"distance_between_declared_and_captured_location": STRING,
"photo_evidence_with_g_p_s_and_timestamps": STRING,
"anti_spoofing_checks": STRING,
"reviewer_notes_where_applicable": STRING
}
}
Example · 200
{
"status": 200,
"message": "string",
"data": {
"verification_outcome": "string",
"distance_between_declared_and_captured_location": "string",
"photo_evidence_with_g_p_s_and_timestamps": "string",
"anti_spoofing_checks": "string",
"reviewer_notes_where_applicable": "string"
}
}
Error · 4xx / 5xx
{
"status": INTEGER,
"message": STRING
}
See Errors & status codes for what each status means and which calls are billed.
About this API
Physical address verification is slow and expensive. Digital Address Verification puts the capture in the person's hands and the anti-spoofing in ours: GPS and timestamp checks on every photo, detection of static or drive-by captures, landmark and nameplate analysis, and a reviewer queue for anything borderline.
The outcome arrives by webhook with the evidence pack, and can escalate to a physical visit through emver when the digital result is inconclusive.
Typical uses
- Employee background checks. Current and permanent address for the personnel file.
- Gig partner onboarding. Verify the address riders operate from.
- Lending. Address proof for loan files without a visit.
- Tenant screening. Confirm previous residence.
Questions
- What if the person is not at the address?
- The link stays valid for the window you set and reminders are sent automatically. If they cannot capture, escalate to a physical verification.
- How is spoofing prevented?
- Each photo carries GPS and time metadata that is checked against the declared address and the capture session; static images, screenshots and drive-by captures are detected and flagged.