GitHub Status API
Check whether GitHub is down from code. One small JSON request returns the overall indicator and description, with no token and no rate limit to worry about.
Endpoint tested and returned HTTP 200 on 2026-08-21
What is the GitHub Status API?
GitHub publishes its status as JSON at `https://www.githubstatus.com/api/v2/status.json`. The response contains an `indicator` of `none`, `minor`, `major` or `critical` plus a human-readable description such as `All Systems Operational`. No token is required.
When CI breaks, the first question is always whether the problem is yours or GitHub's. This endpoint answers it in a couple of hundred bytes, without a token, without touching your GitHub API rate limit, and without the risk that the outage you are investigating also blocks the check. That last point matters: `api.github.com` and `githubstatus.com` are deliberately separate systems.
Because it is a standard Statuspage deployment, the same host serves `components.json` for a per-service breakdown covering Git operations, Actions, Packages, Pages, Codespaces and Copilot, and `incidents/unresolved.json` for what is currently broken. Start with `status.json` for a binary answer and only fetch the larger payloads once the indicator says something is wrong.
Quick facts
- Base URL
https://www.githubstatus.com/api/v2- Authentication
- No token and no account. This endpoint is entirely separate from the GitHub REST API and does not consume its rate limit.
- Rate limit
- Not published. Status data is coarse, so poll at most once a minute.
- Pricing
- Free.
- CORS
- Enabled — callable directly from browser JavaScript
- Official docs
- Read the docs
How to use the GitHub 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. Check GitHub's overall status indicator
GET https://www.githubstatus.com/api/v2/status.json
curl 'https://www.githubstatus.com/api/v2/status.json'const res = await fetch("https://www.githubstatus.com/api/v2/status.json");
if (!res.ok) throw new Error(`Request failed: ${res.status}`);
const data = await res.json();
console.log(data);import requests
res = requests.get("https://www.githubstatus.com/api/v2/status.json", timeout=20)
res.raise_for_status()
print(res.json()){
"page": {
"id": "kctbh9vrtdwd",
"name": "GitHub",
"url": "https://www.githubstatus.com",
"time_zone": "Etc/UTC",
"updated_at": "2026-08-21T06:14:50.142Z"
},
"status": {
"indicator": "none",
"description": "All Systems Operational"
}
}Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
(endpoint) | path | Optional | `status.json` for the indicator, `components.json` for per-service health, `incidents/unresolved.json` for open incidents, `summary.json` for everything at once. status.json |
Response fields
page.updated_atstring- ISO 8601 timestamp of the last status page update. Compare it with now to see how stale the answer is.
status.indicatorstring- `none` when everything is healthy, then `minor`, `major` or `critical`. This is the field to branch on, because it is a fixed vocabulary.
status.descriptionstring- Human-readable summary such as `All Systems Operational`. Display it, but never parse it: the wording changes.
(components.json) components[]array- Per-service rows for Git Operations, API Requests, Actions, Packages, Pages, Codespaces, Copilot and Issues, each with its own `status` string.
What you can build with the GitHub Status API
- Print a warning in CI when a build fails while GitHub reports an incident
- Add a GitHub health badge to a team dashboard or status wall
- Gate a deployment script that depends on Actions or Packages being healthy
- Post an automatic Slack notice when the indicator leaves `none`
- Record incident history to explain a bad week in an engineering report
Common errors and how to fix them
404
The `.json` suffix was dropped from the path.
Fix: Request `/api/v2/status.json` exactly; the extension is part of the route.
indicator is `none` while your requests fail
The status page lags real impact, and partial or regional problems are often not reflected.
Fix: Combine it with your own request-level error rate rather than trusting it alone.
Confusing it with the GitHub API
`api.github.com` requires authentication for most calls and has a tight anonymous rate limit.
Fix: Status lives on `www.githubstatus.com` and is unauthenticated; do not check health through the main API.
GitHub Status API — frequently asked questions
How do I check if GitHub is down programmatically?
Request `https://www.githubstatus.com/api/v2/status.json` and read `status.indicator`. Anything other than `none` means GitHub has acknowledged a problem.
Does this count against my GitHub API rate limit?
No. The status page is a separate Statuspage-hosted system with no relation to `api.github.com` quotas.
Can I see which specific service is broken?
Yes. `components.json` on the same host lists Git Operations, API Requests, Actions, Packages, Pages, Codespaces, Copilot and Issues separately with individual statuses.
How fast is the status page updated?
Updates are published by GitHub's incident process, so there is usually a delay of several minutes between user-visible impact and a status change. Use it as corroboration, not as detection.
Tools that pair with this API
JSON Formatter
Format, beautify and minify JSON online with 2-space, 4-space or tab indentation. Sort keys alphabetically and catch syntax errors instantly — free and private.
HTTP Status Code Lookup
Search HTTP status codes from 100 to 599 with name, category and clear description. Filter by number or text — a fast, free, private in-browser reference.
JSON Viewer
View JSON as a collapsible interactive tree online. Expand and collapse nodes, search keys and values, and copy the JSONPath of any node privately.
GitHub 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.