API Documentation

⌘K

Streaming & Tick Plant

Eulerpool is the global gold standard for high-throughput market data. Last trade, NBBO, 1-second bars, and L2 are served from an in-memory tick plant — sub-millisecond origin lookups on REST, push fan-out on WebSocket, SSE, and gRPC.

Interfaces — same plant
wss://stream.eulerpool.com/v1/subscribeWebSocket — JSON or binary frames. Production hostname.
wss://api.eulerpool.com/v1/subscribeSame protocol on the API origin (works today).
GET /api/1/market/streamSSE transcoding — Go, curl, and anything that cannot speak WS.
grpc://api.eulerpool.com:50051Native gRPC MarketData.Subscribe. Proto in the backend repo.
GET /api/1/market/last-trade/:tickerHot REST. RAM lookup, no Postgres on a plant hit.
stream.py
from eulerpool import Eulerpool

client = Eulerpool("eu_prod_...")
for tick in client.stream.subscribe(["AAPL"], channels=["T", "Q"]):
    print(tick["ev"], tick.get("ticker"), tick.get("price"))

Subscribe protocol

Authenticate with ?token= or Authorization: Bearer. Then send JSON:

{"action":"subscribe","params":{"tickers":["AAPL","SAP.DE"],"channels":["T","Q","A","L2"]}}

Switch to binary frames (little-endian, magic EP) after connect:

{"action":"format","params":{"encoding":"binary"}}

Channels

T — every trade (price, size, ts in ms)
Q — quote / NBBO (bid, ask, sizes)
A — 1-second OHLCV bars (closed bar on roll)
L2 — book snapshot, then bid/ask deltas

Paid keys get live ticks. Free keys receive delayed 1-second aggregates. REST last-trade / last-quote / L2 read the plant first — Polygon is a cold fallback only. This is a market-data plane, not an order-entry venue.