Production reference

Live APIs

The endpoints on this page are deployed now. They share one machine-plan API key and one entitlement policy across transports.

REST data API

Base URL: https://api.umbrafeed.com. Send the API key in apikey or Authorization: Bearer. Query fields on history endpoints match their WebSocket actions; timestamps are Unix seconds and responses use the same typed wire messages.

MethodPathPurpose
GET/api/v1/data/symbols/searchSymbol and venue lookup; Free metadata is at least 10 minutes old.
GET/api/v1/data/schemasAuthoritative units, signs, keys and pagination semantics for every data.* tool.
GET/api/v1/data/history/priceSingle-venue price history.
GET/api/v1/data/history/spreadCross-venue spread history.
GET/api/v1/data/history/fundingFunding-differential history (Builder+).
GET/api/v1/data/history/spread-eventsRetained spread detection log; delayed one-hour lane on Free, wider history by plan.
GET/api/v1/data/history/splash-eventsRetained pump/dump detection log (Builder+).
GET/api/v1/data/history/funding-eventsRetained funding-dislocation log; advice-branded fields are never published and the neutral net-of-fees figures are declared but null (Builder+).
GET/api/v1/data/event-activityMarket-wide activity snapshot (Builder+).
GET/api/v1/data/dashboards/spreadTracked spread snapshot; 30s Builder, live Pro. Free uses delayed spread history.
GET/api/v1/data/dashboards/funding-overviewFunding overview snapshot (Builder+).
bash
curl -H "apikey: $UMBRA_API_KEY" \
  "https://api.umbrafeed.com/api/v1/data/history/price?symbol=BTC_USDT&exchange=binance&market=futures&end_time=$(date +%s)&limit=100"

Retained event logs

The three *-events routes return complete canonical umbra.spread.v1, umbra.splash.v1 or umbra.funding.v1 documents from the 30-day archive. Each request covers at most seven days and returns at most 500 events, newest first. The default page size is 200.

Pagination is lossless across equal timestamps. Keep start_time, end_time, filters and limit unchanged; when has_more is true, send the opaque next_cursor back as cursor. An empty page is the end of that fixed window. Do not decode or construct the cursor yourself.

bash
END_TIME=$(date +%s)
START_TIME=$((END_TIME - 86400))

curl -G -H "apikey: $UMBRA_API_KEY" \
  --data-urlencode "start_time=$START_TIME" \
  --data-urlencode "end_time=$END_TIME" \
  --data-urlencode "lifecycle=open" \
  --data-urlencode "limit=200" \
  "https://api.umbrafeed.com/api/v1/data/history/spread-events"
json
{
  "type": "spread_events_page",
  "items": [
    { "schema": "umbra.spread.v1", "event_type": "spread.opened", "instrument": { "symbol": "BTC_USDT" } }
  ],
  "has_more": true,
  "next_cursor": "<opaque base64url cursor>"
}

Two different history contracts

/history/spread, /history/price and /history/funding reconstruct one selected trajectory and page with end_time/next_end_time. The *-events routes scan every retained detection in a fixed window and page only with the opaque cursor contract.

MCP

Connect to POST https://api.umbrafeed.com/mcp. Builder and Pro receive eleven read-only data.* tools: schema discovery, symbol search, price/spread/funding trajectory history, retained spread/splash/funding event logs, event activity, spread dashboard and funding overview. Call data.get_schemas first for field units, signs, key formats and both pagination contracts. Free is intentionally rejected because MCP begins at Builder.

WebSockets

  • wss://api.umbrafeed.com/api/v1/data/ws — Builder/Pro market subscriptions and history actions.
  • wss://api.umbrafeed.com/api/v1/spreadbot/ws — canonical spread events; Builder OPENs are delayed 30 seconds, Pro is live.
  • wss://api.umbrafeed.com/api/v1/xbot/ws — canonical splash events (Builder+).
  • wss://api.umbrafeed.com/api/v1/fundingbot/ws — canonical funding events (Builder+).

Use a server-side client that can attach the API-key header. The browser WebSocket constructor cannot set arbitrary headers and keys must never be embedded in browser code.

Production edge access

Cloudflare skips Browser Integrity Check on the API hostname and the managed-WAF exception is limited to authenticated GET upgrades on these four paths. Standard server-side Python and Node clients reach Kong; invalid keys remain 401.

Customer webhooks

Builder and Pro configure one signed HTTPS endpoint from Profile → Developer. Management uses the dashboard session route /api/v1/auth/webhooks; event delivery is sent by Umbra, not polled through the public API.

Planned /v1 contract

The uniform /v1/{family}/recent|history|live pages in the planned reference describe a future serving layer. Do not use those URLs in production code yet.