# Service Status & Incident API — live up/down status, incidents and per-component health for any vendor: auto-resolves and parses any status page (Statuspage, Instatus) plus AWS, GCP, Slack, Stripe and Azure

> Current OVERALL status for a vendor → normalized indicator (operational/degraded/partial_outage/major_outage/maintenance) + is_operational boolean + description.
> ReefAPI engine `status-intel` · 7 endpoints · clean JSON, no scraping or browsers to manage.

## How to call
- **Endpoint:** `POST https://api.reefapi.com/status-intel/v1/<action>` with a JSON body.
- **Auth:** header `x-api-key: <YOUR_REEFAPI_KEY>` — create one free (1,000 credits, no card): https://reefapi.com/signup
- **Response (every call):** `{ ok: boolean, data: ..., meta: { record_count, credits, ... }, error: { code, message } }` — branch on `ok`. Failed or blocked calls are free.
- **One key + one shared credit pool** across every ReefAPI API. Per-call credits are listed on each endpoint below.
- **Use it from an AI agent (MCP):** connect `https://api.reefapi.com/mcp` (remote streamable-http, `Authorization: Bearer <key>`) and your assistant can call these actions directly.

## Endpoints

### POST /status-intel/v1/status — 1 credit
Current OVERALL status for a vendor → normalized indicator (operational/degraded/partial_outage/major_outage/maintenance) + is_operational boolean + description.

**Parameters:**
- `vendor` (string, required) — Which status page to read. EITHER a curated registry key (github, openai, aws, azure… — call action=list_vendors) OR ANY status-page host/URL for generic auto-parsing (e.g. 'status.acme.com', 'https://status.acme.io') — the engine auto-detects Atlassian Statuspage or Instatus and normalizes it the same way. Case-insensitive. [one of: airtable, algolia, amplitude, anthropic, asana, atlassian, aws, azure, bitbucket, box, braze, brevo, bunny, calendly, circleci, clerk, cloudflare, cloudinary, cockroachdb, cohere, confluent, contentful, databricks, datadog, dialpad, digitalocean, discord, docusign, doppler, dropbox, duo, elastic, elevenlabs, figma, fivetran, fly, gcp, github, godaddy, grafana, groq, harness, hashicorp, hubspot, intercom, kraken, launchdarkly, linode, loom, mailgun, miro, mixpanel, monday, mongodb, netlify, newrelic, ngrok, npm, openai, pinecone, planetscale, postman, pusher, reddit, render, replicate, retool, sanity, segment, sendgrid, sentry, shopify, slack, snowflake, squarespace, squareup, stabilityai, stripe, supabase, trello, twilio, typeform, upstash, vercel, vimeo, webflow, wise, workos, zapier, zoom, zoominfo]

**Returns:** vendor, name, indicator, is_operational, description, raw_indicator, active_incident_count, updated_at, source_url

**Example request body:**
```json
{
  "vendor": "github"
}
```

### POST /status-intel/v1/incidents — 1 credit
Recent or active incidents for a vendor (title, impact, status, timeline of updates, affected components). active_only=true → just the ongoing ones.

**Parameters:**
- `vendor` (string, required) — Which status page to read. EITHER a curated registry key (github, openai, aws, azure… — call action=list_vendors) OR ANY status-page host/URL for generic auto-parsing (e.g. 'status.acme.com', 'https://status.acme.io') — the engine auto-detects Atlassian Statuspage or Instatus and normalizes it the same way. Case-insensitive. [one of: airtable, algolia, amplitude, anthropic, asana, atlassian, aws, azure, bitbucket, box, braze, brevo, bunny, calendly, circleci, clerk, cloudflare, cloudinary, cockroachdb, cohere, confluent, contentful, databricks, datadog, dialpad, digitalocean, discord, docusign, doppler, dropbox, duo, elastic, elevenlabs, figma, fivetran, fly, gcp, github, godaddy, grafana, groq, harness, hashicorp, hubspot, intercom, kraken, launchdarkly, linode, loom, mailgun, miro, mixpanel, monday, mongodb, netlify, newrelic, ngrok, npm, openai, pinecone, planetscale, postman, pusher, reddit, render, replicate, retool, sanity, segment, sendgrid, sentry, shopify, slack, snowflake, squarespace, squareup, stabilityai, stripe, supabase, trello, twilio, typeform, upstash, vercel, vimeo, webflow, wise, workos, zapier, zoom, zoominfo]
- `active_only` (boolean, optional, default false) — If true, return ONLY currently-unresolved/active incidents (the 'is there an outage right now?' view). Default false = recent history.
- `limit` (integer, optional, default 25) — Max incidents to return (most recent first). Default 25, cap 100.

**Returns:** vendor, incidents[] (id, name, impact, status, started_at, resolved_at, affected_components[], latest_update, updates[]), active_count, count

**Example request body:**
```json
{
  "vendor": "github"
}
```

### POST /status-intel/v1/components — 1 credit
Per-component (sub-service) health for a vendor — which specific products are degraded.

