Create a Webhook Subscription
Register an HTTPS endpoint to receive event notifications. Anton POSTs
signed JSON deliveries to the URL you supply every time an event from
the events list fires on your merchant account.
Requirements:
- The URL must use
https://(enforced outside development environments). - The URL must be publicly reachable — private, loopback, and metadata addresses are rejected.
The response includes a secret — this is shown once at creation.
Store it in your secrets manager immediately; Anton cannot recover it
later. You can rotate the secret any time via
POST /v1/webhooks/{id}/secret/rotate.
See Webhook Events for the event catalog and Webhook Signing for verification.
Documentation Index
Fetch the complete documentation index at: https://docs.antonpayments.com/llms.txt
Use this file to discover all available pages before exploring further.
Authorizations
OAuth 2.0 client_credentials grant (RFC 6749 §4.4) bound to a DPoP keypair (RFC 9449).
Flow (every authenticated /v1 call requires both an access token AND a fresh per-request DPoP proof):
- Register a credential via the merchant portal. Anton issues a
client_id(ant_oc_<env>_<32hex>) and aclient_secret(ant_ocs_<env>_<48hex>, shown ONCE). The portal generates an ES256 or Ed25519 DPoP keypair in your browser; you store the private half. - Mint an access token:
POST /oauth/tokenwithAuthorization: Basic <client_id:client_secret>andContent-Type: application/x-www-form-urlencoded. Body:grant_type=client_credentials. ADPoPheader carrying a proof signed for the token endpoint is required (noathclaim on this proof). - Use the token: send
Authorization: DPoP <access_token>plus a freshDPoP: <proof>header on every/v1request. The proof JWT MUST carryhtm(request method),htu(request URL, no query/fragment),iat(within ±60s),jti(unique within 5 min), andath(SHA-256 of the access token, base64url).
Tokens expire in 1 hour in production / staging and 8 hours in sandbox. There are no refresh tokens — call /oauth/token again with your secret. Anton's public signing key is published at /.well-known/jwks.json.
OpenAPI 3.0 has no native DPoP scheme; this declaration plus dpopHeader together convey both the access-token Authorization and the per-request proof header.
Per-request DPoP proof JWT (RFC 9449). MUST accompany the Authorization: DPoP <access_token> header on every protected operation. The proof is signed by the merchant's private DPoP key and carries htm, htu, iat, jti, and ath claims.
Body
HTTPS URL that will receive deliveries.
"https://example.com/webhooks/anton"
Event types this subscription should receive. Use ["*"] to subscribe to everything.
See Webhook Events for the full catalog
and payload shapes. Some reserved event types (balance.low on some
paths) may be defined but not yet dispatched — subscribing to them is
safe but no deliveries arrive until they're wired up.
payout.created, payout.approved, payout.processing, payout.sent, payout.completed, payout.failed, payout.cancelled, payout.returned, payout.screening_failed, payout.velocity_blocked, beneficiary.created, beneficiary.updated, beneficiary.deleted, beneficiary.blocked, instrument.created, instrument.updated, instrument.deleted, batch.uploaded, batch.completed, batch.failed, fx.quote.created, fx.exchange.created, fx.exchange.completed, fx.exchange.failed, funding.credit, screening.hit, balance.low, test Response
Subscription created. Includes the one-time signing secret.
A registered webhook endpoint and its event filter.
^wbh_[a-zA-Z0-9]+$"wbh_01HX8Z9K0M2N3P4Q5R6S7T8UW"
^mer_[a-zA-Z0-9]+$See Webhook Events for the full catalog
and payload shapes. Some reserved event types (balance.low on some
paths) may be defined but not yet dispatched — subscribing to them is
safe but no deliveries arrive until they're wired up.
payout.created, payout.approved, payout.processing, payout.sent, payout.completed, payout.failed, payout.cancelled, payout.returned, payout.screening_failed, payout.velocity_blocked, beneficiary.created, beneficiary.updated, beneficiary.deleted, beneficiary.blocked, instrument.created, instrument.updated, instrument.deleted, batch.uploaded, batch.completed, batch.failed, fx.quote.created, fx.exchange.created, fx.exchange.completed, fx.exchange.failed, funding.credit, screening.hit, balance.low, test active, inactive API version this subscription pins to.
"2024-01-01"
RFC 3339 / ISO 8601 timestamp in UTC.
"2026-04-15T14:30:00Z"
RFC 3339 / ISO 8601 timestamp in UTC.
"2026-04-15T14:30:00Z"
Signing secret (whsec_ + 64 hex). Shown once — store it now.
"whsec_0a1b2c3d4e5f67890123456789abcdef0123456789abcdef0123456789abcdef"