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:

Run in Postman

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:

  1. Retrieve all active incidents.
  2. Inspect the incident_services relationships in the response.
  3. Filter the results on the client side.

Email subscriptions versus the Status API

The Status API and email subscriptions serve different purposes:

FeatureStatus APIEmail 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:

NameTypeRead-onlyMandatoryDescription
dataarrayfalsefalsePrimary incident data with attributes and relationships
includedarrayfalsefalseRelated 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:

FieldTypeDescription
idstringUnique identifier for the incident
typestringResource type (always "incident")
attributesobjectIncident attributes (see below)
relationshipsobjectReferences to related resources

Incident attributes:

FieldTypeDescription
titlestringPublic-facing title of the incident
impactstringSeverity level: "none", "minor", "major", or "critical"
started_atstring (ISO 8601)When the incident began
resolved_atstring or null (ISO 8601)When the incident was resolved (null if still active)
statusstringCurrent phase: "investigating", "identified", "monitoring", or "resolved"
outagebooleanWhether this is a complete service outage
degradationbooleanWhether this is a service degradation
postmortemstringLink to incident postmortem (empty if not available)

Maintenance incidents have these additional attributes:

FieldTypeDescription
maintenance_start_timestring (ISO 8601)Scheduled start time for maintenance
maintenance_end_timestring or null (ISO 8601)Scheduled end time for maintenance
maintenance_articlestringLink 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:

  1. incident_update - Status updates posted during the incident.

    FieldTypeDescription
    idstringUpdate identifier
    typestring"incident_update"
    attributes.descriptionstringText content of the update
    attributes.created_atstring (ISO 8601)When the update was posted
  2. incident_service - Join records linking incidents to affected services.

    FieldTypeDescription
    idstringRecord identifier
    typestring"incident_service"
    attributes.incident_idstringRelated incident ID
    attributes.service_idstringRelated 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.outagebooleanWhether service had complete outage
    attributes.degradationbooleanWhether service was degraded
    relationships.serviceobjectReference to the service object
  3. service - Affected Zendesk products or services.

    FieldTypeDescription
    idstringService identifier
    typestring"service"
    attributes.namestringDisplay name. Examples: "Support", "API"
    attributes.slugstringURL-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

NameTypeInRequiredDescription
subdomainstringQueryfalseSubdomain

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 HTTPBasicAuth
url = "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

NameTypeInRequiredDescription
subdomainstringQueryfalseSubdomain

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 HTTPBasicAuth
url = "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

NameTypeInRequiredDescription
include[]stringQueryfalseOptional 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_idstringPathtrueId 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 HTTPBasicAuth
url = "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"    }  ]}