---
title: "Historical incident archive (paid)"
method: GET
path: "/api/archive"
tags: ["history"]
---

# Historical incident archive (paid)

`GET /api/archive`

## Request

- Base URL: `https://cityalert.live`
- URL: `https://cityalert.live/api/archive`
- Auth: API key in header `x-api-key`

Every incident every feed has ever returned, queryable backwards in time — the monetizable surface. Requires `x-api-key` on a Developer or Pro plan; per-plan daily limits apply (Developer 5,000/day, Pro 50,000/day).

## Query parameters

- `source` string
- `region` string
- `category` 'crime' | 'fire' | 'disaster' | 'weather' | 'unrest' | 'health' | 'infra' | 'alert' | 'report'
- `bbox` string
- `from` string, date-time
- `to` string, date-time
- `limit` integer

## Response `200`

Archive rows, newest first

- object
  - `incidents` object[]
    - `id` string: Stable incident identifier (source-prefixed)
    - `source` string: Feed key that produced the incident
    - `category` 'crime' | 'fire' | 'disaster' | 'weather' | 'unrest' | 'health' | 'infra' | 'alert' | 'report'
    - `group` 'violent' | 'property' | 'vehicle-crime' | 'drug' | 'weapons' | 'sexual' | 'fraud' | 'disorder' | 'traffic' | 'police-ops' | 'crime-other' | 'wildfire' | 'structure-fire' | 'vehicle-fire' | 'alarm' | 'hazmat' | 'rescue' | 'fire-other' | 'earthquake' | 'flood' | 'storm' | 'tsunami' | 'volcano' | 'landslide' | 'disaster-other' | 'wind' | 'winter' | 'heat' | 'rain' | 'marine' | 'fog' | 'air-quality' | 'weather-other' | 'protest' | 'conflict' | 'unrest-other' | 'ems' | 'outbreak' | 'health-other' | 'collision' | 'outage' | 'road' | 'transit' | 'water' | 'infra-other' | 'evacuation' | 'amber' | 'shelter' | 'civil' | 'alert-other' | 'suspicious' | 'missing-person' | 'noise' | 'welfare' | 'hazard' | 'report-other': Normalized subtype within the category (e.g. 'collision', 'wildfire', 'missing-person') — assigned by the central classifier; every incident has one
    - `type` string: Source-specific incident type, e.g. 'earthquake' or 'Break and Enter'
    - `title` string
    - `description` string
    - `lat` number
    - `lon` number
    - `time` string, date-time: Reported time, ISO 8601
    - `severity` 'low' | 'medium' | 'high' | 'critical'
    - `url` string, uri
    - `region` string: Focus-region key when the point falls inside one
    - `nhood` string: Neighbourhood/area label when the feed provides one
    - `status` 'pending' | 'active' | 'resolved' | 'hidden': Community-report verification state (manual reports only)
    - `occurred` string, date-time: When the incident occurred (ISO 8601)
    - `first_seen` string, date-time
    - `last_seen` string, date-time
    - `times_seen` integer
  - `count` integer
  - `from` string, date-time, nullable
  - `to` string, date-time, nullable

## Other responses

- `400`: Invalid bbox or date range
- `401`: Missing or invalid x-api-key
- `403`: Key plan too low (Developer/Pro required)
- `429`: Daily plan limit reached

---

[API](https://skmtc.dev/cityalert/apis/cityalert-live-api.md) · [All operations](https://skmtc.dev/cityalert/apis/cityalert-live-api/llms.txt) · [OpenAPI document](https://skmtc.dev/cityalert/apis/cityalert-live-api/revisions/75ee240bd387?raw)
