/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
Request
https://api.xrpl.to/v1/testnet/fixturescurl 'https://api.xrpl.to/v1/testnet/fixtures'
Response
https://api.xrpl.to/v1/testnet/fixtures{ "success": true, "network_id": 1, "generated_at": "2026-10-19T08:32:15Z", "age_seconds": 222, "population": 20642, "last_activity": [ "trader:133 bought 127.75 dollars (tesSUCCESS)", "trader:464 bought 162.81 dollars (tesSUCCESS)", "trader:378 sold 77.25 dollars (tesSUCCESS)", "nft sale", "trader:354 bought 00080000CBCE from trader:539" ], "accounts": { "issuer": "rLgZXamWAfiuShiArGu1ZphyjymKX1QKs1", "holders": [ "r2tYcnk8hL8kx6MAzumrTxBFHqMk7h3Za", "rfnxjxn174miNCuwbrkmLa1h8ATFvxfCb2", "rwWL3dn9uozLqNpEbhA4K76H6PMwpcYBe3", "rPyq2Mch8tXRDwNJrey3tbx3MTJSd6e1X3", "rwrrueqLLpfAVc97aC6UTDwZ5noc9GCAzw" ], "trader": "rh7BTtaMxPfbbP8fmgdH5zrDspoNvgZhcz", "population": 20642, "busy": [ "rLgZXamWAfiuShiArGu1ZphyjymKX1QKs1", "rh7BTtaMxPfbbP8fmgdH5zrDspoNvgZhcz", "rM7ATsj4kqoqNeEY68Z5rFoc2JuytC1H5D", "r2tYcnk8hL8kx6MAzumrTxBFHqMk7h3Za", "rGctdmk7gmr2Mim6AyaobPFtFLrtNxZQSj" ] }, "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": "BF6130B3E1A2894FFAA8944060F3D218F6A8B06D41E68F95FFE716FE55CCBD07", "ledger_index": 21652549 } }, "catalogue": [ { "id": "account.delete", "kind": "AccountDelete", "about": "deleting an account and sending what is left to another", "result": "no funder: SIM_FUNDER_SEED is not set (the public faucet is never used)", "at": "2026-10-19T08:24:24.306441852+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-18T08:24:21.080792380+00:00", "hash": "A724428B70D97C6A10D4F9F2EBEF08FD88C990A0E4CBCF63022FFDE17F583AF6", "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-18T08:24:42.286834137+00:00", "hash": "46BB7EA4E8130FB183E77B8C3EDF5D3E1657B1C5E690395F433CEA139A558BB9", "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-18T08:24:35.275228709+00:00", "hash": "C6988A9C5D3E8ADAC50D1487C10B8A9E381C999C49D579367AA691639498AEC5", "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-19T08:23:55.665994867+00:00", "hash": "7AEE783F2D36AB0BA22A86564AD30E61CFE899DF4BAFFDAFD8DCA51BED10FE03", "tx": { "TransactionType": "AccountSet", "Account": "rH9HapUdYVJ65LbqormrZ4GmBHesc2uhH9", "Domain": "7472616465722d3236322e6578616d706c65" } } ] }
Long arrays and strings are shortened in the example; Send request for the full answer.
{ 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.