Status API
The Status API is a public-facing API for determining the status of services in the Zendesk infrastructure.
Authentication is not required for this API.
Run in Postman
If you use Postman, you can import the Status API endpoints as a collection into your Postman app, then try out different requests to learn how the API works. Click the following button to get started:
If you don't use Postman, you can sign up for a free account on the Postman website and download the app. For more information about using Postman with Zendesk APIs, see Exploring Zendesk APIs with Postman.
API path
The path of the Status API differs from the Zendesk v2 APIs. Instead of https://{subdomain}.zendesk.com, which gives you access to your Zendesk instance, the path of the Status API is as follows:
https://status.zendesk.com
The API gives you access to status.zendesk.com rather than your Zendesk instance.
Rate limit
This API is rate limited to 10 requests per minute.
Important limitations
Active incidents only
The Status API only returns information about currently active incidents and upcoming maintenance windows. It is not possible to query the API for:
- Resolved incidents
- Historical incident data
- Resolution notifications for past incidents
This differs from incident email subscriptions, which send notifications for all incident lifecycle events including resolutions.
No product filtering
It is not currently possible to filter API queries by specific affected products or services. The API returns all active incidents across the Zendesk infrastructure. To identify incidents affecting specific products, you must:
- Retrieve all active incidents.
- Inspect the
incident_servicesrelationships in the response. - Filter the results on the client side.
Email subscriptions versus the Status API
The Status API and email subscriptions serve different purposes:
| Feature | Status API | Email Subscriptions |
|---|---|---|
| Active incidents | ✓ Available | ✓ Sent |
| Resolution notifications | ✗ Not available | ✓ Sent |
| Historical data | ✗ Not available | ✓ Archived in email |
| Product filtering | ✗ Client-side only | ✓ Subscription preferences |
| Real-time polling | ✓ Supported | ✗ Push-based |
Use case guidance:
- Use the Status API for real-time status checks and monitoring dashboards
- Use email subscriptions to receive notifications for all incident updates, including resolutions
JSON format
Responses are represented as JSON objects with the following properties:
| Name | Type | Read-only | Mandatory | Description |
|---|---|---|---|---|
| data | array | false | false | Primary incident data with attributes and relationships |
| included | array | false | false | Related resources (incident_updates, incident_services, and services). Automatically included for all endpoints except the Show Active Incident endpoint. |
data
Contains the primary incident resources in the following structure:
| Field | Type | Description |
|---|---|---|
id | string | Unique identifier for the incident |
type | string | Resource type (always "incident") |
attributes | object | Incident attributes (see below) |
relationships | object | References to related resources |
Incident attributes:
| Field | Type | Description |
|---|---|---|
title | string | Public-facing title of the incident |
impact | string | Severity level: "none", "minor", "major", or "critical" |
started_at | string (ISO 8601) | When the incident began |
resolved_at | string or null (ISO 8601) | When the incident was resolved (null if still active) |
status | string | Current phase: "investigating", "identified", "monitoring", or "resolved" |
outage | boolean | Whether this is a complete service outage |
degradation | boolean | Whether this is a service degradation |
postmortem | string | Link to incident postmortem (empty if not available) |
Maintenance incidents have these additional attributes:
| Field | Type | Description |
|---|---|---|
maintenance_start_time | string (ISO 8601) | Scheduled start time for maintenance |
maintenance_end_time | string or null (ISO 8601) | Scheduled end time for maintenance |
maintenance_article | string | Link to maintenance article |
included
The included array contains related resources that can be optionally included in the response. By default, all endpoints return full sideloads automatically except the Show Active Incident endpoint (deprecated), which requires the include[] query parameter.
How to request sideloads
For the GET /api/incidents/{incident_id} endpoint only, use the include[] query parameter:
?include[]=incident_updates,incident_services,incident_services.service
Available sideload types:
-
incident_update - Status updates posted during the incident.
Field Type Description idstring Update identifier typestring "incident_update" attributes.descriptionstring Text content of the update attributes.created_atstring (ISO 8601) When the update was posted -
incident_service - Join records linking incidents to affected services.
Field Type Description idstring Record identifier typestring "incident_service" attributes.incident_idstring Related incident ID attributes.service_idstring Related service ID attributes.started_atstring (ISO 8601) When service became affected (active incidents only) attributes.resolved_atstring or null (ISO 8601) When service impact ended attributes.outageboolean Whether service had complete outage attributes.degradationboolean Whether service was degraded relationships.serviceobject Reference to the service object -
service - Affected Zendesk products or services.
Field Type Description idstring Service identifier typestring "service" attributes.namestring Display name. Examples: "Support", "API" attributes.slugstring URL-friendly identifier
Example with full sideloads
{"data": {"id": "247","type": "incident","attributes": {"title": "Big, Bad incident","impact": "major","started_at": "2022-05-11T19:56:49.000Z","resolved_at": null,"status": "investigating","outage": true,"degradation": false,"postmortem": ""},"relationships": {"incident_updates": {"data": [{ "id": "7", "type": "incident_update" },{ "id": "8", "type": "incident_update" }]},"incident_services": {"data": [{ "id": "5052", "type": "incident_service" }]}}},"included": [{"id": "7","type": "incident_update","attributes": {"description": "This is an incident description","created_at": "2022-05-11T19:58:13.000Z"}},{"id": "8","type": "incident_update","attributes": {"description": "First Incident Update","created_at": "2022-05-11T19:58:13.000Z"}},{"id": "5052","type": "incident_service","attributes": {"incident_id": "247","service_id": "2","started_at": "2022-05-11T19:56:49.000Z","resolved_at": null,"outage": true,"degradation": false},"relationships": {"service": {"data": { "id": "2", "type": "service" }}}},{"id": "2","type": "service","attributes": {"name": "Ticketing","slug": "support-ticketing"}}]}
List Active Incidents
GET /api/incidents/active
Gets all currently active incidents.
Important: This endpoint only returns incidents that are currently active. Resolved incidents and resolution notifications are not available through the API.
Product filtering: It is not possible to filter by specific affected products via query parameters. To find incidents affecting specific products, retrieve all incidents and inspect the incident_services relationships in the response.
Optionally filter your results by subdomain by appending ?subdomain={subdomain}.
The response automatically includes all related resources (incident_updates, incident_services, and services) in the included array.
Parameters
| Name | Type | In | Required | Description |
|---|---|---|---|---|
| subdomain | string | Query | false | Subdomain |
Code Samples
curl
curl https://status.zendesk.com/api/incidents/active
Go
import ("fmt""io""net/http")func main() {url := "https://support.zendesk.com/api/incidents/active?subdomain=mycompany"method := "GET"req, err := http.NewRequest(method, url, nil)if err != nil {fmt.Println(err)return}req.Header.Add("Content-Type", "application/json")req.Header.Add("Authorization", "Basic <auth-value>") // Base64 encoded "{email_address}/token:{api_token}"client := &http.Client {}res, err := client.Do(req)if err != nil {fmt.Println(err)return}defer res.Body.Close()body, err := io.ReadAll(res.Body)if err != nil {fmt.Println(err)return}fmt.Println(string(body))}
Java
import com.squareup.okhttp.*;OkHttpClient client = new OkHttpClient();HttpUrl.Builder urlBuilder = HttpUrl.parse("https://support.zendesk.com/api/incidents/active").newBuilder().addQueryParameter("subdomain", "mycompany");String userCredentials = "your_email_address" + "/token:" + "your_api_token";String basicAuth = "Basic " + java.util.Base64.getEncoder().encodeToString(userCredentials.getBytes());Request request = new Request.Builder().url(urlBuilder.build()).method("GET", null).addHeader("Content-Type", "application/json").addHeader("Authorization", basicAuth).build();Response response = client.newCall(request).execute();
Nodejs
var axios = require('axios');var config = {method: 'GET',url: 'https://support.zendesk.com/api/incidents/active',headers: {'Content-Type': 'application/json','Authorization': 'Basic <auth-value>', // Base64 encoded "{email_address}/token:{api_token}"},params: {'subdomain': 'mycompany',},};axios(config).then(function (response) {console.log(JSON.stringify(response.data));}).catch(function (error) {console.log(error);});
Python
import requestsfrom requests.auth import HTTPBasicAuthurl = "https://support.zendesk.com/api/incidents/active?subdomain=mycompany"headers = {"Content-Type": "application/json",}email_address = 'your_email_address'api_token = 'your_api_token'# Use basic authenticationauth = HTTPBasicAuth(f'{email_address}/token', api_token)response = requests.request("GET",url,auth=auth,headers=headers)print(response.text)
Ruby
require "net/http"require "base64"uri = URI("https://support.zendesk.com/api/incidents/active")uri.query = URI.encode_www_form("subdomain": "mycompany")request = Net::HTTP::Get.new(uri, "Content-Type": "application/json")email = "your_email_address"api_token = "your_api_token"credentials = "#{email}/token:#{api_token}"encoded_credentials = Base64.strict_encode64(credentials)request["Authorization"] = "Basic #{encoded_credentials}"response = Net::HTTP.start uri.hostname, uri.port, use_ssl: true do |http|http.request(request)end
Example response(s)
200 OK
// Status 200 OK{"data": [{"attributes": {"degradation": false,"impact": "major","outage": true,"postmortem": "","resolved_at": null,"started_at": "2022-05-11T19:56:49.000Z","status": "investigating","title": "Big, Bad incident"},"id": "247","relationships": {"incident_services": {"data": [{"id": "5032","type": "incident_service"},{"id": "5033","type": "incident_service"},{"id": "5034","type": "incident_service"}]},"incident_updates": {"data": [{"id": "7","type": "incident_update"},{"id": "8","type": "incident_update"}]}},"type": "incident"}],"included": [{"attributes": {"created_at": "2022-05-11T19:58:13.000Z","description": "This is an incident description"},"id": "7","type": "incident_update"},{"attributes": {"created_at": "2022-05-11T19:58:13.000Z","description": "First Incident Update"},"id": "8","type": "incident_update"},{"attributes": {"name": "Ticketing","slug": "support-ticketing"},"id": "2","type": "service"},{"attributes": {"degradation": false,"incident_id": "247","outage": true,"resolved_at": null,"service_id": "2","started_at": "2022-05-11T19:56:49.000Z"},"id": "5052","relationships": {"service": {"data": {"id": "2","type": "service"}}},"type": "incident_service"},{"attributes": {"name": "API","slug": "support-api"},"id": "10","type": "service"},{"attributes": {"degradation": false,"incident_id": "247","outage": true,"resolved_at": null,"service_id": "10","started_at": "2022-05-11T19:56:49.000Z"},"id": "5053","relationships": {"service": {"data": {"id": "10","type": "service"}}},"type": "incident_service"},{"attributes": {"name": "Support","slug": "support"},"id": "1","type": "service"},{"attributes": {"degradation": false,"incident_id": "247","outage": true,"resolved_at": null,"service_id": "1","started_at": "2022-05-11T19:56:49.000Z"},"id": "5054","relationships": {"service": {"data": {"id": "1","type": "service"}}},"type": "incident_service"}]}
List Maintenance Incidents
GET /api/incidents/maintenance
Use the List Maintenance Incidents endpoint to get all upcoming scheduled maintenance incidents.
Important: This endpoint only returns future scheduled maintenance. Past maintenance windows and their resolutions are not available through the API.
Optionally filter your results by subdomain by appending ?subdomain={subdomain}.
The response automatically includes all related resources (incident_updates, incident_services, and services) in the included array.
Parameters
| Name | Type | In | Required | Description |
|---|---|---|---|---|
| subdomain | string | Query | false | Subdomain |
Code Samples
curl
curl https://status.zendesk.com/api/incidents/maintenance
Go
import ("fmt""io""net/http")func main() {url := "https://support.zendesk.com/api/incidents/maintenance?subdomain=mycompany"method := "GET"req, err := http.NewRequest(method, url, nil)if err != nil {fmt.Println(err)return}req.Header.Add("Content-Type", "application/json")req.Header.Add("Authorization", "Basic <auth-value>") // Base64 encoded "{email_address}/token:{api_token}"client := &http.Client {}res, err := client.Do(req)if err != nil {fmt.Println(err)return}defer res.Body.Close()body, err := io.ReadAll(res.Body)if err != nil {fmt.Println(err)return}fmt.Println(string(body))}
Java
import com.squareup.okhttp.*;OkHttpClient client = new OkHttpClient();HttpUrl.Builder urlBuilder = HttpUrl.parse("https://support.zendesk.com/api/incidents/maintenance").newBuilder().addQueryParameter("subdomain", "mycompany");String userCredentials = "your_email_address" + "/token:" + "your_api_token";String basicAuth = "Basic " + java.util.Base64.getEncoder().encodeToString(userCredentials.getBytes());Request request = new Request.Builder().url(urlBuilder.build()).method("GET", null).addHeader("Content-Type", "application/json").addHeader("Authorization", basicAuth).build();Response response = client.newCall(request).execute();
Nodejs
var axios = require('axios');var config = {method: 'GET',url: 'https://support.zendesk.com/api/incidents/maintenance',headers: {'Content-Type': 'application/json','Authorization': 'Basic <auth-value>', // Base64 encoded "{email_address}/token:{api_token}"},params: {'subdomain': 'mycompany',},};axios(config).then(function (response) {console.log(JSON.stringify(response.data));}).catch(function (error) {console.log(error);});
Python
import requestsfrom requests.auth import HTTPBasicAuthurl = "https://support.zendesk.com/api/incidents/maintenance?subdomain=mycompany"headers = {"Content-Type": "application/json",}email_address = 'your_email_address'api_token = 'your_api_token'# Use basic authenticationauth = HTTPBasicAuth(f'{email_address}/token', api_token)response = requests.request("GET",url,auth=auth,headers=headers)print(response.text)
Ruby
require "net/http"require "base64"uri = URI("https://support.zendesk.com/api/incidents/maintenance")uri.query = URI.encode_www_form("subdomain": "mycompany")request = Net::HTTP::Get.new(uri, "Content-Type": "application/json")email = "your_email_address"api_token = "your_api_token"credentials = "#{email}/token:#{api_token}"encoded_credentials = Base64.strict_encode64(credentials)request["Authorization"] = "Basic #{encoded_credentials}"response = Net::HTTP.start uri.hostname, uri.port, use_ssl: true do |http|http.request(request)end
Example response(s)
200 OK
// Status 200 OK{"data": [{"attributes": {"degradation": false,"impact": "major","maintenance_article": "","maintenance_end_time": "2022-05-11T20:12:49.000Z","maintenance_start_time": "2022-05-11T19:56:49.000Z","outage": true,"title": "Upcoming scheduled maintenance"},"id": "247","relationships": {"incident_services": {"data": [{"id": "5032","type": "incident_service"},{"id": "5033","type": "incident_service"},{"id": "5034","type": "incident_service"}]},"incident_updates": {"data": [{"id": "7","type": "incident_update"},{"id": "8","type": "incident_update"}]}},"type": "incident"}],"included": [{"attributes": {"created_at": "2022-05-11T19:58:13.000Z","description": "This is the maintenance description"},"id": "7","type": "incident_update"},{"attributes": {"created_at": "2022-05-11T19:58:13.000Z","description": "First Maintenance Update"},"id": "8","type": "incident_update"},{"attributes": {"name": "Ticketing","slug": "support-ticketing"},"id": "2","type": "service"},{"attributes": {"degradation": false,"incident_id": "247","outage": true,"service_id": "2"},"id": "5052","relationships": {"service": {"data": {"id": "2","type": "service"}}},"type": "incident_service"},{"attributes": {"name": "API","slug": "support-api"},"id": "10","type": "service"},{"attributes": {"degradation": false,"incident_id": "247","outage": true,"service_id": "10"},"id": "5053","relationships": {"service": {"data": {"id": "10","type": "service"}}},"type": "incident_service"},{"attributes": {"name": "Support","slug": "support"},"id": "1","type": "service"},{"attributes": {"degradation": false,"incident_id": "247","outage": true,"service_id": "1"},"id": "5054","relationships": {"service": {"data": {"id": "1","type": "service"}}},"type": "incident_service"}]}
Show Active Incident
GET /api/incidents/{incident_id}
Gets an active incident by its id.
Important: This endpoint only returns currently active incidents. It cannot retrieve resolved incidents or historical data.
Optionally include associated records by appending ?include[]={resource_types}, where {resource_type} is a comma-delimited list of one or more of the following:
incident_updates: Include incident update details. This information is also visible on the Zendesk Status page.incident_services: Include product-level information about the incident.incident_services.service: Include detailed information about which services are affected by the incident.
Example: ?include[]=incident_updates,incident_services,incident_services.service
Parameters
| Name | Type | In | Required | Description |
|---|---|---|---|---|
| include[] | string | Query | false | Optional related resources to include in the response. Comma-separated list of: incident_updates, incident_services, incident_services.service. Note: This parameter is only supported by the Show Active Incident endpoint. All other endpoints automatically include full sideloads by default. |
| incident_id | string | Path | true | Id of the incident |
Code Samples
curl
curl https://status.zendesk.com/api/incidents/{incident_id}}?include[]=incident_services,incident_updates,incident_services.service
Go
import ("fmt""io""net/http")func main() {url := "https://support.zendesk.com/api/incidents/247?include[]=incident_updates%2Cincident_services%2Cincident_services.service"method := "GET"req, err := http.NewRequest(method, url, nil)if err != nil {fmt.Println(err)return}req.Header.Add("Content-Type", "application/json")req.Header.Add("Authorization", "Basic <auth-value>") // Base64 encoded "{email_address}/token:{api_token}"client := &http.Client {}res, err := client.Do(req)if err != nil {fmt.Println(err)return}defer res.Body.Close()body, err := io.ReadAll(res.Body)if err != nil {fmt.Println(err)return}fmt.Println(string(body))}
Java
import com.squareup.okhttp.*;OkHttpClient client = new OkHttpClient();HttpUrl.Builder urlBuilder = HttpUrl.parse("https://support.zendesk.com/api/incidents/247").newBuilder().addQueryParameter("include[]", "incident_updates,incident_services,incident_services.service");String userCredentials = "your_email_address" + "/token:" + "your_api_token";String basicAuth = "Basic " + java.util.Base64.getEncoder().encodeToString(userCredentials.getBytes());Request request = new Request.Builder().url(urlBuilder.build()).method("GET", null).addHeader("Content-Type", "application/json").addHeader("Authorization", basicAuth).build();Response response = client.newCall(request).execute();
Nodejs
var axios = require('axios');var config = {method: 'GET',url: 'https://support.zendesk.com/api/incidents/247',headers: {'Content-Type': 'application/json','Authorization': 'Basic <auth-value>', // Base64 encoded "{email_address}/token:{api_token}"},params: {'include[]': 'incident_updates%2Cincident_services%2Cincident_services.service',},};axios(config).then(function (response) {console.log(JSON.stringify(response.data));}).catch(function (error) {console.log(error);});
Python
import requestsfrom requests.auth import HTTPBasicAuthurl = "https://support.zendesk.com/api/incidents/247?include[]=incident_updates%2Cincident_services%2Cincident_services.service"headers = {"Content-Type": "application/json",}email_address = 'your_email_address'api_token = 'your_api_token'# Use basic authenticationauth = HTTPBasicAuth(f'{email_address}/token', api_token)response = requests.request("GET",url,auth=auth,headers=headers)print(response.text)
Ruby
require "net/http"require "base64"uri = URI("https://support.zendesk.com/api/incidents/247")uri.query = URI.encode_www_form("include[]": "incident_updates,incident_services,incident_services.service")request = Net::HTTP::Get.new(uri, "Content-Type": "application/json")email = "your_email_address"api_token = "your_api_token"credentials = "#{email}/token:#{api_token}"encoded_credentials = Base64.strict_encode64(credentials)request["Authorization"] = "Basic #{encoded_credentials}"response = Net::HTTP.start uri.hostname, uri.port, use_ssl: true do |http|http.request(request)end
Example response(s)
200 OK
// Status 200 OK{"data": {"attributes": {"degradation": false,"impact": "major","outage": true,"postmortem": "","resolved_at": null,"started_at": "2022-05-11T19:56:49.000Z","status": "investigating","title": "Big, Bad incident"},"id": "247","relationships": {"incident_services": {"data": [{"id": "5032","type": "incident_service"},{"id": "5033","type": "incident_service"},{"id": "5034","type": "incident_service"}]},"incident_updates": {"data": [{"id": "7","type": "incident_update"},{"id": "8","type": "incident_update"}]}},"type": "incident"},"included": [{"attributes": {"created_at": "2022-05-11T19:58:13.000Z","description": "This is an incident description"},"id": "7","type": "incident_update"},{"attributes": {"created_at": "2022-05-11T19:58:13.000Z","description": "First Incident Update"},"id": "8","type": "incident_update"},{"attributes": {"name": "Ticketing","slug": "support-ticketing"},"id": "2","type": "service"},{"attributes": {"degradation": false,"incident_id": "247","outage": true,"resolved_at": null,"service_id": "2","started_at": "2022-05-11T19:56:49.000Z"},"id": "5052","relationships": {"service": {"data": {"id": "2","type": "service"}}},"type": "incident_service"},{"attributes": {"name": "API","slug": "support-api"},"id": "10","type": "service"},{"attributes": {"degradation": false,"incident_id": "247","outage": true,"resolved_at": null,"service_id": "10","started_at": "2022-05-11T19:56:49.000Z"},"id": "5053","relationships": {"service": {"data": {"id": "10","type": "service"}}},"type": "incident_service"},{"attributes": {"name": "Support","slug": "support"},"id": "1","type": "service"},{"attributes": {"degradation": false,"incident_id": "247","outage": true,"resolved_at": null,"service_id": "1","started_at": "2022-05-11T19:56:49.000Z"},"id": "5054","relationships": {"service": {"data": {"id": "1","type": "service"}}},"type": "incident_service"}]}