'
);
if (
i_value.impact === "none" &&
i_value.status === "investigating"
) {
i_value.components.forEach((component, index) => {
$(".components-affected-wrapper").append(
"
" + component.name + ""
);
});
}
$.each(
i_value.incident_updates,
function (iu_index, iu_value) {
if (iu_value.affected_components !== null) {
$.each(
iu_value.affected_components,
function (ac_index, ac_value) {
if (
ac_value.new_status != "operational" &&
!componentsArray.includes(ac_value.name)
) {
if (ac_value.new_status == "major_outage") {
affected_class = "red-dot-own";
} else if (
ac_value.new_status == "partial_outage" ||
ac_value.new_status == "degraded_performance"
) {
affected_class = "orange-dot-own";
} else if (
ac_value.new_status == "under_maintenance"
) {
affected_class = "yellow-dot-own";
} else {
affected_class = "green-dot-own";
}
comp_name = ac_value.name.substring(
ac_value.name.indexOf("-") + 1
);
$(".components-affected-wrapper").append(
'
' +
comp_name +
""
);
componentsArray.push(ac_value.name);
affected_component = ac_value.name;
foundIndex_sms =
e_services_with_group1a.indexOf(
affected_component
);
foundIndex_mms =
e_services_with_group1b.indexOf(
affected_component
);
foundIndex_voice =
e_services_with_group1c.indexOf(
affected_component
);
if (
foundIndex_sms != -1 &&
!componentsArray.includes("SMS")
) {
$(".components-affected-wrapper").append(
'
SMS'
);
componentsArray.push("SMS");
} else if (
foundIndex_mms != -1 &&
!componentsArray.includes("MMS")
) {
$(".components-affected-wrapper").append(
'
MMS'
);
componentsArray.push("MMS");
} else if (
foundIndex_voice != -1 &&
!componentsArray.includes("PSTN")
) {
$(".components-affected-wrapper").append(
'
PSTN'
);
componentsArray.push("PSTN");
}
}
}
);
}
}
);
}
});
}
);
}
setTimeout(function () {
$(".loader-wrapper").fadeOut();
}, 500);
$(".main-page").hide();
$("#above_footer").hide();
} else {
summaryData.scheduled_maintenances = $.grep(
summaryData.scheduled_maintenances,
function (sm_value, sm_index) {
if (sm_value.status == "in_progress") {
summaryData.incidents.push(sm_value);
return false;
}
return true;
}
);
// for incidents
$.each(summaryData.incidents, function (index, value) {
if (value.impact == "critical") {
incident_header_bg_class = "bg-red";
} else if (value.impact == "major" || value.impact == "minor") {
incident_header_bg_class = "bg-orange";
} else if (value.impact == "maintenance") {
incident_header_bg_class = "bg-blue";
} else {
incident_header_bg_class = "bg-green";
}
incidentHtml =
'
';
if (value.impact == "none" && value.status == "investigating") {
var message_body = get_incident_message(
value,
value.incident_updates[0].body
);
incidentHtml =
'
' +
'
' +
'
' +
message_body +
" " +
get_time_tz(value.updated_at, "PST") +
" PST
";
$("#green_alerted_container").append(incidentHtml);
} else if (value.impact == "critical") {
$("#red_incident_container").append(incidentHtml);
} else if (value.impact == "major") {
$("#major_incident_container").append(incidentHtml);
} else if (value.impact == "maintenance") {
$("#maintenance_incident").append(incidentHtml);
} else {
$("#orange_incident_container").append(incidentHtml);
}
$.each(value.incident_updates, function (iu_index, iu_value) {
var iu_status = iu_value.status.replace(/_/g, " ");
incidentUpdate =
'
\
\
' +
iu_status +
" \
- " +
iu_value.body +
' \
\
\
Posted: ' +
get_time_tz(iu_value.display_at, "PST") +
" PST \
\
";
$("#" + iu_value.incident_id).append(incidentUpdate);
});
if (
value.incident_updates[0] &&
value.incident_updates[0].affected_components
) {
$.each(
value.incident_updates[0].affected_components,
function (iuac_index, iuac_value) {
var affected_service = iuac_value.name.substring(
iuac_value.name.indexOf("-") + 1
);
incidentUpdate_ac =
'
' +
affected_service +
"
";
$("#services_" + value.id).append(incidentUpdate_ac);
}
);
}
});
var containers = [
"#major_incident_container",
"#red_incident_container",
"#orange_incident_container",
"#maintenance_incident",
"#green_alerted_container",
];
var children = $(containers.join(",")).map(function () {
return $(this).children().length;
});
var totalNumChildren = children.get().reduce(function (total, count) {
return total + count;
},0);
if (totalNumChildren === 0) {
$("#component_top_hr").hide();
} else {
$("#above_footer").hide();
}
//for components
$.each(
summaryData.components,
function (componentsIndex, componentsValue) {
if (
componentsValue.group == true ||
(componentsValue.group == false &&
componentsValue.group_id == null)
) {
if (componentsValue.status == "major_outage") {
dot_class = "red-dot-own";
} else if (
componentsValue.status == "partial_outage" ||
componentsValue.status == "degraded_performance"
) {
dot_class = "orange-dot-own";
} else if (componentsValue.status == "under_maintenance") {
dot_class = "blue-dot-own";
} else {
dot_class = "green-dot-own";
}
if (
componentsValue.name == external_services_group1 ||
componentsValue.name == external_services_group2
) {
componentHtml =
'
' +
componentsValue.name +
"
";
$("#external_components").append(componentHtml);
if (componentsValue.components) {
componentUl =
'
';
$("#external_components li:last-child").append(componentUl);
}
} else if(componentsValue.name == zipwhip_group1 || componentsValue.name == zipwhip_group2) {
componentHtml =
'
' +
componentsValue.name +
"
";
$("#zipwhip_components").append(componentHtml);
if (componentsValue.components) {
componentUl =
'
';
$("#zipwhip_components li:last-child").append(componentUl);
}
}
else {
componentHtml =
'
' +
componentsValue.name +
"
";
$("#twilio_components").append(componentHtml);
if (componentsValue.components) {
componentUl =
'
';
$("#twilio_components li:last-child").append(componentUl);
}
}
}
}
);
$.each(
summaryData.components,
function (componentsIndex, componentsValue) {
if (componentsValue.group == false) {
if (componentsValue.status == "operational") {
if (make_hollow_green_sms && componentsValue.name == "SMS") {
dot_class = "green-outline-dot-own";
} else if (
make_hollow_green_mms &&
componentsValue.name == "MMS"
) {
dot_class = "green-outline-dot-own";
} else if (
make_hollow_green_voice &&
componentsValue.name == "PSTN"
) {
dot_class = "green-outline-dot-own";
} else {
dot_class = "green-dot-own";
}
} else if (
componentsValue.status == "partial_outage" ||
componentsValue.status == "degraded_performance"
) {
dot_class = "orange-dot-own";
} else if (componentsValue.status == "under_maintenance") {
dot_class = "blue-dot-own";
} else {
dot_class = "red-dot-own";
}
componentHtml =
'
' +
componentsValue.name +
' ';
$("#" + componentsValue.group_id).append(componentHtml);
if (dot_class == "green-outline-dot-own") {
$("#" + componentsValue.id).append(
'

May be impacted by a connectivity issue'
);
}
}
}
);
$("ul.status-list").each(function () {
$(this).children("li:not(:first-child)").hide("slow");
if ($(this).children().length > 1) {
$(this).append(
'
Show more'
);
}
});
$(".show-more").on("click", function () {
if ($(this).text() == "Show more") {
$(this).parent().children().show("slow");
} else {
$(this).parent().children("li:not(:first-child)").hide("slow");
}
$(this).text() === "Show more"
? $(this).text("Show less")
: $(this).text("Show more");
});
// Add toggled sections for regional Programmable Voice & Elastic SIP Trunking
$("div.outer-box-heading:contains('PROGRAMMABLE VOICE'), div.outer-box-heading:contains('ELASTIC SIP TRUNKING')").prepend('
');
$("div.outer-box-heading:contains('PROGRAMMABLE VOICE'), div.outer-box-heading:contains('ELASTIC SIP TRUNKING')").next("ul.inner-box-dot-wrapper").toggle();
$("div.outer-box-heading:contains('PROGRAMMABLE VOICE'), div.outer-box-heading:contains('ELASTIC SIP TRUNKING')").click(function(e){
$(this).next("ul.inner-box-dot-wrapper").toggle();
if($(this).find("span.group-parent-indicator").hasClass("fa-plus-square-o")) {
$(this).find("span.group-parent-indicator").removeClass("fa-plus-square-o");
$(this).find("span.group-parent-indicator").addClass("fa-minus-square-o");
} else {
$(this).find("span.group-parent-indicator").addClass("fa-plus-square-o");
$(this).find("span.group-parent-indicator").removeClass("fa-minus-square-o");
}
})
// -------------
if (summaryData.scheduled_maintenances.length == 0) {
$("#scheduled_maintenances_div").append(
"
No scheduled maintenance at this time.
"
);
}
// for scheduled maintenances
$.each(
summaryData.scheduled_maintenances,
function (sm_index, sm_value) {
scheduled_count++;
var maintenance_start = get_time_tz(sm_value.scheduled_for, "PST");
var maintenance_end = get_time_tz(sm_value.scheduled_until, "PST");
incidentHtml =
'
\
\
' +
sm_value.name +
'
\
' +
maintenance_start +
" - " +
maintenance_end +
'
\
\
\
' +
sm_value.incident_updates[0].body +
'
\
\
MAINTENANCE PERIOD
\
\
\
\
- US Pacific: ' +
get_time_tz(sm_value.scheduled_for, "PST") +
" - " +
get_time_tz(sm_value.scheduled_until, "PST") +
"
\
- US Central: " +
get_time_tz(sm_value.scheduled_for, "CST") +
" - " +
get_time_tz(sm_value.scheduled_until, "CST") +
"
\
- US Eastern: " +
get_time_tz(sm_value.scheduled_for, "ET") +
" - " +
get_time_tz(sm_value.scheduled_until, "ET") +
"
\
- UTC: " +
get_time_tz(sm_value.scheduled_for, "UTC") +
" - " +
get_time_tz(sm_value.scheduled_until, "UTC") +
'
\
\
\
\
' +
get_time_tz(sm_value.incident_updates[0].display_at, "PST") +
" PST
\
\
\
\
";
$("#scheduled_maintenances_div").append(incidentHtml);
}
);
setTimeout(function () {
$(".loader-wrapper").fadeOut();
$("[data-js-hook=show-updates-dropdown]").addClass("btn btn-blue");
}, 500);
$(".page-footer").hide();
}
});
});
Subscribe to UpdatesSubscribe
Get email notifications whenever Twilio creates, updates or resolves an incident.
Get text message notifications whenever Twilio creates or resolves an incident.
Get webhook notifications whenever Twilio creates an incident, updates an incident, resolves an incident or changes a component status.
Basics
The following documentation is provided to let users of the Twilio status page programmatically access various elements on the page. Endpoints are displayed with examples using cURL and our embeded javascript widget (if available).
Javascript library
A wrapper for the page status api, exposing convenient actions useful for embedding your status anywhere.
https://cdn.statuspage.io/se-v2.js
Summary
Get a summary of the status page, including a status indicator, component statuses, unresolved incidents, and any upcoming or in-progress scheduled maintenances.
https://status.twilio.com/api/v2/summary.json
Click for example
Endpoint
https://status.twilio.com/api/v2/summary.json
Example definitions
## using JS widget
<script type="text/javascript" src="https://cdn.statuspage.io/se-v2.js"></script>
<script>
var sp = new StatusPage.page({ page : 'gpkpyklzq55q' });
sp.summary({
success : function(data) {
console.log(data.components[0].status);
}
});
</script>
## using cURL
curl https://status.twilio.com/api/v2/summary.json
Response
{
"page": {
"id": "gpkpyklzq55q",
"name": "Twilio",
"url": "https://status.twilio.com",
"updated_at": "2026-03-23T23:03:39-07:00"
},
"status": {
"description": "Partial System Outage",
"indicator": "major"
}
"components": [
{
"created_at": "2014-05-03T01:22:07.274Z",
"description": null,
"id": "b13yz5g2cw10",
"name": "API",
"page_id": "gpkpyklzq55q",
"position": 1,
"status": "partial_outage",
"updated_at": "2014-05-14T20:34:43.340Z"
},
{
"created_at": "2014-05-03T01:22:07.286Z",
"description": null,
"id": "9397cnvk62zn",
"name": "Management Portal",
"page_id": "gpkpyklzq55q",
"position": 2,
"status": "major_outage",
"updated_at": "2014-05-14T20:34:44.470Z"
}
],
"incidents": [
{
"created_at": "2014-05-14T14:22:39.441-06:00",
"id": "cp306tmzcl0y",
"impact": "critical",
"incident_updates": [
{
"body": "Our master database has ham sandwiches flying out of the rack, and we're working our hardest to stop the bleeding. The whole site is down while we restore functionality, and we'll provide another update within 30 minutes.",
"created_at": "2014-05-14T14:22:40.301-06:00",
"display_at": "2014-05-14T14:22:40.301-06:00",
"id": "jdy3tw5mt5r5",
"incident_id": "cp306tmzcl0y",
"status": "identified",
"updated_at": "2014-05-14T14:22:40.301-06:00"
}
],
"monitoring_at": null,
"name": "Unplanned Database Outage",
"page_id": "gpkpyklzq55q",
"resolved_at": null,
"shortlink": "http://stspg.co:5000/Q0E",
"status": "identified",
"updated_at": "2014-05-14T14:35:21.711-06:00"
}
],
"scheduled_maintenances": [
{
"created_at": "2014-05-14T14:24:40.430-06:00",
"id": "w1zdr745wmfy",
"impact": "none",
"incident_updates": [
{
"body": "Our data center has informed us that they will be performing routine network maintenance. No interruption in service is expected. Any issues during this maintenance should be directed to our support center",
"created_at": "2014-05-14T14:24:41.913-06:00",
"display_at": "2014-05-14T14:24:41.913-06:00",
"id": "qq0vx910b3qj",
"incident_id": "w1zdr745wmfy",
"status": "scheduled",
"updated_at": "2014-05-14T14:24:41.913-06:00"
}
],
"monitoring_at": null,
"name": "Network Maintenance (No Interruption Expected)",
"page_id": "gpkpyklzq55q",
"resolved_at": null,
"scheduled_for": "2014-05-17T22:00:00.000-06:00",
"scheduled_until": "2014-05-17T23:30:00.000-06:00",
"shortlink": "http://stspg.co:5000/Q0F",
"status": "scheduled",
"updated_at": "2014-05-14T14:24:41.918-06:00"
},
{
"created_at": "2014-05-14T14:27:17.303-06:00",
"id": "k7mf5z1gz05c",
"impact": "minor",
"incident_updates": [
{
"body": "Scheduled maintenance is currently in progress. We will provide updates as necessary.",
"created_at": "2014-05-14T14:34:20.036-06:00",
"display_at": "2014-05-14T14:34:20.036-06:00",
"id": "drs62w8df6fs",
"incident_id": "k7mf5z1gz05c",
"status": "in_progress",
"updated_at": "2014-05-14T14:34:20.036-06:00"
},
{
"body": "We will be performing rolling upgrades to our web tier with a new kernel version so that Heartbleed will stop making us lose sleep at night. Increased load and latency is expected, but the app should still function appropriately. We will provide updates every 30 minutes with progress of the reboots.",
"created_at": "2014-05-14T14:27:18.845-06:00",
"display_at": "2014-05-14T14:27:18.845-06:00",
"id": "z40y7398jqxc",
"incident_id": "k7mf5z1gz05c",
"status": "scheduled",
"updated_at": "2014-05-14T14:27:18.845-06:00"
}
],
"monitoring_at": null,
"name": "Web Tier Recycle",
"page_id": "gpkpyklzq55q",
"resolved_at": null,
"scheduled_for": "2014-05-14T14:30:00.000-06:00",
"scheduled_until": "2014-05-14T16:30:00.000-06:00",
"shortlink": "http://stspg.co:5000/Q0G",
"status": "in_progress",
"updated_at": "2014-05-14T14:35:12.258-06:00"
}
]
}
Status
Get the status rollup for the whole page. This endpoint includes an indicator - one of none, minor, major, or critical, as well as a human description of the blended component status. Examples of the blended status include "All Systems Operational", "Partial System Outage", and "Major Service Outage".
https://status.twilio.com/api/v2/status.json
Click for example
Endpoint
https://status.twilio.com/api/v2/status.json
Example definitions
## using JS widget
<script type="text/javascript" src="https://cdn.statuspage.io/se-v2.js"></script>
<script>
var sp = new StatusPage.page({ page : 'gpkpyklzq55q' });
sp.status({
success : function(data) {
console.log(data.status.indicator);
}
});
</script>
## using cURL
curl https://status.twilio.com/api/v2/status.json
Response
{
"page":{
"id":"gpkpyklzq55q",
"name":"Twilio",
"url":"https://status.twilio.com",
"updated_at": "2026-03-23T23:03:39-07:00"
},
"status": {
"description": "Partial System Outage",
"indicator": "major"
}
}
Components
Get the components for the page. Each component is listed along with its status - one of operational, degraded_performance, partial_outage, or major_outage.
https://status.twilio.com/api/v2/components.json
Click for example
Endpoint
https://status.twilio.com/api/v2/components.json
Example definitions
## using JS widget
<script type="text/javascript" src="https://cdn.statuspage.io/se-v2.js"></script>
<script>
var sp = new StatusPage.page({ page : 'gpkpyklzq55q' });
sp.components({
success: function(data) {
console.log(data.components[0].name);
}
})
</script>
## using cURL
curl https://status.twilio.com/api/v2/components.json
Response
{
"page": {
"id": "gpkpyklzq55q",
"name": "Twilio",
"url": "https://status.twilio.com",
"updated_at": "2026-03-23T23:03:39-07:00"
},
"components": [
{
"created_at": "2014-05-03T01:22:07.274Z",
"description": null,
"group": false,
"group_id": null,
"id": "b13yz5g2cw10",
"name": "API",
"only_show_if_degraded": false,
"page_id": "gpkpyklzq55q",
"position": 1,
"showcase": true,
"start_date": null,
"status": "partial_outage",
"updated_at": "2014-05-14T20:34:43.340Z"
},
{
"created_at": "2014-05-03T01:22:07.286Z",
"description": null,
"group": false,
"group_id": null,
"id": "9397cnvk62zn",
"name": "Management Portal",
"only_show_if_degraded": false,
"page_id": "gpkpyklzq55q",
"position": 2,
"showcase": true,
"start_date": null,
"status": "major_outage",
"updated_at": "2014-05-14T20:34:44.470Z"
}
]
}
Incidents
Incidents are the cornerstone of any status page, being composed of many incident updates. Each incident usually goes through a progression of statuses listed below, with an impact calculated from a blend of component statuses (or an optional override).
Status: Investigating, Identified, Monitoring, Resolved, or Postmortem
Impact: None (black), Minor (yellow), Major (orange), or Critical (red)
Unresolved incidents
Get a list of any unresolved incidents. This endpoint will only return incidents in the Investigating, Identified, or Monitoring state.
https://status.twilio.com/api/v2/incidents/unresolved.json
Click for example
Endpoint
https://status.twilio.com/api/v2/incidents/unresolved.json
Example definitions
## using JS widget
<script type="text/javascript" src="https://cdn.statuspage.io/se-v2.js"></script>
<script>
var sp = new StatusPage.page({ page : 'gpkpyklzq55q' });
sp.incidents({
filter : 'unresolved',
success: function(data) {
console.log(data.incidents[0].status);
}
})
</script>
## using cURL
curl https://status.twilio.com/api/v2/incidents/unresolved.json
Response
{
"page":{
"id":"gpkpyklzq55q",
"name":"Twilio",
"url":"https://status.twilio.com",
"updated_at": "2026-03-23T23:03:39-07:00"
},
"incidents": [
{
"created_at": "2014-05-14T14:22:39.441-06:00",
"id": "cp306tmzcl0y",
"impact": "critical",
"incident_updates": [
{
"body": "Our master database has ham sandwiches flying out of the rack, and we're working our hardest to stop the bleeding. The whole site is down while we restore functionality, and we'll provide another update within 30 minutes.",
"created_at": "2014-05-14T14:22:40.301-06:00",
"display_at": "2014-05-14T14:22:40.301-06:00",
"id": "jdy3tw5mt5r5",
"incident_id": "cp306tmzcl0y",
"status": "identified",
"updated_at": "2014-05-14T14:22:40.301-06:00"
}
],
"monitoring_at": null,
"name": "Unplanned Database Outage",
"page_id": "gpkpyklzq55q",
"resolved_at": null,
"shortlink": "http://stspg.co:5000/Q0E",
"status": "identified",
"updated_at": "2014-05-14T14:35:21.711-06:00"
}
]
}
All incidents
Get a list of the 50 most recent incidents. This includes all unresolved incidents as described above, as well as those in the Resolved and Postmortem state.
https://status.twilio.com/api/v2/incidents.json
Click for example
Endpoint
https://status.twilio.com/api/v2/incidents.json
Example definitions
## using JS widget
<script type="text/javascript" src="https://cdn.statuspage.io/se-v2.js"></script>
<script>
var sp = new StatusPage.page({ page : 'gpkpyklzq55q' });
sp.incidents({
success : function(data) {
console.log(data.incidents[0].name);
}
});
</script>
## using cURL
curl https://status.twilio.com/api/v2/incidents.json
Response
{
"page":{
"id":"gpkpyklzq55q",
"name":"Twilio",
"url":"https://status.twilio.com",
"updated_at": "2026-03-23T23:03:39-07:00"
},
"incidents": [
{
"created_at": "2014-05-14T14:22:39.441-06:00",
"id": "cp306tmzcl0y",
"impact": "critical",
"incident_updates": [
{
"body": "Our master database has ham sandwiches flying out of the rack, and we're working our hardest to stop the bleeding. The whole site is down while we restore functionality, and we'll provide another update within 30 minutes.",
"created_at": "2014-05-14T14:22:40.301-06:00",
"display_at": "2014-05-14T14:22:40.301-06:00",
"id": "jdy3tw5mt5r5",
"incident_id": "cp306tmzcl0y",
"status": "identified",
"updated_at": "2014-05-14T14:22:40.301-06:00"
}
],
"monitoring_at": null,
"name": "Unplanned Database Outage",
"page_id": "gpkpyklzq55q",
"resolved_at": null,
"shortlink": "http://stspg.co:5000/Q0E",
"status": "identified",
"updated_at": "2014-05-14T14:35:21.711-06:00"
},
{
"created_at": "2014-05-12T14:22:39.441-06:00",
"id": "2z5g29qrrxvl",
"impact": "minor",
"incident_updates": [
{
"body": "A small display issue with the display of the website was discovered after a recent deploy. The deploy has been rolled back and the website is again functioning correctly.",
"created_at": "2014-05-12T14:22:40.301-06:00",
"display_at": "2014-05-12T14:22:40.301-06:00",
"id": "vlzc06gtjnrl",
"incident_id": "2z5g29qrrxvl",
"status": "resolved",
"updated_at": "2014-05-12T14:22:40.301-06:00"
}
],
"monitoring_at": null,
"name": "Unplanned Database Outage",
"page_id": "gpkpyklzq55q",
"resolved_at": "2014-05-12T14:22:40.301-06:00",
"shortlink": "http://stspg.co:5000/Q0R",
"status": "resolved",
"updated_at": "2014-05-12T14:22:40.301-06:00"
}
]
}
Scheduled maintenances
Scheduled maintenances are planned outages, upgrades, or general notices that you're working on infrastructure and disruptions may occurr. A close sibling of Incidents, each usually goes through a progression of statuses listed below, with an impact calculated from a blend of component statuses (or an optional override).
Status: Scheduled, In Progress, Verifying, or Completed
Impact: None (black), Minor (yellow), Major (orange), or Critical (red)
Upcoming scheduled maintenances
Get a list of any upcoming maintenances. This endpoint will only return scheduled maintenances still in the Scheduled state.
https://status.twilio.com/api/v2/scheduled-maintenances/upcoming.json
Click for example
Endpoint
https://status.twilio.com/api/v2/scheduled-maintenances/upcoming.json
Example definitions
## using JS widget
<script type="text/javascript" src="https://cdn.statuspage.io/se-v2.js"></script>
<script>
var sp = new StatusPage.page({ page : 'gpkpyklzq55q' });
sp.scheduled_maintenances({
filter : 'upcoming',
success : function(data) {
console.log(data.scheduled_maintenances[0].scheduled_for);
}
});
</script>
## using cURL
curl https://status.twilio.com/api/v2/scheduled-maintenances/upcoming.json
Response
{
"page":{
"id":"gpkpyklzq55q",
"name":"Twilio",
"url":"https://status.twilio.com",
"updated_at": "2026-03-23T23:03:39-07:00"
},
"scheduled_maintenances": [
{
"created_at": "2014-05-14T14:24:40.430-06:00",
"id": "w1zdr745wmfy",
"impact": "none",
"incident_updates": [
{
"body": "Our data center has informed us that they will be performing routine network maintenance. No interruption in service is expected. Any issues during this maintenance should be directed to our support center",
"created_at": "2014-05-14T14:24:41.913-06:00",
"display_at": "2014-05-14T14:24:41.913-06:00",
"id": "qq0vx910b3qj",
"incident_id": "w1zdr745wmfy",
"status": "scheduled",
"updated_at": "2014-05-14T14:24:41.913-06:00"
}
],
"monitoring_at": null,
"name": "Network Maintenance (No Interruption Expected)",
"page_id": "gpkpyklzq55q",
"resolved_at": null,
"scheduled_for": "2014-05-17T22:00:00.000-06:00",
"scheduled_until": "2014-05-17T23:30:00.000-06:00",
"shortlink": "http://stspg.co:5000/Q0F",
"status": "scheduled",
"updated_at": "2014-05-14T14:24:41.918-06:00"
}
]
}
Active scheduled maintenances
Get a list of any active maintenances. This endpoint will only return scheduled maintenances in the In Progress or Verifying state.
https://status.twilio.com/api/v2/scheduled-maintenances/active.json
Click for example
Endpoint
https://status.twilio.com/api/v2/scheduled-maintenances/active.json
Example definitions
## using JS widget
<script type="text/javascript" src="https://cdn.statuspage.io/se-v2.js"></script>
<script>
var sp = new StatusPage.page({ page : 'gpkpyklzq55q' });
sp.scheduled_maintenances({
filter : 'active',
success : function(data) {
console.log(data.scheduled_maintenances[0].status);
}
});
</script>
## using cURL
curl https://status.twilio.com/api/v2/scheduled-maintenances/active.json
Response
{
"page":{
"id":"gpkpyklzq55q",
"name":"Twilio",
"url":"https://status.twilio.com",
"updated_at": "2026-03-23T23:03:39-07:00"
},
"scheduled_maintenances": [
{
"created_at": "2014-05-14T14:27:17.303-06:00",
"id": "k7mf5z1gz05c",
"impact": "minor",
"incident_updates": [
{
"body": "Scheduled maintenance is currently in progress. We will provide updates as necessary.",
"created_at": "2014-05-14T14:34:20.036-06:00",
"display_at": "2014-05-14T14:34:20.036-06:00",
"id": "drs62w8df6fs",
"incident_id": "k7mf5z1gz05c",
"status": "in_progress",
"updated_at": "2014-05-14T14:34:20.036-06:00"
},
{
"body": "We will be performing rolling upgrades to our web tier with a new kernel version so that Heartbleed will stop making us lose sleep at night. Increased load and latency is expected, but the app should still function appropriately. We will provide updates every 30 minutes with progress of the reboots.",
"created_at": "2014-05-14T14:27:18.845-06:00",
"display_at": "2014-05-14T14:27:18.845-06:00",
"id": "z40y7398jqxc",
"incident_id": "k7mf5z1gz05c",
"status": "scheduled",
"updated_at": "2014-05-14T14:27:18.845-06:00"
}
],
"monitoring_at": null,
"name": "Web Tier Recycle",
"page_id": "gpkpyklzq55q",
"resolved_at": null,
"scheduled_for": "2014-05-14T14:30:00.000-06:00",
"scheduled_until": "2014-05-14T16:30:00.000-06:00",
"shortlink": "http://stspg.co:5000/Q0G",
"status": "in_progress",
"updated_at": "2014-05-14T14:35:12.258-06:00"
}
]
}
All scheduled maintenances
Get a list of the 50 most recent scheduled maintenances. This includes scheduled maintenances as described in the above two endpoints, as well as those in the Completed state.
https://status.twilio.com/api/v2/scheduled-maintenances.json
Click for example
Endpoint
https://status.twilio.com/api/v2/scheduled-maintenances.json
Example definitions
## using JS widget
<script type="text/javascript" src="https://cdn.statuspage.io/se-v2.js"></script>
<script>
var sp = new StatusPage.page({ page : 'gpkpyklzq55q' });
sp.scheduled_maintenances({
success : function(data) {
console.log(data.scheduled_maintenances[0].name);
}
});
</script>
## using cURL
curl https://status.twilio.com/api/v2/scheduled-maintenances.json
Response
{
"page":{
"id":"gpkpyklzq55q",
"name":"Twilio",
"url":"https://status.twilio.com",
"updated_at": "2026-03-23T23:03:39-07:00"
},
"scheduled_maintenances": [
{
"created_at": "2014-05-14T14:24:40.430-06:00",
"id": "w1zdr745wmfy",
"impact": "none",
"incident_updates": [
{
"body": "Our data center has informed us that they will be performing routine network maintenance. No interruption in service is expected. Any issues during this maintenance should be directed to our support center",
"created_at": "2014-05-14T14:24:41.913-06:00",
"display_at": "2014-05-14T14:24:41.913-06:00",
"id": "qq0vx910b3qj",
"incident_id": "w1zdr745wmfy",
"status": "scheduled",
"updated_at": "2014-05-14T14:24:41.913-06:00"
}
],
"monitoring_at": null,
"name": "Network Maintenance (No Interruption Expected)",
"page_id": "gpkpyklzq55q",
"resolved_at": null,
"scheduled_for": "2014-05-17T22:00:00.000-06:00",
"scheduled_until": "2014-05-17T23:30:00.000-06:00",
"shortlink": "http://stspg.co:5000/Q0F",
"status": "scheduled",
"updated_at": "2014-05-14T14:24:41.918-06:00"
},
{
"created_at": "2014-05-14T14:27:17.303-06:00",
"id": "k7mf5z1gz05c",
"impact": "minor",
"incident_updates": [
{
"body": "Scheduled maintenance is currently in progress. We will provide updates as necessary.",
"created_at": "2014-05-14T14:34:20.036-06:00",
"display_at": "2014-05-14T14:34:20.036-06:00",
"id": "drs62w8df6fs",
"incident_id": "k7mf5z1gz05c",
"status": "in_progress",
"updated_at": "2014-05-14T14:34:20.036-06:00"
},
{
"body": "We will be performing rolling upgrades to our web tier with a new kernel version so that Heartbleed will stop making us lose sleep at night. Increased load and latency is expected, but the app should still function appropriately. We will provide updates every 30 minutes with progress of the reboots.",
"created_at": "2014-05-14T14:27:18.845-06:00",
"display_at": "2014-05-14T14:27:18.845-06:00",
"id": "z40y7398jqxc",
"incident_id": "k7mf5z1gz05c",
"status": "scheduled",
"updated_at": "2014-05-14T14:27:18.845-06:00"
}
],
"monitoring_at": null,
"name": "Web Tier Recycle",
"page_id": "gpkpyklzq55q",
"resolved_at": null,
"scheduled_for": "2014-05-14T14:30:00.000-06:00",
"scheduled_until": "2014-05-14T16:30:00.000-06:00",
"shortlink": "http://stspg.co:5000/Q0G",
"status": "in_progress",
"updated_at": "2014-05-14T14:35:12.258-06:00"
}
]
}
Subscribers
Subscribers receive incident notifications via email, SMS, or webhook. You can create and remove subscriptions for all upcoming incidents as well as specific incidents using the subscribers api.
You can even tune which components a subscriber is interested in.
Page subscribers
A page subscriber is by default subscribed to all incidents associated with a page.
https://status.twilio.com/api/v2/subscribers.json
Click for example
Endpoint
https://status.twilio.com/api/v2/subscribers.json
Arguments
- subscriber {Object} : required
- subscriber.email {String} : required
- subscriber.components {Array} : optional
Example definitions
## using JS widget
<script type="text/javascript" src="https://cdn.statuspage.io/se-v2.js"></script>
<script>
var sp = new StatusPage.page({ page : 'gpkpyklzq55q' });
sp.subscribe({
subscriber : {
email : 'tyler@statuspage.io',
components : ["f7f727f39kx3","s2k3h0mkqnth"]
},
success : function (response) {
console.log(response.email)
}
});
</script>
## using cURL
curl https://status.twilio.com/api/v2/subscribers.json \
-X POST \
-d "subscriber[components][]=f7f727f39kx3" \
-d "subscriber[components][]=s2k3h0mkqnth" \
-d "subscriber[email]=tyler@statuspage.io"
Response
{
"subscriber": {
"email": "tyler@statuspage.io",
"created_at": "2014-10-19T15:00:35.774Z",
"skip_confirmation_notification": false,
"id": "2ghdy6tj1c6g",
"components": ["f7f727f39kx3","s2k3h0mkqnth"]
}
}
## Email addresses that are already subscribed to a page will return status code 409.
["Email is already used for subscribing to this item"]
Arguments
- Subscriber {Object} : required
- subscriber.phone_number {String} : required
- subscriber.phone_country {String} : required
- subscriber.components {Array} : optional
Example definitions
## using JS widget
<script type="text/javascript" src="https://cdn.statuspage.io/se-v2.js"></script>
<script>
var sp = new StatusPage.page({ page : 'gpkpyklzq55q' });
sp.subscribe({
subscriber : {
phone_number : '8585550054',
phone_country : 'us',
components : ["f7f727f39kx3","s2k3h0mkqnth"]
},
success : function (response) {
console.log(response.email);
}
});
</script>
## using cURL
curl https://status.twilio.com/api/v2/subscribers.json \
-X POST \
-d "subscriber[components][]=f7f727f39kx3" \
-d "subscriber[components][]=s2k3h0mkqnth" \
-d "subscriber[phone_number]=8585550054" \
-d "subscriber[phone_country]=us"
Response
{
"subscriber": {
phone_country": "us",
"phone_number": "8585550054",
"created_at": "2014-10-19T14:59:23.324Z",
"id": "3x2djr0624fc",
"components": ["f7f727f39kx3","s2k3h0mkqnth"]
}
}
Arguments
- subscriber {Object} : required
- subscriber.email {String} : required
- subscriber.endpoint {String} : required
Example definitions
## using JS widget
<script type="text/javascript" src="https://cdn.statuspage.io/se-v2.js"></script>
<script>
var sp = new StatusPage.page({ page : 'gpkpyklzq55q' });
sp.subscribe({
subscriber : {
email : 'tyler@statuspage.io',
webhook : 'http://api.statuspage.io/webhooks/sp'
},
success : function (response) {
console.log(response.webhook);
}
});
</script>
## using cURL
curl https://status.twilio.com/api/v2/subscribers.json \
-X POST \
-d "subscriber[email]=tyler@statuspage.io" \
-d "subscriber[endpoint]=http://api.statuspage.io/webhooks/sp"
Response
{
"subscriber": {
"email": "tyler@statuspage.io",
"created_at": "2014-10-19T15:00:35.774Z",
"endpoint": "http://api.tmd.io/v1/statuspage",
"id": "2ghdy6tj1c6g"
}
}
First request
# first call using cURL
curl -iX POST https://status.twilio.com/api/v2/subscribers.json -d "subscriber[email]=tyler@statuspage.io"
First Response
HTTP/1.1 201 Created
Date: Wed, 29 Oct 2014 22:49:15 GMT
Status: 201 Created
{
"subscriber": {
email": "tyler@statuspage.io",
"created_at": "2014-10-29T22:49:15.351Z",
"id":"bb43r1yxmthl",
"components": ["f7f727f39kx3","s2k3h0mkqnth"]
}
}
Duplicate Request
# duplicate call using cURL
curl -iX POST https://status.twilio.com/api/v2/subscribers.json -d "subscriber[email]=tyler@statuspage.io"
Duplicate Response
HTTP/1.1 302 Found
Date: Wed, 29 Oct 2014 22:51:48 GMT
Status: 302 Found
Location: https://status.twilio.com/api/v2/subscribers/bb43r1yxmthl.json
{
"subscriber": {
"email": "tyler@statuspage.io",
"created_at": "2014-10-29T22:49:15.351Z",
"id":"bb43r1yxmthl",
"components": ["f7f727f39kx3","s2k3h0mkqnth"]
}
}
Incident subscribers
When an incident is created, a subscriber can be associated to that incident to receive notifications on updates until the incident is resolved. The incident must be in an unresolved state to subscribe to it.
https://status.twilio.com/api/v2/subscribers.json
Click For Example
Endpoint
https://status.twilio.com/api/v2/subscribers.json
Arguments
- subscriber {Object} : required
- subscriber.incident {String} : required
- subscriber.email {String} : required
Example Definitions
## using JS widget
<script type="text/javascript" src="https://cdn.statuspage.io/se-v2.js"></script>
<script>
var sp = new StatusPage.page({ page : 'gpkpyklzq55q' });
sp.subscribe({
subscriber : {
incident : 'n4zblpn6p2kq',
email : 'tyler@statuspage.io'
},
success : function (response) {
console.log(response.email);
}
});
</script>
## using cURL
curl https://status.twilio.com/api/v2/subscribers.json \
-X POST \
-d "subscriber[email]=tyler@statuspage.io" \
-d "subscriber[incident]=n4zblpn6p2kq"
Response
{
"subscriber": {
"email": "tyler@statuspage.io",
"created_at": "2014-10-19T15:00:35.774Z",
"skip_confirmation_notification": false,
"id": "2ghdy6tj1c6g",
"incident": "n4zblpn6p2kq"
}
}
## Unprocessable requests will return status code 422 and an array of error messages.
["You must enter a valid email."]
Arguments
- subscriber {Object} : required
- subscriber.incident {String} : required
- subscriber.phone_number {String} : required
- subscriber.phone_country {String} : required
Example Definitions
## using JS widget
<script type="text/javascript" src="https://cdn.statuspage.io/se-v2.js"></script>
<script>
var sp = new StatusPage.page({ page : 'gpkpyklzq55q' });
sp.subscribe({
subscriber : {
incident : 'n4zblpn6p2kq',
phone_number : '8585550054',
phone_country : 'us'
}
success : function (response) {
console.log(response.email);
}
});
</script>
## using cURL
curl https://status.twilio.com/api/v2/subscribers.json \
-X POST \
-d "subscriber[phone_number]=8585550054" \
-d "subscriber[phone_country]=us" \
-d "subscriber[incident]=n4zblpn6p2kq"
Response
{
"subscriber": {
"phone_number": "8585550054",
"phone_country": "us",
"created_at": "2014-10-19T15:00:35.774Z",
"id": "2ghdy6tj1c6g",
"incident": "n4zblpn6p2kq"
}
}
## Unprocessable requests will return status code 422 and an array of error messages.
["You must enter a valid email."]
Tuning subscription components
To tune an existing subscription to add or remove components, submit a PATCH request with the subscriber id and a new list of components.
https://status.twilio.com/api/v2/subscribers/<subscriber_id>.json
Click For Example
Endpoint
https://status.twilio.com/api/v2/subscribers/<subscriber_id>.json
Example definitions
## using JS widget
<script type="text/javascript" src="https://cdn.statuspage.io/se-v2.js"></script>
<script>
var sp = new StatusPage.page({ page : 'gpkpyklzq55q' });
sp.subscribe({
subscriber : {
id : '2ghdy6tj1c6g',
components : ["f7f727f39kx3","s2k3h0mkqnth"]
},
success : function (response) {
console.log(response.subscriber.components);
}
});
</script>
## using cURL
curl https://status.twilio.com/api/v2/subscribers/2ghdy6tj1c6g.json \
-X PATCH \
-d "subscriber[components][]=f7f727f39kx3" \
-d "subscriber[components][]=s2k3h0mkqnth"
Responses
{
"subscriber": {
"email": "tyler@statuspage.io",
"created_at": "2014-10-19T15:00:35.774Z",
"skip_confirmation_notification": false,
"id": "2ghdy6tj1c6g",
"components": ["f7f727f39kx3","s2k3h0mkqnth"]
}
}
Removing subscriptions
To remove a subscription, submit a DELETE request with the the subscription id.
https://status.twilio.com/api/v2/subscribers/<subscriber_id>.json
Click for example
Endpoint
https://status.twilio.com/api/v2/subscribers/<subscriber_id>.json
Example definitions
## using JS widget
<script type="text/javascript" src="https://cdn.statuspage.io/se-v2.js"></script>
<script>
var sp = new StatusPage.page({ page : 'gpkpyklzq55q' });
sp.unsubscribe({
subscriber : {
id : '2ghdy6tj1c6g'
},
success : function (response) {
console.log(response.email);
}
});
</script>
## using cURL
curl -X DELETE https://status.twilio.com/api/v2/subscribers/2ghdy6tj1c6g.json
Responses
{
"subscriber": {
"email": "tyler@statuspage.io",
"created_at": "2014-10-19T15:00:35.774Z",
"skip_confirmation_notification": false,
"id": "2ghdy6tj1c6g",
"components": ["f7f727f39kx3","s2k3h0mkqnth"]
}
}
Resending a confirmation email
To resend a confirmation email for an unconfirmed email subscriber, submit a POST request with the subscription id.
https://status.twilio.com/subscriptions/<subscriber_id>/resend_confirmation
Click for example
Endpoint
https://status.twilio.com/subscriptions/<subscriber_id>/resend_confirmation
Example definitions
## using cURL
curl -X POST https://status.twilio.com/subscriptions/2ghdy6tj1c6g/resend_confirmation