🔑 Authentication

All REST and WebSocket endpoints require an API key passed as Authorization: Bearer YOUR_KEY.

# Example request curl -H "Authorization: Bearer sk_live_..." \ https://api.options.bpleone.com/v1/quotes/NVDA
📊 Quotes API
GET /v1/quotes/:symbol
GET /v1/quotes/batch?symbols=NVDA,AAPL,SPY
Response: { "symbol": "NVDA", "last": 138.27, "bid": 138.26, "ask": 138.28, "change": 4.31, "changePct": 3.21, "volume": 248400000, "prevClose": 133.96, "ts": "2026-05-13T14:32:18.000Z" }
🌐 WebSocket Feed

Real-time tick stream. Subscribe to symbols you care about; server only sends matching updates.

WSS wss://api.options.bpleone.com/v1/stream
// Browser example — mirrors the in-site Feed module const ws = new WebSocket('wss://api.options.bpleone.com/v1/stream'); ws.onopen = () => { ws.send(JSON.stringify({ action: 'subscribe', symbols: ['NVDA', 'SPY', 'QQQ'] })); }; ws.onmessage = (e) => { const tick = JSON.parse(e.data); console.log(tick.symbol, tick.last, tick.changePct); };
⛓️ Options Chain
GET /v1/options/chain/:symbol?expiry=2026-06-20
Response: { "symbol": "NVDA", "expiry": "2026-06-20", "underlying": 138.27, "strikes": [ { "strike": 140, "call": { "bid": 4.20, "ask": 4.30, "mid": 4.25, "vol": 4200, "oi": 22400, "iv": 38.4, "delta": 0.52, "gamma": 0.028, "theta": -0.087, "vega": 0.142 }, "put": { /* mirror */ } } ] }
🧮 Black-Scholes Calculator
POST /v1/calc/bs
Body: { "type": "call", "S": 138.27, // spot "K": 145, // strike "T": 0.104, // years to expiry "r": 0.045, // risk-free rate "sigma": 0.384 // implied vol } Response: { "price": 3.85, "delta": 0.38, "gamma": 0.024, "theta": -0.082, "vega": 0.142, "rho": 0.084 }
⚡ Signals API
GET /v1/signals?type=macd-cross&min_score=80
GET /v1/signals/today/:symbol
Response: { "signals": [ { "id": "sig_a82f1", "ts": "2026-05-13T14:32:18.000Z", "symbol": "NVDA", "type": "macd-cross", "bias": "bull", "score": 94, "context": { /* indicator readings */ } } ] }
🪝 Webhooks

Subscribe an HTTPS endpoint and we'll POST events as they fire. Supported events: signal.created, trade.published, flow.unusual.

POST /v1/webhooks
Body: { "url": "https://your-server.com/hook", "events": ["signal.created", "trade.published"], "filters": { "symbols": ["NVDA", "SPY"], "min_score": 80 } }

Each delivery is signed with HMAC SHA-256. Verify the X-Bpleone-Signature header using your webhook secret.

⏱ Rate Limits
TierREST (req/min)WS ConcurrentWebhook Events/day
Free601100
Pro600510,000
Desk3,00025unlimited