Changelog

Material product and API updates

2026-04-12 — Analytics endpoints

  • New: GET /v1/safety/:city/breakdown?state=XX — violent vs property crime rate split
  • New: GET /v1/safety/:city/trends?state=XX&years=5 — year-over-year safety scores (2022-2023 available, more years coming)
  • New: GET /v1/safety/compare?cities=SD:CA,Austin:TX — side-by-side city comparison with ranking (max 5 cities)
  • safety_scores table enriched with violent_crime_rate and property_crime_rate columns
  • safety_scores_history table populated with 15,505 rows across 2022-2023

2026-04-12 — Location endpoints + breaking changes

⚠️ BREAKING CHANGE: The state query parameter is now required on /v1/safety/:city and /v1/safety/county/:name. The /v1/safety/batch endpoint now accepts {"queries": [{"city", "state"}]} instead of the old {"cities": []} format.

  • New: GET /v1/safety/zip/:zipcode — look up safety by US zip code
  • New: GET /v1/safety/coordinates?lat=X&lng=Y — nearest zip-based lookup by coordinates
  • New: GET /v1/safety/state/:state — state-level aggregate (city count, average score, total population)
  • zip_codes table populated with ~42,700 US zip codes (Census TIGER ZCTA)
  • state query parameter mandatory on /v1/safety/:city and /v1/safety/county/:name to disambiguate cities like "Portland" (OR vs ME vs TX)
  • /v1/safety/batch request body changed from {cities:[]} to {queries:[{city,state}]}
  • comparison field in /v1/safety/:city response now reflects per-state average (not hardcoded California)

2026-04-10 — Trust foundation

  • Added Terms of Service, Privacy Policy, Acceptable Use Policy, DPA template
  • Added Methodology page with metropolitan ranking caveat
  • Added Sources, Coverage, Security pages
  • API response shape: every /v1/safety/* endpoint now includes a _meta object with data_year, data_coverage, primary_source, last_updated, methodology, and disclaimer fields. This is an additive change — existing clients are unaffected.

2026-04-10 — Nationwide data expansion

  • Expanded from California-only (457 cities) to 49-state nationwide coverage (~8,900 cities)
  • New columns on safety_scores: state, data_coverage, primary_source, fallback_used, last_updated
  • New empty tables for future use: safety_scores_history, zip_codes
  • Per-state percentile ranking (cities ranked against others in the same state)
  • Known limitation: Florida is not yet in the dataset (FBI NIBRS non-participation)
  • Existing endpoints unchanged — queries by city name still work, now return data from any US state

2026-04-10 — Monitoring and observability

  • New crimelayer-monitoring worker on a 5-minute cron schedule
  • Per-request metrics (latency, status, endpoint) written to Cloudflare Workers Analytics Engine
  • Anomaly detection with Slack webhook alerting
  • Admin metrics page at /dashboard/metrics (auto-refreshing every 10 seconds)

2026-04-09 — OAuth and Stripe billing

  • Google, GitHub, and Apple Sign-In support
  • Stripe subscription management with 7-day free trial
  • API key management (create, revoke, list)
  • Dashboard with usage tracking

2026-04-08 — Initial California MVP

  • Coverage: 457 California cities + 53 counties
  • Endpoints: /v1/safety/:city, /v1/safety/county/:name, /v1/safety/batch, /v1/stats
  • Rate limiting per plan tier
  • API key authentication via X-API-Key header

API Versioning Policy

CrimeLayer uses URL-path versioning (/v1/...). Within a major version, we commit to:

  • Additive changes only — new fields, new endpoints, new optional parameters
  • No silent breaks — removing or renaming fields/endpoints requires a new major version
  • Advance notice — major version transitions announced at least 90 days in advance via this changelog and via email to active API keys
  • Overlap period — old and new major versions run in parallel for at least 6 months

Subscribe

This page is the source of truth for API changes. Bookmark it or email [email protected] to be added to the changelog notification list.