# PreReason Change Events Feed

> PreReason Change Events Feed is a paid API for AI agents from api.prereason.com, paid per call via x402, $0.01/call, status unknown (last checked 2026-10-16).

Returns a paginated page of change events (briefing state changes, release publications, company figure updates, news) since a given cursor, optionally filtered by company addresses, event types, and news kinds.

## Facts

- Endpoint: GET https://api.prereason.com/api/events?utm_source=zero.xyz
- Price: $0.01/call
- Payment: x402
- Status: unknown
- Last checked: 2026-10-16
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/prereason-change-events-feed-d218827c
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_DdzUVb9CByEwUmywo6Auc

Status and success rate cover calls made through Zero and Zero's own probes. Third-party monitors may report differently.

## How to call it through Zero

Zero handles the 402 payment challenge and records the run. With the Zero CLI installed (`npm i -g @zeroxyz/cli`):

```sh
zero fetch --capability prereason-change-events-feed-d218827c
```

Example prompt: Check PreReason for any new events since my last cursor 1718000000 — earnings releases, leadership changes, and material events — for these companies: 0xABC123, 0xDEF456, limit 50 results.

## When to prefer this

Use this endpoint when you need to poll for incremental changes — new events since a known point in time — across briefing states, company releases, and financial figures. It is the right choice when you are building a monitoring loop or change-detection pipeline for a set of tracked companies, rather than fetching a full snapshot of current data. The cursor-based pagination makes it suitable for reliable, stateless polling at regular intervals.

## Known failure modes

- Invalid cursor format (must be 1-18 digits) returns a 400 error
- More than 200 company addresses in ?companies= parameter returns an error
- Invalid event type or news kind enum value causes a 400 bad request
- Empty events array returned if no changes occurred since the given cursor
- Payment not processed (402) if x402 micropayment header is missing or incorrect

## How this service works

What changed since your last read: one page of PreReason's change events after a cursor. A briefing's state label, a tracked release, and, for the companies you name (?companies=, at most 200), newer figures, a situation turning on or filed news (?kinds= narrows it). Each event says what changed, when it happened, when PreReason knew it and where to fetch it, never a value. With no cursor it answers the last 24 hours; each answer's next_cursor is where the next read starts.

## Output

Returns a JSON object with an array of change events (each describing a state change, published release, updated company figures, or company news), a boolean has_more indicating if more pages exist, and a next_cursor string to use in the subsequent paginated request.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "$schema": "https://json-schema.org/draft/2020-12/schema",
 "required": [
  "input"
 ],
 "properties": {
  "input": {
   "type": "object",
   "required": [
    "type",
    "method"
   ],
   "properties": {
    "type": {
     "type": "string",
     "const": "http"
    },
    "method": {
     "enum": [
      "GET"
     ],
     "type": "string"
    },
    "queryParams": {
     "type": "object",
     "properties": {
      "kinds": {
       "type": "string",
       "description": "Company news kinds, comma separated, from earnings-release, material-event, leadership-change, ownership-report. Left out, every kind but ownership-report, which comes only when named."
      },
      "limit": {
       "type": "string",
       "pattern": "^[0-9]{1,3}$",
       "description": "Events a page holds, 1 to 100. Default 50."
      },
      "types": {
       "type": "string",
       "description": "Event types, comma separated, from state.changed, release.published, company.figures_updated, company.situation_changed, company.news. Every type when left out."
      },
      "cursor": {
       "type": "string",
       "pattern": "^[0-9]{1,18}$",
       "description": "The next_cursor of your previous read. Left out, the read starts 24 hours back."
      },
      "companies": {
       "type": "string",
       "description": "Company addresses, comma separated, at most 200. A company's events reach only a read that names it."
      }
     }
    }
   },
   "additionalProperties": false
  },
  "output": {
   "type": "object",
   "required": [
    "type"
   ],
   "properties": {
    "type": {
     "type": "string"
    },
    "example": {
     "type": "object"
    }
   }
  }
 }
}
```

## Response schema (JSON Schema)

```json
{
 "type": "json",
 "example": {
  "events": [],
  "has_more": false,
  "next_cursor": "0"
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/prereason-change-events-feed-d218827c/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from api.prereason.com](https://www.zero.xyz/host/api.prereason.com/llms.txt)
