List countries with their plans (partner-api)
The catalogue for a website: each country with the plans offered there. Plans differ by country (price, limits), so a visitor picks a country and sees its plans.
data.countries lists only countries that have at least one plan explicitly linked, ordered by name; a plan linked to several countries appears under each. data.all_countries lists the plans linked to no country, which are offered everywhere.
With country=XX the answer holds exactly that country in data.countries (even if no plan is linked to it), and its plans are the linked plans plus the all-countries plans merged in. data.all_countries is still returned so the shape never changes.
Plans are the ones your partner can see (its own and global), each in the same shape as GET /plans/{plan}. Pass active=true to leave out plans that are not on sale. The list is not paginated.
Required scopes: partner-api and partner-plans.
Partner API key. A bearer token that a Reseller Admin generates in the partner
portal under Settings, API keys. It belongs to the reseller partner, not to a
person, and carries the scopes ticked at creation time. Send it on every request as
Authorization: Bearer <partner_api_key>.
Every response is confined to the partner the key belongs to. Keep the key secret and call the API from your server only, never from a browser app.
- HTTP Authorization Scheme
bearer- Bearer format
Bearer <partner_api_key>
application/jsonResponses
dataobject
countriesarray<object>
LULuxembourgplansarray<object>
550e8400-e29b-41d4-a716-446655440201BusinessFor growing teams9.9000EUR10.00251011Unlimited extensions
Call recordingfeatures_listarray<string>
11400172block_services downgrade staystay310countriesarray<string>
https://cockpit.voxbi.com/acme/signup/550e8400-e29b-41d4-a716-4466554402014manual12026-10-01T08:00:00+00:002026-10-29T14:05:00+00:00all_countriesarray<object>
550e8400-e29b-41d4-a716-446655440201BusinessFor growing teams9.9000EUR10.00251011Unlimited extensions
Call recordingfeatures_listarray<string>
11400172block_services downgrade staystay310countriesarray<string>
https://cockpit.voxbi.com/acme/signup/550e8400-e29b-41d4-a716-4466554402014manual12026-10-01T08:00:00+00:002026-10-29T14:05:00+00:00This API key is missing a required scope.required_scopesarray<string>
errorsobject
https://cockpit.voxbi.com/api/v1/api/v1/plans/countries
curl -X GET 'https://cockpit.voxbi.com/api/v1/api/v1/plans/countries' \
-H 'Authorization: Bearer YOUR_TOKEN'
const response = await fetch('https://cockpit.voxbi.com/api/v1/api/v1/plans/countries', {
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/api/v1/plans/countries',
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/api/v1/plans/countries', false, $context);
$data = json_decode($response, true);
print_r($data);
{ … }
"data": { … }
"countries": [ … ],
{ … },
"plans": [ … ]
{ … }
"features_list": [ … ],
"countries": [ … ],
{ … }
"plans": [ … ]
{ … },
"features_list": [ … ],
"countries": [ … ],
{ … },
"features_list": [ … ],
"countries": [ … ],
{ … }
"all_countries": [ … ]
{ … }
{ … }
application/json{ … }
application/json{ … }
"errors": { … }
"name": [ … ]
application/json{ … }
30application/json