Public API
Read-only REST API of the FreshPerf status page. No authentication, no API key. Every response is JSON over HTTPS.
https://status-api.freshperf.frConventions
- Localized fields are returned in both languages as {"en": "...", "fr": "..."}.
- Timestamps are Unix epoch milliseconds in UTC.
- Rate limit: 240 requests per minute per IP. Exceeding it returns HTTP 429.
- Summary responses are cached for 30 seconds.
- Errors return a generic JSON marker, for example {"error": "NOT_FOUND"}. No stack traces.
- CORS allows browser calls from the status page origins. Server-side clients are unaffected.
Status
/api/v1/statusOverall status
Overall state, service counters and active incident and maintenance counts. The overall field is one of: operational, degraded_performance, partial_outage, major_outage, maintenance.
Responses
Example response
{
"overall": "operational",
"updatedAt": 1783534774997,
"servicesUp": 12,
"servicesDown": 0,
"activeIncidents": 0,
"activeMaintenances": 1
}/api/v1/summaryFull summary
The full home-page payload: service groups, per-service live state, 90-day daily uptime (state per day: ok, degraded, down, no_data), active incidents and current or upcoming maintenance windows.
Responses
Example response
{
"overall": "operational",
"updatedAt": 1783534774997,
"servicesUp": 12,
"servicesDown": 0,
"groups": [
{
"slug": "websites",
"name": { "en": "Websites", "fr": "Sites web" },
"description": null,
"services": [
{
"slug": "main-site",
"name": { "en": "Main site", "fr": "Site principal" },
"status": "up",
"lastCheckAt": 1783534770000,
"latencyMs": 42,
"uptime90d": 99.987,
"days": [
{ "date": "2026-04-11", "uptimePct": 100.0, "state": "ok" }
]
}
]
}
],
"activeIncidents": [],
"maintenance": []
}Services
/api/v1/services/{slug}/metricsLatency and uptime series
Time series for one service. 24h and 7d are bucketed from raw checks (at most 200 points). 90d returns one point per day from the daily rollups.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
| slug* | path | string | Public service identifier (see /api/v1/summary). |
| range | query | 24h | 7d | 90d | Window of the series. Default: 24h. |
Responses
Example response
{
"slug": "main-site",
"range": "24h",
"points": [
{ "t": 1783532993763, "latencyMs": 45, "uptimePct": 100.0 }
]
}Incidents
/api/v1/incidentsIncident list
Paginated incident list, newest first. severity is minor, major or critical. status is investigating, identified, monitoring or resolved.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
| state | query | active | resolved | all | Filter. Default: all. |
| page | query | integer | Zero-based page index. Default: 0. |
| pageSize | query | integer (1-50) | Items per page. Default: 10. |
Responses
Example response
{
"items": [
{
"id": 12,
"severity": "major",
"status": "resolved",
"title": { "en": "Elevated error rate", "fr": "Taux d'erreurs élevé" },
"affectedServiceIds": [3],
"startedAt": 1783440000000,
"resolvedAt": 1783452000000
}
],
"page": 0,
"pageSize": 10,
"total": 1
}/api/v1/incidents/{id}Incident detail
One incident with its full update timeline, newest update first.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
| id* | path | integer | Incident id. |
Responses
Example response
{
"id": 12,
"severity": "major",
"status": "resolved",
"title": { "en": "Elevated error rate", "fr": "Taux d'erreurs élevé" },
"updates": [
{
"status": "resolved",
"body": { "en": "Incident resolved.", "fr": "Incident résolu." },
"createdAt": 1783452000000
}
]
}Maintenance
/api/v1/maintenanceMaintenance windows
Maintenance windows with derived state (upcoming, in_progress, completed, cancelled). By default only windows that have not ended yet are returned.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
| window | query | upcoming | past | all | Filter. Default: upcoming. |
Responses
Example response
{
"items": [
{
"id": 4,
"title": { "en": "Database upgrade", "fr": "Mise à niveau base de données" },
"body": { "en": "Planned upgrade.", "fr": "Mise à niveau planifiée." },
"scheduledStart": 1783620000000,
"scheduledEnd": 1783627200000,
"affectedServiceIds": [1, 3],
"state": "upcoming"
}
],
"window": "upcoming"
}