---
title: "List calendars for an agent"
method: GET
path: "/v1/agents/{agent_id}/calendars"
tags: ["Calendars"]
---

# List calendars for an agent

`GET /v1/agents/{agent_id}/calendars`

## Request

- Base URL: `https://api.chronary.ai`
- URL: `https://api.chronary.ai/v1/agents/{agent_id}/calendars`
- Auth: HTTP bearer

## Path parameters

- `agent_id` string, required: Agent ID

## Query parameters

- `include` 'all'
- `limit` integer
- `offset` integer, nullable

## Response `200`

List of calendars

- CalendarList
  - `data` Calendar[], required
    - `id` string, required
    - `orgId` string, required
    - `agentId` string, nullable, required
    - `name` string, required
    - `timezone` string, required
    - `metadata` object, required
    - `externalId` string, nullable, required: Provider calendar ID when bridged to an external provider (Phase 3); null otherwise.
    - `provider` string, nullable, required: External provider this calendar is bridged to (google | microsoft | apple); null otherwise.
    - `deletedAt` string, date-time, nullable, required
    - `createdAt` string, date-time, required
    - `updatedAt` string, date-time, required
    - `agent_status` 'idle' | 'working' | 'waiting' | 'error', required
    - `default_reminders` integer[], nullable, required: Default reminder offsets (minutes before start) inherited by events that don't set their own. null = use the system default (10 min); [] = no reminders.
    - `ical_url` string, uri, required
  - `total` integer, required
  - `limit` integer, required
  - `offset` integer, required

## Other responses

- `401`: Unauthorized — missing or invalid API key
- `404`: Resource not found
- `429`: Rate limited — 10 requests per second per key exceeded
- `500`: Internal server error

---

[API](https://skmtc.dev/chronary/apis/chronary-api.md) · [All operations](https://skmtc.dev/chronary/apis/chronary-api/llms.txt) · [OpenAPI document](https://skmtc.dev/chronary/apis/chronary-api/revisions/0d1a330294ae?raw)