**Parameters:**
- `vendor` (string, required) — Which status page to read. EITHER a curated registry key (github, openai, aws, azure… — call action=list_vendors) OR ANY status-page host/URL for generic auto-parsing (e.g. 'status.acme.com', 'https://status.acme.io') — the engine auto-detects Atlassian Statuspage or Instatus and normalizes it the same way. Case-insensitive. [one of: airtable, algolia, amplitude, anthropic, asana, atlassian, aws, azure, bitbucket, box, braze, brevo, bunny, calendly, circleci, clerk, cloudflare, cloudinary, cockroachdb, cohere, confluent, contentful, databricks, datadog, dialpad, digitalocean, discord, docusign, doppler, dropbox, duo, elastic, elevenlabs, figma, fivetran, fly, gcp, github, godaddy, grafana, groq, harness, hashicorp, hubspot, intercom, kraken, launchdarkly, linode, loom, mailgun, miro, mixpanel, monday, mongodb, netlify, newrelic, ngrok, npm, openai, pinecone, planetscale, postman, pusher, reddit, render, replicate, retool, sanity, segment, sendgrid, sentry, shopify, slack, snowflake, squarespace, squareup, stabilityai, stripe, supabase, trello, twilio, typeform, upstash, vercel, vimeo, webflow, wise, workos, zapier, zoom, zoominfo]
- `limit` (integer, optional, default 200) — Max components to return (per-component pages can be large). Default 200.

**Returns:** vendor, indicator, components[] (name, status, is_operational, group, description), operational_count, degraded_count, total_components, count

**Example request body:**
```json
{
  "vendor": "cloudflare"
}
```

### POST /status-intel/v1/summary — 1 credit
Full one-call snapshot for a vendor: overall status + components + active incidents + scheduled maintenances (the whole status page in one normalized object).

**Parameters:**
- `vendor` (string, required) — Which status page to read. EITHER a curated registry key (github, openai, aws, azure… — call action=list_vendors) OR ANY status-page host/URL for generic auto-parsing (e.g. 'status.acme.com', 'https://status.acme.io') — the engine auto-detects Atlassian Statuspage or Instatus and normalizes it the same way. Case-insensitive. [one of: airtable, algolia, amplitude, anthropic, asana, atlassian, aws, azure, bitbucket, box, braze, brevo, bunny, calendly, circleci, clerk, cloudflare, cloudinary, cockroachdb, cohere, confluent, contentful, databricks, datadog, dialpad, digitalocean, discord, docusign, doppler, dropbox, duo, elastic, elevenlabs, figma, fivetran, fly, gcp, github, godaddy, grafana, groq, harness, hashicorp, hubspot, intercom, kraken, launchdarkly, linode, loom, mailgun, miro, mixpanel, monday, mongodb, netlify, newrelic, ngrok, npm, openai, pinecone, planetscale, postman, pusher, reddit, render, replicate, retool, sanity, segment, sendgrid, sentry, shopify, slack, snowflake, squarespace, squareup, stabilityai, stripe, supabase, trello, twilio, typeform, upstash, vercel, vimeo, webflow, wise, workos, zapier, zoom, zoominfo]

**Returns:** vendor, status{indicator,is_operational,description}, components[], active_incidents[], scheduled_maintenances[], counts{}

**Example request body:**
```json
{
  "vendor": "datadog"
}
```

### POST /status-intel/v1/check_multi — 1 credit
THE dashboard call: give your stack as a list (keys / brands / domains / status hosts) → each is auto-resolved to its real status page and its LIVE status is returned, read from the SOURCE. 'Are any of my dependencies down right now?' Per-item errors never fail the whole call.

**Parameters:**
- `vendors` (array, required) — Your stack as a list (≤25) — a JSON array OR a comma/space/semicolon string. Each item may be a curated key (github), a bare brand (notion), a plain domain (acme.com), OR an explicit status host (status.x.com). Each is auto-resolved to its real status page and its LIVE status is read from the SOURCE. An unresolvable item is reported per-item (indicator='unknown'), never failing the whole call.

**Returns:** results[] (vendor, name, resolved_host, resolved_via, indicator, is_operational, active_incident_count, error?), all_operational, degraded_vendors[], checked, operational_count

**Example request body:**
```json
{
  "vendors": "github,openai,cloudflare"
}
```

### POST /status-intel/v1/batch — 1 credit
Alias of check_multi — overall status for a batch of vendors in one call (up to 25).

**Parameters:**
- `vendors` (array, required) — Your stack as a list (≤25) — a JSON array OR a comma/space/semicolon string. Each item may be a curated key (github), a bare brand (notion), a plain domain (acme.com), OR an explicit status host (status.x.com). Each is auto-resolved to its real status page and its LIVE status is read from the SOURCE. An unresolvable item is reported per-item (indicator='unknown'), never failing the whole call.

**Returns:** results[] (same shape as check_multi), all_operational, degraded_vendors[], checked

**Example request body:**
```json
{
  "vendors": "github,openai,cloudflare"
}
```

### POST /status-intel/v1/list_vendors — 1 credit
The supported vendor set (key → name, kind, category, status host). Optionally filtered by category. Also lists explicitly-unsupported vendors (e.g. Azure) with the reason.

**Parameters:**
- `category` (string, optional) — Optional filter for list_vendors — return only vendors in this category (e.g. ai, cloud, dev-tools, observability, fintech, email).

**Returns:** vendors[] (key, name, kind, category, status_host, homepage), count, categories[], unsupported{vendor: reason}

## More
- Try it live, no code: https://reefapi.com/playground?engine=status-intel
- Human docs page: https://reefapi.com/docs/status-intel
- Every ReefAPI API in one file (for your AI): https://reefapi.com/llms-full.txt
