Overview
Subscriptions let you watch addresses on-chain and receive real-time notifications via webhooks when matching events occur. Use them for deposit detection, transaction state changes, balance alerts, or any per-address event stream. Read endpoints need subscriptions:read; write endpoints need subscriptions:manage.
- List event typesGET/subscriptions/event-types
- Create subscriptionPOST/subscriptions
- List subscriptionsGET/subscriptions
- Get subscriptionGET/subscriptions/:id
- Update subscriptionPATCH/subscriptions/:id
- Pause subscriptionPOST/subscriptions/:id/pause
- Resume subscriptionPOST/subscriptions/:id/resume
- Rotate signing secretPOST/subscriptions/:id/rotate-signing-secret
- Test subscriptionPOST/subscriptions/:id/test
- Delete subscriptionDELETE/subscriptions/:id
- List deliveriesGET/subscriptions/:id/deliveries
- Get deliveryGET/subscriptions/:id/deliveries/:deliveryId
- Resend deliveryPOST/subscriptions/:id/deliveries/:deliveryId/resend
List Event Types
Use Case
Returns the catalogue of event types with human-readable labels and categories.
List Event Types Response
Static catalogue of every event you can subscribe to. Use it to populate UIs and validate `eventTypes` before sending the create-subscription call.
Event slug to send in `eventTypes` when creating a subscription (e.g. `incoming_native_tx`, `outgoing_token_tx`, `tx_confirmation_threshold`, `address_event`).
Human-readable name for the event — safe to render in subscription-management UIs.
Grouping for the event. One of: `Incoming` (deposits), `Outgoing` (sends from a watched address), `State` (transaction lifecycle changes), `Confirmation` (block-confirmation thresholds), `Balance` (balance shifts), or `Address` (catch-all).
Create Subscription
Use Case
Registers a new address subscription. The response includes the plaintext signing secret one time only — store it before the response is closed; it cannot be retrieved later (only rotated).
Request Body
On-chain address to watch. The subscription fires whenever this address is touched by an event matching `eventTypes`.
Chain the address lives on (`ethereum`, `bitcoin`, `tron`, `solana`, etc.). Used to interpret the address and route to the correct indexer.
Specific network within the chain — typically `mainnet`, or a testnet such as `sepolia` / `testnet` / `nile`.
Delivery channel slug identifying which indexer/webhook pipeline to use. Use the value supplied to your organisation during onboarding.
One or more event slugs from the event-type catalogue (e.g. `["incoming_native_tx", "incoming_token_tx"]`). Defaults to the catch-all `address_event` if omitted.
Optional per-event-type predicates that narrow which events fire — for example minimum amount, token contract, or confirmation count. Filters are AND-ed within an event type and OR-ed across types.
HTTPS URL deliveries are POSTed to. Must answer `2xx` within the delivery timeout, otherwise the delivery is retried with backoff.
Free-form label for your own bookkeeping (e.g. `"Deposits sweep — eth main"`). Surfaced in list/get responses but never sent to the webhook receiver.
Arbitrary JSON object forwarded verbatim into the delivery payload — useful for correlating an event back to your internal IDs (`customer_id`, `order_id`, etc.).
Create Subscription Response
The signingSecret is returned only on this response. Store it before the response closes — it can be rotated but not retrieved later.
Indicates whether the API request was successful.
The newly created subscription. Same shape as the get/list response, but the create call also returns the plaintext signing secret one time.
Stable subscription identifier — pass it to pause/resume/test/rotate-secret/delete and to the deliveries endpoints.
Watched on-chain address, echoed back from the request.
Chain the subscription is bound to (`ethereum`, `bitcoin`, `tron`, etc.).
Network within the chain (`mainnet`, `sepolia`, `testnet`, ...).
URL deliveries will POST to. Used for every event that matches `eventTypes` until you pause, delete, or update the subscription.
Event slugs this subscription receives — exactly the values you sent at creation time (or the default `address_event`).
Plaintext HMAC signing secret with `hn_whs_` prefix. Used to verify the `X-Bitnob-Signature` header on each delivery. **Returned only here and on rotate** — store it immediately.
Lifecycle state. `active` immediately after creation; transitions to `paused` via the pause endpoint, back to `active` on resume.
List / Get / Update Subscription
Use Case
Lists subscriptions, fetches a single subscription, or patches mutable fields on an existing one.
List Query Parameters
Restrict the list to subscriptions on a single chain — useful when you have many subscriptions across `ethereum`, `tron`, `bitcoin`, etc.
Restrict the list to a single network (`mainnet`, `sepolia`, `testnet`, ...). Combine with `chain` to scope to one environment.
Filter by lifecycle stage: `active` (delivering events) or `paused` (kept around but not delivering).
Items per page (1-100, default 20). Combine with `offset` to paginate.
Number of items to skip before returning results (default 0).
Update Request Body
Replacement delivery URL. Future events for this subscription will be POSTed here instead of the previous URL — no signing-secret change is implied.
Replacement event-type slug (or array of slugs depending on integration mode). Lets you broaden or narrow what fires deliveries without recreating the subscription.
List / Get / Update Subscription Response
List returns an array of SubscriptionResponse plus a pagination meta envelope (total, limit, offset, has_more); get/update return a single object. Field shape matches Create Subscription Response with one exception: signingSecret is never returned here — only at create or rotate.
Pause / Resume / Test / Delete
Use Case
Pausing stops new deliveries without deleting the subscription. Resuming reactivates it. Test triggers a synthetic delivery so you can verify your endpoint, signature handling, and parser. Delete permanently removes the subscription (in-flight queued deliveries are still attempted).
Pause / Resume / Test / Delete Response
Pause and resume return HTTP 200 with the full SubscriptionResponse reflecting the new status (paused after pause, active after resume) — same field set as Create Subscription Response without signingSecret. Test returns HTTP 202 with no body (it just enqueues a synthetic delivery). Delete returns HTTP 204 with no body.
Rotate Signing Secret
Use Case
Generates a new HMAC signing secret for this subscription, encrypts it for storage, and returns the new plaintext secret one time. The previous secret stops verifying deliveries immediately.
Rotate Signing Secret Response
The new signingSecret is returned only on this response. Store it before the response closes; the old secret stops working immediately.
Indicates whether the rotation succeeded.
Subscription record reflecting the rotation — same field shape as **Create Subscription Response**, with `signingSecret` carrying the *new* secret and the previous secret invalidated immediately.
Subscription identifier — unchanged across the rotation.
Newly generated plaintext HMAC signing secret with the `hn_whs_` prefix. Use it to verify the `X-Bitnob-Signature` header on subsequent deliveries; the previous secret stops verifying signatures the instant this response is produced.
Server-side timestamp marking when the new secret took effect — useful for correlating signature-verification failures around the rotation moment.
List / Get / Resend Delivery
Use Case
Lists past delivery attempts for a subscription (with HTTP status, duration, and attempt counter), fetches a single delivery, or re-attempts a previously failed (or succeeded) delivery as a fresh attempt.
List Query Parameters
Filter by delivery status: `success` (your endpoint answered `2xx`), `failed` (gave up after the retry budget), or `retrying` (still being attempted with backoff).
Items per page (1-100, default 20). Combine with `offset` to walk through historical attempts.
Number of attempts to skip before returning results (default 0).
Subscription Deliveries Response
Indicates whether the API request was successful.
List endpoint returns an array of past delivery attempts (with a pagination `meta` envelope); the get-by-id endpoint returns a single `WebhookDeliveryResponse` instead.
Stable delivery identifier — pass it to the resend endpoint to queue a fresh attempt.
Outcome of the attempt: `success` (your endpoint returned `2xx`), `failed` (retry budget exhausted), or `retrying` (still queued for another attempt with exponential backoff).
HTTP status code your endpoint returned. `0` (or absent) when the request never got a response (timeout, DNS failure, TLS error).
Wall-clock time from sending the POST to receiving the response, in milliseconds — useful for spotting slow webhook handlers before they trip timeouts.
1-based counter that increments on every retry. The first delivery is `1`; manually-resent deliveries continue the count.
Server-side timestamp recording when this attempt finished (success, failure, or timeout).
Resend endpoint returns HTTP `202` with `{ delivery_id, attempt }` describing the freshly queued attempt — not a field on the delivery record itself.