BYTETOOLS

DigitalOcean Status API

Read DigitalOcean's live component health, incidents and maintenance windows as JSON. No key. The same Statuspage v2 schema works for hundreds of other vendors.

No API key requiredCORS enabledHTTPSFree tier

Endpoint tested and returned HTTP 200 on 2026-08-21

What is the DigitalOcean Status API?

DigitalOcean publishes its status page as a JSON API. `GET https://status.digitalocean.com/api/v2/summary.json` returns every component with its current status, plus open incidents and scheduled maintenance. It needs no API key, and the schema is the standard Atlassian Statuspage v2 format.

The genuinely useful thing about this endpoint is not DigitalOcean specifically, it is the schema. Any vendor hosted on Atlassian Statuspage exposes the same `/api/v2/` paths with the same field names, so one parser handles hundreds of providers. Learn it here and you can point the identical code at your CDN, your payment processor and your error tracker.

Choose the right path for the job, because `summary.json` is by far the largest. `status.json` is a two-field answer to 'is it up', `components.json` is the per-service breakdown, and `incidents/unresolved.json` gives only what is currently broken. Polling `summary.json` every minute for a dashboard is the mistake most people make first: pick the narrowest endpoint that answers your question and you will move a fraction of the bytes.

Quick facts

Base URL
https://status.digitalocean.com/api/v2
Authentication
No key or account. Statuspage endpoints are public by design so that customers can monitor a vendor without credentials.
Rate limit
Not published. Status data changes slowly; polling once a minute is ample and once every five minutes is kinder.
Pricing
Free.
CORS
Enabled — callable directly from browser JavaScript
Official docs
Read the docs

How to use the DigitalOcean Status API

Every request below was executed against the live API on 2026-08-21, and the response shown is the real body it returned — not an illustration.

1. Fetch the full status summary

GET https://status.digitalocean.com/api/v2/summary.json

curl
curl 'https://status.digitalocean.com/api/v2/summary.json'
JavaScript (fetch)
const res = await fetch("https://status.digitalocean.com/api/v2/summary.json");
if (!res.ok) throw new Error(`Request failed: ${res.status}`);
const data = await res.json();
console.log(data);
Python (requests)
import requests

res = requests.get("https://status.digitalocean.com/api/v2/summary.json", timeout=20)
res.raise_for_status()
print(res.json())
Response — HTTP 200 (truncated)
{
  "page": {
    "id": "w4cz49tckxhp",
    "name": "DigitalOcean",
    "url": "http://status.digitalocean.com",
    "time_zone": "Etc/UTC",
    "updated_at": "2026-08-19T19:37:57.235Z"
  },
  "components": [
    {
      "id": "p1x9rv4137gx",
      "name": "API",
      "status": "operational",
      "created_at": "2023-03-06T18:42:45.160Z",
      "updated_at": "2026-05-08T19:59:48.833Z",
      "position": 1,
      "description": null,
      "showcase": false,
      "start_date": "2023-03-06",
      "group_id": null,
      "page_id": "w4cz49tckxhp",
      "group": false,
      "only_show_if_degraded": false
    },
    {
      "id": "yht2qc1zfp6x",
      "name": "Global",
      "status": "operational",
      "created_at": "2023-03-28T21:01:01.809Z",
      "updated_at": "2026-06-19T14:50:38.370Z",
      "position": 1,
      "description": null,
      "showcase": false,
      "start_date": "2023-03-28",
      "group_id": "2d23wwyqgq6m",
      "page_id": "w4cz49tckxhp",
      "group": false,
      "only_show_if_degraded": false
    },
    {
      "id": "5rzxjrq10gb2",
      "name": "Global",
      "status": "operational",
      "created_at": "2023-03-28T21:01:02.121Z",
      "updated_at": "2026-05-07T21:00:07.224Z",
      "position": 1,
      "description": null,
      "showcase": false,
      "start_date": "2023-03-28",
      "group_id": "sjlhrm4vf4pr",
      "page_id": "w4cz49tckxhp",
      "group": false,
      "only_show_if_degraded": false
    },
    {
      "id": "txysr8r0gn1n",
      "name": "Global",
      "status": "operational",
      "created_at": "2023-03-28T21:01:12

Parameters

ParameterTypeRequiredDescription
(endpoint)pathOptional`summary.json` for everything, `status.json` for the one-line indicator, `components.json` for per-service health, `incidents.json` or `incidents/unresolved.json` for incidents, `scheduled-maintenances/upcoming.json` for planned work. summary.json

Response fields

pageobject
Identity of the status page itself: `id`, `name`, `url`, `time_zone` and `updated_at`. `updated_at` is the freshness stamp for the whole payload.
componentsarray
One entry per service. The interesting fields are `name`, `status` and `group_id`.
components[].statusstring
One of `operational`, `degraded_performance`, `partial_outage`, `major_outage` or `under_maintenance`. Treat anything other than `operational` as a problem.
components[].group_idstring or null
Parent group id for nested components. Several components share the name `Global`, so you must resolve `group_id` to know which region a row belongs to.
components[].descriptionstring or null
Usually `null`. Do not rely on it for display text; use `name` plus the resolved group.
incidentsarray
Currently open incidents, each with `impact`, `status` and a chronological `incident_updates` array. An empty array means no active incidents.
status.indicatorstring
Overall roll-up: `none`, `minor`, `major` or `critical`. Present on `summary.json` and `status.json`.

What you can build with the DigitalOcean Status API

  • Show a vendor health widget on an internal operations dashboard
  • Correlate your own error spikes with a provider incident before paging an engineer
  • Alert your team automatically when a dependency reports a major outage
  • Archive incident history to measure a supplier against its SLA
  • Write one Statuspage parser and reuse it across every vendor you depend on

Common errors and how to fix them

404

Wrong path. The `.json` extension is part of the route.

Fix: Use `/api/v2/summary.json`, not `/api/v2/summary`.

Duplicate component names

Statuspage nests components in groups, and children often share generic names like `Global`.

Fix: Build a lookup from component id to name first, then resolve each `group_id` to label rows correctly.

Stale data

You are reading a CDN-cached copy of the page payload.

Fix: Check `page.updated_at` rather than assuming the response is second-fresh, and do not build sub-minute alerting on it.

DigitalOcean Status API — frequently asked questions

Does the DigitalOcean status API need a key?

No. Statuspage publishes these endpoints anonymously so customers can monitor the provider without an account.

Will this schema work for other vendors?

Yes. Any provider on Atlassian Statuspage exposes the same `/api/v2/` paths and field names on their own status domain, so a single parser covers many suppliers.

Which endpoint should I poll for alerting?

`incidents/unresolved.json` or `status.json`. Both are small and answer the operational question directly, whereas `summary.json` returns the entire component tree on every call.

How quickly does it reflect an outage?

It reflects what the vendor has published, which is a human process. Expect a lag between customer impact and a status page update, and never treat it as your only monitoring signal.

Tools that pair with this API

DigitalOcean Status is an independent third-party service and is not affiliated with ByteTools or ByteVancer. Details on this page were verified on 2026-08-21; always check the official documentation before relying on this API in production, as terms and limits can change.