Skip to main content
Subscribe to whichever subset you need — you pay no cost for unused events, but narrower subscriptions reduce noise in your handler.

Transfers

EventFires when
transfer.createdA transfer object is created (not yet executed)
transfer.processingTransfer submitted to the settlement rail
transfer.completedTransfer finalized
transfer.failedRail rejected or compliance blocked
transfer.refundedA completed transfer was refunded
transfer.cancelledCancelled from pending state
Payload: { "transfer": { full transfer object } }

Streams

EventFires when
stream.createdNew stream opened
stream.modifiedFlow rate or buffer changed
stream.pausedStream paused
stream.resumedStream resumed
stream.cancelledStream terminated
stream.alertRunway crosses warning/critical/exhausted threshold
Payload: { "stream": {...}, "alert": { "severity": "warning" | "critical" | "exhausted", "runway_seconds": N } } (for alerts)

Agents

EventFires when
agent.createdNew agent registered
agent.tier_upgradedKYA tier changed (0→1, 1→2, etc.)
agent.key_rotatedEd25519 key rotated
agent.key_revokedEd25519 key revoked
agent.frozenWallet policy freeze triggered
agent.unfrozenFreeze lifted
agent.revokedAgent permanently terminated

Approvals

EventFires when
approval.requestedNew approval created (action required)
approval.approvedApprover approved
approval.rejectedApprover rejected
approval.escalatedEscalated to higher role
approval.expiredTimeout passed with no decision

Protocols

EventFires when
ucp.token_issuedNew UCP token created
ucp.settlement_completedUCP token settled
acp.checkout_completedACP session paid
acp.checkout_fulfilledMerchant marked fulfilled
ap2.mandate_createdNew mandate
ap2.mandate_executedMandate execution
ap2.mandate_revokedMandate revoked
x402.payment_completedx402 payment settled
a2a.task_receivedPeer sent a task
a2a.task_completedTask deliverable submitted
a2a.task_ratedCounterparty rated the task
a2a.task_disputedDispute opened
mpp.session_openedMPP session started
mpp.payment_completedMPP payment executed

Quotes

EventFires when
quote.createdNew FX quote issued
quote.expiredUnused quote expired
quote.consumedQuote used on a transfer

Disputes

EventFires when
dispute.openedNew chargeback/dispute filed
dispute.evidence_requestedProvider requested supporting evidence
dispute.wonRuled in your favor
dispute.lostRuled against you
dispute.withdrawnBuyer withdrew

Compliance

EventFires when
account.verifiedKYC/KYB verification approved
account.rejectedVerification rejected
compliance.alertSanctions hit or high-risk signal
compliance.review_requiredManual review queued

System

EventFires when
webhook.testTriggered by POST /v1/webhooks/:id/test
webhook.failingYour endpoint has failed 10+ consecutive deliveries

Subscribe

# Subscribe to multiple events
curl -X POST https://api.getsly.ai/v1/webhooks \
  -d '{
    "url": "https://hooks.example.com/sly",
    "events": ["transfer.*", "stream.alert", "approval.requested"]
  }'

# Wildcards supported (transfer.*, agent.*, etc.)
# Subscribe to everything with "*"

Available events API

Programmatic list:
curl https://api.getsly.ai/v1/webhooks/events \
  -H "Authorization: Bearer pk_live_..."
Returns the full list of event types + their payload schemas — useful if you’re building a dashboard that lets users pick what to subscribe to.