Skip to main content
Everything that happens in the wallet reaches your server as a webhook. The SDK callbacks are UI signals; webhooks are the record. Create endpoints in the dashboard under Webhooks, or with agent-cards companies webhooks create.

The envelope

Every event has the same shape:
Delivery is at least once, so the same event can arrive twice. Deduplicate on id.

Verify the signature

Each delivery carries an AgentCard-Signature header:
To verify: take t, concatenate it with a dot and the raw request body, compute HMAC-SHA256 with your endpoint’s signing secret, and compare it to v1. Reject anything older than a few minutes to block replays.
Read the signing secret in the dashboard, or with companies webhooks reveal. If it leaks, companies webhooks roll-secret rotates it. There is also a legacy X-AgentCard-Signature: sha256=... header signing the body alone. New integrations should use AgentCard-Signature.

Delivery and retries

Failed deliveries retry with backoff, and a sweeper picks up anything that got interrupted. Recent deliveries, with payloads and response codes, are visible in the dashboard and with companies webhooks deliveries. Send yourself a test event any time:

Every event we send

By default an endpoint receives everything. You can filter to specific types per endpoint.

When it fails

If your endpoint is down, deliveries retry; nothing is lost, but act on the dashboard’s failure indicators. If signatures stop verifying, check that you’re reading the raw body (not re-serialized JSON) and the right endpoint’s secret.

Sandbox behavior

Sandbox events deliver exactly like production, with livemode: false. The quickstart’s events are real deliveries you can inspect. Next: Purchase API