API
Authenticate with Bearer keys (azw_live_… / azw_test_…). Optional Idempotency-Key header on screen calls (8–255 chars; same key + same body replays the original result; different body → 409). Base path /api/v1. Machine-readable contract: /openapi.json.
Endpoints
GET /health— livenessGET /health/ready— DB + list freshnessGET /me— organisation, plan, key scopes, environmentGET /usage— period meters vs quotasGET /lists— current auditable list snapshotsPOST /screens/person— live sanctions / terror designation matching · passport / national ID when present on listsPOST /screens/entity— organisation / legal-name + registration numberPOST /screens/wallet— designated wallets when present on list snapshotsPOST /screens/address— listed addresses from OFAC + ZA FIC TFS snapshotsPOST /screens/compromised— endpoint ready; compromised email/phone corpus is roadmap (returns honest coverage gaps until ingested)GET /screens/{resultId}— retrieve evidencePOST /ai/adverse-media— live GDELT discovery (search: true) with citations + optional OpenAI summary, or summarise excerpts you supply (advisory; not a deterministic screening corpus)GET /cases·GET|PATCH /cases/{id}·GET /cases/{id}/export— case workflow + evidence packGET /audit/export— audit log downloadGET /graph/{profileId}— relationship neighbors (shared addresses / graph-lite)GET|POST /monitor— continuous watches (person / entity / wallet); rescreened when lists refresh ·monitor:managePOST|DELETE /monitor/{watchId}— force rescreen or disableGET|POST /webhooks— signed event delivery (monitor.alerton status worsening)
curl -s https://apzwatch.apzportal.apzor.com/api/v1/screens/person \
-H "Authorization: Bearer azw_live_…" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: person-kyc-001" \
-d '{
"fullName": "Jane Example",
"givenName": "Jane",
"familyName": "Example",
"dateOfBirth": "1980-01-15",
"nationality": "ZA",
"countryOfResidence": "ZA",
"email": "jane@example.com",
"passportNumber": "A12345678",
"nationalId": "8001015009087"
}'
# Every screen response includes auditable listVersions
# (listName, listCode, effectiveDate, publishedAt, fetchedAt,
# recordCount, contentHash, sourceUrl).
# Live hit categories today: sanctions | terror | wallet_designation
# Hits include matchBand (strong|likely|possible|unlikely), matchReasons, entityProfileId.
# Exact name alone is never strong — needs DOB/country/ID/wallet corroboration.
# (durable adverse_media / compromised corpora still expanding)