curl --request GET \
--url https://console.advinservers.com/api/v1/client/billing/services \
--header 'Authorization: Bearer <token>'import requests
url = "https://console.advinservers.com/api/v1/client/billing/services"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://console.advinservers.com/api/v1/client/billing/services', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://console.advinservers.com/api/v1/client/billing/services",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://console.advinservers.com/api/v1/client/billing/services"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://console.advinservers.com/api/v1/client/billing/services")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://console.advinservers.com/api/v1/client/billing/services")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body[
{
"service_id": 7312,
"name": "Standard 4 GB",
"hostname": "lambda-core.blackmesa.example.com",
"status": "Active",
"billing_cycle": "Monthly",
"recurring_amount": "12.00",
"currency": "USD",
"server_id": "ecc6f4f1",
"next_due_date": "2026-10-02",
"period": {
"starts_at": "2026-09-02",
"ends_at": "2026-10-02",
"total_days": 30,
"days_remaining": 18,
"days_overdue": 0,
"remaining_fraction": 0.6,
"state": "healthy"
}
}
]{
"message": "Unauthenticated."
}{
"message": "This API key is not allowed to do that in this team. It needs the \"snapshot.delete\" permission."
}{
"message": "Too Many Attempts."
}List service billing details
Overview
Lists billing details for every service on the account, across all teams. Each service includes its billing cycle, recurring amount, next due date and current paid period. Use server_id to match a service to its server. period is null for services that do not renew, such as free services or one-time purchases. Amounts are formatted strings ready to display.
Permissions
Requires the billing.read (View billing) permission for the selected team. Resources outside that team return 404.
curl --request GET \
--url https://console.advinservers.com/api/v1/client/billing/services \
--header 'Authorization: Bearer <token>'import requests
url = "https://console.advinservers.com/api/v1/client/billing/services"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://console.advinservers.com/api/v1/client/billing/services', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://console.advinservers.com/api/v1/client/billing/services",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://console.advinservers.com/api/v1/client/billing/services"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://console.advinservers.com/api/v1/client/billing/services")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://console.advinservers.com/api/v1/client/billing/services")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body[
{
"service_id": 7312,
"name": "Standard 4 GB",
"hostname": "lambda-core.blackmesa.example.com",
"status": "Active",
"billing_cycle": "Monthly",
"recurring_amount": "12.00",
"currency": "USD",
"server_id": "ecc6f4f1",
"next_due_date": "2026-10-02",
"period": {
"starts_at": "2026-09-02",
"ends_at": "2026-10-02",
"total_days": 30,
"days_remaining": 18,
"days_overdue": 0,
"remaining_fraction": 0.6,
"state": "healthy"
}
}
]{
"message": "Unauthenticated."
}{
"message": "This API key is not allowed to do that in this team. It needs the \"snapshot.delete\" permission."
}{
"message": "Too Many Attempts."
}Authorizations
Your API key, sent as a bearer token. Create one in the control panel under API Keys, give it only the permissions the integration needs, and copy it when it is created. It cannot be shown again. Each key is restricted to one owned team. The key determines the team for every request.
Response
The whole set, as a JSON array. There is no envelope and no paging.
The service id ID.
7312
The name shown to customers.
"Standard 4 GB"
The fully qualified hostname.
"lambda-core.blackmesa.example.com"
The value of status.
"Active"
How often the service renews and is billed.
"Monthly"
The amount charged each billing cycle.
"12.00"
The three-letter currency code used for monetary amounts.
"USD"
The server id ID.
"ecc6f4f1"
The value of next_due_date.
"2026-10-02"
The current billing period, or null for free services and one-time purchases that do not renew.
Show child attributes
Show child attributes
{
"starts_at": "2026-09-02",
"ends_at": "2026-10-02",
"total_days": 30,
"days_remaining": 18,
"days_overdue": 0,
"remaining_fraction": 0.6,
"state": "healthy"
}
[
{
"service_id": 7312,
"name": "Standard 4 GB",
"hostname": "lambda-core.blackmesa.example.com",
"status": "Active",
"billing_cycle": "Monthly",
"recurring_amount": "12.00",
"currency": "USD",
"server_id": "ecc6f4f1",
"next_due_date": "2026-10-02",
"period": {
"starts_at": "2026-09-02",
"ends_at": "2026-10-02",
"total_days": 30,
"days_remaining": 18,
"days_overdue": 0,
"remaining_fraction": 0.6,
"state": "healthy"
}
}
]