Deze referentie is alleen in het Engels. Naar het Nederlandse REST API-overzicht

Diese Referenz gibt es nur auf Englisch. Zur deutschen REST-API-Übersicht

Cette référence existe uniquement en anglais. Aller à la présentation de l'API REST en français

Esta referencia solo está en inglés. Ir a la introducción de la API REST en español

GET/events

List events

GEThttps://<your-url>/api/v2/events

MCP id events.indexAlso on this path: POST Create an event

View as Markdown openapi.json

Returns agenda events, latest start first.

Access

Token scope
api:read:events

Without it: 403 insufficient-token-scope.

Permission
events::manage_self

Without it: 403 insufficient-permission.

Rate cost
1 unit, read bucket. view=detail makes it 3. Adds: with_total=1 +2, each include +1, q +2.
Also
If-None-Match answers 304 when nothing changed. Never cached: private, no-store. Unknown query parameters are refused, never ignored.

Both are checked, scope first. A token never does more than its user. How access is checked

A caller sees only their own events unless they hold events::manage_for_others, and filter[user_id] defaults to the calling user even then; pass filter[user_id]=me,<id> to widen it, which requires that permission. Fetch one window of the calendar with filter[start][gte] and filter[start][lte]. A recurring master is one row: its occurrences are generated from recurrence_frequency, recurrence_interval, selected_weekdays and recurrence_exceptions and are not returned individually, except where plnnrly has separated one into a row of its own (those rows carry parent_event_id). meta.page.total is only computed when you ask for it with with_total=true. Deleted events are excluded unless you pass trashed=with or trashed=only.

Query parameters

Unknown parameters are refused with 400, naming the parameter.

48 parameters in 7 groups

Views

viewstring

Which field set to render.

summarydefaultdetail

Pagination

Cursor pagination only. Follow links.next.

per_pageinteger1 to 100

Rows per page. At most 25 when include names a to-many relation; a larger value is 400 invalid-query-parameter.

Default: 25

cursorstring

Opaque keyset cursor from a previous page's links.next. Never construct one by hand.

with_totalboolean

Whether meta.page.total is counted for this request.

Default: false

Filters

=
equals
[in]
any of a comma-separated list
[null]
true or false: whether it is empty
[gte][lte][lt]
at least, at most, less than
[ne]
not equal
filter[created_at]timestamp (YYYY-MM-DDThh:mm:ssZ)=[gte][lt]

Creation timestamp. Pair with sort=id for a stable full export.

filter[end]timestamp (YYYY-MM-DDThh:mm:ssZ)=[gte][lte]

When the event ends.

filter[is_all_day]boolean

Whether the event occupies whole days rather than a time range.

filter[is_recurring]boolean

Whether the event is the master of a recurring series.

filter[occurrence_date]date (YYYY-MM-DD)=[gte][lte][null]

The series date a separated occurrence replaces.

Whether the field is null.

filter[parent_event_id]integer=[in][null]

Master event of a separated occurrence. null selects everything that is not a separated occurrence.

A comma-separated list of at most 100 values.

filter[recurrence_end]timestamp (YYYY-MM-DDThh:mm:ssZ)=[gte][lte][null]

Last moment a series may generate an occurrence. null selects the open-ended series.

Whether the field is null.

filter[recurrence_frequency]string=[ne][in]

The unit a recurring series repeats in.

A comma-separated list of at most 100 values.

dayweekmonthyear

New values may be added.

filter[recurrence_pattern]string=[ne][in]

How a monthly or yearly series positions its occurrence within the month.

A comma-separated list of at most 100 values.

day_of_monthweekday_occurrence

New values may be added.

filter[recurrence_start]timestamp (YYYY-MM-DDThh:mm:ssZ)=[gte][lte][null]

First moment a series may generate an occurrence.

Whether the field is null.

Sorting

sortstring

Up to three keys, comma-separated, each optionally prefixed with - for descending.

Default: start

KeySorts by
startWhen the event starts, latest first.
endWhen the event ends.
titleEvent title, alphabetically.
occurrence_dateThe series date a separated occurrence replaces.
recurrence_startFirst moment a series may generate an occurrence.
recurrence_endLast moment a series may generate an occurrence.
recurrence_frequencyThe unit a series repeats in, in the order day, week, month, year.
idId, ascending. An id never changes, so use this for a stable full export.
updated_atLast-write timestamp; pair with the id tiebreaker for sync.

Prefix a key with - for descending.

Includes

includestring

Comma-separated names to inline, at most five.

PathAddsCost
userThe user whose agenda this event is on.+1

Other

trashedstring

Whether soft-deleted rows are included.

withoutdefaultwithonly

Request headers

X-Request-Idstringpattern

A correlation id of your own. It is recorded in our logs next to the server's request id but never returned: the response header always carries the server's id. A value that does not match the pattern is discarded silently, never rejected.

If-None-Matchstring

The ETag a read is conditional on. A match is answered 304 with no body.

Response 200

Returns a page of EventList rows.

dataarray of EventList

The rows, each a EventList.

per_page, next_cursor, prev_cursor, total.

Each row is a EventList: 20 fields.

Headers

ETag
A weak validator (W/"…") of the rendered page.
RateLimit
The IETF httpapi-ratelimit-headers form of your remaining allowance on the tightest bucket this request touched.
RateLimit-Policy
The ceiling and window of that bucket, as <limit>;w=<seconds>.
X-Request-Id
The server-generated ULID correlating this response with our logs.

Every response also carries Cache-Control, Vary, X-Content-Type-Options, X-Plnnrly-Api-Version, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset. Headers and versioning

Errors

8 errors every operation can return: 304, 400, 401, 404, 406, 429, 500, 503

This path allows GET, POST. Anything else answers 405.