Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.offthehook.dev/llms.txt

Use this file to discover all available pages before exploring further.

Off the Hook uses CAIP-2 identifiers everywhere chains appear — in address filters, webhook payloads, and API responses. This gives you a single, unambiguous way to refer to a network regardless of context. Three TRON networks are currently supported: one production chain and two testnets for development and QA.

Supported networks

ChainCAIP-2 IDPurposeRPC host
TRON Mainnettron:mainnetProductionapi.trongrid.io
TRON Niletron:nileTestnetnile.trongrid.io
TRON Shastatron:shastaTestnetapi.shasta.trongrid.io
Non-TRON chains (Ethereum, TON, Solana, etc.) are not currently supported. Off the Hook is focused on TRON, which processes more USDT volume than Ethereum and has historically been underserved by webhook infrastructure.

Chain IDs in address filters

Every entry in your subscription’s filters.addresses list includes a chainId. The same base58check address on mainnet and Nile is treated as two separate watched addresses — a transfer on one chain does not fire events for the other. If you want to monitor an address across multiple networks, add one entry per chain.
{
  "add": [
    { "chainId": "tron:mainnet", "address": "TLsV52sRDL79HXGGm9yzwKibb6BeruhUzy" },
    { "chainId": "tron:nile", "address": "TLsV52sRDL79HXGGm9yzwKibb6BeruhUzy" }
  ]
}
This pattern is useful when you want to test your webhook handler against activity on Nile before enabling mainnet monitoring.

TRON address format

TRON addresses use base58check encoding and always start with the letter T. Off the Hook validates every address you submit and rejects malformed inputs before they are stored.
Off the Hook validates addresses on submission and returns an invalid_address error for any input that fails base58check decoding. Fix the address before retrying — the error will not resolve on its own.
If your request includes an unrecognized or unavailable chain, the API returns one of the following errors:
Error codeMeaning
invalid_chainThe chainId is not a recognized CAIP-2 identifier. Check for typos.
chain_not_enabledThe chainId is valid but that network is not yet active in Off the Hook.
Both errors appear as items in the skipped array when you use PATCH /v1/subscriptions/:id/filters/addresses, so a batch with mixed valid and invalid entries still processes the valid ones.