Work with this as data
Every API here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for apis
7 MCP tools reach this
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.
Call it yourself
curl for this page
This API
curl "https://apis.io/api/v1/apis/getchord-xyz:getchord-xyz-points-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"
Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
OpenAPI Specification
openapi: 3.2.0
info:
title: Chord Points API
version: '2026-10-05'
summary: Trade, data and agent endpoints for eight EVM chains (Ethereum 1, Arbitrum One 42161, Base 8453, BNB Chain 56, Avalanche 43114, Monad 143, Arc 5042, Robinhood Chain 4663) and Solana (data and swaps).
description: 'Chord is a non-custodial trading app and on-chain data index. The API has three kinds of endpoint:
- **Trade**: `/quote` finds the best route across every venue on the chain; `/swap` turns it into a transaction you sign yourself. Chord never holds funds or keys.
- **Read**: every swap on the chain, rolled up by token, venue and hour, from Chord''s own index — tokens, launches, holders, top wallets, portfolio PnL, liquidity positions and pools. No key needed. Avalanche, Base, BNB Chain, Arbitrum One and Ethereum have the same rollups under `/chains/{chain}/*`; Solana has its own data family under `/chains/solana/*` (base58 addresses, case-sensitive) and its swaps under `/sol/trade/*`.
- **Agent**: the analyst (`/ask`) and the streams.
Amounts are decimal strings in the token''s smallest unit. Timestamps are Unix seconds unless the field is `updatedAt` (milliseconds). `GET /portfolio/{wallet}` and `/portfolio/{wallet}/activity` differ on both: amounts there are in whole tokens and every time is in milliseconds. Reads answer anonymous callers at 60 requests a minute per IP; an `X-API-Key` header raises that to your plan. Every non-2xx body is `{ error, message }`.'
contact:
name: Chord
url: https://getchord.xyz/developer
x-logo:
url: https://getchord.xyz/chord/pwa-192x192.png?v=20261019
servers:
- url: https://api.getchord.xyz/v1
description: Production
tags:
- name: Points
description: The Chord points program on Arc.
paths:
/points/rules:
get:
tags:
- Points
operationId: pointsRules
summary: Points program rules
description: Season, current week, points per dollar, the weekly pool, the daily cap, streak multipliers, referral bonuses and the tiers — and the plain-English rules of what counts. Only swaps executed through Chord on Arc score.
responses:
'200':
description: ''
content:
application/json:
schema:
type: object
properties:
chain:
type: integer
description: ''
season:
type: integer
description: ''
seasonStart:
type: integer
description: Unix time, seconds, UTC.
currentWeek:
type: integer
description: ''
weekLengthSec:
type: integer
description: ''
pointsPerUsd:
type: number
description: ''
minTradeUsd:
type: number
description: ''
weekPool:
type: number
description: ''
dayCapUsd:
type: number
description: ''
referredBonusPct:
type: number
description: ''
referralBonusPct:
type: number
description: ''
streak:
type: array
items:
type: object
properties:
days:
type: integer
description: ''
multiplier:
type: number
description: ''
counts:
type: string
description: ''
size:
type: string
description: ''
pool:
type: string
description: ''
tiers:
type: array
items:
type: object
properties:
name:
type: string
description: ''
topRanks:
type:
- integer
- 'null'
description: ''
topPct:
type:
- number
- 'null'
description: ''
note:
type: string
description: ''
provisional:
type: string
description: ''
example:
chain: 5042
season: 1
seasonStart: 1789516800
currentWeek: 1
weekLengthSec: 604800
pointsPerUsd: 0.1
minTradeUsd: 1
weekPool: 1000000
dayCapUsd: 50000
referredBonusPct: 10
referralBonusPct: 10
streak:
- days: 5
multiplier: 1.25
- days: 3
multiplier: 1.1
counts: Swaps executed through Chord on Arc (chain 5042). Swaps made elsewhere on Arc, or on any other chain, do not count.
size: The dollar size of the trade as priced by Chord's own index (one route leg, never the sum of hops).
pool: Each week a fixed pool of points is split among traders in proportion to their weighted volume. Your points for a week settle when the week closes.
tiers:
- name: Challenger
topRanks: 10
topPct: null
note: top 10 of the season
- name: Diamond
topRanks: null
topPct: 1
note: top 1% of scored wallets
provisional: Points are provisional until the week closes and can be voided for wash trading or self-dealing. Routers, bots and relayers are never scored.
/points/leaderboard:
get:
tags:
- Points
operationId: pointsLeaderboard
summary: Weekly or season leaderboard
description: Wallets ranked by points for one week or the whole season, with base points, referral and streak bonuses, volume, trades, days active and tier. `503 NOT_ENABLED` while the program is off on the deployment.
parameters:
- name: scope
in: query
required: false
schema:
type: string
enum:
- week
- season
default: week
description: ''
- name: week
in: query
required: false
schema:
type: string
description: Week number or `current`.
- name: limit
in: query
required: false
schema:
type: integer
minimum: 1
maximum: 200
default: 100
description: ''
responses:
'200':
description: ''
content:
application/json:
schema:
type: object
properties:
chain:
type: integer
description: ''
season:
type: integer
description: ''
scope:
type: string
description: ''
week:
type:
- integer
- 'null'
description: ''
weekBounds:
type:
- object
- 'null'
properties:
from:
type: integer
description: Unix time, seconds, UTC.
to:
type: integer
description: Unix time, seconds, UTC.
seasonStart:
type: integer
description: Unix time, seconds, UTC.
currentWeek:
type: integer
description: ''
weekPool:
type: number
description: ''
rows:
type: array
items:
type: object
properties:
rank:
type: integer
description: ''
wallet:
type: string
pattern: ^0x[a-fA-F0-9]{40}$
description: EVM address, hex, case-insensitive.
points:
type: number
description: ''
basePoints:
type: number
description: ''
referralBonus:
type: number
description: ''
streakBonus:
type: number
description: ''
volumeUsd:
type: number
description: ''
trades:
type: integer
description: ''
daysActive:
type: integer
description: ''
tier:
type:
- string
- 'null'
description: ''
lastTradeTs:
type: integer
description: Unix time, seconds, UTC.
totalWallets:
type: integer
description: ''
totalPoints:
type: number
description: ''
totalVolumeUsd:
type: number
description: ''
indexedToBlock:
type:
- integer
- 'null'
description: ''
updatedAt:
type: integer
description: Unix time, milliseconds — when the server built this answer.
'400':
description: Invalid parameters — `error` names the check that failed (`INVALID_PARAMS`, `BAD_ADDRESS`, `BAD_LIMIT`, `BAD_HOURS`, …).
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'503':
description: The lane behind this endpoint is not ready or not enabled here (`NOT_READY`, `CHAIN_NOT_ENABLED`, `NOT_ENABLED`, `*_UNAVAILABLE`). Retry later; do not treat it as an empty answer.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
/points/wallet/{address}:
get:
tags:
- Points
operationId: pointsWallet
summary: One wallet's standing
description: Season and current-week points, rank, tier and volume for a wallet.
parameters:
- name: address
in: path
required: true
schema:
type: string
pattern: ^0x[a-fA-F0-9]{40}$
description: EVM address, hex, case-insensitive.
description: ''
responses:
'200':
description: ''
content:
application/json:
schema:
type: object
additionalProperties: true
description: '`{ chain, season, wallet, seasonStart, currentWeek, weekPool, season_: {points, basePoints, referralBonus, streakBonus, volumeUsd, trades, rank, tier, totalWallets}, week: {…} }`'
'400':
description: Invalid parameters — `error` names the check that failed (`INVALID_PARAMS`, `BAD_ADDRESS`, `BAD_LIMIT`, `BAD_HOURS`, …).
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'503':
description: The lane behind this endpoint is not ready or not enabled here (`NOT_READY`, `CHAIN_NOT_ENABLED`, `NOT_ENABLED`, `*_UNAVAILABLE`). Retry later; do not treat it as an empty answer.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
components:
schemas:
Error:
type: object
properties:
error:
type: string
description: Stable machine code, e.g. `INVALID_PARAMS`, `NOT_READY`, `RATE_LIMIT_EXCEEDED`.
message:
type: string
description: For humans.
statusCode:
type: integer
description: HTTP status, when included.
description: Every non-2xx body.
required:
- error
example:
error: INVALID_PARAMS
message: amount must be an integer string in the token's smallest unit
securitySchemes:
ApiKey:
type: apiKey
in: header
name: X-API-Key
description: Optional on every read. A key from getchord.xyz/developer raises the rate limit to your plan and meters usage per key. Required for `?only=` on quotes and for the Ask agent API.
Session:
type: http
scheme: bearer
description: A Google sign-in session minted by the app (`nts_…`). Only the browser surfaces use it; agents use `ApiKey`.