---
title: "Full change timeline for one record"
method: GET
path: "/laws/{id}/history"
---

# Full change timeline for one record

`GET /laws/{id}/history`

## Request

- Base URL: `https://ai-law-tracker.com/api/v1`
- URL: `https://ai-law-tracker.com/api/v1/laws/{id}/history`
- Auth: one of:
  - none
  - API key in header `X-API-Key`
  - HTTP bearer

Every snapshot of the record (ascending observed_at), each with change_kind, changed_fields and the record values as of that snapshot. TIER-GATING: Developer+ only — anonymous/Free callers get 403 tier_upgrade_required. Lookback window climbs by tier: Developer 30 days, Pro 365 days, Business/Enterprise full history.

## Path parameters

- `id` string, uuid, required

## Response `200`

The record timeline.

- object
  - `api_version` string
  - `data` object
    - `record_id` string, uuid
    - `count` integer
    - `timeline` object[]
      - `observed_at` string, date-time
      - `change_kind` 'insert' | 'update'
      - `changed_fields` string[], nullable
      - `source_run_id` string, uuid, nullable
      - `record` Record
        - `id` string, uuid: Stable primary key (the /v1/laws/{id} path key).
        - `scope` 'state' | 'federal' | 'eu' | 'global'
        - `jurisdiction` object
          - `slug` string
          - `name` string, nullable
          - `abbr` string, nullable
        - `identifier` string, nullable
        - `title` string, nullable
        - `record_type` string, nullable
        - `status` string, nullable: Rich free-text status verbatim from the source.
        - `in_force` boolean, nullable: Set only where the source states it explicitly; else null.
        - `record_date` string, date-time, nullable
        - `summary` string, nullable
        - `source` string, nullable
        - `official_url` string, nullable: Primary/official (.gov) link where available.
        - `updated_at` string, date-time, nullable: Last CHANGED — advanced only on a real content diff.
        - `checked_at` string, date-time, nullable: Last VERIFIED — bumped every time the source was successfully re-checked, even when unchanged.
        - `attribution` string

## Other responses

- `404`: Not found
- `503`: Backend unavailable

---

[API](https://skmtc.dev/ai-law-tracker/apis/ai-law-tracker-public-laws-api.md) · [All operations](https://skmtc.dev/ai-law-tracker/apis/ai-law-tracker-public-laws-api/llms.txt) · [OpenAPI document](https://skmtc.dev/ai-law-tracker/apis/ai-law-tracker-public-laws-api/revisions/25403268a853?raw)
