Cycle Status API.
Read-only endpoints for retrieving the current status of the Cycle platform. All endpoints return JSON and can be called without authentication.
Basics.
The Status API is a read-only, unauthenticated JSON endpoint. Responses reflect the same data rendered on this page, aggregated across every public Cycle core. All responses are cached for 60 seconds with a further 90 second stale-while-revalidate window, and support conditional requests via ETag.
Endpoints.
/api/v1/statusReturns the overall platform status and per-core breakdowns with service-level detail.
curl https://status.cycle.io/api/v1/statusdata.platform.statusstringOverall platform status. One of online, upgrading, degraded, partial-outage, offline.
data.platform.availability_percentnumberCurrent mean availability across all monitored services, 0–100.
data.cores[]arrayOne entry per public Cycle core.
data.cores[].namestringHuman-readable name of the core.
data.cores[].statusstringAggregate status of this core. Same enum as platform.status minus partial-outage.
data.cores[].availability_percentnumberCurrent mean availability across the services in this core, 0–100.
data.cores[].services[]arrayServices running in this core.
data.cores[].services[].namestringService identifier (e.g. portal, public-api).
data.cores[].services[].statusstringService status. One of online, upgrading, degraded, offline.
data.cores[].services[].percent_onlinenumberPercentage of instances currently reporting healthy, 0–100.
data.cores[].services[].percent_upgradingnumberPercentage of instances currently mid-upgrade, 0–100.
data.cores[].services[].corestringName of the core this service belongs to. Matches the parent core's name.
{
"data": {
"platform": {
"status": "online",
"availability_percent": 99.87,
},
"cores": [
{
"name": "North America",
"status": "online",
"availability_percent": 100,
"services": [
{
"name": "portal",
"percent_online": 100,
"percent_upgrading": 0,
"status": "online",
"core": "North America"
},
{
"name": "public-api",
"percent_online": 100,
"percent_upgrading": 0,
"status": "online",
"core": "North America"
}
]
},
{
"name": "Europe",
"status": "degraded",
"availability_percent": 98.5,
"services": [
{
"name": "portal",
"percent_online": 100,
"percent_upgrading": 0,
"status": "online",
"core": "Europe"
},
{
"name": "dns",
"percent_online": 75,
"percent_upgrading": 0,
"status": "degraded",
"core": "Europe"
}
]
}
]
}
}Status Values.
Both the platform status and each service status use enumerated string values. Clients should treat unknown values as a soft error and fall back to the nearest known neighbor.
"online"Fully operational.
"upgrading"A rollout is underway. Instances may briefly restart.
"degraded"One or more instances are unhealthy but the unit is still serving traffic.
"offline"All instances are unhealthy or unreachable.
"partial-outage"A mix of offline and degraded services across cores.
Caching.
The endpoint sets Cache-Control: public, max-age=60, stale-while-revalidate=90 and an ETag on every response. Clients polling the endpoint should send the last-seen ETag in If-None-Match to receive a 304 when nothing has changed.
curl -I https://status.cycle.io/api/v1/status
# HTTP/2 200
# etag: "a3f1..."
# cache-control: public, max-age=60, stale-while-revalidate=90
curl -H 'If-None-Match: "a3f1..."' https://status.cycle.io/api/v1/status
# HTTP/2 304