Voxbi Cockpit APIs
All endpoints

Push the PBX configuration (pbx)

Push the authenticated PBX's configuration so that pending changes take effect. This is the programmatic equivalent of the "Push configuration" button in Cockpit, typically called after a number's call flow has been changed.

The target PBX is derived from the API key; there is no request body.

The presented PBX API key must carry the push_configuration ability/scope.

Rate limit: 1 request per minute per PBX. Exceeding the limit returns 429 with a Retry-After header.

HTTP: PbxApiKey

PBX API key, used by the customer's PBX server (e.g. for roaming login/logout)

HTTP Authorization Scheme
bearer
Bearer format
Bearer <pbx_api_key>
accept header · string
example: application/json

Responses

Configuration push recorded.
Response schema
statusstring
example: pushed
pushed_atstring
When the push was recorded, in the PBX timezone.
example: 2026-06-15 09:12:04
Authorization Token Missing. This error is returned when the authorization token is missing.
Response schema
errorstring
Error message
example: Authorization Token is missing
The presented PBX API key does not carry the required `push_configuration` ability/scope.
Response schema
No response body.
Configuration pushes are currently locked for this PBX.
Response schema
errorstring
example: push_configuration_locked
messagestring
example: Configuration pushes are currently locked for this PBX.
Rate limit exceeded (max 1 push per minute per PBX). Wait `Retry-After` seconds before retrying.
Response schema
No response body.
The push could not be recorded; retry later.
Response schema
errorstring
example: push_failed
messagestring
example: Could not push the configuration. Please try again later.
post https://cockpit.voxbi.com/api/v1/push-configuration
Base URL
Request sample
curl -X POST 'https://cockpit.voxbi.com/api/v1/push-configuration' \
  -H 'Authorization: Bearer YOUR_TOKEN'
const response = await fetch('https://cockpit.voxbi.com/api/v1/push-configuration', {
  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/push-configuration',
    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/push-configuration', false, $context);
$data = json_decode($response, true);
print_r($data);
{}
"status": "pushed",
"pushed_at": "2026-06-15 09:12:04"
}
{}
"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.
{}
"error": "push_configuration_locked",
"message": "Configuration pushes are currently locked for this PBX."
}
No example for this status.
Retry-After integer
Seconds to wait before the next allowed request.
example: 46
X-RateLimit-Limit integer
Maximum requests allowed in the window (1).
example: 1
X-RateLimit-Remaining integer
Requests remaining in the window (0 while throttled).
example: 0
X-RateLimit-Reset integer
Unix timestamp when the window resets.
example: 1781265182
{}
"error": "push_failed",
"message": "Could not push the configuration. Please try again later."
}