Chord Points API

The Chord points program on Arc.

GitHub OpenAPI

Operations 3

GET /points/rules Points program rules #
GET /points/leaderboard Weekly or season leaderboard #
GET /points/wallet/{address} One wallet's standing #

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.
All 92 tools →

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

getchord-xyz-points-api-openapi.yml Raw ↑
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`.