Skip to content

Cancel one of the caller's own events (user)

Cancels the event on the caller's own mailbox. cancelled is true both when the cancel just happened and when the event was already gone (a 404 during the underlying delete counts as success).

comment_delivery tells you where the optional comment actually went: Microsoft has a native cancellation-comment field (native_comment); Google has none, so the comment is patched into the event's description before the delete (description_patch). Render description_patch honestly - the organizer did not receive an Outlook-style cancellation note, they read it in the already-cancelled event body if they open it.

Rate limited to 15 requests/minute (throttle:calendar-write).

HTTP: bearerAuth

User bearer token. Default authentication for customer-facing endpoints. Obtain a token by calling POST /login with your credentials, then send it on every subsequent request as Authorization: Bearer <token>. The token inherits the permissions and PBX scope of the authenticated user.

HTTP Authorization Scheme
bearer
Bearer format
Bearer <token>
event path · string *
accept header · string
example: application/json

Request body · application/json

Request schema
commentstring | null
length: 0–2000

Responses

Response schema
dataobject
cancelledboolean
comment_deliverystring
enum: native_comment description_patch none
Unauthenticated. The `Authorization: Bearer <token>` header was missing, malformed, or names a token that has been revoked or deleted.
Response schema
messagestring
The calendar assistant is not enabled for this account. Returned when there is no `user_provider_mappings` row for the caller carrying the assistant capability, or the capability is present but switched off. There is deliberately no fallback to "assume Microsoft" here, unlike other capabilities on the same table.
Response schema
messagestring
Standard field validation on `comment`.
Response schema
messagestring
errorsobject
Free-form object
Too Many Requests. The rate limit for this action has been exceeded. Retry after the window indicated by the Retry-After header.
Response schema
messagestring
post https://cockpit.voxbi.com/api/v1/me/calendar/events/{event}/cancel
Base URL
Request sample
curl -X POST 'https://cockpit.voxbi.com/api/v1/me/calendar/events/{event}/cancel' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json' \
  --data '{"comment":"Sorry, something came up."}'
const response = await fetch('https://cockpit.voxbi.com/api/v1/me/calendar/events/{event}/cancel', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'Authorization': `Bearer ${YOUR_TOKEN}`,
  },
  body: JSON.stringify({
    "comment": "Sorry, something came up."
}),
});

const data = await response.json();
console.log(data);
import requests

response = requests.post('https://cockpit.voxbi.com/api/v1/me/calendar/events/{event}/cancel',
    headers={'Authorization': f'Bearer {YOUR_TOKEN}'},
    json={
    "comment": "Sorry, something came up."
}
)
response.raise_for_status()
data = response.json()
print(data)
<?php
$context = stream_context_create([
    'http' => [
        'method'  => 'POST',
        'header'  => "Content-Type: application/json\r\nAuthorization: Bearer YOUR_TOKEN",
        'content' => '{
    \"comment\": \"Sorry, something came up.\"
}',
    ],
]);

$response = file_get_contents('https://cockpit.voxbi.com/api/v1/me/calendar/events/{event}/cancel', false, $context);
$data = json_decode($response, true);
print_r($data);
Sample request
{ … }
"comment": "Sorry, something came up."
}
{ … }
"data": { … }
"cancelled": true,
"comment_delivery": "description_patch"
}
}
{ … }
"message": "Unauthenticated."
}
Content-Type string
example: application/json
{ … }
"message": "The calendar assistant is not enabled for this account."
}
No example for this status.
{ … }
"message": "Too Many Attempts."
}
Retry-After integer
Seconds to wait before retrying.
example: 60
Content-Type string
example: application/json