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.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.
Supported networks
| Chain | CAIP-2 ID | Purpose | RPC host |
|---|---|---|---|
| TRON Mainnet | tron:mainnet | Production | api.trongrid.io |
| TRON Nile | tron:nile | Testnet | nile.trongrid.io |
| TRON Shasta | tron:shasta | Testnet | api.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’sfilters.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.
TRON address format
TRON addresses use base58check encoding and always start with the letterT. 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.Chain-related error codes
If your request includes an unrecognized or unavailable chain, the API returns one of the following errors:| Error code | Meaning |
|---|---|
invalid_chain | The chainId is not a recognized CAIP-2 identifier. Check for typos. |
chain_not_enabled | The chainId is valid but that network is not yet active in Off the Hook. |
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.