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 · 9.1 KB · 260 lines
https://api.xrpl.to/v1/testnet/fixtures
{
  "success": true,
  "network_id": 1,
  "generated_at": "2026-10-12T00:59:16Z",
  "age_seconds": 320,
  "population": 20642,
  "last_activity": [
    "trader:572 set its domain (tesSUCCESS)",
    "trader:325 paid 49.85 XRP (tesSUCCESS)",
    "trader:368 paid 26.08 XRP (tesSUCCESS)",
    "trader:46 paid 9.88 XRP (tesSUCCESS)",
    "trader:276 deposited 28.93 XRP at the exchange (tag 1028020) (tesSUCCESS)"
  ],
  "accounts": {
    "issuer": "rLgZXamWAfiuShiArGu1ZphyjymKX1QKs1",
    "holders": [
      "r2tYcnk8hL8kx6MAzumrTxBFHqMk7h3Za",
      "rfnxjxn174miNCuwbrkmLa1h8ATFvxfCb2",
      "rwWL3dn9uozLqNpEbhA4K76H6PMwpcYBe3",
      "rPyq2Mch8tXRDwNJrey3tbx3MTJSd6e1X3",
      "rwrrueqLLpfAVc97aC6UTDwZ5noc9GCAzw"
    ],
    "trader": "rh7BTtaMxPfbbP8fmgdH5zrDspoNvgZhcz",
    "population": 20642,
    "busy": [
      "rLgZXamWAfiuShiArGu1ZphyjymKX1QKs1",
      "rh7BTtaMxPfbbP8fmgdH5zrDspoNvgZhcz",
      "rM7ATsj4kqoqNeEY68Z5rFoc2JuytC1H5D",
      "r2tYcnk8hL8kx6MAzumrTxBFHqMk7h3Za",
      "rJKHxqbLGYi1jmmPp68FadaGhkJJ6CJUM"
    ]
  },
  "tokens": [
    {
      "name": "Testnet RLUSD",
      "currency": "524C555344000000000000000000000000000000",
      "issuer": "rLgZXamWAfiuShiArGu1ZphyjymKX1QKs1",
      "holders": 597,
      "amm": "rPZ4iweTw9ficJh4eRKFPSUPnZE7RZnykT",
      "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": "rEZDNzhzWpVoAS8Tb8ftzp2jipj5s2douH",
      "holders": 588,
      "amm": "r3rWtUcwAMUvW8L6NvdgE2J4fX3n5Ka6Qn",
      "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": "rNmqLvw9pFuDBBD3D15D9Ttd28q3f5P5Pv",
      "holders": 590,
      "amm": "rBEYigdZqzjN4u3brwbfSFKopBDVsvpkG1",
      "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": "rBC6uXMVDPbWooecrt8KpX4UG1xVQHXRjC",
      "holders": 586,
      "amm": "rE7v4y64DoHuwg3o3aCjuLYykTJWmHTWXJ",
      "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": "rJzt9K4obfhXRk9jY74oVk5uT65xaB2JiL",
      "holders": 597,
      "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": "rK2dNJDJBGPvshUSNe2gjeg6rDGcPCkGgD",
      "taxon": 6085,
      "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": 51
    },
    {
      "name": "Testnet Soulbound",
      "issuer": "rKooSG8rCXip1eBDDuKS77FfePs5Y2ztR9",
      "taxon": 4912,
      "role": "soulbound",
      "note": "Minted without tfTransferable: a piece can be burned but never sold or transferred, and an offer on it is refused.",
      "items": 3
    },
    {
      "name": "Testnet Royalty",
      "issuer": "rDaSMQZ1CJ5x6ZgsX1iFSLymovFkMzWcae",
      "taxon": 901,
      "role": "royalty",
      "note": "Minted with a 5% TransferFee: every sale pays the issuer, and only XRP offers are allowed on it.",
      "items": 3
    },
    {
      "name": "Testnet Drop 1",
      "issuer": "rUcJbY2my49KpsYt4W3QCUQdDTR91SNBnx",
      "taxon": 4835,
      "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": "rNMpr9fMjhNZTME8BKHvjghAbm5rkVnjWm",
      "taxon": 3410,
      "role": "drop",
      "note": "A small drop: a few pieces minted at once, with sell and buy offers standing.",
      "items": 4
    }
  ],
  "nft": {
    "id": "00080000CBCE3BC706D5D9384500837C286BE4AD8B208643052655EC01424A8E",
    "issuer": "rK2dNJDJBGPvshUSNe2gjeg6rDGcPCkGgD",
    "owner": "rhw3p93iJymY8UGYCZLHeGAnr6uoHenZhe",
    "taxon": 6085,
    "sell_offer": "FDB29E3AB421633FB916DA873341DE1571F75E2C7B6C7F3C76A2ADECB32925EA",
    "buy_offer": "0537532779AE1D8531BFCA08692C1BB59CCC661DD906D37D05CF318D49926E5F"
  },
  "objects": {
    "check": {
      "id": "C51662D0308191CA3B854556288C0046849F887D67685134E069F2A8B1C71473"
    },
    "credential": {
      "subject": "r4dzKVB9GAkKzPHRh9ZDxPPGEovkRrpie",
      "issuer": "rP9zRkwYEF1Y5KhtUmy9Ehq2D5sSe3zvL",
      "credential_type": "4B5943"
    },
    "deposit_preauth": {
      "owner": "rP9zRkwYEF1Y5KhtUmy9Ehq2D5sSe3zvL",
      "authorized": "r4dzKVB9GAkKzPHRh9ZDxPPGEovkRrpie"
    },
    "did": {
      "account": "rP9zRkwYEF1Y5KhtUmy9Ehq2D5sSe3zvL"
    },
    "escrow": {
      "owner": "rP9zRkwYEF1Y5KhtUmy9Ehq2D5sSe3zvL",
      "seq": 21121923
    },
    "mpt_issuance": {
      "id": "01424B8D0430A7DDD769FB7BF98214A67F4AC2145F37E951",
      "holder": "r4dzKVB9GAkKzPHRh9ZDxPPGEovkRrpie"
    },
    "nft_offer": {
      "id": "5A6CA39C2ABF89A84D6C31CF43C4C3656AA4583F2CAA71965754889C3842270C"
    },
    "nft_page": {
      "id": "0430A7DDD769FB7BF98214A67F4AC2145F37E951FFFFFFFFFFFFFFFFFFFFFFFF"
    },
    "offer": {
      "account": "rP9zRkwYEF1Y5KhtUmy9Ehq2D5sSe3zvL",
      "seq": 21121939
    },
    "oracle": {
      "account": "rP9zRkwYEF1Y5KhtUmy9Ehq2D5sSe3zvL",
      "oracle_document_id": 1
    },
    "payment_channel": {
      "id": "5E7EBB7C1CE9046642DDCFA607D21FD67758C3414B80A7CF8562D4477CC87AF9"
    },
    "permissioned_domain": {
      "account": "rP9zRkwYEF1Y5KhtUmy9Ehq2D5sSe3zvL",
      "seq": 21121929
    },
    "signer_list": {
      "id": "15EDD1F124E575FA27B50BBCEDE3A0A25A10A54AAE47C1FFFB1A52EB8FF0D916"
    },
    "ticket": {
      "account": "rP9zRkwYEF1Y5KhtUmy9Ehq2D5sSe3zvL",
      "ticket_seq": 21121925
    },
    "transaction": {
      "hash": "A9804E83444953CFC3806F2F76D804B678B68C25B868374D013A37781B3CB314",
      "ledger_index": 21465653
    }
  },
  "catalogue": [
    {
      "id": "account.delete",
      "kind": "AccountDelete",
      "about": "deleting an account and sending what is left to another",
      "result": "faucet: XRPLClientError(XRPLJsonRpcError(ReqwestError(reqwest::Error { kind: Request, url: \"https://faucet.altnet.ripple",
      "at": "2026-10-12T00:29:00.164245033+00:00",
      "tx": {
        "TransactionType": "AccountDelete",
        "Account": "rPaD5GNSuR1qsA1JrK991CuzUA11rkiumh",
        "Destination": "rncM1NzZZx1e1rdUXjiMcQKmLGhpCCZSzN",
        "DestinationTag": 8039
      }
    },
    {
      "id": "accountset.defaultripple",
      "kind": "AccountSet",
      "about": "asfDefaultRipple: an issuer letting its token move between holders",
      "result": "tesSUCCESS",
      "at": "2026-10-11T02:20:36.036513724+00:00",
      "hash": "4AC955B6A258DBD18245A255D88CC1F47AED76296C7649A1F20B57FE4022D6BA",
      "tx": {
        "TransactionType": "AccountSet",
        "Account": "rKq9h6qCp9mGsQ7QwwE2uovypAfzf3d1cj",
        "SetFlag": 8
      }
    },
    {
      "id": "accountset.depositauth",
      "kind": "AccountSet",
      "about": "asfDepositAuth: nothing arrives unless this account allowed it",
      "result": "tesSUCCESS",
      "at": "2026-10-11T03:24:59.140411732+00:00",
      "hash": "5925B58DC18B876F1923EAA0AC17BD04CC6BA3BD121B9323DE8A7BD974AC4505",
      "tx": {
        "TransactionType": "AccountSet",
        "Account": "rwKxu3GRimzo2tAc4q6yMpqSjDKMabMxk1",
        "SetFlag": 9
      }
    },
    {
      "id": "accountset.disallowxrp",
      "kind": "AccountSet",
      "about": "asfDisallowXRP: the advisory flag that says do not send XRP here",
      "result": "tesSUCCESS",
      "at": "2026-10-11T03:24:52.093614526+00:00",
      "hash": "6676E0C8F00D8282E6DF7BF0D1459849293C6F3BE3CE155999D75A20B49AB0AC",
      "tx": {
        "TransactionType": "AccountSet",
        "Account": "rBUdeB7m11ZmyVeuMRjs7bvToxCTWWYwys",
        "SetFlag": 3
      }
    },
    {
      "id": "accountset.domain",
      "kind": "AccountSet",
      "about": "setting the Domain field, which is how an account claims a website",
      "result": "tesSUCCESS",
      "at": "2026-10-11T02:20:29.128316304+00:00",
      "hash": "5B0F684D6ED190E336B8A2EA558256B4090984C64C6828067F693BC317A9D398",
      "tx": {
        "TransactionType": "AccountSet",
        "Account": "rNWAixy2H933XhuqdfvyyVt5mEJnDb2T5n",
        "Domain": "7472616465722d36302e6578616d706c65"
      }
    }
  ]
}

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