| Base URL | https://wicketworld.xyz |
| Authentication | None. There is no key to request and no header to send. |
| CORS | access-control-allow-origin: * on every data endpoint. |
| Method | Only GET. Nothing here is writable. |
| Amounts | Integers in the smallest USDC unit, six decimals. 10000 is $0.01, 1000000 is $1.00. |
| Timestamps | Unix seconds, UTC. Fields ending in Ts or named ts. |
| Addresses | Always lowercase hex, 0x-prefixed, never checksummed. |
| Rate limit | None today. If that ever changes it will be documented here first. |
value or volume as dollars. They are integers in atomic units — divide by 1,000,000. A chart that is off by a factor of a million is the single most common mistake with this data.One object with the headline numbers: all-time totals, the last 24 hours, and how far the indexer has read.
No parameters.
| Field | Type | Meaning |
|---|---|---|
| settles24 | integer | Successful settles in the last 24 hours |
| volume24 | integer | USDC moved in the last 24 hours, atomic units |
| facilitators24 | integer | Distinct facilitators active in the last 24 hours |
| total | integer | Successful settles since Arc mainnet |
| volume | integer | USDC moved since mainnet, atomic units |
| facilitators | integer | Distinct facilitators ever seen |
| lastTs | integer | null | Timestamp of the most recent settle |
| lastBlock | integer | null | Block of the most recent settle |
| indexedBlock | integer | null | Highest block the indexer has read. Compare it with lastBlock to tell a quiet chain from a stalled indexer. |
{
"settles24": 10542,
"volume24": 79855261,
"facilitators24": 9,
"total": 47568,
"volume": 6850270050,
"facilitators": 29,
"lastTs": 1790090689,
"lastBlock": 22198481,
"indexedBlock": 22198735
}indexedBlock stops increasing between two calls a minute apart, the indexer is behind or down. That is the cheapest monitor you can point at this site.Every facilitator ever seen on Arc, ranked by successful settles. Recomputed from the raw table on each request, never from a running counter.
No parameters. The array is complete — there is no pagination, because the number of facilitators is small.
| Field | Type | Meaning |
|---|---|---|
| rank | integer | 1 is the most settles. Ties broken by volume. |
| address | string | The facilitator wallet |
| name | string | A known name, or unlabeled if nobody has identified it |
| labeled | boolean | Whether that name is a real identification or a placeholder |
| settles | integer | Successful settles, all time |
| reverted | integer | Transactions that were mined but failed. Not counted in settles or volume. |
| volume | integer | USDC settled, all time, atomic units |
| settles24 / volume24 | integer | The same two numbers for the last 24 hours |
| firstTs / lastTs | integer | First and most recent settle, Unix seconds |
| lastBlock | integer | Block of the most recent settle |
{
"network": "eip155:5042",
"asset": "0x3600000000000000000000000000000000000000",
"updatedAt": 1790091325,
"facilitators": [
{
"rank": 1,
"address": "0x2b9a3197ed35d56e2e1c2a01f4d649586821055c",
"name": "unlabeled",
"labeled": false,
"settles": 45849,
"reverted": 6,
"volume": 90849607,
"settles24": 10347,
"volume24": 21855014,
"firstTs": 1789631031,
"lastTs": 1790090140,
"lastBlock": 22197400
}
]
}Most facilitators come back unlabeled. That is not a gap in the data — it is the finding. Wicket detects facilitators from the chain rather than from a registry, so wallets nobody has ever written about still show up. See Methodology.
The raw rows, newest first, with the same filters the explorer page uses. This is the endpoint to build on.
| Parameter | Values | Default | Meaning |
|---|---|---|---|
| limit | 1 – 200 | 25 | How many rows to return |
| range | 24h | 7d | all | 7d | Time window, counted back from now |
| facilitator | 0x + 40 hex | — | Only settles broadcast by this wallet |
| address | 0x + 40 hex | — | Only settles where this address is the payer or the payee |
| min | 0 | 100 | 10000 | 1000000 | 0 | Minimum value in atomic units: all, $0.0001, $0.01, $1 |
| before | block number | — | Return rows strictly below this block. This is how you paginate. |
The response is a bare JSON array. Each row carries tx_hash, block, ts, facilitator, payer, payee, value, status (1 succeeded, 0 reverted) plus facName and labeled for display.
[
{
"tx_hash": "0xf577b2d581debf192fce2e01047d963fc689f45bb55d1fb44f27bd9b93f8716b",
"block": 22198481,
"ts": 1790090689,
"facilitator": "0x1fdc02956b5bfc09780b3d4b492d4bc0906ecf93",
"payer": "0x331297e5dc4996b96143be91a586f4cef6f9ff15",
"payee": "0x66763072cfbaf6328944af830cf0d0cc29323b23",
"value": 10000,
"status": 1,
"facName": "unlabeled",
"labeled": false
}
]Pagination is by block cursor rather than by offset, so new settles arriving while you page will not shift rows underneath you:
# first page
curl "https://wicketworld.xyz/api/settles?range=all&limit=100"
# next page: pass the block of the last row you received
curl "https://wicketworld.xyz/api/settles?range=all&limit=100&before=22198481"A complete example — every payment over one dollar in the last day:
const r = await fetch("https://wicketworld.xyz/api/settles?range=24h&min=1000000&limit=50");
const settles = await r.json();
for (const s of settles) {
console.log(new Date(s.ts * 1000).toISOString(), s.value / 1e6, "USDC");
}Resolve a transaction hash, an address or a facilitator name into the pages that describe it. This is what the command palette calls.
| Parameter | Values | Meaning |
|---|---|---|
| q | string | A 0x + 64 transaction hash, a 0x + 40 address, or at least two characters of a facilitator name |
Returns { hits: [] }. One address can produce several hits — a wallet can be both a facilitator and a payer — so the endpoint returns every reading rather than guessing one. Each hit has kind (tx, facilitator or address), href, label and a human note.
{
"hits": [
{
"kind": "facilitator",
"href": "/f/0xe074bf7f0aa27642059e6fcc40688b61d8265b49",
"label": "Arcus",
"note": "facilitator"
}
]
}/api/stats and /api/settles are cacheable for a few seconds, /api/leaderboard for five, /api/search not at all. The cache-control header on each response is authoritative.limit=9999 gives you 200, an unknown range gives you 7d. You always get valid JSON.5xx means the database or the site is having a bad moment. Retry; there is no penalty for it.x402 is a standard for software paying software, so the docs are written for software too. Both files are generated from the same endpoints described above:
The data is public chain data and the numbers are free to reuse under CC BY 4.0 — take them, chart them, publish them, with a link back to wicketworld.xyz. There is no rate limit and no key; if the traffic ever forces one, this page changes before anything else does.