Skip to content

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

  • datarequired

    object

  • generatedAtrequired

    string (date-time) · data.generatedAt

    ISO-8601 timestamp (UTC)
  • overallrequired

    object · data.overall

  • staterequired

    string · data.overall.state

    One of operational, degraded, partial_outage, major_outage, maintenance
  • messagerequired

    string · data.overall.message

  • groupsrequired

    object[] · data.groups

  • idrequired

    string · data.groups[].id

  • namerequired

    string · data.groups[].name

  • componentsrequired

    object[] · data.groups[].components

  • idrequired

    string · data.groups[].components[].id

  • namerequired

    string · data.groups[].components[].name

  • descriptionrequired

    string · data.groups[].components[].description

  • staterequired

    string · data.groups[].components[].state

    One of operational, degraded, partial_outage, major_outage, maintenance
  • uptime90drequired

    number | null · data.groups[].components[].uptime90d

    Percent over 90 days; null when there is no data
  • dataSincerequired

    string | null · data.groups[].components[].dataSince

  • daysrequired

    object[] · data.groups[].components[].days

  • daterequired

    string · data.groups[].components[].days[].date

    YYYY-MM-DD
  • staterequired

    string · data.groups[].components[].days[].state

  • uptimePctrequired

    number | null · data.groups[].components[].days[].uptimePct

  • downtimeMinutesrequired

    number | null · data.groups[].components[].days[].downtimeMinutes

  • incidentsrequired

    object[] · data.groups[].components[].days[].incidents

  • idrequired

    string · data.groups[].components[].days[].incidents[].id

  • titlerequired

    string · data.groups[].components[].days[].incidents[].title

  • impactrequired

    string · data.groups[].components[].days[].incidents[].impact

    One of none, minor, major, critical
  • activeIncidentsrequired

    object[] · data.activeIncidents

  • idrequired

    string · data.activeIncidents[].id

  • titlerequired

    string · data.activeIncidents[].title

  • impactrequired

    string · data.activeIncidents[].impact

    One of none, minor, major, critical
  • statusrequired

    string · data.activeIncidents[].status

    One of investigating, identified, monitoring, resolved
  • componentIdsrequired

    string[] · data.activeIncidents[].componentIds

  • startedAtrequired

    string (date-time) · data.activeIncidents[].startedAt

    ISO-8601 timestamp (UTC)
  • resolvedAtrequired

    string (date-time) | null · data.activeIncidents[].resolvedAt

    ISO-8601 timestamp (UTC)
  • updatesrequired

    object[] · data.activeIncidents[].updates

  • idrequired

    string · data.activeIncidents[].updates[].id

  • statusrequired

    string · data.activeIncidents[].updates[].status

    One of investigating, identified, monitoring, resolved
  • bodyrequired

    string · data.activeIncidents[].updates[].body

  • createdAtrequired

    string (date-time) · data.activeIncidents[].updates[].createdAt

    ISO-8601 timestamp (UTC)
  • scheduledMaintenancerequired

    object[] · data.scheduledMaintenance

  • idrequired

    string · data.scheduledMaintenance[].id

  • titlerequired

    string · data.scheduledMaintenance[].title

  • bodyrequired

    string · data.scheduledMaintenance[].body

  • componentIdsrequired

    string[] · data.scheduledMaintenance[].componentIds

  • scheduledStartrequired

    string (date-time) · data.scheduledMaintenance[].scheduledStart

    ISO-8601 timestamp (UTC)
  • scheduledEndrequired

    string (date-time) · data.scheduledMaintenance[].scheduledEnd

    ISO-8601 timestamp (UTC)
  • statusrequired

    string · data.scheduledMaintenance[].status

    One of scheduled, in_progress, completed
  • pastIncidentsrequired

    object[] · data.pastIncidents

    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

  • cursor

    query · string

    The nextCursor from the previous page

Response 200

  • datarequired

    object

  • itemsrequired

    object[] · data.items

    Same fields as StatusIncident, shown earlier on this page.
  • nextCursorrequired

    string | null · data.nextCursor

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

  • idrequired

    path · string

Response 200

  • datarequired

    object

    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 }.
  • 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)

  • emailrequired

    string (email)

    max 254 chars

Response 200

  • datarequired

    object

  • messagerequired

    string · data.message

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

  • token

    query · string

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

  • token

    query · string

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

  • token

    query · string

Response 200

  • datarequired

    object

  • resultrequired

    string · data.result

    Outcome, 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.