Meetings
Schedule, move, cancel and list meetings. They reach calendars and invite attendees.
- GET List meetings
- POST Schedule a meeting
- GET Get a meeting
- PATCH Change a meeting
- DELETE Delete a meeting
- POST Cancel a meeting
#List meetings
GET/api/v1/meetings
Soonest first for upcoming, most recent first for past. Not pageable: pagination.hasMore says whether more exist beyond limit.
| Parameter | In | Type | Notes |
|---|---|---|---|
window | query | upcoming | past | all | |
limit | query | integer |
curl https://synconone.com/api/v1/meetings \
-H "Authorization: Bearer sk_live_YOUR_KEY"{
"data": [
{
"id": "pr_1a2b3c4d5e6f7a8b",
"object": "string",
"title": "Annual plan renewal",
"status": "string",
"source": "agent",
"starts_at": "2026-11-05T10:00:00Z",
"ends_at": "2026-11-05T10:00:00Z",
"time_zone": "Australia/Sydney",
"location": "string",
"meeting_url": "https://example.com"
}
],
"pagination": {
"nextCursor": null,
"hasMore": false
}
}Errors: 401: Missing, invalid, revoked or expired API key. · 403: The key lacks the scope, or its role cannot do this. · 422: Validation failed. · 429: Rate limited. Honour Retry-After.. See errors.
#Schedule a meeting
POST/api/v1/meetings
Lands on the owner's connected calendar and invites the attendees, as in the app. Send notify: false to save it without telling anyone.
| Body field | Type | Notes |
|---|---|---|
title required | string | |
starts_at required | datetime | |
ends_at | datetime | Defaults to starts_at plus duration_minutes. |
duration_minutes | integer | |
time_zone | string | |
meeting_url | string | |
location | string | |
description | string | |
owner | string | Member user id. Defaults to the key's creator. |
person | string | |
company | string | |
lead | string | |
opportunity | string | |
attendees | list of object | |
notify | boolean | Put it on the owner's calendar and invite the attendees. False saves it quietly. |
curl -X POST https://synconone.com/api/v1/meetings \
-H "Authorization: Bearer sk_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"title":"Annual plan renewal","starts_at":"2026-11-05T10:00:00Z","ends_at":"2026-11-05T10:00:00Z","duration_minutes":30,"time_zone":"UTC"}'{
"data": {
"id": "pr_1a2b3c4d5e6f7a8b",
"object": "string",
"title": "Annual plan renewal",
"status": "string",
"source": "agent",
"starts_at": "2026-11-05T10:00:00Z",
"ends_at": "2026-11-05T10:00:00Z",
"time_zone": "Australia/Sydney",
"location": "string",
"meeting_url": "https://example.com"
}
}Errors: 401: Missing, invalid, revoked or expired API key. · 403: The key lacks the scope, or its role cannot do this. · 409: Conflict, approval required, or idempotent request in progress. · 422: Validation failed. · 429: Rate limited. Honour Retry-After.. See errors.
#Get a meeting
GET/api/v1/meetings/{id}
| Parameter | In | Type | Notes |
|---|---|---|---|
id required | path | string | Public id of the meeting. |
curl https://synconone.com/api/v1/meetings/pr_1a2b3c4d5e6f7a8b \
-H "Authorization: Bearer sk_live_YOUR_KEY"{
"data": {
"id": "pr_1a2b3c4d5e6f7a8b",
"object": "string",
"title": "Annual plan renewal",
"status": "string",
"source": "agent",
"starts_at": "2026-11-05T10:00:00Z",
"ends_at": "2026-11-05T10:00:00Z",
"time_zone": "Australia/Sydney",
"location": "string",
"meeting_url": "https://example.com"
}
}Errors: 401: Missing, invalid, revoked or expired API key. · 403: The key lacks the scope, or its role cannot do this. · 404: Not found, or not visible to this key. · 422: Validation failed. · 429: Rate limited. Honour Retry-After.. See errors.
#Change a meeting
PATCH/api/v1/meetings/{id}
Only the keys sent change. Moving it or changing the attendees tells them, unless notify is false. A cancelled meeting cannot be changed.
| Parameter | In | Type | Notes |
|---|---|---|---|
id required | path | string | Public id of the meeting. |
| Body field | Type | Notes |
|---|---|---|
title | string | |
starts_at | datetime | |
ends_at | datetime | |
time_zone | string | |
meeting_url | string | |
location | string | |
description | string | |
owner | string | |
attendees | list of object | Replaces the whole list. |
notify | boolean |
curl -X PATCH https://synconone.com/api/v1/meetings/pr_1a2b3c4d5e6f7a8b \
-H "Authorization: Bearer sk_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"title":"Annual plan renewal","starts_at":"2026-11-05T10:00:00Z","ends_at":"2026-11-05T10:00:00Z","time_zone":"Australia/Sydney","meeting_url":"https://example.com"}'{
"data": {
"id": "pr_1a2b3c4d5e6f7a8b",
"object": "string",
"title": "Annual plan renewal",
"status": "string",
"source": "agent",
"starts_at": "2026-11-05T10:00:00Z",
"ends_at": "2026-11-05T10:00:00Z",
"time_zone": "Australia/Sydney",
"location": "string",
"meeting_url": "https://example.com"
}
}Errors: 401: Missing, invalid, revoked or expired API key. · 403: The key lacks the scope, or its role cannot do this. · 404: Not found, or not visible to this key. · 409: Conflict, approval required, or idempotent request in progress. · 422: Validation failed. · 429: Rate limited. Honour Retry-After.. See errors.
#Delete a meeting
DELETE/api/v1/meetings/{id}
Removes it from every list and timeline. A meeting the AI agent booked with a visitor can be cancelled but not deleted.
| Parameter | In | Type | Notes |
|---|---|---|---|
id required | path | string | Public id of the meeting. |
notify | query | true | false | Tell the attendees it is off. Only a meeting a teammate made can be deleted. |
curl -X DELETE https://synconone.com/api/v1/meetings/pr_1a2b3c4d5e6f7a8b \
-H "Authorization: Bearer sk_live_YOUR_KEY"{
"data": {
"id": "pr_1a2b3c4d5e6f7a8b",
"object": "string",
"deleted": true,
"notice": "string"
}
}Errors: 401: Missing, invalid, revoked or expired API key. · 403: The key lacks the scope, or its role cannot do this. · 404: Not found, or not visible to this key. · 422: Validation failed. · 429: Rate limited. Honour Retry-After.. See errors.
#Cancel a meeting
POST/api/v1/meetings/{id}/cancel
The meeting stays on the record, marked cancelled. Cancelling twice changes nothing.
| Parameter | In | Type | Notes |
|---|---|---|---|
id required | path | string | Public id of the meeting. |
| Body field | Type | Notes |
|---|---|---|
notify | boolean | Tell the attendees it is off. |
curl -X POST https://synconone.com/api/v1/meetings/pr_1a2b3c4d5e6f7a8b/cancel \
-H "Authorization: Bearer sk_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"notify":true}'{
"data": {
"id": "pr_1a2b3c4d5e6f7a8b",
"object": "string",
"title": "Annual plan renewal",
"status": "string",
"source": "agent",
"starts_at": "2026-11-05T10:00:00Z",
"ends_at": "2026-11-05T10:00:00Z",
"time_zone": "Australia/Sydney",
"location": "string",
"meeting_url": "https://example.com"
}
}Errors: 401: Missing, invalid, revoked or expired API key. · 403: The key lacks the scope, or its role cannot do this. · 404: Not found, or not visible to this key. · 422: Validation failed. · 429: Rate limited. Honour Retry-After.. See errors.