{"components":{"schemas":{"CatalogResponse":{"properties":{"apiVersion":{"const":"1"},"catalogRevision":{"type":"string"},"catalogTotal":{"minimum":0,"type":"integer"},"query":{"properties":{"automatic":{"type":"boolean"},"category":{"type":"string"},"kind":{"enum":["all","ai","application","infrastructure"]},"q":{"type":"string"}},"required":["q","kind","category","automatic"],"type":"object"},"services":{"items":{"$ref":"#/components/schemas/CatalogService"},"type":"array"},"total":{"minimum":0,"type":"integer"}},"required":["apiVersion","catalogRevision","query","total","catalogTotal","services"],"type":"object"},"CatalogService":{"properties":{"aiCategory":{"type":["string","null"]},"aliases":{"items":{"type":"string"},"type":"array"},"automaticCollection":{"description":"Configured collection, not a successful or current report.","type":"boolean"},"description":{"type":"string"},"id":{"type":"string"},"kind":{"enum":["application","infrastructure"]},"name":{"type":"string"},"officialStatusURL":{"format":"uri","type":["string","null"]},"path":{"type":"string"},"source":{"anyOf":[{"$ref":"#/components/schemas/Source"},{"type":"null"}]},"statusAPIPath":{"type":"string"}},"required":["id","name","description","aliases","kind","aiCategory","path","statusAPIPath","automaticCollection","officialStatusURL","source"],"type":"object"},"Error":{"properties":{"error":{"type":"string"}},"required":["error"],"type":"object"},"LatestCollection":{"properties":{"at":{"format":"date-time","type":["string","null"]},"error":{"type":["string","null"]},"httpStatus":{"type":["integer","null"]},"outcome":{"enum":["success","failure",null],"type":["string","null"]}},"required":["at","outcome","error","httpStatus"],"type":"object"},"ReportCount":{"properties":{"count":{"minimum":0,"type":["integer","null"]},"provided":{"type":"boolean"}},"required":["provided","count"],"type":"object"},"Source":{"properties":{"id":{"type":"string"},"label":{"type":"string"},"scope":{"type":"string"},"statusPageURL":{"format":"uri","type":"string"},"url":{"format":"uri","type":"string"}},"required":["id","label","url","statusPageURL"],"type":"object"},"StatusResponse":{"properties":{"apiVersion":{"const":"1"},"asOf":{"format":"date-time","type":"string"},"databaseAvailable":{"type":"boolean"},"historyDate":{"format":"date","type":"string"},"observationRevision":{"type":"string"},"pageRevision":{"type":"string"},"probesAvailable":{"type":"boolean"},"services":{"items":{"$ref":"#/components/schemas/StatusService"},"type":"array"}},"required":["apiVersion","asOf","databaseAvailable","probesAvailable","services","observationRevision","historyDate","pageRevision"],"type":"object"},"StatusService":{"properties":{"collectedAt":{"format":"date-time","type":["string","null"]},"freshness":{"enum":["fresh","stale","missing","not_connected","unavailable"]},"id":{"type":"string"},"incidents":{"$ref":"#/components/schemas/ReportCount"},"lastReportedState":{"description":"Last saved state; may be stale.","enum":["operational","degraded","partial_outage","major_outage","maintenance","unknown",null],"type":["string","null"]},"latestCollection":{"$ref":"#/components/schemas/LatestCollection"},"maintenance":{"$ref":"#/components/schemas/ReportCount"},"name":{"type":"string"},"officialStatusURL":{"format":"uri","type":["string","null"]},"path":{"type":"string"},"report":{"additionalProperties":true,"description":"Last saved normalized report. Can be empty; its internal state is historical unless outer freshness and validUntil remain valid. Unimported fields do not establish an empty event history.","type":"object"},"reportRevision":{"type":"string"},"scope":{"type":["string","null"]},"source":{"anyOf":[{"$ref":"#/components/schemas/Source"},{"type":"null"}]},"sourceUpdatedAt":{"description":"Provider timestamp, if verified; distinct from collection time.","format":"date-time","type":["string","null"]},"state":{"description":"Use only when freshness is fresh and validUntil is still in the future. Null and unknown never establish availability or an outage.","enum":["operational","degraded","partial_outage","major_outage","maintenance","unknown",null],"type":["string","null"]},"summary":{"type":"string"},"validUntil":{"format":"date-time","type":["string","null"]}},"required":["id","path","name","state","lastReportedState","freshness","collectedAt","sourceUpdatedAt","validUntil","scope","source","officialStatusURL","incidents","maintenance","latestCollection","reportRevision"],"type":"object"}}},"externalDocs":{"description":"Status checks for agents: scope, freshness and request errors","url":"https://isanythingdown.com/guides/agent-status-checks"},"info":{"contact":{"email":"support@grainpeak.com","name":"Grainpeak"},"description":"Discover reviewed services, then read saved official reports. No account or API key required. Requests never trigger collection or business probes. Provider reports do not verify a model, account, inference request or regional access. Recheck validUntil whenever using saved state. Do not infer availability from missing, unknown or stale data, or outage from collection failure.","title":"IsAnythingDown read-only API","version":"1.0.0"},"openapi":"3.1.1","paths":{"/api/v1/services":{"get":{"description":"Embedded reviewed metadata. Works without the database and contains no current service status. Fixed registry order, no pagination. Each parameter may occur once; unsupported parameters return 400. A category selects kind=ai, matching website search. automatic=false includes every collection coverage type; true selects configured sources.","operationId":"searchServices","parameters":[{"description":"Case-insensitive substring of name, description and aliases. Whitespace is normalized before the 100-character limit.","in":"query","name":"q","required":false,"schema":{"default":"","maxLength":100,"type":"string"}},{"description":"Service family.","in":"query","name":"kind","required":false,"schema":{"default":"all","enum":["all","ai","application","infrastructure"],"type":"string"}},{"description":"Optional AI category; an empty value means no category filter.","in":"query","name":"category","required":false,"schema":{"default":"","enum":["","assistants","coding","media","model-apis","compute","data"],"type":"string"}},{"description":"true selects configured automatic collection; false includes both configured and unconfigured services.","in":"query","name":"automatic","required":false,"schema":{"default":false,"type":"boolean"}},{"description":"Optional ETag from a previous response.","in":"header","name":"If-None-Match","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CatalogResponse"}}},"description":"Service metadata and canonical status query paths; no current state."},"304":{"description":"Unchanged catalog result. Empty body."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Invalid, repeated or unsupported parameter or service ID."}},"summary":"Find services by name or English and Chinese alias"}},"/api/v1/status":{"get":{"description":"Omit services for the full catalog. Claude is a public alias of anthropic; response id stays anthropic. Do not submit claude and anthropic together. No other query parameters are accepted.","operationId":"getServiceStatuses","parameters":[{"description":"Comma-separated known IDs, once each. Omit for all services; an empty value, unknown ID, or duplicate after alias resolution returns 400.","explode":false,"in":"query","name":"services","required":false,"schema":{"items":{"minLength":1,"type":"string"},"minItems":1,"type":"array","uniqueItems":true},"style":"form"},{"description":"Optional ETag from a previous response.","in":"header","name":"If-None-Match","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StatusResponse"}}},"description":"Saved official reports, with freshness checked at asOf. Collection failures do not establish outages."},"304":{"description":"Unchanged saved evidence and validity. Empty body.","headers":{"X-Status-As-Of":{"description":"Current validation time; recheck each saved validUntil.","schema":{"format":"date-time","type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Invalid, repeated or unsupported parameter or service ID."},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StatusResponse"}}},"description":"Database read failure. State is null and freshness unavailable for affected reports. This is not a provider outage."}},"summary":"Read saved official status for selected services"}},"/api/v1/status/{slug}":{"get":{"description":"Accepts one known service ID or claude. Response retains the services array and includes summary and report. report is the last saved evidence, even when stale. No query parameters are accepted.","operationId":"getServiceStatusDetails","parameters":[{"description":"Use an ID or the returned statusAPIPath from searchServices.","example":"claude","in":"path","name":"slug","required":true,"schema":{"minLength":1,"type":"string"}},{"description":"Optional ETag from a previous response.","in":"header","name":"If-None-Match","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StatusResponse"}}},"description":"Saved official reports, with freshness checked at asOf. Collection failures do not establish outages."},"304":{"description":"Unchanged saved evidence and validity. Empty body.","headers":{"X-Status-As-Of":{"description":"Current validation time; recheck each saved validUntil.","schema":{"format":"date-time","type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Invalid, repeated or unsupported parameter or service ID."},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StatusResponse"}}},"description":"Database read failure. State is null and freshness unavailable for affected reports. This is not a provider outage."}},"summary":"Read one saved report with component and event details"}}},"security":[],"servers":[{"url":"https://isanythingdown.com"}]}
