CHANGELOG

What shipped, dated.

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.