01 — Overview
What the ABN API does
Read & trigger
Fetch agent metadata and the latest results, kick off a manual run, or simulate one with no writes. Same OPERA loop the desktop dashboard uses.
Two integration modes
Webhook delivery (ABN pushes results to your endpoint) and REST polling (you pull on a cadence you control). Pick either or both.
API-key auth
Send Authorization: Bearer YOUR_API_KEY. Keys are scoped per tenant and per role. Rotate any time from the dashboard.
Base URL
https://api.abnplatform.com/v1
Auth header
Authorization: Bearer YOUR_API_KEY
02 — Quickstart
Pull the latest agent results
The most common first call: list agents, then pull the latest results for one of them.
# Python example
import requests
client = requests.Session()
client.headers.update({
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json",
})
# Get the latest agent results
response = client.get(
"https://api.abnplatform.com/v1/agents/{agent_id}/results"
)
response.raise_for_status()
results = response.json()
print(results["findings"])03 — Reference
Key endpoints
- GET
/v1/agentsList all agents - GET
/v1/agents/{id}Get agent details - GET
/v1/agents/{id}/resultsGet latest results - POST
/v1/agents/{id}/runTrigger manual run - POST
/v1/agents/{id}/simulateDry-run simulation (no writes) - GET
/v1/agents/{id}/attestationGet RAL proof for the latest run - GET
/v1/connectorsList connected systems - POST
/v1/connectors/{type}/connectInitiate a Nango OAuth flow - GET
/v1/healthSystem health status - POST
/v1/webhooksRegister a webhook endpoint
The full reference — query parameters, request bodies and response schemas — lives behind the dashboard once you have an API key.
04 — Webhooks
Receive agent results in real time
Register an endpoint via POST /v1/webhooks and ABN will push events to it as they happen. Each delivery carries an X-ABN-Signature header — verify it with HMAC-SHA256 keyed by the webhook's secret before trusting the payload.
Event types
agent.run.completedFires after every successful OPERA run. Carries summary, confidence and attestation pointer.
agent.finding.criticalFires when an agent flags a finding above the critical impact threshold defined in the tenant policy.
agent.proposal.createdFires when a TIER 2 PROPOSE_CHANGE proposal lands awaiting human approval.
Payload example
{
"event": "agent.run.completed",
"delivered_at": "2026-05-24T09:14:22Z",
"tenant_id": "tnt_5a3fc0",
"agent": {
"id": "agt_invoice_audit_42",
"name": "Fraktfakturarevisor",
"archetype": "ANALYZER"
},
"run": {
"id": "run_2f8b1c",
"started_at": "2026-05-24T09:13:55Z",
"finished_at": "2026-05-24T09:14:21Z",
"status": "completed",
"confidence": 0.94,
"tier": "PROPOSE_CHANGE"
},
"summary": {
"findings_count": 3,
"impact_eur": 8200,
"primary_recommendation":
"Granska faktura INV-118 mot GPS-rutt R-118 — +18,5 % avvikelse."
},
"attestation": {
"id": "att_run_2f8b1c",
"hmac": "sha256=…",
"verifiable_via": "https://api.abnplatform.com/v1/agents/agt_invoice_audit_42/attestation"
}
}Verifying the signature
import hmac, hashlib
def verify_abn_signature(body: bytes, header: str, secret: str) -> bool:
"""Validate an ABN webhook signature header."""
expected = "sha256=" + hmac.new(
secret.encode(), body, hashlib.sha256
).hexdigest()
return hmac.compare_digest(expected, header)Get started
Grab your API key
API access is included on Professional and Enterprise. Create an account, generate a key from the dashboard, and you're a one-liner away from your first webhook.