---
title: "List recent headlines"
method: GET
path: "/api/articles"
---

# List recent headlines

`GET /api/articles`

Newest-first headlines, optionally filtered by category. Cursor-paginate by passing the previous response's `next_before` + `next_before_id` back as `before` + `before_id`.

## Query parameters

- `category` string
- `limit` integer
- `before` string, date-time
- `before_id` string, uuid

## Response `200`

OK

- ArticlesResponse
  - `articles` Article[], required
    - `category` string, required
    - `description` string, nullable — Publisher-supplied summary, HTML-stripped + ≤500 chars.
    - `headline` string, required
    - `id` string, required
    - `image_height` integer, nullable
    - `image_url` string, uri, nullable
    - `image_width` integer, nullable
    - `published_at` string, date-time, required
    - `source` string, required
    - `url` string, uri, required — Publisher canonical URL — link out to this, not back to Noozra.
  - `count` integer, required
  - `next_before` string, date-time, nullable — Pass as `before` for the next page; null at the tail.
  - `next_before_id` string, uuid, nullable

## Other responses

- `400` — Unknown category slug (see /api/categories)
- `401` — Invalid API token
- `429` — Daily rate limit exceeded (honor the Retry-After header)

## Changes

- **2026-08-22** `3eea5c31bc3a` — 1 info
  - added the non-success response with the status `400`

[Change history](https://skmtc.dev/noozra/apis/noozra-news-api/changes/api/articles/get.md)

---

[API](https://skmtc.dev/noozra/apis/noozra-news-api.md) · [All operations](https://skmtc.dev/noozra/apis/noozra-news-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/noozra/noozra-news-api/revisions/3eea5c31bc3a/schema)
