1. Get an API key
Sign up at auo.com.au/app/signup , then create a
key from the dashboard. You get two prefixes:
auo_sk_test_... returns synthetic sandbox fixtures. Free, safe to experiment with.
auo_sk_live_... returns real government data. Same code path, real results.
See Authentication for the details.
Your key is shown once, at creation. Store it securely. There is no “view key”,
only “roll” (regenerate). Never put a key in a URL or commit it to source control.
2. Make your first call
Resolve the Australian Taxation Office by its ABN. Pass your key as a bearer token.
curl https://api.auo.com.au/v1/resolve \
-H "Authorization: Bearer auo_sk_test_your_key_here" \
-H "Content-Type: application/json" \
-d '{"abn": "51824753556"}'
const res = await fetch ( "https://api.auo.com.au/v1/resolve" , {
method: "POST" ,
headers: {
Authorization: "Bearer auo_sk_test_your_key_here" ,
"Content-Type" : "application/json" ,
},
body: JSON . stringify ({ abn: "51824753556" }),
});
const data = await res . json ();
console . log ( data . candidates [ 0 ]. canonical . entity_name . value );
import requests
res = requests.post(
"https://api.auo.com.au/v1/resolve" ,
headers = { "Authorization" : "Bearer auo_sk_test_your_key_here" },
json = { "abn" : "51824753556" },
)
print (res.json()[ "candidates" ][ 0 ][ "canonical" ][ "entity_name" ][ "value" ])
3. Read the response
Every field carries its source and, where the source dates it, an as_of
timestamp. That is the provenance you can hand to a compliance reviewer.
{
"query" : { "abn" : "51824753556" },
"candidates" : [
{
"match_confidence" : 100 ,
"match_signals" : { "exact_identifier" : "abn" },
"canonical" : {
"entity_name" : {
"value" : "AUSTRALIAN TAXATION OFFICE" ,
"source" : "ABR" ,
"as_of" : "2026-07-02T13:22:15+10:00"
},
"abn" : { "value" : "51824753556" , "source" : "ABR" },
"acn" : {
"value" : null ,
"source" : "ABR" ,
"note" : "trusts/sole traders/partnerships have no ACN; companies only"
},
"entity_form" : { "value" : "other" , "source" : "ABR" },
"abn_status" : { "value" : "Active" , "source" : "ABR" },
"gst_registered" : { "value" : true , "source" : "ABR" }
},
"charity" : { "is_registered_charity" : false },
"licensing" : { "afs_licensee" : null , "credit_licensee" : null },
"screening" : {
"dfat_sanctions" : { "status" : "no_match" },
"asic_banned_org" : { "status" : "no_match" }
}
}
],
"disclaimer" : "Verification and enrichment layer. Does NOT include directors, shareholders, or beneficial ownership; these are not available in Australian free public sources."
}
A name that ABR does not recognise returns a clean 200 with an empty
candidates array, not an error. Only an identity-source outage returns a 502.
Next steps
Resolve by name Pass name instead of an identifier for a ranked, fuzzy match.
Screen an entity Check a name against sanctions and banned-persons registers.
Watch for changes Get a signed webhook when a monitored entity changes.
The entity model Why an ACN is not just an ABN, and how trusts resolve to a trustee.