POST · /v1/incidents/search

Search incidents

Return a paginated list of incidents, optionally filtered by updated time. Fictional endpoint on a fictional API — the structure is what matters.

Request

How to call it

Server

https://api.example.com

Authentication

Header X-API-Key: <your-key>. Rotate keys from your dashboard; there are no OAuth flows on this endpoint.

curl https://api.example.com/v1/incidents/search \
  --request POST \
  --header 'Content-Type: application/json' \
  --header 'X-API-Key: YOUR_SECRET_TOKEN' \
  --data '{
    "updated_from": "",
    "updated_to": "",
    "cursor": "",
    "limit": 100
  }'
import requests

resp = requests.post(
    "https://api.example.com/v1/incidents/search",
    headers={"X-API-Key": "YOUR_SECRET_TOKEN"},
    json={"limit": 100},
)
resp.raise_for_status()
for inc in resp.json()["data"]:
    print(inc["id"], inc["updated_at"])
const res = await fetch(
  "https://api.example.com/v1/incidents/search",
  {
    method: "POST",
    headers: {
      "Content-Type": "application/json",
      "X-API-Key": "YOUR_SECRET_TOKEN",
    },
    body: JSON.stringify({ limit: 100 }),
  },
);
const { data } = await res.json();
Body parameters

What you send

updated_from   string · date-time · nullable

Return incidents with updated_at at or after this time (ISO 8601). Timezone-naive values are treated as UTC.


updated_to   string · date-time · nullable

Return incidents with updated_at before this time (ISO 8601). Timezone-naive values are treated as UTC.


cursor   string · nullable

Opaque pagination cursor returned by the previous response. Omit to start from the beginning.


limit   integer · default 100 · max 500

Maximum number of results to return.

Responses

What comes back

A page of incidents plus a next_cursor for pagination.

{
  "data": [
    {
      "id": "inc_01HRZX...",
      "severity": "high",
      "status": "open",
      "updated_at": "2026-04-17T22:14:03Z"
    }
  ],
  "next_cursor": "eyJvIjoxNzE..."
}

Per-key rate limit exceeded. The Retry-After header tells you when to resume.

{
  "error": "rate_limited",
  "message": "Retry after 30 seconds."
}

Any other failure. error is a stable machine-readable code; message is for humans.

{
  "error": "invalid_request",
  "message": "`limit` must be between 1 and 500."
}
This page is ~130 lines of YAML

No OpenAPI runtime, no Scalar/Stoplight/Redoc dependency — just kazam components composed like any other page. Swap the endpoint, keep the shape.

Next up

Other example pages — docs, KBs, decks, landing pages, meeting briefs, dashboards from live data.