GET /testnet/fixtures
GET

/v1/testnet/fixtures

What the simulation keeps alive on Testnet: live accounts, its tokens (tokens[]: name, currency, issuer, holders, amm, role — stablecoin | deep (the high-liquidity pool) | volatile (a thin pool, swung every round) | crowd — with a note saying what each does, and peg_usd on the stablecoin), its collections (collections[]: name, issuer, taxon, role blue-chip | drop, note, items), an NFT with offers, one of every ledger object, and a real transaction of each type (catalogue[]: id, kind, about, result, hash, and tx — the JSON it sent, without fee, sequence, expiry or signature, a working template for that variation) — start here

AuthNone — works without a key

Request

GEThttps://api.xrpl.to/v1/testnet/fixtures
curl 'https://api.xrpl.to/v1/testnet/fixtures'

Response

200Example response2 ms · just now · 8.6 KB · 242 lines
https://api.xrpl.to/v1/testnet/fixtures
{
  "success": true,
  "network_id": 1,
  "generated_at": "2026-11-01T06:57:07Z",
  "age_seconds": 457,
  "population": 92,
  "last_activity": [
    "stablecoin: the pool was +0.29% off the dollar, so the issuer sold 37.5108 into it (tesSUCCESS)",
    "whale trader:1 stayed out",
    "maker trader:2 quoted 3.9% wide (tecINSUF_RESERVE_OFFER/tecINSUF_RESERVE_OFFER)",
    "maker trader:3 quoted 2.0% wide (tesSUCCESS/tesSUCCESS), pulled 2",
    "retail trader:18 opened a line in AUTH and bought in (tecUNFUNDED_OFFER)"
  ],
  "accounts": {
    "issuer": "rKmPxq4hD4m27cVy7kqRmwnV59rXVwWML7",
    "holders": [
      "rs3MqAj6tzvz1cR4Cg3FvFw4xWxdsFXpGg",
      "r453rpyijXZ3S8qpXb1G1bRZq8TRAiFaaW",
      "rsmsd5CCDiUP1VUB95VXyGRRzWbjhNYc4i",
      "ra35utaLFA5JBxTCschftWJcCwBU7Mn992",
      "rfuXBWa3RGrUfr67zko5DZ5viC6vspuvW6"
    ],
    "trader": "rU3KNagYRmKXMrcPXrV6eWR4WKRPKcN6QX",
    "population": 92,
    "busy": [
      "rKmPxq4hD4m27cVy7kqRmwnV59rXVwWML7",
      "rU3KNagYRmKXMrcPXrV6eWR4WKRPKcN6QX",
      "rKn1mjvRh9S4vwuKs6kCJCVb2jGQAaUyeq",
      "r3u36vfykfku78K2VbfDxkrYhdzGKwyvve",
      "r9MMwhq5oTS5Fi8F9cMtJKm6weVDhfZK9r"
    ]
  },
  "tokens": [
    {
      "name": "Testnet RLUSD",
      "currency": "524C555344000000000000000000000000000000",
      "issuer": "rKmPxq4hD4m27cVy7kqRmwnV59rXVwWML7",
      "holders": 25,
      "amm": "rHh8QTC8Jr8dEwzUWTQxdFF3ZBhKGp1gAk",
      "book": true,
      "peg_usd": 1,
      "role": "stablecoin",
      "note": "Pegged to one dollar in XRP; its issuer stands in the market with a ladder either side of the peg and defends the pool. Also pooled against the deep and the volatile token, with no XRP in those pools."
    },
    {
      "name": "Testnet Deep Pool",
      "currency": "4445455000000000000000000000000000000000",
      "issuer": "rhuZ8V91S6vMD7cegHuKTJ8xxPbKmF6LmW",
      "holders": 16,
      "amm": "rBYSka7yNzSpV9PyQ4Jd8FtoFTi3JCAwrm",
      "book": true,
      "role": "deep",
      "note": "The high-liquidity pool: kept at thousands of XRP by the funder, a third of the bots trade it, and it gains holders every hour — the token every example points at."
    },
    {
      "name": "Testnet Volatile Pool",
      "currency": "564F4C5400000000000000000000000000000000",
      "issuer": "rnz7aAbDDoAVCk1YoQ1HLYC4U9xz3TNTMj",
      "holders": 47,
      "amm": "rUYTeeJoVC433MkSXiQVKEwZkEX7oRnm9F",
      "book": true,
      "role": "volatile",
      "note": "A thin pool that a whipsaw account swings by a tenth to a quarter every round, so its price moves the way a small token's does."
    },
    {
      "name": "Testnet Transfer Fee",
      "currency": "4645450000000000000000000000000000000000",
      "issuer": "rmFYQymybCk6gFFeeSpxHx32WyP5cyZ7K",
      "holders": 8,
      "amm": "rQaYEDp3NPDYz6aFTDfENcoBt6TTWakZ4o",
      "book": true,
      "role": "fee",
      "note": "A 2% transfer fee (TransferRate 1020000000): a payment between holders delivers less than it sends, and SendMax matters."
    },
    {
      "name": "Testnet Auth Only",
      "currency": "4155544800000000000000000000000000000000",
      "issuer": "raGqdtviXQeGTzdZ6nDuZu2scEV7AHBZfy",
      "holders": 25,
      "amm": null,
      "book": true,
      "role": "auth",
      "note": "RequireAuth: a trust line to it is worthless until the issuer authorises it, and a payment to an unauthorised line is tecPATH_DRY. No pool."
    }
  ],
  "collections": [
    {
      "name": "Testnet Blue Chips",
      "issuer": "rJmUnrau3q8a6BUMvLwprgNRoRv6a1Ch7y",
      "taxon": 2339,
      "role": "blue-chip",
      "note": "The collection people trade: it grows a few pieces a run to fifty, and its pieces are listed, bid on and sold every round.",
      "items": 52
    },
    {
      "name": "Testnet Drop 1",
      "issuer": "rGXsZn6k58MiaYXQCZ7AF34NwSvXhk8kC9",
      "taxon": 521,
      "role": "drop",
      "note": "A small drop: a few pieces minted at once, with sell and buy offers standing.",
      "items": 4
    },
    {
      "name": "Testnet Drop 2",
      "issuer": "rP2BugkPZxnezTP6dxSkj5Crw2NsvzAwDv",
      "taxon": 5583,
      "role": "drop",
      "note": "A small drop: a few pieces minted at once, with sell and buy offers standing.",
      "items": 4
    },
    {
      "name": "Testnet Drop 3",
      "issuer": "rUmxNekwdd9HiSMiyVLbGYVqutfAMbrNR6",
      "taxon": 6694,
      "role": "drop",
      "note": "A small drop: a few pieces minted at once, with sell and buy offers standing.",
      "items": 2
    },
    {
      "name": "Testnet Drop 4",
      "issuer": "r4NZxFVi69xqvT1dS3jdCjF99bcaceYHSf",
      "taxon": 2283,
      "role": "drop",
      "note": "A small drop: a few pieces minted at once, with sell and buy offers standing.",
      "items": 4
    }
  ],
  "nft": {
    "id": "00080000C2D5AE3A2E7AF5072D1FB422228915A85CBDAF85043D7341014EF9C7",
    "issuer": "rJmUnrau3q8a6BUMvLwprgNRoRv6a1Ch7y",
    "owner": "r4LXJ9LYbY3xHquERhbHDPN87Z3E4dU2e2",
    "taxon": 2339,
    "sell_offer": "C5E22AB1679A610D90CD98ACC7E8F47572A147AB5FBF836946AFFC52E3645A80",
    "buy_offer": "13F3DA1EA3DBA4CD1B23A04F540C2AB36C9D258BED031B636C90C821C3D7FF5C"
  },
  "objects": {
    "check": {
      "id": "B8D67F3E8C1968AC460E03A0EAD48F7373131BCF268353C3A2AF131B9D572AE6"
    },
    "credential": {
      "subject": "rLq8tAjjmmxpT3RhE9HkFb4UvzPF1di2sR",
      "issuer": "rpMje1CddozBuahhXUFLGxEkoQH6isUhy2",
      "credential_type": "4B5943"
    },
    "deposit_preauth": {
      "owner": "rpMje1CddozBuahhXUFLGxEkoQH6isUhy2",
      "authorized": "rLq8tAjjmmxpT3RhE9HkFb4UvzPF1di2sR"
    },
    "did": {
      "account": "rpMje1CddozBuahhXUFLGxEkoQH6isUhy2"
    },
    "escrow": {
      "owner": "rpMje1CddozBuahhXUFLGxEkoQH6isUhy2",
      "seq": 21953212
    },
    "mpt_issuance": {
      "id": "014EFAC60EE40CC9293ED83586466BCF859715D3279739C3",
      "holder": "rLq8tAjjmmxpT3RhE9HkFb4UvzPF1di2sR"
    },
    "nft_offer": {
      "id": "E4C3857CF9244790EEBC3AB776122B5CBA0DFE3A023F7613D4883070B656676A"
    },
    "nft_page": {
      "id": "0EE40CC9293ED83586466BCF859715D3279739C3FFFFFFFFFFFFFFFFFFFFFFFF"
    },
    "offer": {
      "account": "rpMje1CddozBuahhXUFLGxEkoQH6isUhy2",
      "seq": 21953227
    },
    "oracle": {
      "account": "rpMje1CddozBuahhXUFLGxEkoQH6isUhy2",
      "oracle_document_id": 1
    },
    "payment_channel": {
      "id": "9403149027A03C6E810515FA31CB93BFDE48D66AD296C18BB29AB793796D488E"
    },
    "permissioned_domain": {
      "account": "rpMje1CddozBuahhXUFLGxEkoQH6isUhy2",
      "seq": 21953218
    },
    "signer_list": {
      "id": "72721BDDBEB39A798F1466B01FC759ED1ADF763BB8B18468C64F046657F67661"
    },
    "ticket": {
      "account": "rpMje1CddozBuahhXUFLGxEkoQH6isUhy2",
      "ticket_seq": 21953214
    },
    "transaction": {
      "hash": "F0057005D32CDF4E9CB79609C7CCAA87F41D59AA0C6FADCD55FFE33179980017",
      "ledger_index": 21980810
    }
  },
  "catalogue": [
    {
      "id": "account.delete",
      "kind": "AccountDelete",
      "about": "deleting an account and sending what is left to another",
      "result": "no funder: FAUCET_WALLET_SEED is not set (the public faucet is never used)",
      "at": "2026-11-01T03:18:42.411921270+00:00"
    },
    {
      "id": "accountset.defaultripple",
      "kind": "AccountSet",
      "about": "asfDefaultRipple: an issuer letting its token move between holders",
      "result": "tesSUCCESS",
      "at": "2026-11-01T04:19:31.699364730+00:00",
      "hash": "6106168154BDAA0C65E99CA3B2D1BF3D011ADB61531EADB233226C77968966B7",
      "tx": {
        "TransactionType": "AccountSet",
        "Account": "rpNGrXzA4pi3Vh3ErXBASbiWFWwoaLL88h",
        "SetFlag": 8
      }
    },
    {
      "id": "accountset.depositauth",
      "kind": "AccountSet",
      "about": "asfDepositAuth: nothing arrives unless this account allowed it",
      "result": "no funder: FAUCET_WALLET_SEED is not set (the public faucet is never used)",
      "at": "2026-11-01T03:18:42.412091579+00:00"
    },
    {
      "id": "accountset.disallowxrp",
      "kind": "AccountSet",
      "about": "asfDisallowXRP: the advisory flag that says do not send XRP here",
      "result": "no funder: FAUCET_WALLET_SEED is not set (the public faucet is never used)",
      "at": "2026-11-01T03:18:42.411925167+00:00"
    },
    {
      "id": "accountset.domain",
      "kind": "AccountSet",
      "about": "setting the Domain field, which is how an account claims a website",
      "result": "tesSUCCESS",
      "at": "2026-11-01T04:19:24.809586832+00:00",
      "hash": "5C1FFE78846322D30045BB5FDC4A08D8BB590358705A230E3C72BCBCEE015A12",
      "tx": {
        "TransactionType": "AccountSet",
        "Account": "rp5xSm78RgLUnLj8NFs4jw8DtANMPC84cV",
        "Domain": "7472616465722d32362e6578616d706c65"
      }
    }
  ]
}

