API behaviour, limits and documentation. Newest first.
Index history, twenty years deep
Every Saudi Exchange index now returns its full series instead of three weeks. TASI starts at 2006-10-28 with 4,951 bars; the sector indices start at 2016.
Indices carry a name in /instruments — TISI resolves to Insurance, TSBI to Sukuk & Bonds Market Index.
MT30 and TTHI were withdrawn: the exchange serves no data for them.
Candlestick examples, and the other three surfaces
/docs/candles draws real bars for six intervals, with the request and the client code that produce each one.
The documentation now lists what history is not: live quotes, streaming and paper trading, right after the first request.
WebSocket streaming is live (Pro)
wss://api.tasi-api.com/api/v1/ws — subscribe to up to 20 symbols, receive a quote frame whenever the snapshot advances (~1s), instead of polling.
quote.data is the same object /quotes returns, plus sequence.
sequence is a string. It is an int64 above 2^53; parsed as a JSON number it would round in JavaScript and two frames would look identical.
Auth by X-API-Key, bearer, the second Sec-WebSocket-Protocol value (browsers), or a first auth frame within 5s. Never a query parameter.
Limits: 5 connections per key, 20 symbols per connection. Close codes 4401 (key), 4403 (plan), 4429 (limit), 1001 (restart).
Streaming usage now appears in the portal: messages, bytes, peak connections and peak symbols.
Free plan enforced end to end
Expired or never-subscribed accounts resolve to Free instead of 403 subscription_required: symbols 2222, 1120, 7010 and TASI.
New 403 symbol_not_entitled carries docs_url and upgrade_url.
New 429 rate_limited at 500 requests per day, resetting at 00:00 Asia/Riyadh, with Retry-After.
Free responses carry X-RateLimit-Limit, X-RateLimit-Remaining and X-RateLimit-Reset. Pro is not metered and sends none.
Paper portfolios: 1 on Free, 3 on Pro, with 409 portfolio_limit_reached.
API key creation and rotation no longer require an active subscription.
Documentation corrected: supported intervals are 1m, 5m, 15m, 30m, 1h, 1d; /history/{symbol} is available; WebSocket announced as coming soon (superseded on 2026-10-25: streaming shipped).
Pricing page added at /pricing.
Portal: design tokens and accessibility pass
Consistent spacing, type scale and focus states across the developer portal.
Example blocks gained a copy control sized for touch.
Historical bars and paper order engine
GET /history/{symbol} serves intraday bars aggregated server-side from the 1-minute series, plus daily bars with a quality flag.
Paper MARKET and LIMIT orders fill from market snapshots, with 409 stale_quote outside a 15-second window.
Earlier changes are in the repository history. For anything not listed here, the answer is the documentation.