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_test_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_test_your_key_here"

Filter parameters:

ParameterTypeDescription
start_afterISO 8601Only events starting after this time
start_beforeISO 8601Only events starting before this time
statusstringFilter by status: confirmed, tentative, cancelled
sourcestringFilter by source: api, external_ical
limitintegerResults per page (default: 50, max: 200)
offsetintegerNumber 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_test_your_key_here"
Terminal window
curl https://api.chronary.ai/v1/calendars/cal_x1y2z3/events/evt_m1n2o3 \
-H "Authorization: Bearer chr_sk_test_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_test_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_test_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.

StatusCodeCause
400invalid_time_formatstart_time or end_time is not valid ISO 8601
400end_before_startend_time is earlier than start_time
403external_event_readonlyAttempted to edit/delete an event with source: "external_ical"
404calendar_not_foundThe calendar ID does not exist
404event_not_foundThe event ID does not exist on this calendar