Long arrays and strings are shortened in the example; Send request for the full answer.

Shapeas documented
{
  network_id,
  generated_at,
  age_seconds,
  population,
  accounts: { issuer, holders[], trader, busy[] },
  tokens[],
  nft,
  objects,
  catalogue[]
}

What it does

What the simulation keeps alive on Testnet: live accounts, its tokens (tokens[]: name, currency, issuer, holders, amm, role — stablecoin | deep (the high-liquidity pool) | volatile (a thin pool, swung every round) | crowd — with a note saying what each does, and peg_usd on the stablecoin), its collections (collections[]: name, issuer, taxon, role blue-chip | drop, note, items), an NFT with offers, one of every ledger object, and a real transaction of each type (catalogue[]: id, kind, about, result, hash, and tx — the JSON it sent, without fee, sequence, expiry or signature, a working template for that variation) — start here

Notes
Rebuilt every few minutes by the simulation; age_seconds past a few minutes means Testnet was reset and it is catching up.
Start at GET /v1/testnet/fixtures: it names live accounts, a busy token, an NFT with offers and one of every ledger object that xrpl.to keeps alive on Testnet, plus a real transaction of every type. The busiest token gains holders every hour, so its GET /v1/testnet/tokens/{md5}/holders is the place to test paginating a long list. Testnet resets without warning; the data is rebuilt from the chain within minutes, and only objects touched since count. Open the Testnet sandbox →
OpenAPI