Skip to main content
API referenceAccounts

Account Counterparties

Last updated

GET
/api/v1/accounts/{ss58}/counterparties

Fetch the per-counterparty fund-flow rollup for one account — or, with ?counterparty=, pair-level native-TAO transfer evidence for one relationship — computed live from the account_events store. ?counterparty switches the route from ranked list mode into relationship drilldown mode; ?limit is 1-100, default 20 in list mode, and default 50 when ?counterparty is present. Pass ?format=csv to download the list-mode leaderboard as CSV; it's rejected alongside ?counterparty since the drilldown returns a single composite object, not rows.

Path Parameters

ss58*string

An SS58-encoded account address -- a hotkey or coldkey.

Query Parameters

counterparty?string

Optional second SS58 address: switch from the ranked counterparties list to one relationship drilldown (fund-flow totals plus recent transfer evidence). Must differ from ss58.

Match^[1-9A-HJ-NP-Za-km-z]{47,48}$
limit?integer

Maximum number of rows to return in one page (at most 100). A larger value, or a non-positive one, is rejected with 400 invalid_query -- so a short page means the result set is exhausted, not that the server quietly capped you (#9916). Omitted, the server applies 20.

Range1 <= value <= 100
Default20
format?string

Response format override. Use csv to download the route rows as text/csv; json keeps the default response envelope.

Default"json"

Value in

  • "json"
  • "csv"

Response Body

application/json

application/json

application/json

application/json

curl -X GET "https://example.com/api/v1/accounts/5F4tQyWrhfGVcNhoqeiNsR6KjD4wMZ2kfhLj4oHYuyHbZAc3/counterparties"
{  "data": {    "counterparties": [      {        "address": "5D7FVSM1fJM56zHJuMBuQ5LH32mkLni52JonoeppFrezvyHy",        "last_block": 5000000,        "net_tao": -0.5,        "received_tao": 0,        "sent_tao": 0.5,        "transfer_count": 1      }    ],    "counterparty_count": 1,    "relationship": {      "counterparty": "5D7FVSM1fJM56zHJuMBuQ5LH32mkLni52JonoeppFrezvyHy",      "first_block": 5000000,      "first_seen_at": "2026-06-01T00:00:00.000Z",      "last_block": 5000000,      "last_seen_at": "2026-06-01T00:00:00.000Z",      "limit": 1,      "net_tao": -0.5,      "scan_capped": false,      "schema_version": 1,      "ss58": "5G9hfkx9wGB1CLMT9WXkpHSAiYzjZb5o1Boyq4KAdDhjwrc5",      "total_received_tao": 0,      "total_sent_tao": 0.5,      "transfer_count": 1,      "transfers": [        {          "amount_tao": 0.5,          "block_number": 5000000,          "direction": "sent",          "event_index": 1,          "from": "5G9hfkx9wGB1CLMT9WXkpHSAiYzjZb5o1Boyq4KAdDhjwrc5",          "netuid": 7,          "observed_at": "2026-06-01T00:00:00.000Z",          "to": "5D7FVSM1fJM56zHJuMBuQ5LH32mkLni52JonoeppFrezvyHy"        }      ],      "transfers_scanned": 1    },    "scan_capped": false,    "schema_version": 1,    "ss58": "5G9hfkx9wGB1CLMT9WXkpHSAiYzjZb5o1Boyq4KAdDhjwrc5",    "total_received_tao": 0,    "total_sent_tao": 0.5,    "transfers_scanned": 1  },  "meta": {    "artifact_path": "example",    "cache": "short",    "contract_version": "2026-06-29.1",    "generated_at": "2026-06-01T00:00:00.000Z",    "observed_through": "2026-06-01T00:00:00.000Z",    "pagination": {      "collection": "example",      "cursor": 1,      "limit": 1,      "next_cursor": 1,      "order": "asc",      "returned": 1,      "sort": "example",      "total": 1    },    "published_at": "2026-06-01T00:00:00.000Z",    "source": "live-cron-prober",    "stale_contract": {      "built_under": "example",      "live": "example"    }  },  "ok": true,  "schema_version": 1}