Fair use policy. This endpoint applies dynamic rate limiting. Free for non-commercial use. For commercial use or higher rate limits, contact rpc at xrpl-labs.com.

LIMITED PUBLIC ACCESS

A public XRPL RPC endpoint

Built by XRPL Labs, with a decade of operating XRPL at scale.

This URL answers the same API a native node does. It serves that API over four transports: JSON-RPC over HTTP POST, one command per HTTP GET route, WebSocket with subscriptions, and Server-Sent Events. Server-Sent Events is a GET that stays open. It streams the subscription feeds as they happen.

Make your first request Fair use applies.
INFRASTRUCTURE AS A SERVICE
PUBLIC ENDPOINT
HTTP POSTHTTP GETWebSocketSSE

This page is what a browser gets. Every other client gets the JSON service descriptor. That covers curl, an SDK, and any fetch that does not ask for text/html. Operational health is at /health.

No key is needed for any of it. A key only raises your rate limits. If you have been given one, using an API key at the foot of this page shows every way this endpoint accepts one. There is an example for each transport.

NETWORK SNAPSHOT

Live network stats

Connecting
CONNECT

Four ways to call it

Native API. Your choice of transport.

API CONSOLE

Try it

Compose a request. See the response in real time.

Transport
Request
Pick a command and send it.
Response
No response yet.
COMMAND REFERENCE

Commands

Every command available on this network.

proxy answered by this endpoint, not a rippled or xahaud command. A native node answers unknownCmd.

This list comes from this deployment's command registry. It shows what this endpoint serves on this network, and which transports each command is reachable over.

HIGHER LIMITS

Using an API key

The same public endpoint, with higher rate limits.

A key buys a higher rate limit, and nothing else. Public access is subject to fair use. Every command works without a key, and you never need one to read from this network. A key raises the rate limits on the calls you make with it, on all four transports. Your rate limit is a set of quotas, each over its own time window. Whichever one you reach first is the one that holds you. A short window can hold you while a longer one still looks healthy. Every HTTP answer tells you the quota that is binding you, what is left of it, and how many seconds until it starts over.

Keys are issued on request. You can buy one commercially, or ask for a grant under special circumstances. Use the contact address in the banner at the top of this page.

ENDPOINT REFERENCE

Special behaviour

The details that matter when you go to production.

Which quota is binding you

headers

Every HTTP answer tells you the quota that is binding you. The names are RateLimit-Limit (that quota), RateLimit-Remaining (what is left of it in this window), RateLimit-Reset (seconds until that window starts over), RateLimit-Policy (every tier you are held to), and RateLimit-Identity (how you were judged: an API key, or an address). A short window can hold you while a longer one still looks healthy. Whichever you reach first is the one that holds you.

Realtime quota information

command

WebSocket sees those headers once, on the 101. After that, send the quota command (the same name on POST and GET) and this endpoint answers every tier of your allowance. A native node answers unknownCmd for that name.

Is the endpoint serving

endpoint

/health is the operational probe. It is JSON, not this page. Use it to see whether the endpoint is serving, not to read the chain.

Wait for a ledger just ahead of the tip

behaviour

When you request a ledger that is almost within reach, a few closes ahead of the tip, this endpoint holds the response briefly and sends it when that ledger comes in (up to three closes ahead by default). It was not slow. The ledger was slightly in the future, and the wait is there so the answer arrives from a node that has it.

Almost every client wants that. It covers the race where one node has just closed a ledger and another sees it a few hundred milliseconds later.

Opt out of the ledger wait

property

If you really do not want the wait, add "nodelay": true to the command (GET, POST, or WebSocket). The proxy then answers immediately. If no node has the ledger yet, that answer is lgrNotFound, the same result the wait would have produced.

Default blacklist protection

behaviour

This endpoint refuses a submit or submit_multisigned whose decoded transaction names a blacklisted account, ledger object, or NFT / URIToken. The answer is a submit response with engine_result telBLACKLISTED, a local tel* failure, not a JSON-RPC error. The submit is still logged here as prevented.

Opt out of default blacklist protection

property

If you really do need to send a blacklisted transaction, add "force": true to the command (POST or WebSocket). The flag is stripped before a backend sees it, the same way nodelay is.