POST
/meetings//cancel
Cancel a meeting and run all cancellation side effects. Works on any meeting belonging to your client.
When cancelled, Nexor:
- Cancels the lead’s and host’s pending reminders.
- Notifies the host and sends the lead a cancellation email.
- Deletes the external calendar event and frees the availability slot.
- Logs a
meeting_cancelled timeline activity.
- Fires a
meeting.cancelled outbound webhook and, when configured, triggers the re-engage agent.
Meetings owned by an external provider that Nexor doesn’t control (e.g. an inbound-only Calendly invitee) are not cancelled — the response returns "skipped": true.
Path parameters
| Param | Type | Description |
|---|
id | string (uuid) | The meeting ID — from the POST /meetings response or GET /leads/{id}/meetings. |
Request Body
| Field | Type | Required | Description |
|---|
reason | string | No | Stored as cancellation_reason; included in the lead/host notifications. |
Idempotency
Cancelling a meeting that is already cancelled is a safe no-op ("idempotent": true).
Responses
200 — Cancelled
{
"success": true,
"meeting": {
"id": "event-uuid",
"lead_id": "lead-uuid",
"status": "cancelled",
"cancelled_at": "2026-06-25T20:59:26Z",
"cancellation_reason": "client requested cancellation"
}
}
200 — Skipped (provider-owned meeting)
{
"success": true,
"skipped": true,
"reason": "managed_externally_inbound_only",
"message": "Meeting is owned by an external provider and cannot be cancelled via the API"
}
401 — Authentication error — see Authentication
403 — API key missing the meetings:write scope (MCP keys only; REST keys are full-access)
404 — Meeting not found or not owned by your account
500 — Internal server error
Last modified on June 25, 2026