Skip to content

Get the caller's own agenda (user)

Events between start and end on the caller's own mailbox, merging the primary calendar with every calendar opted into read_calendar_ids (the Cockpit sync mirror is never included, even if somehow selected).

The window may not span more than 62 days; a wider request is rejected with a 422 on the end field rather than silently truncated.

If the assistant is not enabled for the caller, this endpoint answers 200 with an empty body rather than a 403 - a client polling this on page load should not treat "not opted in yet" as an error.

Returns the raw, camelCase event shape (CalendarEventRaw), not the snake_case CalendarEvent model every other endpoint on this page returns - a known, tracked inconsistency; see the schema description.

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>
start query · string · date-time *
end query · string · date-time *
accept header · string
example: application/json

Responses

OK. The `data` key is omitted entirely (not `data: []`) both when the window has no events and when the assistant is not enabled for the caller - the response body has no `data` key at all in either case.
Response schema
dataarray<object>
Each item — The raw, camelCase shape currently returned by `GET /me/calendar/agenda` and `GET /users/{user}/calendar/agenda`. Every other calendar endpoint on this page returns the snake_case `CalendarEvent` model instead; these two endpoints serialise the underlying event data directly rather than through that resource. This is a known, tracked inconsistency, documented as-is rather than coerced into the shape it "should" have.
idstring
example: AAMkAGI1AAAtOTU1AAA=
deletedboolean
example:
seriesMasterIdstring | null
subjectstring | null
example: Weekly Sync
startstring | null · date-time
example: 2026-09-08T09:00:00.000000Z
endstring | null · date-time
example: 2026-09-08T09:30:00.000000Z
isAllDayboolean
example:
isCancelledboolean
example:
showAsstring | null
enum: free tentative busy oof workingElsewhere null
example: busy
sensitivitystring | null
enum: normal personal private confidential null
example: normal
responsestring | null
enum: none organizer tentativelyAccepted accepted declined notResponded null
example: accepted
calendarIdstring | null
attendeesarray<object>
emailstring · email
example: jane.smith@example.com
namestring | null
example: Jane Smith
typestring
enum: required optional
example: required
responsestring | null
enum: none organizer tentativelyAccepted accepted declined notResponded null
example: accepted
organizerEmailstring | null · email
example: jane.smith@example.com
locationstring | null
example: Conference Room 2
onlineMeetingstring | null
example: https://meet.example.com/abc-defg-hij
Unauthenticated. The `Authorization: Bearer <token>` header was missing, malformed, or names a token that has been revoked or deleted.
Response schema
messagestring
`start`/`end` missing or invalid, `end` not after `start`, or the window spans more than 62 days.
Response schema
messagestring
errorsobject
Free-form object
get https://cockpit.voxbi.com/api/v1/me/calendar/agenda
Base URL
Request sample
curl -X GET 'https://cockpit.voxbi.com/api/v1/me/calendar/agenda' \
  -H 'Authorization: Bearer YOUR_TOKEN'
const response = await fetch('https://cockpit.voxbi.com/api/v1/me/calendar/agenda', {
  method: 'GET',
  headers: {
    'Content-Type': 'application/json',
    'Authorization': `Bearer ${YOUR_TOKEN}`,
  },
});

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

response = requests.get('https://cockpit.voxbi.com/api/v1/me/calendar/agenda',
    headers={'Authorization': f'Bearer {YOUR_TOKEN}'}
)
response.raise_for_status()
data = response.json()
print(data)
<?php
$context = stream_context_create([
    'http' => [
        'method'  => 'GET',
        'header'  => "Content-Type: application/json\r\nAuthorization: Bearer YOUR_TOKEN",
    ],
]);

$response = file_get_contents('https://cockpit.voxbi.com/api/v1/me/calendar/agenda', false, $context);
$data = json_decode($response, true);
print_r($data);
{ … }
"data": [ … ]
{ … }
"id": "AAMkAGI1AAAtOTU1AAA=",
"deleted": false,
"seriesMasterId": null,
"subject": "Weekly Sync",
"start": "2026-09-08T09:00:00.000000Z",
"end": "2026-09-08T09:30:00.000000Z",
"isAllDay": false,
"isCancelled": false,
"showAs": "busy",
"sensitivity": "normal",
"response": "accepted",
"calendarId": null,
"attendees": [ … ],
{ … }
"email": "jane.smith@example.com",
"name": "Jane Smith",
"type": "required",
"response": "accepted"
}
],
"organizerEmail": "jane.smith@example.com",
"location": "Conference Room 2",
"onlineMeeting": "https://meet.example.com/abc-defg-hij"
}
]
}
{ … }
"message": "Unauthenticated."
}
Content-Type string
example: application/json
{ … }
"message": "The given data was invalid.",
"errors": { … }
"end": [ … ]
"The window may not span more than 62 days."
]
}
}