API Reference

Executable HTTP API playground for accounts, blocks, leases, state chain, directory, chat, and node operations.


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 100000000 is 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/request and the parameterless /chat/events firehose 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 from GET /chat/auth/challenge, sign it with the account key, and pass account, challenge, and sig as 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/api
GET

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).

-- IDLE--
Select an endpoint and run it against the live testnet.
cURL
curl 'https://ldn.test.network/api/accounts'

Notes

  • Most GET endpoints 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.
  • POST endpoints include editable starter JSON showing the exact shape the node decodes. Block submissions must be fully formed: valid signature, block hash, post-block balance, 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.