# List calendar feeds

Source: https://workroad.app/docs/api/list-calendar-feeds

`GET https://workroad.app/api/v1/calendar-feeds`

The user's calendar feed addresses, oldest first, without the addresses themselves: those are shown only when issued. A user has at most 10. Never paged. Feeds are created and rotated in the app, under Settings → Calendar feeds.

- MCP tool: `listCalendarFeeds` on `https://workroad.app/api/mcp`
- Required scopes: settings:view and schedule:view
- Test mode: `GET https://workroad.app/api/test/v1/calendar-feeds` checks the request and returns the example response without changing anything.

## Response

`200` OK

- `data`: array of objects, required
  - `id`: string, required. The feed's id. Rotating a feed in the app gives it a new one.
  - `schedules`: array of objects or null, required. The schedules the feed covers, with null names for deleted ones. Null: every schedule kept in WorkRoad, plus tasks and exams.
    - `id`: string (uuid), required
    - `name`: string or null, required
  - `createdAt`: string (date-time), required. When the address was issued.
  - `lastUsedAt`: string (date-time) or null, required. When a calendar app last fetched it, or null.

### Example

```json
{
  "data": [
    {
      "id": "kq0V3mJ8yQe7Lw2nR5tXcB1dF4gH6jK9",
      "schedules": [
        {
          "id": "8c2b5a1e-7d4f-4e3a-9b6c-1f0e2d3c4b5a",
          "name": "Year 12 timetable"
        }
      ],
      "createdAt": "2026-01-15T09:30:00.000Z",
      "lastUsedAt": "2026-02-01T12:00:00.000Z"
    }
  ]
}
```

## Errors

Every error has the body `{ "error": { "code", "message", "details" } }`.

- `400`: Invalid request body or query
- `401`: Missing, invalid, disabled or expired API key
- `403`: The API key lacks the required scope
- `404`: No endpoint exists at this path.
- `405`: Method not allowed. Use a method from the Allow header.
- `429`: Rate limit exceeded. Wait for Retry-After before retrying. The rate-limit headers are absent when the key's own limiter rejected the request before the per-endpoint bucket check ran.
- `500`: Internal server error
