Every XE node exposes the same JSON HTTP API. By default it listens on
http://127.0.0.1:8080 (--api is on by default; change the port and bind
address with --api-port and --api-bind). The playground below targets the
live London testnet node at https://ldn.test.network/api through a local docs
proxy, so requests work from this site without browser CORS issues.
Conventions
- Amounts are micro-units. 1 XE = 1 XUSD = 1,000,000 micro-units, and every
amount, balance, and weight in the API is an integer micro-unit count. A
balance of
100000000is 100 XUSD. - The API is self-describing.
GET /returns a manifest of every route with its method and a one-line description — the same list the node uses to register its handlers. - Authentication is per-endpoint. Most reads are open.
POST /lease/requestand the parameterless/chat/eventsfirehose are operator-only, gated behind an admin bearer token (Authorization: Bearer <XE_API_ADMIN_TOKEN>). Reading a specific account's chat requires an ownership proof: fetch a challenge fromGET /chat/auth/challenge, sign it with the account key, and passaccount,challenge, andsigas query parameters. - Rate limits are per-IP with two classes: reads at 200 requests/second
(burst 1,000) and writes (POST) at 10 requests/second (burst 50). Exceeding
a bucket returns
429.
LIVE TESTNET API
Executable endpoint directory
https://ldn.test.network/apiGET
List all accounts
Returns accounts known by the node with balances and frontier hashes. Balances are micro-units (1 XE = 1 XUSD = 1,000,000 micro-units).
Select an endpoint and run it against the live testnet.
cURL
curl 'https://ldn.test.network/api/accounts'
Notes
- Most
GETendpoints run immediately. Chat reads need the ownership proof described above, and lease-scoped lookups need a real lease hash — the testnet currently has no open leases, so those entries return 404 until one exists. POSTendpoints include editable starter JSON showing the exact shape the node decodes. Block submissions must be fully formed: valid signature, block hash, post-blockbalance, and proof-of-work nonce. The node does not sign or complete blocks for you.- Entries marked as reference-only (
/lease/request, the TCP tunnel) cannot run from the browser; the panel explains what each needs instead. - Sample account and block identifiers are refreshed from the live network
with
node scripts/refresh-playground-samples.mjs— rerun it after a testnet wipe.