# list_stale_notices

Dated facts that ran out or need a new check.

`GET /v1/guides/{productId}/stale-notices` · MCP tool `list_stale_notices` · scope `read` · beta · since 2026-09-30

Status notices past their until date, fees and hours past validUntil, timetables that ran out, events whose dates have all passed, rows past their reviewBy date, and (with olderThanDays) facts not checked in that many days. Each entry names the spot, place, route or area and the field, so you can re-check it and update the row.

## Path parameters

- `productId` (string, required): Id of the guide (a product of type map). From list_guides or create_guide.

## Query parameters

- `olderThanDays` (number, optional): Also list statuses, fees, hours and factsCheckedOn older than this many days.

## Returns

200: StaleNotices.

- `productId` (string, required): The guide's id.
- `today` (string, required): The date the check ran for (YYYY-MM-DD).
- `count` (number, required): Number of notices.
- `notices` (array of StaleFact, required): Dated facts that ran out or need a new check.
  Fields of StaleFact: https://developers.sceniq.earth/fields/stale-fact.md

## Examples

### Dated facts that ran out

```bash
curl "https://sceniq.earth/api/v1/guides/j5738kd1q9x2m7v4c6b8n0p3r5t1w9y2/stale-notices" \
  -H "Authorization: Bearer $SCENIQ_API_KEY"
```

MCP `tools/call`:

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "list_stale_notices",
    "arguments": {
      "productId": "j5738kd1q9x2m7v4c6b8n0p3r5t1w9y2"
    }
  }
}
```

Response 200:

```json
{
  "productId": "j5738kd1q9x2m7v4c6b8n0p3r5t1w9y2",
  "today": "2026-09-29",
  "count": 3,
  "notices": [
    {
      "kind": "spot",
      "id": "k1736b344br1c7m8qk8ks4sfndxyyftj",
      "name": "Glacier Point",
      "field": "reviewBy",
      "reason": "review_due",
      "date": "2026-09-15",
      "detail": "facts were due for a new check on 2026-09-15"
    },
    {
      "kind": "place",
      "id": "km73j9h5g1f7d3s9a5p1p7j3v9y5t1r7",
      "name": "Old Faithful Inn",
      "field": "schedule",
      "reason": "ended",
      "date": "2026-09-27",
      "detail": "hours valid until 2026-09-27"
    },
    {
      "kind": "route",
      "id": "kx7f2h8j4k0k6z2x8c4v0b6n2m8q4w0e",
      "name": "Fairy Falls trail",
      "field": "status",
      "reason": "ended",
      "date": "2026-09-25",
      "detail": "the closed notice ran until 2026-09-25; update or clear it"
    }
  ]
}
```

### Also list facts not checked in the last 180 days

```bash
curl "https://sceniq.earth/api/v1/guides/j5738kd1q9x2m7v4c6b8n0p3r5t1w9y2/stale-notices?olderThanDays=180" \
  -H "Authorization: Bearer $SCENIQ_API_KEY"
```

MCP `tools/call`:

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "list_stale_notices",
    "arguments": {
      "productId": "j5738kd1q9x2m7v4c6b8n0p3r5t1w9y2",
      "olderThanDays": 180
    }
  }
}
```

Response 200:

```json
{
  "productId": "j5738kd1q9x2m7v4c6b8n0p3r5t1w9y2",
  "today": "2026-09-29",
  "count": 4,
  "notices": [
    {
      "kind": "spot",
      "id": "k1736b344br1c7m8qk8ks4sfndxyyftj",
      "name": "Glacier Point",
      "field": "reviewBy",
      "reason": "review_due",
      "date": "2026-09-15",
      "detail": "facts were due for a new check on 2026-09-15"
    },
    {
      "kind": "place",
      "id": "km73j9h5g1f7d3s9a5p1p7j3v9y5t1r7",
      "name": "Old Faithful Inn",
      "field": "schedule",
      "reason": "ended",
      "date": "2026-09-27",
      "detail": "hours valid until 2026-09-27"
    },
    {
      "kind": "route",
      "id": "kx7f2h8j4k0k6z2x8c4v0b6n2m8q4w0e",
      "name": "Fairy Falls trail",
      "field": "status",
      "reason": "ended",
      "date": "2026-09-25",
      "detail": "the closed notice ran until 2026-09-25; update or clear it"
    },
    {
      "kind": "spot",
      "id": "k17hdgc1c8j423kgq30t9x5hyv1tv8yb",
      "name": "Taft Point",
      "field": "factsCheckedOn",
      "reason": "not_checked_recently",
      "date": "2025-10-12",
      "detail": "last checked on 2025-10-12"
    }
  ]
}
```

## Errors

- `invalid_argument` (400): A required field is missing, a field is unknown, or a value does not match its type (the Convex validator's path and value are in the message).
- `unauthenticated` (401): The request carries no key. Send it as Authorization: Bearer sk_sceniq_... (or X-Api-Key).
- `invalid_api_key` (401): The key is unknown, revoked or expired.
- `forbidden` (403): The key belongs to a creator account that is no longer active.
- `not_found` (404): The id does not exist or belongs to another creator. The two answers are identical on purpose, so ids never reveal what exists.
- `rate_limited` (429): Over a limit: requests per key per minute, per creator per hour, uploads per key per minute, or check_links per guide per hour.
- `internal_error` (500): An unexpected failure. The message is hidden on purpose.

Reference: https://developers.sceniq.earth/reference/list_stale_notices
