---
title: "AI-law news headlines (filter, keyword, date range; newest-first)"
method: GET
path: "/news"
---

# AI-law news headlines (filter, keyword, date range; newest-first)

`GET /news`

## Request

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

The audited AI-regulation news feed (headline + short excerpt + publisher + source URL — never full article text). Free/anon get a TASTE: fewer results, shallow pagination, only the newest headlines (a recency window) and the excerpt withheld. Developer+ gets the full archive, high volume and the excerpt. meta.window shows the tier recency floor; meta.gated + meta.upgrade show what was limited.

## Query parameters

- `scope` 'state' | 'federal' | 'eu' | 'global'
- `jurisdiction` string
- `q` string
- `from` string, date
- `since` string, date
- `to` string, date
- `limit` integer
- `offset` integer

## Response `200`

A page of news headlines.

- object
  - `api_version` string
  - `data` NewsItem[]
    - `id` string, uuid
    - `scope` 'state' | 'federal' | 'eu' | 'global'
    - `jurisdiction` object
      - `slug` string
      - `name` string, nullable
    - `title` string, nullable: The headline.
    - `published_date` string, date, nullable
    - `source` string, nullable: The publisher name.
    - `url` string, nullable: The publisher's article URL (the source link).
    - `excerpt` string, nullable: Short summary — Developer+ only (withheld on the free/anon taste; NEVER full article text).
    - `fetched_at` string, date-time, nullable: Freshness stamp — Developer+ only.
    - `gated` boolean: Present (true) on the free/anon taste envelope — the excerpt is withheld behind a Developer key.
    - `attribution` string
  - `meta` object
    - `total` integer
    - `count` integer
    - `limit` integer
    - `offset` integer
    - `tier` string
    - `window` object: The recency gate applied to this response.
      - `tier` string
      - `recency_days` integer, nullable: null = full archive (Developer+).
      - `floor` string, date, nullable: Earliest published_date returned.
      - `clamped` boolean: true when the request reached older than the tier window.
    - `gated` string[]: What was limited for this tier (e.g. excerpt, recency, limit).
    - `upgrade` string

## Other responses

- `400`: Invalid parameter
- `429`: Rate limited
- `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)
