Payment graph: nodes and payer→payee edges
get_graphEntities as nodes and settlements aggregated into edges, over a bounded window. Two window forms, and exactly one may be sent: window=N is a row count running to the live tip (briefly cacheable); days=N covers whole UTC days only, excluding today, so an answer is stable for the day. Use days for anything an agent will cache. Self-payments are excluded from BOTH edges and node totals and counted in meta.excluded, so sum(node.window_usd) is exactly twice sum(edge.usd).
Wraps GET /v0/graph. Access: requires an API key (Authorization: Bearer rh_live_… or x-api-key).
Returns:
applied: Every parameter as APPLIED, not as requested — both windows, the edge cap, the facilitator caps, the chain, the filters. Read this rather than assuming the request was honoured verbatim.
daysandwindowcan BOTH be non-null: a wallet-focused day window is read row by row, so a row cap applies inside the declared range andcompletesays whether it bit.complete: Whether the declared window was read in full. False means a row cap stopped the read inside the range — the response then covers the newest
applied.windowsettlements in it, not the whole of it, andmeta.warningssays so. Only?days=with?wallet=can be false.days: The whole-UTC-day window applied, or
nullon thewindow=Npath.since: Inclusive start of the day window, or
nullon thewindow=Npath.until: Exclusive end of the day window (midnight today), or
nullon thewindow=Npath.since_day: The
sincebound as a UTC date, ornull.until_day: The
untilbound as a UTC date, ornull.mode:
dailywhen the answer came from the per-day rollup, which covers the window exactly;rawwhen it was folded from settlement rows.bucket: What one source row represented:
dayundermode: daily,settlementunderraw.truncated: True when the edge cap dropped edges the window contained.
nodes: One entry per wallet: role, display name, ENS, and its window totals.
edges: Aggregated payer→payee pairs with volume and count.
series: Per-day bucket totals across the window.
nullon thewindow=Npath, which is a row count with no day grain to bucket into.facilitators: Relayers seen in the window, largest first and capped to
applied.facilitators.usd/countare the relayer's own window totals;linksname only wallets present innodes, capped toapplied.facilitator_links, withlinks_totalandlinks_truncatedbeside them.window: How the window was read: rows requested, fetched and used.
meta: The chain served,
as_of, andexcluded— the self-payments, low-confidence rows, over-cap edges and over-cap facilitators the window held but the graph does not show, so node and edge totals can be reconciled.below_min_usdisnullwhenmin_usdwas sent: that filter runs at read time, so its exclusions never reach this response and cannot be counted.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| via | No | Restrict to settlements relayed by this facilitator key or wallet. | |
| days | No | Whole UTC days, excluding today, honoured exactly: `days=1` is one day. Mutually exclusive with `window`. Out of `[1,180]` is refused rather than clamped. | |
| chain | No | CAIP-2 chain id. Defaults to the chain this deployment indexes (`eip155:8453` in production, `eip155:84532` on staging) — the same default every endpoint on this API uses. A chain the index does not carry is refused with 400 listing the supported set, never answered with an empty list. | |
| edges | No | Hard cap on edges returned, highest volume first. Honoured exactly; `truncated` says whether it bit. | |
| wallet | No | Restrict to edges touching this wallet. Must be a well-formed EVM address (case-insensitive) or Solana address (base58, case-sensitive). | |
| window | No | Row count back from the live tip. Mutually exclusive with `days` — sending both is refused with 400, not silently resolved in favour of one. | |
| min_usd | No | Drop settlements below this USD value. | |
| min_probability | No | Minimum x402 confidence, in `[0,1]`. Default 0.5. |