Skip to main content

v1.2.5 — 20 April 2026

Status

Production. All 200 QA scenarios green. Ready for self-serve onboarding.

Added

  • POST /v1/keys/trial — public trial-key minting, IP rate-limited, idempotent per email.
  • POST /v1/keys/rotate and DELETE /v1/keys/current — full client-side key lifecycle.
  • GET /v1/me — identity and entitlements in one call, built for tier-aware UIs.
  • GET /v1/usage — per-window usage and remaining quota.
  • GET /v1/status — deep health with per-stream freshness SLOs and critical-stream rollup.
  • Watchlist analytics — 8-segment parity with topic analytics: trending, volume, volume-by-keyword, entities, platforms, narrative, posts, alerts.
  • GET /v1/watchlists/{id}/clusters — Know-tier cluster analytics on custom watchlists.
  • Evidence endpoints across all scopes: /clusters/{id}/posts, /entities/{name}/posts, /narratives/{snapshot_id}/posts.
  • Alert subscriptions with watchlist target type and sensitivity tiers (low, medium, high).
  • Typed error envelope on every non-2xx response with stable error codes.
  • Rate-limit headers (X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset) on every response.

Changed

  • OpenAPI served at /v1/openapi.json, rendered by Scalar at /v1/docs.
  • Swagger UI available at /v1/docs/swagger as a fallback.
  • Upgrade responses (403 upgrade_required) now carry feature, current_tier, required_tier for first-class upsell UX.

Removed

  • /v1/redoc (superseded by Scalar at /v1/docs).

Known quirks

  • DELETE /v1/keys/current on an already-revoked key returns 401 invalid_api_key rather than a 200 idempotent confirmation. This is by design — revoked keys cannot re-authenticate. If you need deterministic idempotency, check /v1/keys/current first and treat 401 as “already revoked”.

v1.2.0 — March 2026

Initial public beta. Three-tier architecture (Watch, See, Know) and the full topic analytics surface.