Schedule and manage meetings — the same feature as the web app's Meetings page. A meeting creates one task per participant, so these endpoints use the tasks:read / tasks:write OAuth scopes. Access follows the web app, not the workspace-wide default of the rest of this API: you see meetings in projects you created or are a member of (workspace owners and admins see every project), and anything you can't see answers 404. A recurring meeting appears once, carrying its latest occurrence.
GET
/meetings
Lists meetings you can see, ordered by their latest occurrence. Each item carries the occurrence date/time, the participant roster with each participant's task status, the link, location and recurrence rule.
Query parameters
projectIdintegeroptionalOnly meetings in this project
fromstringoptionalYYYY-MM-DD — only meetings whose latest occurrence is on or after this date
tostringoptionalYYYY-MM-DD — only meetings whose latest occurrence is on or before this date
orderstringoptionalasc (default) or desc, by occurrence start. Meetings with no remaining occurrence sort last
limitintegeroptionalPage size, default 25, max 100
offsetintegeroptionalNumber of results to skip, default 0
GET
/meetings/{id}
Returns one meeting. Readable by members of its project, workspace owners/admins, and leads. 404s — never 403 — for a meeting you can't see, one in another workspace, or an id that isn't a meeting.
POST
/meetings
Schedules a meeting: one task per participant (duplicates removed), each assigned to its participant and notified like any other assignment. You must be a member of the project (403 otherwise; 404 if the project isn't in your workspace), and every participant must be a project member (400). A recurring meeting additionally requires the lead role or a workspace owner/admin role (403 forbidden) and a plan that includes recurring tasks (403 forbidden_plan).
Body parameters
projectIdintegerrequiredProject the meeting belongs to
namestringrequiredMeeting title
descriptionstringoptionalAgenda or context
datestringrequiredYYYY-MM-DD
timestringrequiredHH:MM, 24-hour wall-clock time — the same for every viewer, not converted per timezone
participantIdsstring[]requiredUser ids to invite, at least one. Include your own id to attend
meetingLinkstringoptionalVideo call URL
locationstringoptionalRoom or address, max 200 characters
durationobjectoptional{ hours, minutes, days } — integers; defaults to 1 hour when omitted
Updates the latest occurrence for every participant at once, in a single transaction: reschedule it and/or set the link or location. Send at least one field. Past occurrences of a recurring meeting are left alone. Requires membership of the meeting's project (403 for a lead who can read it but isn't on the project).
Body parameters
datestringoptionalYYYY-MM-DD — move the occurrence to this date (time kept if not sent)
timestringoptionalHH:MM — move the occurrence to this time (date kept if not sent)
meetingLinkstring | nulloptionalSet the video call URL; null clears it
locationstring | nulloptionalSet the location; null clears it
DELETE
/meetings/{id}
Cancels a meeting: it disappears from lists and a recurring meeting stops generating new occurrences. Tasks already created for participants are kept. Requires the lead role or a workspace owner/admin role (403 otherwise).