Voxbi Cockpit APIs
All endpoints

Create a slot in a schedule (user)

Creates a recurring time slot within a schedule. The slot's start and end times must fall within the schedule's daily bounds, and the column index is assigned automatically when not supplied. The schedule must belong to a department the authenticated user is allowed to manage.

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>
pbx_id path · string · uuid *
UUID of the PBX tenant.
schedule path · string · uuid *
UUID of the schedule.
accept header · string
example: application/json

Request body · required

Request schema
column_indexinteger
Optional column index. Assigned automatically when omitted.
≥ 0≤ 99
example: 0
start_time*string
Slot start time as `HH:MM`. Must be within the schedule bounds.
example: 09:00
end_time*string
Slot end time as `HH:MM`. Must be after start_time and within bounds.
example: 17:00
recurrence_type*string
Recurrence rule for the slot.
enum: none daily weekly custom
example: weekly
recurrence_daysarray<integer>
Weekday numbers the slot recurs on. Required when recurrence_type is weekly or custom.
[]integer
ISO weekday number (1 = Monday through 7 = Sunday).
≥ 1≤ 7
recurrence_start_date*string · date
First date the recurrence applies. Must be today or later.
example: 2026-03-02
recurrence_end_datestring | null · date
Last date the recurrence applies. Must be on or after the start date.
example: 2026-12-31
recurrence_countinteger | null
Optional number of occurrences.
≥ 1≤ 730
example: 60

Responses

The slot was created.
Response schema
dataobject
A single recurring time slot belonging to a Tempus schedule, as serialized by the `SlotResource`. A slot defines a daily start and end time together with a recurrence rule (which days it repeats on and over what date range) and a column position used to lay out overlapping slots side by side in the schedule grid. Schedule entries (the concrete occurrences worked against the slot) are attached through the related `TempusScheduleEntry` records and are not embedded in this object. This object documents the exact keys returned by the resource, not the raw database columns. The `createdBy` field is only present when the `createdBy` relation has been eager-loaded on the model; when it is loaded it is a compact object (or null), and when it is not loaded the key is omitted entirely. Times are returned trimmed to `HH:MM` (seconds removed). The recurrence date fields are returned as plain `YYYY-MM-DD` calendar dates without a time component.
id*string · uuid
Unique identifier of the schedule slot.
read-only
example: 550e8400-e29b-41d4-a716-446655440000
scheduleId*string · uuid
Identifier of the parent Tempus schedule this slot belongs to.
example: 550e8400-e29b-41d4-a716-446655440001
columnIndex*integer · int32
Zero-based column position used to render the slot in the schedule grid. Overlapping active slots receive distinct column indices so they can be displayed side by side; the lowest free index is assigned automatically.
example: 0
startTime*string
Daily start time of the slot in 24-hour `HH:MM` form. Seconds are trimmed from the stored value before serialization.
example: 09:00
endTime*string
Daily end time of the slot in 24-hour `HH:MM` form. Seconds are trimmed from the stored value before serialization.
example: 17:30
recurrenceType*string
Recurrence frequency rule that governs how the slot repeats. Determines how `recurrenceDays`, `recurrenceEndDate` and `recurrenceCount` are interpreted.
enum: daily weekly monthly none
example: weekly
recurrenceDays*array<integer>
Days the slot recurs on, used together with `recurrenceType`. For a weekly recurrence these are ISO weekday numbers (1 = Monday through 7 = Sunday); for a monthly recurrence they are days of the month. Null when no specific days apply to the recurrence rule.
[]integer · int32
example: 1
recurrenceStartDate*string | null · date
First calendar date on which the slot recurrence becomes active, in `YYYY-MM-DD` form. Null when no start date is set.
example: 2024-03-01
recurrenceEndDate*string | null · date
Last calendar date on which the slot recurrence remains active, in `YYYY-MM-DD` form. Null for an open-ended recurrence or when the recurrence is instead bounded by `recurrenceCount`.
example: 2024-12-31
recurrenceCount*integer | null · int32
Number of occurrences after which the recurrence ends. Null when the recurrence is open-ended or bounded by `recurrenceEndDate` instead of a fixed count.
example: 12
isActive*boolean
Whether the slot is currently active. Inactive slots are retained but are excluded from grid layout and column-index assignment.
example: 1
createdByobject | null
Compact reference to the user who created the slot. Only present when the `createdBy` relation is eager-loaded; the key is omitted otherwise. Null when the relation is loaded but no creating user is associated.
read-only
idstring · uuid
Unique identifier of the user who created the slot.
example: 550e8400-e29b-41d4-a716-446655440002
namestring
Display name of the user who created the slot.
example: Customer Support
Authorization Token Missing. This error is returned when the authorization token is missing.
Response schema
errorstring
Error message
example: Authorization Token is missing
The authenticated user is outside the requested tenant, has no associated employee record, or has an empty schedules-management scope.
Response schema
No response body.
Data Not Found. This error is returned when the requested data is not found.
Response schema
messagearray<string>
[]string
Unprocessable Parameters. This error is returned when a parameter is not valid.
Response schema
messagestring
example: The given data was invalid.
errorsobject
filterarray<string>
[]string
sortarray<string>
[]string
pagearray<string>
[]string
per_pagearray<string>
[]string
post https://cockpit.voxbi.com/api/v1/{pbx_id}/schedule-management/{schedule}/slots
Base URL
Request sample
curl -X POST 'https://cockpit.voxbi.com/api/v1/{pbx_id}/schedule-management/{schedule}/slots' \
  -H 'Authorization: Bearer YOUR_TOKEN'
const response = await fetch('https://cockpit.voxbi.com/api/v1/{pbx_id}/schedule-management/{schedule}/slots', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'Authorization': `Bearer ${YOUR_TOKEN}`,
  },
});

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

response = requests.post('https://cockpit.voxbi.com/api/v1/{pbx_id}/schedule-management/{schedule}/slots',
    headers={'Authorization': f'Bearer {YOUR_TOKEN}'}
)
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",
    ],
]);

$response = file_get_contents('https://cockpit.voxbi.com/api/v1/{pbx_id}/schedule-management/{schedule}/slots', false, $context);
$data = json_decode($response, true);
print_r($data);
Sample request
No request example provided.
No example for this status.
{}
"error": "Authorization Token is missing"
}
Cache-Control string
example: private, must-revalidate
Connection string
example: keep-alive
Content-Type string
example: application/json
Vary string
example: Origin
X-RateLimit-Limit integer
Max requests allowed in the current rate-limit window.
example: 60
X-RateLimit-Remaining integer
Requests remaining in the current rate-limit window.
example: 57
No example for this status.
{}
"message": []
"Data not found"
]
}
Cache-Control string
example: private, must-revalidate
Connection string
example: keep-alive
Content-Type string
example: application/json
Vary string
example: Origin
X-RateLimit-Limit integer
Max requests allowed in the current rate-limit window.
example: 60
X-RateLimit-Remaining integer
Requests remaining in the current rate-limit window.
example: 57
{}
"errors": {}
"filter": [],
"The filter field must be an array."
],
"sort": [],
"The sort field must be a string."
],
"page": [],
"The page field must be an integer."
],
"per_page": []
"The per page field must be an integer."
]
}
}
Cache-Control string
example: private, must-revalidate
Connection string
example: keep-alive
Content-Type string
example: application/json
Vary string
example: Origin
X-RateLimit-Limit integer
Max requests allowed in the current rate-limit window.
example: 60
X-RateLimit-Remaining integer
Requests remaining in the current rate-limit window.
example: 57