IncidentHub-Bay Docs

Documentation for the site, alerts, and public API

Use IncidentHub-Bay as a live monitoring dashboard, a searchable outage archive, an alerting layer for AI providers, or a JSON API for your own tools and status surfaces.

Use cases

Site, alerts, API

Public read access

No auth

Tracked usage

API keys

Refresh cadence

5 min

Quick Start

Get started in 60 seconds

Fetch your first data from the API with a single request. No authentication required for public read endpoints.

curl https://incidenthub-bay.com/api/incidents?company=openai&severity=critical
All public data endpoints are read-only and require no API key. For the real-time Status API, generate a key from your Profile settings.

Website guide

How to use the website

The main product is the website itself. Most teams start here before wiring the API into internal tools.

Monitoring

Live view of provider health with real-time status indicators, active incident counts, and 24h/7d incident history for every tracked service.

Open monitoring

Provider pages

Dedicated outage history pages per provider with timelines, severity distribution charts, reliability scores, and incident detail drilldowns.

Browse providers

Incident archive

Full-text search across all incidents with multi-filter support: company, severity, date range, and tags. Paginated results with detail views.

Search incidents

Reports and analysis

Annual outage reports with year-over-year comparison, reliability rankings across providers, and global platform statistics.

Open reports
If you only need outage visibility and alerts, you can use the site without touching the API. The API becomes useful when you want to feed IncidentHub-Bay data into dashboards, bots, or internal observability tooling.

Alerts

Set up alerting for the providers you track

Alerting is plan-aware and tied to the signed-in user. Each subscription can target email or webhooks, with optional severity and provider filters.

  1. 1

    Create an account

    Register and sign in so the app can associate alerts, plan limits, and delivery logs with your user.

  2. 2

    Choose providers

    Pick tracked companies from the alerts screen. Free, Pro, and Teams plans enforce different watchlist limits.

  3. 3

    Pick a destination

    Use webhook delivery for Slack-style cards, Google Chat, PagerDuty, OpsGenie, or generic webhooks. Use email for simple routing.

  4. 4

    Test delivery

    Use the test-send action on each subscription to verify formatting and destination health before relying on it in production.

GET/api/alertsSession

List your active alert subscriptions.

Example

/api/alerts
POST/api/alertsSession

Create a new alert subscription for email or webhook delivery.

Parameters

webhookUrlstringWebhook destination. Provider type is auto-detected.
emailstringEmail destination for alert delivery.
companyIdsnumber[]Tracked company IDs. Empty means all tracked providers.
severityFilterstring[]Severity filter. Empty means all severities.
slackFormatbooleanSend Slack Block Kit payloads.

Example

POST /api/alerts
{
  "webhookUrl": "https://hooks.slack.com/services/...",
  "companyIds": [],
  "severityFilter": ["critical", "high"],
  "slackFormat": true
}
DELETE/api/alerts/:idSession

Delete an alert subscription.

Parameters

idnumberSubscription ID.

Example

DELETE /api/alerts/1
POST/api/alerts/:id/testSession

Send a test alert to verify your webhook or email destination.

Parameters

idnumberSubscription ID.

Example

POST /api/alerts/1/test

Webhook integrations

Connect alerts to Slack, PagerDuty, OpsGenie, or Google Chat

Webhook type is auto-detected from the URL pattern. Each platform gets a native payload format with appropriate severity mapping.

Slack

Rich Block Kit cards with action buttons. Auto-detected from hooks.slack.com URLs.

URL pattern

https://hooks.slack.com/services/T.../B.../xxx

Google Chat

Plain text messages. Auto-detected from chat.googleapis.com URLs.

URL pattern

https://chat.googleapis.com/v1/spaces/.../messages?key=...

PagerDuty

Events API v2 with severity mapping. Auto-detected from events.pagerduty.com URLs.

URL pattern

https://events.pagerduty.com/v2/enqueue?routing_key=...

OpsGenie

Alert creation with priority mapping. Auto-detected from opsgenie.com URLs.

URL pattern

https://api.opsgenie.com/v2/alerts?apiKey=...

Generic Webhook

Standard JSON payload sent to any HTTP endpoint.

URL pattern

https://your-server.com/webhook
Severity mapping: PagerDuty maps critical/high/medium/low to critical/error/warning/info. OpsGenie maps to P1/P2/P3/P4.

API

Public API reference

Public read endpoints return JSON and are intended for dashboards, scripts, and programmatic access to outage history and current status.

https://incidenthub-bay.com
GET/api/incidentsNo auth

List incidents with filtering and pagination.

Parameters

companystringCompany slug such as aws or github.
severitystringSeverity filter: critical, high, medium, low.
searchstringCase-insensitive search on title and summary.
tagstringTag filter such as network or api.
dateFromstringStart date in YYYY-MM-DD format.
dateTostringEnd date in YYYY-MM-DD format.
pagenumberPage number. Default: 1.
page_sizenumberResults per page. Default: 20.

Example

/api/incidents?company=aws&severity=critical&page=1

Returns up to page_size results (default 20), sorted by startTime descending.

GET/api/incidents/:idNo auth

Get detailed incident data, including timeline and sources.

Parameters

idnumberIncident ID.

