webhooks

QuickNode settlement webhook (Routed + GPVRecorded)

Terminates QuickNode (Streams/QuickAlerts) webhook deliveries carrying raw EVM logs, ABI-decodes Base RouterV2 Routed and GpvTracker GPVRecorded occurrences, and republishes each canonical body onto its settlement topic. Authenticated by the x-qn-* header set: x-qn-signature = hex HMAC-SHA256(token, nonce + contentHash + timestamp), with sha256(body) additionally required to equal x-qn-content-hash and the timestamp bound to a 5m/30s replay window — NOT enforcer bearer/API-key auth. Returns 200 for anything QuickNode should not retry (including payloads with no Routed logs), 401 on any signature/content-hash/timestamp failure, and 503 only for a transient publish failure that warrants redelivery. Success and 401/503 bodies are plain status text; only the 400 is JSON.

post/webhooks/quicknode/{tenant_id}/routed

Request

  • Base URL: https://api.instruxi.dev/api/v1/enforcer
  • URL: https://api.instruxi.dev/api/v1/enforcer/webhooks/quicknode/{tenant_id}/routed
  • Auth: none declared. Required headers: x-qn-signature, x-qn-nonce, x-qn-content-hash, x-qn-timestamp

Path parameters

tenant_idstring required

tenant UUID the webhook is registered under

Headers

x-qn-signaturestring required

hex HMAC-SHA256 over nonce + contentHash + timestamp, keyed with the destination's security token

x-qn-noncestring required

per-delivery nonce

x-qn-content-hashstring required

SHA-256 hex of the payload (must match the delivered body)

x-qn-timestampstring required

unix seconds; must fall inside the 5m past / 30s future replay window

Response

accepted (or dropped as non-retryable)

Changes

No recorded changes to this operation across all 1 revision of this API.