addresses

Counterparty graph (one hop by default)

Can be served from a stored snapshot (snapshot_served, snapshot_age_seconds); degraded_reason and the X-Degraded header say when part of the answer is missing. Pass token — without it the network's default stablecoin is used. edge_source says what the graph was built from — lifetime (window all, every day ever indexed, all-time sums) or daily (the day grain, starting at window_from when that is present; a mega-hub over the degree gate is always daily). lifetime_deferred (true) marks a daily answer to window all whose whole history was too large to count inside the request; it is built in the background and replaces this answer within hours. A heavy address whose graph is not stored and does not build inside the request deadline answers 202 (body status = building, header Retry-After) — the graph is being built now; repeat the same request after retry_after_seconds and it is answered from the stored result. A 202 is not the graph; check the status (or status in the body) before reading it. window_from present means the answer was built from that date, the edge-grain horizon, not from the start of the requested window; the default window all, 90d and 1y included (/v1/methodology edge_grain_horizon). When window_from is present, read the graph as covering that span only — do not treat the absence of a counterparty, a path or a sanctioned node as evidence about anything before that date. volume on nodes and edges is the token's raw minor units (divide by 10^decimals); volume_usd6 is the same amount in USD with 6 decimals at peg 1. On Solana (chain -1) the answer carries coverage_status for the subject address only — pending (its history is still being filled, so an empty or small answer is not final) or partial (filled to a documented bound). It is the subject's fill state, read when the answer is served, and the graph can be older than that — a finished fill shows only in a graph built after the next Solana rollup pass that follows it (about 10 minutes). With snapshot_served true the graph is as old as snapshot_age_seconds (up to 6 hours, or 72 hours in place of a failed build), so partial there does not mean the fill is in it — /walk is built for every request. History older than window_from never shows. This read never starts a fill, so pending can also mean none was asked for yet — one compliance read of the address (GET /v1/addresses/{address}) asks for it. A Solana answer without coverage_status could not read it in time — treat it as pending.

get/v1/addresses/{address}/graph

Request

  • Base URL: https://stablescan.achivx.com
  • URL: https://stablescan.achivx.com/v1/addresses/{address}/graph
  • Auth: none required

Path parameters

addressstring required

Address in the network's native spelling (0x… EVM, T… Tron, base58 Solana). The answer writes it in the spelling of chain_id (address; /balances alone echoes the path there) and echoes the path in requested_address; address_respelled: true means the spelling belongs to another kind of chain than chain_id (a T… address asked about an EVM chain, a 0x… address asked about Tron) — answered about the same bytes there, not refused, and the same owner only for a plain key account.

Query parameters

1 | 10 | 56 | 8453 | 42161 | 728126428 | -1
OR
'1' | '10' | '56' | '8453' | '42161' | '728126428' | '-1' | 'ethereum' | 'optimism' | 'bnb-chain' | 'base' | 'arbitrum' | 'tron' | 'solana' | 'eip155:1' | 'eip155:10' | 'eip155:56' | 'eip155:8453' | 'eip155:42161' | 'eip155:728126428' | 'solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp'

Pass it explicitly — silent default is Base (8453); an answer about the wrong network looks exactly like an answer. Accepted as the number, the number in a string, the network slug (ethereum, bnb-chain, … from /v1/networks) or the CAIP-2 id. Surrounding whitespace, a leading + and leading zeros are ignored, slugs and CAIP-2 ids match in any letter case, and an empty or blank value is the parameter left off (/v1/freezes/acts alone refuses it).

tokenstring
hopsinteger
frontierinteger

Frontier cap; 0 or unparsable keeps the default (500).

windowstring

Time window, default all. On Solana (chain -1) the edge grain of 2026-07-20..2026-09-14 is incomplete: those days hold part of their transfers or none, because their raw rows were offloaded before a fix reached production on 2026-09-17; they are not restored, and answers do not mark them (decision of 2026-09-17). Solana's grain is never trimmed, so there the horizon that window_from reports is not where retained data ends: once window_from is later than 2026-09-14 the answer holds none of those days. An answer that reaches them — window_from on or before 2026-09-14, or no window_from over a window that includes them — counts them as floors: at least this much, never the whole, and a counterparty, path or sanctioned node missing from those days is not evidence that there was none. The horizon does not cut /graph with edge_source lifetime (all-time sums built from the same grain), exposure or address volume: their Solana figures include those days, as floors.

Response

Counterparty graph.

addressstring required
address_respelledboolean required

true when the address you sent is spelled for another kind of chain than chain_id — a T… (Tron) address asked about an EVM chain, a 0x… address asked about Tron, a 32-byte base58 (Solana) key asked about an EVM chain or Tron — and the answer is about those same bytes on chain_id. Accepted, not refused; the same 20 bytes are the same owner on EVM chains and Tron only for a plain key account, not for a contract. Always false when you did not pass chain: the spelling then chooses the chain.

built_atstring
chain_idinteger required
chain_sourcestring required

How chain_id was chosen: explicit (you passed chain), default (a 0x address with no chain is answered about Base), address_form (a T or base58 address is answered about the chain its spelling implies). The answer is always about the one chain in chain_id.

coverage_statusstring

Solana (chain_id -1) only: the fill state of the SUBJECT address, never of its counterparties. pending - its history is still being filled, or no fill was asked for yet (this read never starts one; a compliance read of the address does), so an empty or small answer is not final; partial - filled to a documented bound. It is read when the answer is served, and a finished fill shows only in a graph built after the next Solana rollup pass that follows it (about 10 minutes): with snapshot_served true the graph is as old as snapshot_age_seconds (up to 6 hours, or 72 hours in place of a failed build), so partial there does not mean the fill is in it. Absent on every other network; a Solana answer without it could not read it in time — treat it as pending.

decimalsinteger required

Decimals of the token the graph is about: a node's or edge's volume divided by 10^decimals is the amount in whole tokens.

degraded_reasonstring
edge_sourcestring required
freshness_secondsinteger nullable required

Age in seconds of this chain's newest indexed transfer when the answer was served; null when it could not be read for this answer or the chain has no indexed transfer yet — a failed read is never reported as a number. The verdict never moves on it.

frontier_capinteger required
lifetime_deferredboolean
max_hopsinteger required
notestring required
requested_addressstring required

The address exactly as you sent it. address beside it is the same bytes written in the spelling of chain_id (0x-hex in lower case on EVM chains, T… on Tron, base58 on Solana) — except on /v1/addresses/{address}/balances, whose address echoes what you sent.

snapshot_age_secondsinteger nullable
snapshot_servedboolean required
start_keystring required
tokenstring required
windowstring required
window_fromstring

Changes

No recorded changes to this operation across all 1 revision of this API.