Todos os serviços / API
API de status
Vereditos ao vivo, contagem de relatos e status oficial em JSON. Os selos, o widget e o status básico podem ser usados em outros sites. Uma chave paga libera notas de alerta antecipado, verificações regionais, evidências, mapas, histórico mais longo e o catálogo completo. See selos de status.
Limits
- Sem chave: 30 requisições por minuto por rede e 5000 por dia. Grátis. O status básico, os selos, o widget e a busca continuam disponíveis. Os campos pagos são omitidos e incluem uma dica de upgrade.
- Chave de API paga: 600 requisições por minuto, 100000 por dia, $19/mo. Uma chave paga libera z-scores de alerta antecipado, detalhes das verificações regionais, evidências, mapas, gráficos de histórico além de 24 horas, o catálogo completo, histórico de quedas com mais de 30 dias, páginas de até 1.000 itens e exportação em CSV. Envie a chave em um cabeçalho Authorization ou X-API-Key. Jornalistas em atividade podem pedir uma chave de imprensa grátis em /press para um limite maior por minuto. As chaves de imprensa e as outras chaves grátis não incluem exportação em massa, CSV nem histórico com mais de 30 dias. See /press.
- Toda resposta de /api/v1 traz X-RateLimit-Limit, X-RateLimit-Remaining e X-RateLimit-Reset (segundos Unix em que a janela atual reinicia), além de uma contagem diária restante. Acima do limite, você recebe 429 com Retry-After. Muitas respostas GET ficam em cache por 30–600 segundos; algumas, incluindo a busca, não ficam em cache.
Endpoints
GET /api/v1/status/<slug>
Current verdict for one service: level, official status, simple report counts and the last check time. Early-warning z-scores and regional check detail need a paid key; without one they are omitted and the body includes an upgrade hint.
breaches contains verified historical site breaches matched to the service homepage domain (or an empty array). Each record includes title, breach date, account count, data classes, sanitized description_html and source metadata. These are not live security alerts or email lookups. Dados de Have I Been Pwned (CC BY 4.0); consumers must show this credit and source link wherever they display the data or descriptions. Formatting has been sanitized. The top-level breach_source repeats this attribution.
curl https://damnisitdown.com/api/v1/status/github
{
"service": { "slug": "github", "name": "GitHub", "url": "https://damnisitdown.com/status/github" },
"verdict": { "level": "operational", "title": "GitHub is up", "summary": "…" },
"confidence": 0.92,
"regions": [ { "region": "enam", "label": "US East", "ok": true, "latency_ms": 81, "checked_at": "2026-10-31T14:02:11.000Z" } ],
"official": { "indicator": "none", "description": "All Systems Operational" },
"reports": { "last_15m": 0, "last_60m": 1, "baseline_per_hour": 0.4 },
"last_checked": "2026-10-31T14:03:00.000Z"
}GET /api/v1/services
Todos os serviços monitorados do catálogo, com o slug e o nível atual. A lista completa exige chave paga; sem ela, você recebe a contagem, as categorias e uma dica de upgrade. Para busca, use /api/v1/search ou /api/v1/suggest?q= (limitado).
curl https://damnisitdown.com/api/v1/services
GET /api/v1/outages?service=<slug>&limit=50
Recent outages, newest first: start, peak, recovery, duration, regions, related provider, plus confirmed, signal and label (the same evidence gate as explainer pages, alerts and the Business SLA report). Optional query: service, since and before (ISO 8601, YYYY-MM-DD or unix seconds), confirmed=1 or 0, limit and format=csv. Sem chave paga, o limite é de no máximo 200 e os filtros de data ficam dentro dos últimos 30 dias, aproximadamente; o CSV não está disponível. Uma chave paga (US$ 19/mês) libera histórico mais longo, páginas de até 1.000 itens, um cursor next.before para paginar linhas mais antigas e exportação em massa em CSV ou JSON. Chaves anônimas e grátis ainda recebem next.before dentro da janela de 30 dias. O corpo JSON inclui next (ou null) e uma nota sobre como os incidentes confirmados são contados.
curl "https://damnisitdown.com/api/v1/outages?service=github&confirmed=1&limit=10"
POST /api/v1/diagnose/<slug>
“Is it me?” diagnosis: points to the most likely layer (the service, an upstream provider, a region, your ISP or area, DNS, or your Wi-Fi / device) with exactly two steps to try. Send your own test results as JSON; every field is optional: site, ping, internet ("ok" or "fail"), dns_cloudflare, dns_google (ok, nxdomain, servfail, error), optional reach times (site_ms, ping_ms, internet_ms, dns_cloudflare_ms, dns_google_ms), conn (wifi, cellular, ethernet), locale (en, de, es, id) and record (set false to skip anonymous counting). If you send no DNS results, we look them up from our side. The response has verdict (code, title, detail, steps, layer, links), a short report_note, and context (your provider and region, DNS, our checks, upstream providers). Per caller, never cached; raw IPs are not stored. Copy is phrased as “most likely” and shows the evidence; we cannot see your own DNS resolver from a browser.
curl -X POST https://damnisitdown.com/api/v1/diagnose/slack \
-H 'content-type: application/json' \
-d '{"site":"fail","internet":"ok","conn":"wifi"}'GET /api/v1/outages/<id>
One public outage with its timeline of events, plus confirmed, signal and label. 404 if the id is unknown, still too short to be public, or flagged as a false positive.
Cached for 30 seconds.
curl https://damnisitdown.com/api/v1/outages/63
{
"outage": { "id": 63, "service": "quay", "status": "ongoing", "title": "Major incident reported", "started_at": "2026-11-02T18:33:38.000Z", "peak_at": "2026-11-02T18:33:38.000Z", "peak_level": "major_outage", "peak_confidence": 0.78, "recovered_at": null, "duration_seconds": 172, "regions_affected": [], "related_provider": null, "max_reports_15m": 0, "confirmed": false, "signal": "possible", "label": "Unconfirmed / possible issue (not counted)", "url": "https://damnisitdown.com/outages/quay/2026-11-02-63" },
"service_name": "Quay",
"events": [{ "at": "2026-11-02T18:33:38.000Z", "kind": "start", "text": "Outage detected: …" }]
}GET /api/v1/outages/<id>/evidence
As evidências brutas de uma queda, também disponíveis nas URLs evidence.json e evidence.csv da página da queda. Exige chave paga; sem ela, o corpo inclui uma dica de upgrade em vez de um erro. Counts only, no personal data.
Cached for 1–5 minutes.
curl https://damnisitdown.com/api/v1/outages/63/evidence
GET /api/v1/forecast/<slug>
Outage Weather for one service: planned_maintenance the vendor announced on its own status page for the next 7 days (its title, details, starts_at, ends_at and source_url), a recurring_window we observed (or null), and history_pattern, which stays null until the service has enough verified incidents (see pattern_rules). Announced maintenance is not a prediction and not an outage. GET /api/v1/forecast lists every announcement for the next 7 days, plus the recurring_windows and history_patterns the Outage Weather page shows (each null if it could not be loaded; cached 5 minutes).
Cached for 2 minutes.
curl https://damnisitdown.com/api/v1/forecast/cloudflare
GET /api/v1/status/<slug>/history?range=24h
Dados de gráfico de um serviço: relatos de usuários, linha de base, latência e resultados das verificações por intervalo de tempo. range é 24h (padrão e grátis). 7d e 30d exigem chave paga; sem ela, a série de 24h é retornada com uma dica de upgrade.
Cached for 60 seconds.
curl "https://damnisitdown.com/api/v1/status/github/history?range=7d"
{ "slug": "github", "range": "24h", "points": [{ "t": "2026-11-01T18:45:00.000Z", "reports": 0, "baseline": 0, "latency_ms": 68, "checks": 4, "failures": 0 }, …] }GET /api/v1/status/<slug>/map?hours=24
De onde vêm os relatos de problema: locais, redes e tipos de problema. hours é 1, 6 ou 24 (padrão). Grupos pequenos ficam ocultos por privacidade (hidden os conta). Exige chave paga; sem ela, o corpo inclui uma dica de upgrade.
Cached for 60 seconds.
curl "https://damnisitdown.com/api/v1/status/github/map?hours=6"
{ "hours": 24, "total": 0, "places": [], "networks": [], "hidden": 0, "points": [], "problems": [] }GET /api/v1/trending
Up to 20 services with problems right now, worst level first, then most reports in the last hour.
Cached for 30 seconds.
curl https://damnisitdown.com/api/v1/trending
{ "count": 20, "services": [{ "slug": "bitpanda", "name": "Bitpanda", "category": "Money", "level": "major_outage", "title": "Major incident reported", "reports_60m": 0 }, …] }GET /api/v1/popular
The most-viewed services over the last 7 days, with their current level.
Cached for 5 minutes.
curl https://damnisitdown.com/api/v1/popular
{ "count": 50, "window_days": 7, "services": [{ "rank": 1, "slug": "starlink", "name": "Starlink", "level": "operational", "source": "traffic", "url": "/status/starlink" }, …] }GET /api/v1/search?q=<text>
Find services by name, slug or website (up to 25 matches; q up to 80 characters). If q looks like a domain, domain gives its host and the matching slug, or null if we don't track it yet.
Cached for 0 seconds (not cached).
curl "https://damnisitdown.com/api/v1/search?q=example.com"
{ "query": "example.com", "services": [], "domain": { "host": "example.com", "slug": null } }GET /api/v1/widget?slugs=<slug>,<slug>
A compact level and title for a short list of services (comma-separated, up to 12), in the order you ask. Unknown slugs are skipped.
Cached for 60 seconds.
curl "https://damnisitdown.com/api/v1/widget?slugs=github,slack"
{ "updated_at": "2026-11-02T18:36:22.307Z", "services": [{ "slug": "github", "name": "GitHub", "level": "operational", "title": "No problems detected" }, { "slug": "slack", "name": "Slack", "level": "operational", "title": "No problems detected" }] }GET /api/v1/reliability/<YYYY-MM|30d>
The ranking de confiabilidade as JSON. Use a month (YYYY-MM, from 2026-10 to the current month) or 30d for the rolling 30 days. GET /api/v1/reliability redirects (302) to the current month. Months freeze on the 1st (UTC), after which final is true.
cat(optional): one category, for exampleAIorCloud & developer. An unknown category returns400with{"error":"bad_category","categories":[…]}. Withcat,moversisnullandcategoriesis left out.rows: every ranked service.uptimeis a percentage;downtime_sec,median_sec,covered_secanddown_secare seconds;low_confidencemarks fewer than 50 checks a day.most_reliableandmost_outage_prone: slugs, top 10.movers: the biggest month-over-month uptime changes for services ranked in both months. It isnulluntilmovers_available_from(2026-12), because the first month of data was partial. From then on it looks like this (uptime_changeis in percentage points,changeis places gained in rank):
"movers": {
"prev": "2026-11",
"up": [{ "slug": "…", "name": "…", "rank": 1, "prev_rank": 4, "change": 3, "uptime": 100, "prev_uptime": 99.2, "uptime_change": 0.8 }],
"down": [ … ]
}Unknown or out-of-range periods return 404 with {"error":"not_found"}. Data is CC BY 4.0.
Cached for 10 minutes for live periods, 1 hour once a month is final.
curl "https://damnisitdown.com/api/v1/reliability/2026-11?cat=AI"
{
"period": { "key": "2026-11", "label": "November 2026", "start": 1793491200, "end": 1793644579, "final": false, "days": 2, "kind": "month" },
"final": false,
"category": null,
"thresholds": { "min_days": 2, "min_checks": 24, "min_checks_per_day": 12, "confident_checks_per_day": 50 },
"excluded": 730,
"low_confidence": 0,
"methodology": "Uptime = covered time minus downtime, …",
"most_reliable": ["1password", "adobe", …],
"most_outage_prone": ["bluesky", "sentry", …],
"movers": null,
"movers_available_from": "2026-12",
"categories": [{ "category": "AI", "services": 16, "uptime": 100, "outages": 0, "best": "anthropic-api", "worst": "spacex-com" }, …],
"rows": [{ "slug": "1password", "name": "1Password", "category": "Productivity", "total": 307, "ok": 307, "days": 2, "outages": 0, "downtime_sec": 0, "median_sec": 0, "reports": 0, "covered_sec": 153379, "down_sec": 0, "uptime": 100, "rank": 1, "cat_rank": 1, "checks_per_day": 154, "low_confidence": false }, …],
"generated_at": "2026-11-02T18:36:19.000Z"
}GET /api/v1/accuracy?page=1
Our accuracy scorecard as JSON: the same hourly snapshot as the page, for the last 30 days and all time. Percentages are out of all published incidents, retractions included; speed.median_lead_min is positive when we were first and negative when the vendor was. matched_incidents lists every incident in the speed sample (difference_sec is vendor time minus ours). retractions lists every retraction, 50 per page, newest first; page beyond the last returns 404.
Cached for 10 minutes.
curl https://damnisitdown.com/api/v1/accuracy
{ "computed_at": "2026-11-12T11:00:00.000Z", "last_30_days": { "published": 120, "retracted": 3, "retracted_pct": 2.5, "confirmed": 80, "confirmed_pct": 66.7, "speed": { "matched": 4, "we_were_first": 1, "vendor_was_first": 3, "within_a_minute": 0, "median_lead_min": -12.5 }, … }, "all_time": { … }, "matched_incidents": [ … ], "retractions": { "total": 3, "page": 1, "pages": 1, "rows": [{ "id": 993, "service": "changenow", "original_label": "major_outage", "reason": "summary_only", … }] } }Errors and headers
Errors are JSON with an error code and sometimes a message. O CORS fica aberto para os selos, o widget, a verificação da extensão e o status básico ao vivo, então você pode incorporá-los a partir de um navegador. As outras rotas JSON permitem chamadas da mesma origem e de quem tem chave de API. Os campos pagos do status (z-score de alerta antecipado e detalhe regional), evidências, mapas, histórico além de 24 horas e o catálogo completo exigem uma chave paga; sem ela, esses campos são omitidos e o corpo inclui uma dica de upgrade em vez de um erro. Most responses also carry X-RateLimit-Limit and X-API-Tier. The endpoints above count toward your per-minute and daily limits. The speed-test endpoints (/api/v1/speed/*) and the app endpoints for reports, push alerts and watchlist sync are for our own site and apps, have their own per-network limits, and aren't a supported public API.
Push alerts to Slack, Discord or a webhook
Rather not poll? Configure alertas grátis por Slack, Discord ou webhook JSON assinado for confirmed down and recovered events. Early warnings are part of Owner Alerts. Requests are signed with X-DIID-Signature (HMAC-SHA256); see the payload and how to verify it.
Using an AI assistant? Connect our free Servidor MCP (/mcp) to Claude, ChatGPT, Cursor or VS Code. Want a badge? Every status page has an embed snippet, or use /badge/<slug>.svg (add ?uptime=1 for 30-day uptime).
Using a key
curl -H "Authorization: Bearer diid_…" https://damnisitdown.com/api/v1/status/github
const res = await fetch('https://damnisitdown.com/api/v1/status/github', {
headers: { Authorization: 'Bearer diid_…' },
})
const { verdict } = await res.json()Keep keys on your server. A key in browser code can be copied. Prefer the Authorization or X-API-Key header. Level values: operational, degraded, possible_outage, outage, major_outage, unknown.
Business API
Business workspaces (Team and Business plans) get a workspace API key under Settings. Send it as Authorization: Bearer diidb_…. Read-only, JSON, rate-limited per key.
GET /api/biz/v1/workspace: plan, status, limitsGET /api/biz/v1/vendors: watched vendors with live levelGET /api/biz/v1/endpoints: your own endpoints, state and last checkGET /api/biz/v1/incidents: recent vendor and endpoint incidents. Each vendor incident hasconfirmed(boolean),signal,labelandurl(its outage page). Unconfirmed incidents are still listed, withconfirmed: false. Endpoint incidents come from your own checks and are alwaysconfirmed: truewithsignal: "own_check".GET /api/biz/v1/sla?month=YYYY-MM: SLA rows (add&format=csvfor CSV)GET /api/biz/v1/domains: custom status-page domains with hostname and SSL status, your plan limit and the CNAME targetGET /api/biz/v1/shop: Shop health (Business): page checks with state and last error, plus SSL certificate and domain expiry dates and days leftGET /api/biz/v1/clients: MSP plan: client status pages with overall state and each vendor's live level
Confirmed vs unconfirmed
confirmed: true means our own checks confirmed the incident. It follows the same evidence rules as alerts, and it is exactly what the SLA report and the downtime cost estimate count. signal is one of confirmed, possible (not confirmed by our checks), reports (people are reporting problems, not confirmed), vendor (reported by the vendor only) or maintenance (vendor maintenance). A new incident can show confirmed: false for its first few minutes, until it has lasted long enough to count. Since Nov 10, 2026 the SLA report counts confirmed incidents only. Other vendor time shows as notCountedSec (not_counted_sec in CSV).
Custom domains. Serve your claimed status page at your own hostname (Team: 1, Business: 5). Add it under Domains in your workspace, then create a CNAME from your hostname to customers.damnisitdown.com. SSL is issued automatically. The hostname serves your status page at /; /statuspage/<slug> keeps working and sets the custom domain as canonical.
See damnisitdown Business for plans.
Get an API key · $19/mo
Already a customer? Get a link to your API account.