API reference

Metadata

Normalized per-exchange reference data as `umbra.metadata.v1` points — funding rates, contract limits, 24h volume and deposit/withdraw status, each carrying its own freshness.

Planned /v1 event API

The /v1 endpoints documented here are the published event-API contract, but that serving layer is not deployed and these URLs return 404 today. The production machine rail is live separately at /api/v1/data, /mcp, and the authenticated family WebSocket routes. See Live APIs for endpoints that can be called now.

Every value is a `umbra.metadata.v1` point: `venue` + `instrument` + `kind`, a typed `value` block, and per-field freshness (`observed_at`, `source`, `stale`). Never assume a value is current — check `observed_at` / `stale`. This is the lowest-tier surface (reference data, not signal).

`{kind}` is one of `funding_rate`, `volume`, `contract_limits`, `transfers`; the `value` shape depends on it. `{exchange}` is the lowercase venue slug.

GET {exchange}

Normalized reference-data points of the given kind for one exchange.

GET/v1/meta/{kind}/{exchange}

Tier: Free (10m delayed) · Builder+ (live)

Query parameters

ParameterTypeDescription
kindreqpathfunding_rate | volume | contract_limits | transfers.
exchangereqpathLowercase venue slug, e.g. binance.

Response

json
// GET /v1/meta/contract_limits/binance
{
  "meta": { "trace": "c_4f2a…", "as_of": "2026-07-08T12:00:00.000Z", "count": 2 },
  "data": [
    { "schema": "umbra.metadata.v1", "venue": "binance", "market": "futures",
      "instrument": { "symbol": "BTC_USDT", "base": "BTC", "quote": "USDT" },
      "kind": "contract_limits",
      "value": { "max_position_usd": 2000000.0, "max_leverage": 125.0, "contract_size": 0.001 },
      "observed_at": "2026-07-08T11:59:30.000Z", "source": "bulk", "stale": false },
    { "schema": "umbra.metadata.v1", "venue": "binance", "market": "futures",
      "instrument": { "symbol": "ETH_USDT", "base": "ETH", "quote": "USDT" },
      "kind": "contract_limits",
      "value": { "max_position_usd": 1500000.0, "max_leverage": 125.0, "contract_size": 0.01 },
      "observed_at": "2026-07-08T11:59:30.000Z", "source": "bulk", "stale": false }
  ]
}

Event fields

Payloads are curated — only the fields below are exposed. New upstream fields never leak by default (allowlist policy). Every response carries a per-consumer trace watermark.

ParameterTypeDescription
venuestringLowercase venue slug.
marketstringspot | futures | dex the point describes.
instrumentobjectsymbol / base / quote.
kindstringfunding_rate | volume | contract_limits | transfers — determines the value shape.
valueobject?Typed metric: funding_rate → {rate_pct, interval_hours, next_settlement_at}; volume → {volume_24h_usd}; contract_limits → {max_position_usd, max_leverage, contract_size}; transfers → {deposit_enabled, withdraw_enabled}. Null when unknown.
observed_atstring?When the value was last observed at source, ISO-8601 UTC ms Z.
sourcestring?bulk | rest | ws — how the value was obtained.
staleboolTrue when older than its freshness budget — treat with caution.