Skip to content

50% OFF your first payment. Limited time!

Claim your 50% Discount

Realtime

Webhooks

Push delivery on addresses, events and onchain conditions, signed, retried, and safe to act on at one confirmation.

Create

http
POST /v1/$KEY/webhooks
{
  "event": "usdc.transfer",
  "filter": { "to": "0x2c…", "minValue": "100000000" },
  "confirmations": 1,
  "url": "https://api.you.com/hooks/arc",
  "secret": "whsec_…"
}

Events

  • usdc.transfer, from the de-duplicated feed, so one delivery per movement rather than one per log.
  • usdc.blocklist, when an address is added to or removed from the blocklist.
  • cctp.inbound and cctp.outbound, the two legs of a crosschain transfer.
  • address.activity, any transaction touching a watched address.

Delivery

At-least-once with exponential backoff, HMAC-SHA256 signed, with a 24 hour replay window and a dead letter queue in the dashboard. Deliveries are idempotent on (txHash, logIndex), which is the key to dedupe on if your handler is not already idempotent.

typescript
// verify the signature before trusting the body
import { createHmac, timingSafeEqual } from 'node:crypto'

const sig = req.headers['x-arcrpc-signature']      // t=…,v1=…
const [t, v1] = parse(sig)
const expected = createHmac('sha256', SECRET)
  .update(`${t}.${rawBody}`)
  .digest('hex')

if (!timingSafeEqual(Buffer.from(v1), Buffer.from(expected))) reject()
if (Date.now() / 1000 - Number(t) > 300) reject()     // replay window