Tenrai Status

Service Status API

This guide describes version 1 of the public status API. The JSON endpoint is GET https://tenrai.org/status/api/status.

Request

GET https://tenrai.org/status/api/status returns the current public status snapshot.

Example response

{
  "api_version": 1,
  "page": {
    "name": "Tenrai Status",
    "url": "https://tenrai.org/status"
  },
  "checker": {
    "healthy": true,
    "last_check_at": "2026-05-23T10:00:00.000Z",
    "stale_after_seconds": 120
  },
  "generated_at": "2026-05-23T10:00:30.000Z",
  "services": [
    {
      "id": "jikan",
      "name": "Jikan API",
      "status": "operational",
      "homepage_url": "https://jikan.moe/",
      "logo_url": "https://jikan.moe/favicon/favicon-32x32.png?v=2",
      "last_check_at": "2026-05-23T10:00:00.000Z",
      "outage_minutes_90d": 0,
      "degraded_minutes_90d": 0,
      "daily_outage_minutes_90d": {},
      "daily_degraded_minutes_90d": {},
      "active_maintenance": null
    }
  ],
  "scheduled_maintenances": []
}

Example with scheduled maintenance

{
  "api_version": 1,
  "page": {
    "name": "Tenrai Status",
    "url": "https://tenrai.org/status"
  },
  "checker": {
    "healthy": true,
    "last_check_at": "2026-05-23T10:00:00.000Z",
    "stale_after_seconds": 120
  },
  "generated_at": "2026-05-23T10:00:30.000Z",
  "services": [
    {
      "id": "jikan",
      "name": "Jikan API",
      "status": "operational",
      "homepage_url": "https://jikan.moe/",
      "logo_url": "https://jikan.moe/favicon/favicon-32x32.png?v=2",
      "last_check_at": "2026-05-23T10:00:00.000Z",
      "outage_minutes_90d": 0,
      "degraded_minutes_90d": 0,
      "daily_outage_minutes_90d": {},
      "daily_degraded_minutes_90d": {},
      "active_maintenance": null
    }
  ],
  "scheduled_maintenances": [
    {
      "id": "maintenance-example",
      "service_id": "jikan",
      "title": "Planned infrastructure maintenance",
      "starts_at": "2026-05-24T01:00:00.000Z",
      "ends_at": "2026-05-24T02:00:00.000Z",
      "status": "scheduled",
      "state": "scheduled",
      "created_at": "2026-05-23T10:00:00.000Z",
      "updated_at": "2026-05-23T10:00:00.000Z"
    }
  ]
}

Field reference

Top-level fields

FieldTypeDescription
api_versionintegerContract version (currently 1)
pageobjectStatus-page metadata
checkerobjectChecker freshness metadata
generated_atstringISO 8601 snapshot generation timestamp
servicesarray of service objectsCurrent public service snapshots
scheduled_maintenancesarray of maintenance objectsScheduled and active maintenance records

Page and checker fields

FieldTypeDescription
page.namestringStatus-page name
page.urlstringStatus-page URL
checker.healthybooleanWhether the latest completed check is within the stale threshold
checker.last_check_atstring or nullISO 8601 timestamp for the most recent completed service check
checker.stale_after_secondsintegerFreshness allowance in seconds

Service fields

FieldTypeDescription
idstringService identifier
namestringService display name
statusstring enumoperational, degraded, down, unknown, or maintenance
homepage_urlstringPublic homepage URL
logo_urlstringPublic logo URL
last_check_atstring or nullISO 8601 timestamp for the latest completed check
outage_minutes_90dintegerTotal outage minutes in the 90-day view
degraded_minutes_90dintegerTotal degraded minutes in the 90-day view
daily_outage_minutes_90dobjectYYYY-MM-DD date keys and integer outage-minute values for the 90-day view
daily_degraded_minutes_90dobjectYYYY-MM-DD date keys and integer degraded-minute values for the 90-day view
active_maintenancemaintenance object or nullActive maintenance for this service, if any

Maintenance record fields

FieldTypeDescription
idstringMaintenance identifier
service_idstringA service identifier or all
titlestringMaintenance title
starts_atstringISO 8601 maintenance start timestamp
ends_atstringISO 8601 maintenance end timestamp
statusstringMaintenance status text
statestring enumscheduled or active; an active_maintenance record is always active
created_atstringISO 8601 creation timestamp
updated_atstringISO 8601 last-update timestamp

Rate Limiting

There is no rate limit

Versioning

The top-level api_version field identifies the response contract. Version 1 changes are additive only. There will be no version 2, this is the final version, so no need to worry about breaking changes.

Status values

Each item in services has a status of operational, degraded, down, unknown, or maintenance.

Freshness, checks, and caching

  • generated_at is when the snapshot was generated.
  • checker.last_check_at is the most recent completed service check; checker.healthy reports whether it is within checker.stale_after_seconds.
  • Checks normally run about once per minute. Public responses use a 30-second cache TTL, so clients should poll no more often than once per minute.

Service data and aggregate metrics

Each service includes its identifier, display name, current status, homepage and logo URLs, and last_check_at. The 90-day aggregates are outage_minutes_90d, degraded_minutes_90d, daily_outage_minutes_90d, and daily_degraded_minutes_90d. Daily outage entries below five total minutes are intentionally omitted from the public aggregate; degraded metrics include recorded degraded minutes.

Maintenance data

scheduled_maintenances contains scheduled and active maintenance records. active_maintenance is either the active maintenance record for a service or null. Maintenance records include their service, timing, and state.