API keys
Issuing one
1
Issue a key
Give it a name that says what it is for — “Payroll export job”, not “key 2”.
2
Choose a scope
ReadOnly or ReadWrite.Both scopes currently grant exactly the same access. The public API surface is read-only — there are no public write routes — so a
ReadWrite key behaves identically to a ReadOnly one. The scope records your intent and is what a future write route would gate on.3
Copy the key
Keys look like
ont_ followed by a hex string.Using one
Send it as a bearer token:Revoking
Immediate. A revoked key is refused on the next request.There is no rotate action. Rotating means issuing a new key, updating your consumer, then revoking the old one — in that order, so you never have a gap.
Rate limit
600 requests per minute, per key.Webhooks
Registering one
1
Give the endpoint URL
An HTTPS URL you control.
2
Copy the signing secret
Status
Which events fire
The delivery log
Every outbound attempt, with its status.Retries and the dead-letter queue
A failed delivery is retried with escalating backoff — roughly a minute, then quadrupling, up to eight attempts over about 22 hours. An event that exhausts all eight moves to Failed: the dead-letter queue. Replay re-queues a failed delivery. Fix your endpoint, then replay.Alerting
When an event lands in the dead-letter queue, everyapi:manage holder gets an in-app notification.
Nothing is lost in the meantime — a delivery that cannot get through lands in the queue and is replayable. The gap is in how promptly you learn, not in whether the event survives.