eth_* interface, so EVM tooling — ethers.js, web3.py, Hardhat — does not apply here.
JSON-RPC over HTTPS
Every call is an HTTP POST carrying amethod and a params array. The params array holds exactly one object, even when a method takes no arguments — a bare {} rather than an empty array.
result object reports the client version, the ledgers this node holds, and its sync state:
YOUR_CHAINSTACK_ENDPOINT with your node’s HTTPS endpoint. For the credential in that endpoint and the other ways to authenticate, see Authentication methods for different scenarios.
How much ledger history your node holds
XRP Ledger Global Nodes run in full mode and keep a rolling window of recent ledgers, not the full chain. Readcomplete_ledgers from server_info at runtime and work within it — the lower bound advances as the node prunes, so treat any specific depth as a moving target rather than a guarantee.
Measured on Aug 12, 2026:
Requesting anything below the window returns
lgrNotFound:
account_tx clamps its search range to the retained window rather than reaching further back. For queries older than the window, use a full-history source such as an XRP Ledger public full-history server.
Python
Use the official xrpl-py SDK with itsJsonRpcClient, which talks to your node over HTTPS.
JavaScript
Call your node over the HTTPS endpoint withfetch, and use xrpl.js for the work it does offline — key management, transaction signing, and binary codec helpers.
Sign and submit a transaction
Sign locally with xrpl.js, then submit the resulting blob with therpc helper from JavaScript. Without a connected Client you fill in Fee, Sequence, and LastLedgerSequence yourself, from fee, account_info, and ledger_current.
tesSUCCESS twice — once provisionally from submit, then finally from tx once a validated ledger contains it:
Track new ledgers
Poll the validated ledger with therpc helper from JavaScript. Ledgers close every few seconds, so a short interval keeps you close to the tip: