Skip to content
Markets open

API reference

Status

Public platform status, incidents and maintenance.

8 operationsBase URL https://packetexchange.io/api/v1Postman collection

Get the public status page

GET/api/v1/status/page

Access
Public. No key needed.
Rate limit
120 requests per minute

Overall state, component groups with 90-day history, active and recent incidents, and scheduled maintenance. Cached for 15 seconds.

Response 200

FieldTypeDescription
datarequiredobject-
generatedAtrequireddata.generatedAtstring (date-time)ISO-8601 timestamp (UTC)
overallrequireddata.overallobject-
staterequireddata.overall.statestring-One of operational, degraded, partial_outage, major_outage, maintenance
messagerequireddata.overall.messagestring-
groupsrequireddata.groupsobject[]-
idrequireddata.groups[].idstring-
namerequireddata.groups[].namestring-
componentsrequireddata.groups[].componentsobject[]-
idrequireddata.groups[].components[].idstring-
namerequireddata.groups[].components[].namestring-
descriptionrequireddata.groups[].components[].descriptionstring-
staterequireddata.groups[].components[].statestring-One of operational, degraded, partial_outage, major_outage, maintenance
uptime90drequireddata.groups[].components[].uptime90dnumber | nullPercent over 90 days; null when there is no data
dataSincerequireddata.groups[].components[].dataSincestring | null-
daysrequireddata.groups[].components[].daysobject[]-
daterequireddata.groups[].components[].days[].datestringYYYY-MM-DD
staterequireddata.groups[].components[].days[].statestring-
uptimePctrequireddata.groups[].components[].days[].uptimePctnumber | null-
downtimeMinutesrequireddata.groups[].components[].days[].downtimeMinutesnumber | null-
incidentsrequireddata.groups[].components[].days[].incidentsobject[]-
idrequireddata.groups[].components[].days[].incidents[].idstring-
titlerequireddata.groups[].components[].days[].incidents[].titlestring-
impactrequireddata.groups[].components[].days[].incidents[].impactstring-One of none, minor, major, critical
activeIncidentsrequireddata.activeIncidentsobject[]-
idrequireddata.activeIncidents[].idstring-
titlerequireddata.activeIncidents[].titlestring-
impactrequireddata.activeIncidents[].impactstring-One of none, minor, major, critical
statusrequireddata.activeIncidents[].statusstring-One of investigating, identified, monitoring, resolved
componentIdsrequireddata.activeIncidents[].componentIdsstring[]-
startedAtrequireddata.activeIncidents[].startedAtstring (date-time)ISO-8601 timestamp (UTC)
resolvedAtrequireddata.activeIncidents[].resolvedAtstring (date-time) | nullISO-8601 timestamp (UTC)
updatesrequireddata.activeIncidents[].updatesobject[]-
idrequireddata.activeIncidents[].updates[].idstring-
statusrequireddata.activeIncidents[].updates[].statusstring-One of investigating, identified, monitoring, resolved
bodyrequireddata.activeIncidents[].updates[].bodystring-
createdAtrequireddata.activeIncidents[].updates[].createdAtstring (date-time)ISO-8601 timestamp (UTC)
scheduledMaintenancerequireddata.scheduledMaintenanceobject[]-
idrequireddata.scheduledMaintenance[].idstring-
titlerequireddata.scheduledMaintenance[].titlestring-
bodyrequireddata.scheduledMaintenance[].bodystring-
componentIdsrequireddata.scheduledMaintenance[].componentIdsstring[]-
scheduledStartrequireddata.scheduledMaintenance[].scheduledStartstring (date-time)ISO-8601 timestamp (UTC)
scheduledEndrequireddata.scheduledMaintenance[].scheduledEndstring (date-time)ISO-8601 timestamp (UTC)
statusrequireddata.scheduledMaintenance[].statusstring-One of scheduled, in_progress, completed
pastIncidentsrequireddata.pastIncidentsobject[]Same fields as StatusIncident, shown earlier on this page.

Errors

  • 400VALIDATION_ERROR, INVALID_INPUT or BAD_REQUEST. For VALIDATION_ERROR, error.details is an array of { path, message }.
  • 429RATE_LIMITED: slow down and retry after the Retry-After seconds.
  • 500INTERNAL_ERROR: unexpected failure. Quote X-Request-Id to support.

List past incidents

GET/api/v1/status/incidents

Access
Public. No key needed.
Rate limit
120 requests per minute

Parameters

NameInTypeDescription
cursorquerystringThe nextCursor from the previous page

Response 200

FieldTypeDescription
datarequiredobject-
itemsrequireddata.itemsobject[]Same fields as StatusIncident, shown earlier on this page.
nextCursorrequireddata.nextCursorstring | null-

Errors

  • 400VALIDATION_ERROR, INVALID_INPUT or BAD_REQUEST. For VALIDATION_ERROR, error.details is an array of { path, message }.
  • 429RATE_LIMITED: slow down and retry after the Retry-After seconds.
  • 500INTERNAL_ERROR: unexpected failure. Quote X-Request-Id to support.

Get one incident with its updates

GET/api/v1/status/incidents/{id}

Access
Public. No key needed.
Rate limit
120 requests per minute

Parameters

NameInTypeDescription
idrequiredpathstring-

Response 200

FieldTypeDescription
datarequiredobjectSame fields as StatusIncident, shown earlier on this page.

Errors

  • 400VALIDATION_ERROR, INVALID_INPUT or BAD_REQUEST. For VALIDATION_ERROR, error.details is an array of { path, message }.
  • 404NOT_FOUND: no such resource on your account.
  • 429RATE_LIMITED: slow down and retry after the Retry-After seconds.
  • 500INTERNAL_ERROR: unexpected failure. Quote X-Request-Id to support.

Subscribe to status updates as an RSS feed

GET/api/v1/status/feed.xml

Access
Public. No key needed.
Rate limit
120 requests per minute

Response 200 (application/rss+xml)

RSS 2.0 feed of incidents and maintenance.

Errors

  • 400VALIDATION_ERROR, INVALID_INPUT or BAD_REQUEST. For VALIDATION_ERROR, error.details is an array of { path, message }.
  • 429RATE_LIMITED: slow down and retry after the Retry-After seconds.
  • 500INTERNAL_ERROR: unexpected failure. Quote X-Request-Id to support.

Subscribe an email address to status updates

POST/api/v1/status/subscribe

Access
Public. No key needed.
Rate limit
5 requests per hour

Sends a confirmation email. The answer is the same whether or not the address was already subscribed.

Request body (application/json)

FieldTypeDescription
emailrequiredstring (email)-max 254 chars

Response 200

FieldTypeDescription
datarequiredobject-
messagerequireddata.messagestring-

Errors

  • 400VALIDATION_ERROR, INVALID_INPUT or BAD_REQUEST. For VALIDATION_ERROR, error.details is an array of { path, message }.
  • 409CONFLICT (or a code-specific 409): the change clashes with existing state.
  • 429RATE_LIMITED: slow down and retry after the Retry-After seconds.
  • 500INTERNAL_ERROR: unexpected failure. Quote X-Request-Id to support.

Confirm a status subscription from the email link

GET/api/v1/status/subscribe/confirm

Access
Public. No key needed.
Rate limit
30 requests per 10 minutes

Parameters

NameInTypeDescription
tokenquerystring-

Response 302

Redirects to the status page with the outcome.

Errors

  • 400VALIDATION_ERROR, INVALID_INPUT or BAD_REQUEST. For VALIDATION_ERROR, error.details is an array of { path, message }.
  • 429RATE_LIMITED: slow down and retry after the Retry-After seconds.
  • 500INTERNAL_ERROR: unexpected failure. Quote X-Request-Id to support.

Unsubscribe from status updates from the email link

GET/api/v1/status/unsubscribe

Access
Public. No key needed.
Rate limit
30 requests per 10 minutes

Parameters

NameInTypeDescription
tokenquerystring-

Response 302

Redirects to the status page with the outcome.

Errors

  • 400VALIDATION_ERROR, INVALID_INPUT or BAD_REQUEST. For VALIDATION_ERROR, error.details is an array of { path, message }.
  • 429RATE_LIMITED: slow down and retry after the Retry-After seconds.
  • 500INTERNAL_ERROR: unexpected failure. Quote X-Request-Id to support.

Unsubscribe from status updates in one click

POST/api/v1/status/unsubscribe

Access
Public. No key needed.
Rate limit
120 requests per minute

The RFC 8058 one-click unsubscribe target used by mail clients.

Parameters

NameInTypeDescription
tokenquerystring-

Response 200

FieldTypeDescription
datarequiredobject-
resultrequireddata.resultstringOutcome, e.g. unsubscribed or invalid

Errors

  • 400VALIDATION_ERROR, INVALID_INPUT or BAD_REQUEST. For VALIDATION_ERROR, error.details is an array of { path, message }.
  • 409CONFLICT (or a code-specific 409): the change clashes with existing state.
  • 429RATE_LIMITED: slow down and retry after the Retry-After seconds.
  • 500INTERNAL_ERROR: unexpected failure. Quote X-Request-Id to support.