Skip to content
Albastar Corp.

Status

GET /v1/status, the current state of the API and of each product, with 90 days of daily states and uptime.

GET /v1/status

Returns the current state of the API and of each product, the state of each for every UTC day of the last 90 days, and the uptime of each over the same days. The route requires no key.

Request

curl

curl https://api.albastov.com/v1/status

Python

import json, urllib.request

req = urllib.request.Request("https://api.albastov.com/v1/status", headers={"User-Agent": "my-app/1.0"})
status = json.load(urllib.request.urlopen(req))
print(status["status"])
for component in status["components"]:
    print(component["name"], component["status"], component["uptime_90d"])

JavaScript

const res = await fetch("https://api.albastov.com/v1/status");
if (!res.ok) throw new Error(`${res.status} ${await res.text()}`);
const status = await res.json();
console.log(status.status);
for (const component of status.components) console.log(component.name, component.status, component.uptime_90d);

Response

200, Content-Type: application/json, Cache-Control: public, max-age=30. The server computes the response at most once every 30 seconds; updated_at is the time of that computation. The example shows one component and two of its 90 days.

Response
{
  "status": "operational",
  "updated_at": "2026-11-03T12:00:00Z",
  "components": [
    {
      "id": "api",
      "name": "API",
      "status": "operational",
      "uptime_90d": 99.98,
      "days": [
        {"date": "2026-08-06", "status": "unknown"},
        {"date": "2026-11-03", "status": "operational"}
      ]
    }
  ]
}
FieldValue
statusThe overall state: down when the api component is down, degraded when any component is not operational, otherwise operational
updated_atRFC 3339 time in UTC
componentsSix entries, always in this order: api API, language-models Language models, text-to-speech Text to speech, speech-to-text Speech to text, voices Voices, events Events
components[].statusThe current state: operational, degraded or down
components[].uptime_90dPercent of the 90 days with the component's health checks passing, 2 decimal places; 100 with no failed checks
components[].daysExactly 90 entries, oldest first; the last entry is the current UTC day
components[].days[].dateYYYY-MM-DD, a UTC day
components[].days[].statusoperational, degraded, down or unknown

Status rules

Each component has health checks and, except api and events, a failure share: the share of its API key requests answered with a 5xx status, and for text-to-speech and speech-to-text also the share of its finished jobs that failed on the server side. A request or job refused for the caller's input counts as an attempt, not a failure; a cancelled job counts as neither.

ComponentHealth checksRequests
apiAPInone
language-modelsAPI, model servicePOST /v1/chat/completions, GET /v1/models
text-to-speechAPI, model servicePOST /v1/audio/speech, speech jobs
speech-to-textAPI, model servicePOST /v1/audio/transcriptions, transcription jobs
voicesAPI/v1/media/voices routes
eventsAPInone
StateCurrent statusDay status
downA health check fails now, or at least 50 % of the last 60 minutes' attempts failed, from 5 attemptsHealth checks failed for 60 minutes or more, or at least 50 % of the day's attempts failed, from 10 attempts
degradedAt least 20 % of the last 60 minutes' attempts failed, from 5 attemptsHealth checks failed for under 60 minutes, or at least 10 % of the day's attempts failed, from 10 attempts
operationalNeither of the aboveNeither of the above
unknownNot usedThe day precedes the start of the status history

A day takes the worst state of its health checks and failure shares. uptime_90d is 100 × (1 − time with a failed health check ÷ time covered), where the time covered runs from the first of the 90 days, or from the start of the status history when later, to updated_at.

Errors

StatusCodeMeaning
500internalServer error
503unavailableThe status cannot be read now; retry after 30 seconds