Get System Status
curl --request GET \
--url https://getbill.io/status/api/status \
--header 'Authorization: Bearer <token>'import requests
url = "https://getbill.io/status/api/status"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://getbill.io/status/api/status', 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://getbill.io/status/api/status",
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://getbill.io/status/api/status"
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://getbill.io/status/api/status")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://getbill.io/status/api/status")
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{
"overall": "operational",
"services": {
"api": {
"status": "operational",
"responseTime": 12,
"message": "API is responding normally"
},
"webapp": {
"status": "operational",
"responseTime": 0,
"memoryUsage": 24.0,
"memoryPercent": 9.4,
"message": "Web application is running smoothly"
},
"ai-calls": {
"status": "operational",
"successRate": 97.5,
"totalCalls24h": 342,
"message": "AI calling services are operational"
},
"messaging": {
"status": "operational",
"deliveryRate": 99.8,
"queueTime": "<5s",
"queueSize": 12,
"message": "Messaging services are operational"
}
},
"incidents": [],
"maintenance": [],
"history": [
{ "date": "2026-01-15", "incidents": 0, "degraded": 0 },
{ "date": "2026-01-16", "incidents": 0, "degraded": 1 }
],
"lastUpdated": "2026-02-11T12:00:00+00:00"
}
Status API
Get System Status
Get the current status of all GetBill services
GET
/
status
/
api
/
status
Get System Status
curl --request GET \
--url https://getbill.io/status/api/status \
--header 'Authorization: Bearer <token>'import requests
url = "https://getbill.io/status/api/status"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://getbill.io/status/api/status', 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://getbill.io/status/api/status",
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://getbill.io/status/api/status"
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://getbill.io/status/api/status")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://getbill.io/status/api/status")
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{
"overall": "operational",
"services": {
"api": {
"status": "operational",
"responseTime": 12,
"message": "API is responding normally"
},
"webapp": {
"status": "operational",
"responseTime": 0,
"memoryUsage": 24.0,
"memoryPercent": 9.4,
"message": "Web application is running smoothly"
},
"ai-calls": {
"status": "operational",
"successRate": 97.5,
"totalCalls24h": 342,
"message": "AI calling services are operational"
},
"messaging": {
"status": "operational",
"deliveryRate": 99.8,
"queueTime": "<5s",
"queueSize": 12,
"message": "Messaging services are operational"
}
},
"incidents": [],
"maintenance": [],
"history": [
{ "date": "2026-01-15", "incidents": 0, "degraded": 0 },
{ "date": "2026-01-16", "incidents": 0, "degraded": 1 }
],
"lastUpdated": "2026-02-11T12:00:00+00:00"
}
Overview
Returns the current operational status of all GetBill services, active incidents, scheduled maintenance, and 90-day status history. This is the same data that powers the status page.Authentication
None required. This is a public endpoint.Request
No parameters required.Example Request
curl -X GET "https://getbill.io/status/api/status" \
-H "Accept: application/json"
const response = await fetch('https://getbill.io/status/api/status');
const status = await response.json();
import requests
response = requests.get('https://getbill.io/status/api/status')
status = response.json()
Response
string
Overall system status:
operational, degraded, or outageobject
Status of individual services
Show services
Show services
object
API service status with
status, responseTime (ms), and messageobject
Web application status with
status, responseTime (ms), memoryUsage, memoryPercent, and messageobject
AI calling service status with
status, successRate (%), totalCalls24h, and messageobject
Messaging service status with
status, deliveryRate (%), queueTime, queueSize, and messagearray
Active incidents from the last 7 days
Show incident object
Show incident object
integer
Incident ID
string
Incident title
string
Incident description
string
Current status (e.g.
investigating, identified, resolved)string
critical, major, or minorarray
List of affected service names
string
Incident creation time (ISO 8601)
boolean
Whether the incident is resolved
string
Resolution time (ISO 8601, null if unresolved)
array
array
Daily status history for the last 90 days. Each entry contains
date (YYYY-MM-DD), incidents count, and degraded count.string
Timestamp of the last status calculation (ISO 8601)
Success Response
{
"overall": "operational",
"services": {
"api": {
"status": "operational",
"responseTime": 12,
"message": "API is responding normally"
},
"webapp": {
"status": "operational",
"responseTime": 0,
"memoryUsage": 24.0,
"memoryPercent": 9.4,
"message": "Web application is running smoothly"
},
"ai-calls": {
"status": "operational",
"successRate": 97.5,
"totalCalls24h": 342,
"message": "AI calling services are operational"
},
"messaging": {
"status": "operational",
"deliveryRate": 99.8,
"queueTime": "<5s",
"queueSize": 12,
"message": "Messaging services are operational"
}
},
"incidents": [],
"maintenance": [],
"history": [
{ "date": "2026-01-15", "incidents": 0, "degraded": 0 },
{ "date": "2026-01-16", "incidents": 0, "degraded": 1 }
],
"lastUpdated": "2026-02-11T12:00:00+00:00"
}
Usage Notes
- Response is cached for 60 seconds server-side
- The status page also serves this data as
/status.jsonvia CloudFront, which remains available even during application outages - Use this endpoint to build custom status dashboards or monitoring integrations