Skip to content
AI 24 UpdatesAI 24Updates

API Documentation

Public JSON API — v1

Live documentation — reflects actual deployed API

Overview

All endpoints are unauthenticated and read-only. Only published issues and updates are returned — drafts and unpublished content are never exposed. No API key is required.

Base URLhttps://ai24-updates.vercel.app/api/v1
FormatJSON
AuthenticationNone — public read-only
PaginationCursor-based (stable, described below)
TimestampsISO 8601 UTC
Rate limitsNo rate limits currently; please be respectful

Also available:

  • OpenAPI 3.1 spec: https://ai24-updates.vercel.app/openapi.json
  • RSS Feed: https://ai24-updates.vercel.app/feed.xml
  • Issue Markdown: https://ai24-updates.vercel.app/updates/{}slug.md (internally served from https://ai24-updates.vercel.app/updates/{}slug/md)
  • LLM navigation hints: https://ai24-updates.vercel.app/llms.txt

Cursor Pagination

All list endpoints use stable cursor pagination. Pass the next_cursor value from any response as the cursor query parameter in the next request.

For /api/v1/issues, the cursor is an ISO 8601 UTC scheduled_at timestamp. Issues are returned with scheduled_at < cursor (strictly before, newest first).

For /api/v1/updates and /api/v1/search, the cursor encodes both the issue's scheduled time and the update's position within the issue, in the format <scheduled_at>__<position>.

When has_more is false, you have reached the end of the result set.

Errors

All errors return JSON with a consistent shape:

{
  "error": "Human-readable description",
  "code": "machine_readable_code"
}

Common HTTP status codes: 400 (bad request / invalid params), 404 (not found), 500 (server error).

Endpoints

GET/api/v1/issues

List published issues, newest first. Supports cursor pagination and optional Budapest calendar-date filter.

Query Parameters

limitintegerNumber of issues to return. Default: 20. Max: 100.
cursorISO timestampReturn issues strictly before this scheduled_at timestamp.
dateYYYY-MM-DDFilter by Budapest calendar date. Returns all matching issues (no cursor applied when date is set).

Response

{
  "issues": [
    {
      "slug": "2026-10-29-1400",
      "scheduled_at": "2026-10-29T13:00:00Z",
      "published_at": "2026-10-29T13:07:00Z",
      "updated_at": "2026-10-29T13:07:00Z",
      "is_no_updates": false,
      "cover_url": "https://ai24-updates.vercel.app/api/covers/2026-10-29-1400",
      "correction_note": null,
      "update_count": 3
    }
  ],
  "next_cursor": "2026-10-29T11:00:00Z",
  "has_more": true
}
GET/api/v1/issues/[slug]

Retrieve a single published issue by slug, including ordered updates, facts, and official sources. Returns 404 for unpublished or missing issues.

Response

{
  "slug": "2026-10-29-1400",
  "scheduled_at": "2026-10-29T13:00:00Z",
  "published_at": "2026-10-29T13:07:00Z",
  "updated_at": "2026-10-29T13:07:00Z",
  "is_no_updates": false,
  "cover_url": "https://ai24-updates.vercel.app/api/covers/2026-10-29-1400",
  "correction_note": null,
  "updates": [
    {
      "id": "event-001",
      "title": "Example Company announces new API capabilities",
      "summary": "Example Company introduced additional API functionality.",
      "facts": ["The company announced new API functionality."],
      "sources": [
        { "label": "Official Announcement", "url": "https://example.com/announcement" }
      ],
      "url": "https://ai24-updates.vercel.app/updates/2026-10-29-1400#event-event-001"
    }
  ]
}
GET/api/v1/updates

List published updates (events) ordered by issue scheduled time descending, then by position within issue. Each update includes its parent issue info and a direct anchor URL.

Query Parameters

limitintegerNumber of updates to return. Default: 20. Max: 100.
cursorstringCursor from previous next_cursor. Format: "<scheduled_at ISO>__<position>".

Response

{
  "updates": [
    {
      "id": "event-001",
      "title": "Example Company announces new API capabilities",
      "summary": "Example Company introduced additional API functionality.",
      "facts": ["The company announced new API functionality."],
      "sources": [
        { "label": "Official Announcement", "url": "https://example.com/announcement" }
      ],
      "issue_slug": "2026-10-29-1400",
      "issue_scheduled_at": "2026-10-29T13:00:00Z",
      "issue_url": "https://ai24-updates.vercel.app/updates/2026-10-29-1400",
      "url": "https://ai24-updates.vercel.app/updates/2026-10-29-1400#event-event-001"
    }
  ],
  "next_cursor": "2026-10-29T13:00:00Z__3",
  "has_more": true
}
GET/api/v1/search

Full-text search over published updates using PostgreSQL FTS. Results ordered by issue recency. Returns the matched query in the response.

Query Parameters

q*stringSearch query. Required. Supports natural language (websearch mode). Max: 200 chars.
limitintegerNumber of results to return. Default: 20. Max: 100.
cursorstringCursor from previous next_cursor. Format: "<scheduled_at ISO>__<position>".

Response

{
  "results": [
    {
      "id": "event-001",
      "title": "Example Company announces new API capabilities",
      "summary": "Example Company introduced additional API functionality.",
      "facts": ["The company announced new API functionality."],
      "sources": [
        { "label": "Official Announcement", "url": "https://example.com/announcement" }
      ],
      "issue_slug": "2026-10-29-1400",
      "issue_scheduled_at": "2026-10-29T13:00:00Z",
      "issue_url": "https://ai24-updates.vercel.app/updates/2026-10-29-1400",
      "url": "https://ai24-updates.vercel.app/updates/2026-10-29-1400#event-event-001"
    }
  ],
  "next_cursor": "2026-10-29T13:00:00Z__1",
  "has_more": false,
  "query": "API capabilities"
}

Field Reference

Fields never exposed in any public endpoint:

  • approved_by — internal admin user UUID
  • status — only published issues are returned; the field is not included
  • cover_path — raw storage path; a served cover_url is returned instead
  • payload_hash — internal idempotency field