Bowhead

Market data

OHLC

Live

The canonical price series. History over REST. Live ticks and bars over WebSocket.

Bowhead reads price from Breach, the OHLC provider. Breach stores bars, repairs gaps, and streams ticks. This page is the contract: how a consumer loads history and how it stays live. It does not define primitives or strategies.

Feed

Public data API, no authentication. Origin https://feed.bowhead.trade. Current broker litefinance.

EndpointRole
GET /v1/healthLiveness
GET /v1/feed/litefinanceBroker, instance, live source, symbol list
GET /v1/feed/litefinance/symbolsSymbols only
GET /v1/feed/litefinance/ohlcv/{symbol}/{tf}Closed and forming bars
/v1/feed/litefinance/ws[/{symbol}]WebSocket — ticks and candle events

Bar

One object per period. Timestamps are Unix milliseconds. Volume may be zero on FX.

JSON

{
  "t": 1700000000000,
  "o": 1980.5,
  "h": 1985.2,
  "l": 1978.1,
  "c": 1983.4,
  "v": 1240
}

Symbols: XAUUSD XAGUSD EURUSD GBPUSD USDJPY GBPJPY NQ YM. Timeframes: 1m 5m 15m 1h 4h 1d 1w 1M.

Consumers use these names only. Broker-native aliases stay inside Breach.

History

HTTP

GET /v1/feed/litefinance/ohlcv/XAUUSD/1h?from=1700000000000&to=1710000000000&limit=500

from and to are Unix milliseconds. limit is 1…10000; omit it and the feed uses 10,000. The response is the latest bars inside the window, oldest to newest. Page older history by moving to before the first timestamp you received.

WebSocket

Open a socket. Do not send a handshake body. Frames are JSON. Keep the connection; if it drops, reconnect with backoff.

WebSocket

wss://feed.bowhead.trade/v1/feed/litefinance/ws/XAUUSD

Omit the symbol for the broker-wide socket: wss://feed.bowhead.trade/v1/feed/litefinance/ws.

Three shapes arrive. Discriminate on the fields, not on a type key.

Tick — every quote. Has b and a. Not a bar.

JSON

{
  "broker": "litefinance",
  "s": "XAUUSD",
  "b": 2345.12,
  "a": 2345.34,
  "t": 1700000000000
}

Kline — the forming or just-closed bar. Has o h l c and closed.

JSON

{
  "s": "XAUUSD",
  "tf": "1m",
  "t": 1700000000000,
  "o": 2345.0,
  "h": 2346.0,
  "l": 2344.0,
  "c": 2345.5,
  "v": 0,
  "closed": false
}

Close — the period ended. Discriminate on x equal to close. t is the period start of the bar that just closed.

JSON

{
  "x": "close",
  "s": "XAUUSD",
  "tf": "1m",
  "t": 1700000000000
}

How to use it

  1. Confirm the feed: GET /v1/feed/litefinance. Use the symbol list it returns.
  2. Seed the series with REST history for each symbol and timeframe you need.
  3. Open the WebSocket. Prefer the symbol socket when you are watching one instrument; it includes intra-bar kline updates (closed: false). Use the broker-wide socket when you want ticks and completed bars only — intra-bar klines are filtered there.
  4. Apply ticks to quote. Apply klines to the bar at t for that tf. When closed is true, or a close notice arrives, that bar is final.
  5. On disconnect, reconnect and, if the gap is large, re-seed from REST using from at the last closed timestamp.

Do not infer primitives from this feed. OHLC is price. ERL & IRL and later definitions are written under Primitives.