What shipped and when, newest first. Major platform moments plus SDK/API-shape changes that could break your integration. For tiny tweaks, follow the commit log.
BREAKING2026-04-21
Free-tier limits rebalanced
- ›Monthly request cap on Data API Free drops from 2,500 → 1,000. Enough to evaluate the API and build a working prototype; production traffic belongs on Pro.
- ›Rate limit on Free drops from 300 req/min (5/sec) → 30 req/min (2/sec). Interactive tools and dashboards are unaffected; batch jobs and scrapers will hit 429 and should upgrade.
- ›No change to Pro, Business, or Enterprise tiers. Existing Free users keep their current quota for this billing period and rotate to the new limits on next renewal.
BREAKING2026-04-21
Webhook signature v2 (breaking) — timestamp + replay protection
- ›Webhooks now sign `${timestamp}.${body}` instead of just `${body}`. Two new headers: X-Katzilla-Timestamp (unix epoch ms) and X-Katzilla-Signature-Version: v2.
- ›Receivers verifying only the body — the v1 format — will start rejecting deliveries after this deploys. Update verification to hmac_sha256(secret, `${ts}.${body}`); full snippet in the docs under Event Triggers → Signature Verification.
- ›Rejects deliveries older than 5 minutes to block replay attacks. Any modern receiver clock is well within that window.
- ›Branch on X-Katzilla-Signature-Version to support both formats during a zero-downtime rollout.
- ›Through 2026-06-01, failed deliveries that hit 400/401/403 append a migration hint to the failure log pointing at the docs.
BREAKING2026-04-21
Webhook signing secrets are now show-once
- ›GET /v1/webhooks no longer returns the `secret` field. Only POST /v1/webhooks (creation) returns it, once. Existing webhook rows keep working — your receiver-side copy is unaffected — but the Katzilla UI will no longer re-display the secret on list pages.
- ›Lost a secret? Delete and recreate the webhook to rotate. Matches the Stripe/GitHub show-once pattern and closes an audit finding where a compromised session could silently exfiltrate HMAC keys.
- ›/workspace/scrape → Webhooks displays the secret in green once, right after creation, with a 'copy now — will not be shown again' note. Existing webhooks show a placeholder explaining the rotation policy.
FIXED2026-04-21
Webhook target URL hardening (SSRF / DNS rebinding)
- ›Webhook target_url validation at creation time now uses the shared SSRF guard — rejects IPv6 loopback/link-local, IPv4-mapped IPv6 pointing at private space, cloud metadata endpoints, and .internal / .local / .svc / .cluster.local DNS suffixes that the previous webhook-only helper missed.
- ›Dispatcher re-resolves DNS for each delivery and refuses to fan out if the hostname currently points at a private address. Closes the DNS-rebinding hole between creation (public at signup) and delivery (rebound to internal later).
- ›No developer action needed. Webhooks aimed at legitimate public endpoints continue to work; any that were accidentally targeting internal ranges will error cleanly instead of dispatching (check /v1/webhooks/:id/logs for the reason).
FIXED2026-04-21
/v1/compose + /v1/ask/compose now bill on the Ask product quota
- ›Both compose endpoints were using the legacy request_count counter, bypassing the per-product Ask quota that /v1/ask enforced. A user whose Ask quota was exhausted could still fan out compositions here. Closed.
- ›Same 402 + upgrade body is returned when your Ask tier is exhausted, regardless of which of the three endpoints you call.
- ›If you were relying on /v1/compose staying inside the legacy counter, you will start seeing 402 once you hit the Ask-tier monthly cap. Upgrade via the usual /workspace/billing flow.
ADDED2026-04-17
Katzilla Studio launch — Watch replaces the legacy dashboard
- ›New unified brand home at katzilla.dev with Studio shell across Data, Scrape, Watch, Ask, and Brief
- ›Full workspace surface: /workspace/{data,scrape,watch,ask,brief,keys,usage,billing,settings}
- ›Scrape cockpit ported to Watch with 7 tabs: Playground, Crawl, Batch, Schedules, Webhooks, Activity, Settings
- ›Brief subscription system with per-email-per-slug upsert + soft unsubscribe
- ›Admin surface at /admin: developers, usage, errors, audit, blog, surveys, announcements, marketing, data-browser, tickets, health, smoke, ask history
- ›Stripe checkout wired end-to-end with admin-proxied session creation; instant upgrade bypass for admin-role accounts
- ›One-click owner bootstrap resolves the KATZILLA_ADMIN_KEY chicken-and-egg for first-time setup
ADDED2026-04-09
SDK v0.2 — new query parameters and response fields
- ›Python and TypeScript SDKs support _page (pagination), _normalize (canonical field names), _units (metric/imperial), and _summary (aggregate stats)
- ›Response quality metadata now includes certainty_score (0.000–1.000) from the Truth Engine
- ›Cache-hit responses include cachedFree:true so your agent knows quota was not charged
- ›OpenAPI spec updated with all new parameters and response fields
- ›Backward compatible — existing SDK versions continue to work
ADDED2026-04-09
17 new government data endpoints
- ›Treasury FiscalData — interest rates, revenue, spending, securities (100+ datasets)
- ›Census Economic Indicators — monthly retail sales, construction, manufacturing
- ›NASA POWER, EONET, CNEOS — temperature/precip/solar + real-time natural events + near-Earth objects
- ›PubChem + RxNorm — chemical compound properties + drug name normalization
- ›NSF Awards + DOE OSTI — research grants + technical reports
- ›EPA ATTAINS — water quality assessments by state
- ›FEMA NFIP — flood insurance claims with flood zones
- ›CFPB HMDA — Home Mortgage Disclosure Act lending stats
- ›State Department Travel Advisories — advisory levels for every country
- ›NOAA Climate Data Online — historical weather observations (daily/monthly/yearly)
- ›USAJobs — federal job listings with salary + agency
- ›CMS Provider Data — Medicare ACO performance, hospital ratings, nursing homes
IMPROVED2026-04-09
Historical query caching
- ›Historical queries (dates older than 7 days) cached for 24 hours instead of 2–10 minutes
- ›Cache shared across all users — if another user queries the same historical dataset, it's a free cache hit with zero quota cost
- ›Immutable government data no longer re-fetched on every request
ADDED2026-04-08
Webhook dispatcher & data normalization
- ›Webhook dispatcher — register HTTP endpoints to receive HMAC-signed push notifications when data sources update
- ›Normalization layer standardizes field names, units, and date formats across all agent responses
- ›Trigger rules engine supports threshold conditions (e.g. magnitude > 6.0) for filtered event delivery
IMPROVED2026-04-08
Rate limiting & caching improvements
- ›Per-action rate limit (30 req/min) protects upstream government APIs
- ›Cache hits no longer count against your monthly request quota
- ›Rate limiter identifies users by API key before auth middleware runs — faster rejection of over-limit requests
ADDED2026-04-07
EU, UK, Canada, Australia data sources
- ›Eurostat (6 endpoints, no API key): GDP, unemployment, inflation, energy balance, trade, transport
- ›EU country portals: France, Germany, Netherlands, Italy, Finland, Poland, Portugal (CKAN-based)
- ›UK: data.gov.uk, UK Floods (Environment Agency), Land Registry house prices, DfT transport, DfE education, NHS England
- ›Canada: open.canada.ca, Bank of Canada rates, Environment Canada weather alerts, Health Canada drug database
- ›Australia: data.gov.au (100K+ datasets)
FIXED2026-04-07
Date range params, CFPB complaints
- ›10 endpoints where date/year params were silently ignored — treasury-debt, federal-register, imf-commodities, sipri, hud-fmr, hud-income-limits, fec-candidates, comtrade
- ›Treasury Debt now supports startDate/endDate filtering — data back to 1993
- ›IMF WEO now supports startYear/endYear — multi-year time series back to 1980
- ›CFPB Consumer Complaints enhanced with dateReceivedMin/Max, pagination, company and state filters
- ›Shared error sanitization layer catches all upstream 400s, credential errors, timeouts across all agents
FIXED2026-04-06
Circuit breaker & error handling overhaul
- ›Circuit breaker no longer trips on 400 client errors — only 5xx/network failures
- ›User-facing errors sanitized: internal details, API keys, and upstream URLs never exposed
- ›Upstream 400 errors return HTTP 400 with clear 'Invalid parameter value' message
- ›Backup API key failover: automatic swap to BACKUP_ prefix keys on 429/401/403
REMOVED2026-04-06
Removed unreliable data sources
- ›30+ endpoints with dead, retired, or bot-blocking upstream APIs
- ›PatentsView v1 (retired), LibreTranslate (requires key now), OFAC sanctions (decommissioned), NARA catalog (no JSON API)
- ›FAO FAOSTAT (persistent DNS/timeout issues), FBI UCR (upstream down), ITIS Taxonomy (timeout), volcano monitoring (blocks bots)
ADDED2026-04-05
Shared parameter validators across 82 agent actions
- ›Shared Zod validators in @katzilla/data-common: isoDate, isoMonth, year, usState, countryCode, latitude, longitude, fredSeriesId, blsSeriesId, limit, offset, searchQuery
- ›Migrated 82 agent action files to use shared validators
- ›Validators include .describe() with examples — flows through to OpenAPI spec and MCP tool definitions
ADDED2026-04-03
Katzilla Scrape v1
- ›New /scrape/page endpoint — one-URL scrape with markdown/html/text/screenshot/PDF output
- ›Crawl jobs — multi-page walks with depth, include/exclude paths, async progress tracking
- ›Batch scraping — up to 500 URLs per job
- ›Scheduled scrapes — recurring runs at 15min–1week intervals with on-change-only webhooks
- ›Separate subscription + quota from the Data API
- ›SSRF-safe URL validation + robots.txt enforcement on every call
ADDED2026-04-01
MCP server v1
- ›Model Context Protocol server at api.katzilla.dev/mcp
- ›One config line in Claude Desktop, Cursor, or Windsurf unlocks every agent action as a tool
- ›Tool filters: include/exclude by agent prefix, action id, or category
- ›Bearer token auth supported for MCP-native clients
ADDED2026-03-31
Admin panel v2
- ›Live developer + usage + errors dashboards
- ›Smoke test runner — every agent × action against the upstream with test params, results stored in kz_smoke_tests
- ›Incident manager with affected-user notification via support tickets
- ›Announcement broadcast to all developers or a plan segment
ADDED2026-03-28
Plans + Stripe checkout
- ›Free (2,500 req/mo) · Pro ($49/mo, 100K) · Business ($199/mo, 500K) · Enterprise tiers 2M/10M/50M
- ›Annual billing saves ~25% at every tier
- ›Stripe Checkout for self-serve upgrade, Customer Portal for management
- ›Webhook handles subscription created/updated/deleted → flips the developer's plan column
// older entries archived — email support@katzilla.dev if you need the full history for compliance
