GET /v1/catalog

Updated

What does GET /v1/catalog do?

The full schema: every venue, every column, its unit and the plan it unlocks on. The catalog is the machine-readable description of everything the API can return. An agent or SDK reads it once to discover which venues exist, which columns each row carries, the unit of each column, and the plan each column unlocks on.

It is the one endpoint that answers without an API key, so a client can discover the schema before it authenticates. A key still works and returns the same document.

Because the column set is derived from the same plan configuration the data endpoints enforce, the catalog is always in step with what a given key can actually read.

Authentication

No key required (public). Set $BF to the API base and pass your key in $BLACKFORGE_API_KEY.

Parameters

None. GET /v1/catalog takes no query parameters.

Example request

curl \
  "$BF/v1/catalog"

Example response

Real response, captured (trimmed for reading; values move every window)
{
  "venues": [
    {
      "venue": "binance",
      "minPlan": "free"
    },
    {
      "venue": "bitget",
      "minPlan": "pro"
    },
    {
      "venue": "bybit",
      "minPlan": "pro"
    },
    {
      "venue": "coinbase",
      "minPlan": "pro"
    },
    {
      "venue": "gate",
      "minPlan": "free"
    },
    {
      "venue": "kraken",
      "minPlan": "pro"
    },
    {
      "venue": "kucoin",
      "minPlan": "pro"
    },
    {
      "venue": "mexc",
      "minPlan": "free"
    },
    {
      "venue": "okx",
      "minPlan": "pro"
    }
  ],
  "metrics": [
    {
      "key": "exchange",
      "label": "Exchange",
      "family": "keys",
      "unit": "index",
      "quoteRelative": false,
      "nullable": false,
      "description": "The exchange the snapshot came from.",
      "plottable": false,
      "minPlan": "free"
    },
    {
      "key": "symbol",
      "label": "Symbol",
      "family": "keys",
      "unit": "index",
      "quoteRelative": false,
      "nullable": false,
      "description": "The trading pair the snapshot describes.",
      "plottable": false,
      "minPlan": "free"
    },
    {
      "key": "ts",
      "label": "Snapshot time",
      "family": "keys",
      "unit": "ms",
      "quoteRelative": false,
      "nullable": false,
      "description": "The time the 5-minute window closed.",
      "plottable": false,
      "minPlan": "free"
    },
    "… (120 metrics in all)"
  ]
}

Returns

A JSON object with a venues array (each venue and the lowest plan that can query it) and a metrics array (each column with its key, label, family, unit, and the plan it unlocks on).

Responses and errors

Status codes for /v1/catalog
StatusWhen
200Always, for any valid request. No key is required.
NoteThe interpretive read-hints the internal catalog carries are not part of the public contract and are not sold. Every column is a measurement, never a trade call.

Columns it returns

Each column is defined on its own page. Taker buy volume, Depth within 30 bps. See the full metric reference.

← All endpoints · How the data is measured · Pricing

See it on the pairs you actually trade

Tell us which exchanges and pairs you watch. We open a dashboard with your history already loaded. Private beta, no card.

9 exchanges · ~11,800 pairs · 120 columns per pair · 5-minute windows

Request access

Request access to the forge

BlackForge is in private beta: 9 spot exchanges and 120 columns per pair, for humans and agents. Drop your email and we’ll reach out when your access is ready.

Contact

Talk to us

Questions about coverage, the API or a plan. We read everything.

Prefer email? hello@blackforge.so

Cookies on BlackForge

We use strictly necessary storage to run this site and remember this choice. With your consent we also measure how the site is used, including session replay with every field you type masked, to improve the product. We load nothing optional until you allow it, and you can withdraw at any time. See our cookie policy.