Example

/api/incidents/413
GET/api/incidents/:id/similarNo auth

Find similar incidents based on shared tags.

Parameters

idnumberIncident ID.
limitnumberMaximum results. Default: 5.

Example

/api/incidents/413/similar
GET/api/companiesNo auth

List all tracked companies and the services attached to them.

Example

/api/companies
GET/api/companies/:slugNo auth

Get company details by slug.

Parameters

slugstringCompany slug such as aws.

Example

/api/companies/aws
GET/api/companies/:slug/statsNo auth

Company-specific incident volume, severity mix, uptime, and reliability score.

Parameters

slugstringCompany slug.

Example

/api/companies/aws/stats
GET/api/statsNo auth

Global statistics across the dataset.

Example

/api/stats
GET/api/reliabilityNo auth

Reliability leaderboard across tracked providers.

Example

/api/reliability

Accounts and keys

Authentication, API keys, and account flows

Most read endpoints are public. Authentication matters when you need account management, API key generation, or user-scoped alerting.

POST/api/registerNo auth

Create a user account and start the selected plan flow.

Parameters

namestringUser display name.
emailstringEmail address.
companystringOptional company name.
passwordstringPassword, minimum 8 characters.
planstringfree, pro, or teams.

Example

POST /api/register
{
  "name": "Ada Lovelace",
  "email": "ada@example.com",
  "password": "correct horse battery staple",
  "plan": "pro"
}
POST/api/loginNo auth

Sign in and establish the session cookie.

Parameters

emailstringAccount email.
passwordstringAccount password.

Example

POST /api/login
{
  "email": "ada@example.com",
  "password": "correct horse battery staple"
}
POST/api/logoutSession

Sign out and clear the session cookie.

Example

POST /api/logout
GET/api/meSession

Return the current signed-in user, if any.

Example

/api/me
POST/api/keysSession

Generate a new API key for tracked usage and higher rate limits.

Example

POST /api/keys

The full key is only returned once. Store it securely.

DELETE/api/keysSession

Revoke the current API key.

Example

DELETE /api/keys
POST/api/forgot-passwordNo auth

Request a password reset link via email.

Parameters

emailstringAccount email address.

Example

POST /api/forgot-password
{ "email": "ada@example.com" }
POST/api/reset-passwordNo auth

Complete the password reset with token from email.

Parameters

tokenstringReset token from the email link.
passwordstringNew password, minimum 8 characters.

Example

POST /api/reset-password
{ "token": "abc123...", "password": "new secure password" }

Bearer key example

curl -H "Authorization: Bearer ih_YOUR_API_KEY" \
  https://incidenthub-bay.com/api/v1/status/openai

Generate API keys from Profile Settings.

Real-time status

Status API and response shape

Use the status API for live provider health in bots, health dashboards, or lightweight operational checks. Requires a Bearer API key.

curl -H "Authorization: Bearer ih_YOUR_API_KEY" \
  https://incidenthub-bay.com/api/v1/status/openai
GET/api/v1/status/:providerBearer

Fetch a single provider or use "all" for the full provider roster.

Parameters

providerstringProvider slug such as openai, aws, or "all".

Example

/api/v1/status/all

Example response

{
  "provider": "openai",
  "name": "OpenAI",
  "status": "operational",
  "activeIncidents": [],
  "incidents24h": 0,
  "incidents7d": 3,
  "lastIncident": {
    "title": "Elevated error rates",
    "severity": "high",
    "startedAt": "2026-03-06T12:00:00.000Z",
    "resolvedAt": "2026-03-06T13:20:00.000Z"
  },
  "updatedAt": "2026-03-13T09:30:00.000Z"
}
Responses are cached for 5 minutes (Cache-Control: public, s-maxage=300). Use "all" to fetch every tracked provider in a single request.

Rate limits by plan

PlanRequests / day
Free100
Pro5,000
Teams50,000
EnterpriseUnlimited

Error handling

Error responses and status codes

All error responses return JSON with an error field. Rate-limited requests return 429 with a Retry-After suggestion.

StatusLabelDescription
400Bad RequestMissing or invalid parameters.
401UnauthorizedAuthentication required or invalid API key.
403ForbiddenPlan limit exceeded (e.g., watchlist quota).
404Not FoundResource does not exist.
429Too Many RequestsRate limit exceeded. Back off and retry.
500Server ErrorUnexpected server error. Contact support.

Example error response

{
  "error": "Provider not found",
  "available": ["aws", "openai", "anthropic", "cloudflare", ...]
}

Embeds

Badges, widgets, and embed codes

Use the embeddable surfaces when you want live status without building a client from scratch.

Badge embed (Markdown)

[![OpenAI Status](https://incidenthub-bay.com/api/badge/openai)](https://incidenthub-bay.com/openai-outages)

Badge embed (HTML)

<a href="https://incidenthub-bay.com/openai-outages">
  <img src="https://incidenthub-bay.com/api/badge/openai"
       alt="OpenAI Status" />
</a>

Widget embed

<script src="https://incidenthub-bay.com/api/widget?providers=openai,anthropic,aws" async></script>

Add the script tag to any HTML page. The widget renders a compact status strip for the specified providers.