Quickstart
Five minutes: resolve an address, create an account, register your own address, and mint an API key.
1. Resolve an address — no key needed
Public resolution is open. Any of the three input forms works: canonical
(ZM299224388), display (ZM-2992-24388), or with any spacing — the API
normalizes and validates the check digit first.
curl https://api.adas.africa/v1/public/addresses/ZM-2992-24388
{
"canonical": "ZM299224388",
"display": "ZM-2992-24388",
"country": "ZM",
"country_name": "Zambia",
"zone": "2992",
"zone_name": "",
"lat": -15.4167,
"lng": 28.2833,
"plus_code": "5GRGHJM7+899",
"label": "First live address",
"verification_level": 0,
"created_at": "2026-07-11T00:29:31.517529Z"
}
plus_code is a derived Open Location Code
(11 characters ≈ 3 m cell) — paste it into Google Maps for instant
cross-referencing. The coordinates remain the source of truth.
A mistyped code fails before lookup — try changing the last digit and
you'll get 400 BAD_CHECK_DIGIT, not someone else's address.
2. Create an account
Registration is phone + password (see Authentication for why):
curl -X POST https://api.adas.africa/v1/auth/register \
-H 'Content-Type: application/json' \
-d '{"phone": "+260971234567", "password": "a-strong-passphrase"}'
The response includes an access JWT (30 min) and a refresh token (30 days).
3. Register an address
POST a coordinate; the registry finds the zone, draws a random unit, computes the check digit, and mints the code:
curl -X POST https://api.adas.africa/v1/addresses \
-H "Authorization: Bearer $ACCESS" \
-H 'Content-Type: application/json' \
-d '{"lat": -15.4167, "lng": 28.2833, "label": "Head office"}'
{
"canonical": "ZM299225597",
"display": "ZM-2992-25597",
"zone": "2992",
"qr_url": "https://adas.africa/a/ZM299225597",
"...": "..."
}
A printable QR for any address is one GET away (public, SVG):
https://api.adas.africa/v1/addresses/{canonical}/qr.svg
4. Mint an API key for your systems
curl -X POST https://api.adas.africa/v1/keys/ \
-H "Authorization: Bearer $ACCESS" \
-H 'Content-Type: application/json' \
-d '{"name": "my-backend", "mode": "test"}'
The full key (adas_test_…) appears once in this response — store it.
Use it from your servers with the Api-Key scheme:
curl https://api.adas.africa/v1/addresses/ZM299224388 \
-H "Authorization: Api-Key adas_test_..."
In JavaScript and Python
const res = await fetch(
"https://api.adas.africa/v1/public/addresses/ZM299224388",
);
const address = await res.json();
console.log(address.display, address.lat, address.lng);
import requests
address = requests.get(
"https://api.adas.africa/v1/public/addresses/ZM299224388"
).json()
print(address["display"], address["lat"], address["lng"])
Next: understand how the codes work — especially the check digit, which your UI should validate client-side.