Swaps on every chain
The wallet's swaps on every chain in scope, merged newest first, one keyset page at a time. Each item is one side of a swap seen from the wallet: buy = it received token, sell = it gave it.
Notes
- Pass the page's cursor back as cursor for the next page; cursor: null = nothing older. One transaction's rows stay on one page, so a page can hold fewer than limit items.
- A chain that could not be read for a page is listed in unavailable and keeps its place: the next page asks it again. items: [] with unavailable set is an outage, not an empty history.
- How far back: Monad, Robinhood Chain and Arc, their raw tape (45 days); Avalanche, Base, BNB Chain, Arbitrum One and Ethereum, their raw tape and then, where Chord's history lake holds older days, up to 5,000 older swaps; Solana, 45 days. EVM swaps under $0.10 are left out.
- ts is in milliseconds.
- Pages are not cached: without an API key (or an Ask session) each page counts against the budget it shares with GET /portfolio/{wallet} (10 new reads per IP every 10 minutes, a limited number a minute for every such caller together); past it 429 RATE_LIMITED or 503 BUSY with Retry-After.
Request
- Base URL: https://api.getchord.xyz/v1
- URL: https://api.getchord.xyz/v1/portfolio/{wallet}/activity
- Auth: none declared
Path parameters
EVM address, hex, case-insensitive.
Query parameters
Solana address, base58, case-sensitive. Never lower-case it.
The wallet's Solana address. Adds Solana to the default scope.
all = the eight EVM chains, plus Solana when sol is given. Or a comma list of chain ids (143, 4663, 5042, 43114, 8453, 56, 42161, 1) and solana (which needs sol). Answered in registry order, Solana last. This route does not read chain: chain=5042 on its own still answers for every chain, so send chains=5042 for Arc alone.
The cursor of the previous page.
Items per page.
Response
Changes
No recorded changes to this operation across all 2 revisions of this API.