Voxbi Cockpit APIs
All endpoints

Get the Odoo installation status (pbx)

Returns the current install job status for the authenticated PBX's Odoo integration. Requires an API key carrying the odoo-installer ability.

HTTP: IntegrationApiKey

API key created on the Cockpit Integrations page (an "API key" integration). It is a bearer token owned by the customer's PBX and limited to the scopes selected when the key was created (e.g. phone-numbers, push-configuration).

Send it in the Authorization header:

Authorization: Bearer <api_key>

Manage keys (create / reveal / revoke) from Integrations → New integration → API key.

HTTP Authorization Scheme
bearer
accept header · string
example: application/json

Responses

Response schema
statusstring
Current install job status.
enum: pending processing success failed
resultsarray<object>
Per-step results of the install job. Empty until the job runs.
[]object
Free-form object
updated_atstring | null · date-time
Authorization Token Missing. This error is returned when the authorization token is missing.
Response schema
errorstring
Error message
example: Authorization Token is missing
No Odoo integration exists for the authenticated PBX.
Response schema
errorstring
Server error. An unexpected condition was encountered on the server and the request could not be completed. The body is a generic JSON envelope with a `message` field. The response is logged on the server side; quote the request URL + timestamp when reporting an issue.
Response schema
messagestring
exceptionstring
Only present in non-production environments.
filestring
Only present in non-production environments.
lineinteger
Only present in non-production environments.
get https://cockpit.voxbi.com/api/v1/odoo-installer/install-status
Base URL
Request sample
curl -X GET 'https://cockpit.voxbi.com/api/v1/odoo-installer/install-status' \
  -H 'Authorization: Bearer YOUR_TOKEN'
const response = await fetch('https://cockpit.voxbi.com/api/v1/odoo-installer/install-status', {
  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/odoo-installer/install-status',
    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/odoo-installer/install-status', false, $context);
$data = json_decode($response, true);
print_r($data);
{}
"status": "pending",
"results": [],
"updated_at": "2026-06-01T08:29:07+00:00"
}
{}
"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
{}
"error": "not_found"
}
{}
"message": "Server Error"
}