Skip to content

Events

Events are the individual entries on a calendar — meetings, appointments, tasks, or any time-boxed item your agent needs to track.

By the end of this guide you will be able to create events on a calendar, list and filter them, query across an agent’s calendars, update event details, and delete events.

  • A Chronary account with an API key
  • At least one agent and calendar created (see the quickstart)
Terminal window
curl -X POST https://api.chronary.ai/v1/calendars/cal_x1y2z3/events \
-H "Authorization: Bearer chr_sk_your_key_here" \
-H "Content-Type: application/json" \
-d '{
"title": "Product demo with Globex Industries",
"start_time": "2026-04-10T15:00:00Z",
"end_time": "2026-04-10T16:00:00Z",
"description": "Walk through the new dashboard features and pricing tiers",
"status": "confirmed",
"metadata": {
"deal_id": "deal_9823",
}
}'

You can also create all-day events by setting all_day: true and providing dates without times:

{
"title": "Company offsite",
"start_time": "2026-04-15T00:00:00Z",
"end_time": "2026-04-17T00:00:00Z",
"all_day": true
}

Retrieve events for a specific calendar with optional filters.

Terminal window
curl "https://api.chronary.ai/v1/calendars/cal_x1y2z3/events?start_after=2026-04-07T00:00:00Z&start_before=2026-04-14T00:00:00Z&status=confirmed&limit=20" \
-H "Authorization: Bearer chr_sk_your_key_here"

Filter parameters:

| Parameter | Type | Description | |-----------|------|-------------| | start_after | ISO 8601 | Only events starting after this time | | start_before | ISO 8601 | Only events starting before this time | | status | string | Filter by status: confirmed, tentative, cancelled | | source | string | Filter by source: api, external_ical | | limit | integer | Results per page (default: 50, max: 200) | | offset | integer | Number of results to skip for pagination |

Query all events across every calendar owned by an agent. This is useful when an agent has multiple calendars and you need a unified view.

Terminal window
curl "https://api.chronary.ai/v1/agents/agt_a1b2c3d4/events?start_after=2026-04-07T00:00:00Z&limit=50" \
-H "Authorization: Bearer chr_sk_your_key_here"
Terminal window
curl https://api.chronary.ai/v1/calendars/cal_x1y2z3/events/evt_m1n2o3 \
-H "Authorization: Bearer chr_sk_your_key_here"

Only the fields you include in the request body are updated. Omitted fields remain unchanged.

Terminal window
curl -X PATCH https://api.chronary.ai/v1/calendars/cal_x1y2z3/events/evt_m1n2o3 \
-H "Authorization: Bearer chr_sk_your_key_here" \
-H "Content-Type: application/json" \
-d '{
"title": "Product demo with Globex Industries (rescheduled)",
"start_time": "2026-04-11T15:00:00Z",
"end_time": "2026-04-11T16:00:00Z"
}'
Terminal window
curl -X DELETE https://api.chronary.ai/v1/calendars/cal_x1y2z3/events/evt_m1n2o3 \
-H "Authorization: Bearer chr_sk_your_key_here"

All list endpoints return paginated results:

{
"data": [ ... ],
"total": 142,
"limit": 50,
"offset": 0
}

To fetch the next page, increment offset by limit:

GET /v1/calendars/cal_x1y2z3/events?limit=50&offset=50

The maximum limit is 200. The default is 50.

| Status | Code | Cause | |--------|------|-------| | 400 | invalid_time_format | start_time or end_time is not valid ISO 8601 | | 400 | end_before_start | end_time is earlier than start_time | | 403 | external_event_readonly | Attempted to edit/delete an event with source: "external_ical" | | 404 | calendar_not_found | The calendar ID does not exist | | 404 | event_not_found | The event ID does not exist on this calendar |