Skip to main content

Counterparties

Addresses your workspace has transacted with, automatically classified where Kryptos recognises them — as an exchange or a DeFi protocol.

Base URL: https://api-v2.kryptos.io · Required Permission: contacts:read

Endpoint
GET/v1/counter-parties

Note the hyphen: the path is /v1/counter-parties, not /v1/counterparties.

contacts:read is not in the default client scope set

Your client has to be registered with it — see Contacts. Without it this endpoint returns 403 insufficient_scope.

Request​

curl -X GET "https://api-v2.kryptos.io/v1/counter-parties?resolved=false&ignored=false" \
-H "Authorization: Bearer ACCESS_TOKEN"

Query Parameters​

ParameterTypeDefaultDescription
resolvedstring—true or false — whether Kryptos identified the address
ignoredstring—true or false — whether it has been dismissed
typestring—exchange or protocol
searchstring—Match on address and name
pageinteger1Page number
limitinteger50Max 200

resolved and ignored are string enums, not booleans — send ?resolved=false, not ?resolved=0.

?resolved=false&ignored=false is the useful default for a review queue: unidentified addresses nobody has dismissed yet.

Response​

The collection sits beside success, the pagination under meta:

{
"success": true,
"data": [
{
"id": "cp_31c9",
"address": "0x28C6c06298d514Db089934071355E5743bf21d60",
"addressNormalized": "0x28c6c06298d514db089934071355e5743bf21d60",
"chainName": "ethereum",
"chainPublicName": "Ethereum",
"chainLogo": "https://...",
"name": "Binance 14",
"logo": "https://...",
"isExchangeAddress": true,
"platformExchangeId": "binance",
"isSmartContract": false,
"platformSmartContractId": null,
"identified": true,
"ignored": false,
"isLinkedToContact": false,
"contactId": null,
"transactionCount": 42,
"firstSeenAt": "2026-01-04T11:02:00.000Z",
"lastSeenAt": "2026-08-13T09:14:22.000Z",
"createdAt": "2026-01-04T11:02:00.000Z",
"updatedAt": "2026-08-13T09:14:22.000Z"
}
],
"meta": { "total": 216, "page": 1, "limit": 50 }
}

meta carries only total, page and limit — no totalPages or hasMore.

Response Fields​

FieldTypeDescription
idstringCounterparty id
addressstringThe address as seen on-chain
addressNormalizedstringLowercased form — use it to compare addresses
chainName, chainPublicName, chainLogostringChain the address lives on
namestring | nullDisplay name, when identified or linked to a contact
logostring | nullLogo of the matched exchange or protocol
isExchangeAddressbooleanMatched to a centralized venue
platformExchangeIdstring | nullWhich venue, e.g. binance
isSmartContractbooleanMatched to a DeFi contract
platformSmartContractIdstring | nullWhich protocol
identifiedbooleanKryptos recognised the address
ignoredbooleanDismissed from the review queue
isLinkedToContactbooleanA contact supplies the name
contactIdstring | nullThat contact
transactionCountnumberTransactions involving this address
firstSeenAt, lastSeenAtstringISO 8601
createdAt, updatedAtstringISO 8601

A resolved counterparty is one Kryptos matched to a known exchange or protocol, so it carries a name you can display. An unresolved one is just an address. type distinguishes the two kinds of match: exchange for a centralized venue, protocol for a DeFi contract.

Naming an unresolved address is done by attaching it to a contact, where a manual name takes precedence over any automatic one.