Chord · Schema

Portfolio

One wallet on every chain in scope.

FinanceTradingArtificial IntelligenceCryptocurrency

Properties

Name Type Description
wallet string EVM address, lower-case.
sol stringnull The Solana address as given, or null.
asOf integer Unix time, milliseconds. When this answer was computed. A cached answer keeps its own `asOf`.
totals object
chains array In registry order, Solana last.
View JSON Schema on GitHub

JSON Schema

getchord-xyz-portfolio-schema.json Raw ↑
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/getchord-xyz/json-schema/getchord-xyz-portfolio-schema.json",
  "title": "Portfolio",
  "description": "One wallet on every chain in scope.",
  "x-generated": "2026-11-10",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/getchord-xyz-portfolio-api-openapi.yml#/components/schemas/Portfolio",
  "type": "object",
  "properties": {
    "wallet": {
      "type": "string",
      "pattern": "^0x[a-fA-F0-9]{40}$",
      "description": "EVM address, lower-case."
    },
    "sol": {
      "type": [
        "string",
        "null"
      ],
      "pattern": "^[1-9A-HJ-NP-Za-km-z]{32,44}$",
      "description": "The Solana address as given, or null."
    },
    "asOf": {
      "type": "integer",
      "description": "Unix time, milliseconds. When this answer was computed. A cached answer keeps its own `asOf`."
    },
    "totals": {
      "type": "object",
      "properties": {
        "valueUsd": {
          "type": "number",
          "description": "Sum of `valueUsd` over the chains that were read."
        },
        "cashUsd": {
          "type": "number",
          "description": ""
        },
        "pnl": {
          "type": "object",
          "properties": {
            "24h": {
              "$ref": "#/$defs/PortfolioWindow"
            },
            "7d": {
              "$ref": "#/$defs/PortfolioWindow"
            },
            "30d": {
              "$ref": "#/$defs/PortfolioWindow"
            }
          },
          "description": "Complete only when every chain in the answer is complete for that window, chains that could not be read included. `pct` is the sum of the chains' USD over the sum of their bases.",
          "required": [
            "24h",
            "7d",
            "30d"
          ]
        }
      }
    },
    "chains": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/PortfolioChain"
      },
      "description": "In registry order, Solana last."
    }
  },
  "$defs": {
    "PortfolioChain": {
      "type": "object",
      "properties": {
        "chain": {
          "type": [
            "integer",
            "string"
          ],
          "description": "EVM chain id, or `solana`."
        },
        "key": {
          "type": "string",
          "description": "Registry key (`monad`, `base`, …) or `solana`."
        },
        "name": {
          "type": "string",
          "description": ""
        },
        "status": {
          "type": "string",
          "enum": [
            "ok",
            "partial",
            "unavailable"
          ],
          "description": "`ok` = read. `partial` = balances read, part of the rest (prices, the tape, some tokens) not, and `reason` says which. `unavailable` = not read at all: in no total, every window without a number."
        },
        "reason": {
          "type": "string",
          "description": "Present unless `ok`. One plain sentence for a person."
        },
        "valueUsd": {
          "type": "number",
          "description": "Sum of the priced holdings, small balances included."
        },
        "cashUsd": {
          "type": "number",
          "description": "The part of `valueUsd` held in stablecoins."
        },
        "pnl": {
          "type": "object",
          "properties": {
            "24h": {
              "$ref": "#/$defs/PortfolioWindow"
            },
            "7d": {
              "$ref": "#/$defs/PortfolioWindow"
            },
            "30d": {
              "$ref": "#/$defs/PortfolioWindow"
            }
          },
          "description": "The chain's PnL per window.",
          "required": [
            "24h",
            "7d",
            "30d"
          ]
        },
        "coverage": {
          "type": "object",
          "properties": {
            "tapeFromTs": {
              "type": [
                "integer",
                "null"
              ],
              "description": "Unix time, milliseconds. First moment the chain's swap tape covers without a hole for this wallet. Null = no tape here."
            },
            "source": {
              "type": "string",
              "enum": [
                "tape",
                "tape+lake",
                "box"
              ],
              "description": "`tape` = Chord's raw tape of the chain; `tape+lake` = older days joined from Chord's history lake; `box` = Chord's Solana index."
            },
            "ingestFloorUsd": {
              "type": [
                "number",
                "null"
              ],
              "description": "Present on a chain whose tape does not record swaps under this many USD (BNB Chain: 100). Disclosed, not a hole: that chain's windows still count as complete, and a swap under the floor reads only as a price move or a transfer. Say so next to the numbers."
            }
          }
        },
        "holdings": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/PortfolioHolding"
          },
          "description": "Priced holdings worth at least $0.01, largest first, then the unpriced ones."
        },
        "dust": {
          "type": "object",
          "properties": {
            "count": {
              "type": "integer",
              "description": ""
            },
            "valueUsd": {
              "type": "number",
              "description": ""
            }
          },
          "description": "Priced holdings under $0.01, counted here and not listed."
        },
        "unpriced": {
          "type": "integer",
          "description": "Holdings with `priceUsd: null` (listed at the end of `holdings`)."
        }
      },
      "description": "One chain of a portfolio."
    },
    "PortfolioHolding": {
      "type": "object",
      "properties": {
        "address": {
          "type": [
            "string",
            "null"
          ],
          "description": "EVM token, lower-case. Null for the chain's native coin and on a Solana row (which carries `mint`)."
        },
        "mint": {
          "type": "string",
          "description": "Solana rows only: the mint, case kept."
        },
        "symbol": {
          "type": "string",
          "description": ""
        },
        "name": {
          "type": [
            "string",
            "null"
          ],
          "description": ""
        },
        "decimals": {
          "type": "integer",
          "description": "From the chain's list or the chain itself, never assumed."
        },
        "logo": {
          "type": [
            "string",
            "null"
          ],
          "description": ""
        },
        "native": {
          "type": "boolean",
          "description": "The chain's own coin (ETH, MON, AVAX, BNB, USDC on Arc, SOL)."
        },
        "stable": {
          "type": "boolean",
          "description": "A dollar stablecoin: counted in `cashUsd`, left out of PnL."
        },
        "amount": {
          "type": "string",
          "description": "Balance in whole tokens, as a decimal string."
        },
        "priceUsd": {
          "type": [
            "number",
            "null"
          ],
          "description": "Null = no price Chord trusts (no measured liquidity, not on the chain's board): listed last, in no total."
        },
        "valueUsd": {
          "type": [
            "number",
            "null"
          ],
          "description": "amount × priceUsd."
        },
        "change24hPct": {
          "type": [
            "number",
            "null"
          ],
          "description": "Percent."
        },
        "pnl": {
          "type": "object",
          "properties": {
            "24h": {
              "type": [
                "number",
                "null"
              ],
              "description": ""
            },
            "7d": {
              "type": [
                "number",
                "null"
              ],
              "description": ""
            },
            "30d": {
              "type": [
                "number",
                "null"
              ],
              "description": ""
            }
          },
          "description": "This token's part of each window's PnL, USD. Null = left out (a stablecoin, no price, no start price) or the chain's window is not complete.",
          "required": [
            "24h",
            "7d",
            "30d"
          ]
        }
      },
      "description": "One token a wallet holds on one chain."
    },
    "PortfolioWindow": {
      "type": "object",
      "properties": {
        "usd": {
          "type": [
            "number",
            "null"
          ],
          "description": "PnL over the window, USD. Null when the window is not complete."
        },
        "pct": {
          "type": [
            "number",
            "null"
          ],
          "description": "Percent (1.5 = +1.5 %) of the base: the value held at the window's start plus the USD bought in it. Null when that base is under one cent, or when the window is not complete."
        },
        "complete": {
          "type": "boolean",
          "description": "The swap tape covers the whole window with no known hole. False = `usd`, `pct` and `fromTs` are null: show a dash, never a number."
        },
        "fromTs": {
          "type": [
            "integer",
            "null"
          ],
          "description": "Unix time, milliseconds. Where the number starts: the window's start, aligned down to the hour. On `totals`: the latest start of the chains."
        }
      },
      "description": "PnL over one window by the window rule (see `GET /portfolio/{wallet}`).",
      "required": [
        "usd",
        "pct",
        "complete",
        "fromTs"
      ]
    }
  }
}

Work with this as data

Every JSON Schema 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 schemas

4 MCP tools reach this
  • find_json_schemasBrowse and filter every JSON Schema in the catalog.
  • 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 JSON Schema
curl "https://apis.io/api/v1/json-schemas/getchord-xyz-portfolio"
All schemas
curl "https://apis.io/api/v1/json-schemas?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.