status
Public status-page summaries. 19 operations. Shapes are sketches of the declared schemas, bounded in depth — the authoritative document is linked from the index.
POST/status/{orgSlug}/{pageSlug}/access
No declared credential scheme
Reachable without a Bucker session token. Exchanges a page password for access; the password IS the credential.
Parameters
| Name | In | Type | Notes |
|---|---|---|---|
orgSlugrequired | path | string | min length 1 |
pageSlugrequired | path | string | min length 1, max length 64 |
Request body (required) · application/json
{
password: string
}Response 200
{
token: string
expiresInSeconds: integer
}Response 400 · `bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.
{
error: {
code: "bad_request" | "conflict" | "forbidden" | "internal_error" | "mfa_required" | "not_found" | "payload_too_large" | "quota_exceeded" | … 6 more
message: string
details?: unknown
requestId?: string
}
}Response 404 · `not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.
{
error: {
code: "bad_request" | "conflict" | "forbidden" | "internal_error" | "mfa_required" | "not_found" | "payload_too_large" | "quota_exceeded" | … 6 more
message: string
details?: unknown
requestId?: string
}
}Response 429 · `rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.
{
error: {
code: "bad_request" | "conflict" | "forbidden" | "internal_error" | "mfa_required" | "not_found" | "payload_too_large" | "quota_exceeded" | … 6 more
message: string
details?: unknown
requestId?: string
}
}Response 500 · `internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.
{
error: {
code: "bad_request" | "conflict" | "forbidden" | "internal_error" | "mfa_required" | "not_found" | "payload_too_large" | "quota_exceeded" | … 6 more
message: string
details?: unknown
requestId?: string
}
}Request
curl -X POST https://api.bucker.io/status/{orgSlug}/{pageSlug}/access \
-H 'content-type: application/json' \
-d '{ … }'GET/status/{orgSlug}/{pageSlug}/api/v2/components.json
No declared credential scheme
Reachable without a Bucker session token. Statuspage v2 compatibility surface: an unauthenticated read, in a shape that is not ours to change.
Parameters
| Name | In | Type | Notes |
|---|---|---|---|
orgSlugrequired | path | string | min length 1 |
pageSlugrequired | path | string | min length 1, max length 64 |
Response 200
unknownResponse 400 · `bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.
{
error: {
code: "bad_request" | "conflict" | "forbidden" | "internal_error" | "mfa_required" | "not_found" | "payload_too_large" | "quota_exceeded" | … 6 more
message: string
details?: unknown
requestId?: string
}
}Response 404 · `not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.
{
error: {
code: "bad_request" | "conflict" | "forbidden" | "internal_error" | "mfa_required" | "not_found" | "payload_too_large" | "quota_exceeded" | … 6 more
message: string
details?: unknown
requestId?: string
}
}Response 429 · `rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.
{
error: {
code: "bad_request" | "conflict" | "forbidden" | "internal_error" | "mfa_required" | "not_found" | "payload_too_large" | "quota_exceeded" | … 6 more
message: string
details?: unknown
requestId?: string
}
}Response 500 · `internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.
{
error: {
code: "bad_request" | "conflict" | "forbidden" | "internal_error" | "mfa_required" | "not_found" | "payload_too_large" | "quota_exceeded" | … 6 more
message: string
details?: unknown
requestId?: string
}
}Request
curl https://api.bucker.io/status/{orgSlug}/{pageSlug}/api/v2/components.jsonGET/status/{orgSlug}/{pageSlug}/api/v2/incidents.json
No declared credential scheme
Reachable without a Bucker session token. Statuspage v2 compatibility surface: an unauthenticated read, in a shape that is not ours to change.
Parameters
| Name | In | Type | Notes |
|---|---|---|---|
orgSlugrequired | path | string | min length 1 |
pageSlugrequired | path | string | min length 1, max length 64 |
Response 200
unknownResponse 400 · `bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.
{
error: {
code: "bad_request" | "conflict" | "forbidden" | "internal_error" | "mfa_required" | "not_found" | "payload_too_large" | "quota_exceeded" | … 6 more
message: string
details?: unknown
requestId?: string
}
}Response 404 · `not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.
{
error: {
code: "bad_request" | "conflict" | "forbidden" | "internal_error" | "mfa_required" | "not_found" | "payload_too_large" | "quota_exceeded" | … 6 more
message: string
details?: unknown
requestId?: string
}
}Response 429 · `rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.
{
error: {
code: "bad_request" | "conflict" | "forbidden" | "internal_error" | "mfa_required" | "not_found" | "payload_too_large" | "quota_exceeded" | … 6 more
message: string
details?: unknown
requestId?: string
}
}Response 500 · `internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.
{
error: {
code: "bad_request" | "conflict" | "forbidden" | "internal_error" | "mfa_required" | "not_found" | "payload_too_large" | "quota_exceeded" | … 6 more
message: string
details?: unknown
requestId?: string
}
}Request
curl https://api.bucker.io/status/{orgSlug}/{pageSlug}/api/v2/incidents.jsonGET/status/{orgSlug}/{pageSlug}/api/v2/incidents/unresolved.json
No declared credential scheme
Reachable without a Bucker session token. Statuspage v2 compatibility surface: an unauthenticated read, in a shape that is not ours to change.
Parameters
| Name | In | Type | Notes |
|---|---|---|---|
orgSlugrequired | path | string | min length 1 |
pageSlugrequired | path | string | min length 1, max length 64 |
Response 200
unknownResponse 400 · `bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.
{
error: {
code: "bad_request" | "conflict" | "forbidden" | "internal_error" | "mfa_required" | "not_found" | "payload_too_large" | "quota_exceeded" | … 6 more
message: string
details?: unknown
requestId?: string
}
}Response 404 · `not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.
{
error: {
code: "bad_request" | "conflict" | "forbidden" | "internal_error" | "mfa_required" | "not_found" | "payload_too_large" | "quota_exceeded" | … 6 more
message: string
details?: unknown
requestId?: string
}
}Response 429 · `rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.
{
error: {
code: "bad_request" | "conflict" | "forbidden" | "internal_error" | "mfa_required" | "not_found" | "payload_too_large" | "quota_exceeded" | … 6 more
message: string
details?: unknown
requestId?: string
}
}Response 500 · `internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.
{
error: {
code: "bad_request" | "conflict" | "forbidden" | "internal_error" | "mfa_required" | "not_found" | "payload_too_large" | "quota_exceeded" | … 6 more
message: string
details?: unknown
requestId?: string
}
}Request
curl https://api.bucker.io/status/{orgSlug}/{pageSlug}/api/v2/incidents/unresolved.jsonGET/status/{orgSlug}/{pageSlug}/api/v2/scheduled-maintenances.json
No declared credential scheme
Reachable without a Bucker session token. Statuspage v2 compatibility surface: an unauthenticated read, in a shape that is not ours to change.
Parameters
| Name | In | Type | Notes |
|---|---|---|---|
orgSlugrequired | path | string | min length 1 |
pageSlugrequired | path | string | min length 1, max length 64 |
Response 200
unknownResponse 400 · `bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.
{
error: {
code: "bad_request" | "conflict" | "forbidden" | "internal_error" | "mfa_required" | "not_found" | "payload_too_large" | "quota_exceeded" | … 6 more
message: string
details?: unknown
requestId?: string
}
}Response 404 · `not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.
{
error: {
code: "bad_request" | "conflict" | "forbidden" | "internal_error" | "mfa_required" | "not_found" | "payload_too_large" | "quota_exceeded" | … 6 more
message: string
details?: unknown
requestId?: string
}
}Response 429 · `rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.
{
error: {
code: "bad_request" | "conflict" | "forbidden" | "internal_error" | "mfa_required" | "not_found" | "payload_too_large" | "quota_exceeded" | … 6 more
message: string
details?: unknown
requestId?: string
}
}Response 500 · `internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.
{
error: {
code: "bad_request" | "conflict" | "forbidden" | "internal_error" | "mfa_required" | "not_found" | "payload_too_large" | "quota_exceeded" | … 6 more
message: string
details?: unknown
requestId?: string
}
}Request
curl https://api.bucker.io/status/{orgSlug}/{pageSlug}/api/v2/scheduled-maintenances.jsonGET/status/{orgSlug}/{pageSlug}/api/v2/scheduled-maintenances/active.json
No declared credential scheme
Reachable without a Bucker session token. Statuspage v2 compatibility surface: an unauthenticated read, in a shape that is not ours to change.
Parameters
| Name | In | Type | Notes |
|---|---|---|---|
orgSlugrequired | path | string | min length 1 |
pageSlugrequired | path | string | min length 1, max length 64 |
Response 200
unknownResponse 400 · `bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.
{
error: {
code: "bad_request" | "conflict" | "forbidden" | "internal_error" | "mfa_required" | "not_found" | "payload_too_large" | "quota_exceeded" | … 6 more
message: string
details?: unknown
requestId?: string
}
}Response 404 · `not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.
{
error: {
code: "bad_request" | "conflict" | "forbidden" | "internal_error" | "mfa_required" | "not_found" | "payload_too_large" | "quota_exceeded" | … 6 more
message: string
details?: unknown
requestId?: string
}
}Response 429 · `rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.
{
error: {
code: "bad_request" | "conflict" | "forbidden" | "internal_error" | "mfa_required" | "not_found" | "payload_too_large" | "quota_exceeded" | … 6 more
message: string
details?: unknown
requestId?: string
}
}Response 500 · `internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.
{
error: {
code: "bad_request" | "conflict" | "forbidden" | "internal_error" | "mfa_required" | "not_found" | "payload_too_large" | "quota_exceeded" | … 6 more
message: string
details?: unknown
requestId?: string
}
}Request
curl https://api.bucker.io/status/{orgSlug}/{pageSlug}/api/v2/scheduled-maintenances/active.jsonGET/status/{orgSlug}/{pageSlug}/api/v2/scheduled-maintenances/upcoming.json
No declared credential scheme
Reachable without a Bucker session token. Statuspage v2 compatibility surface: an unauthenticated read, in a shape that is not ours to change.
Parameters
| Name | In | Type | Notes |
|---|---|---|---|
orgSlugrequired | path | string | min length 1 |
pageSlugrequired | path | string | min length 1, max length 64 |
Response 200
unknownResponse 400 · `bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.
{
error: {
code: "bad_request" | "conflict" | "forbidden" | "internal_error" | "mfa_required" | "not_found" | "payload_too_large" | "quota_exceeded" | … 6 more
message: string
details?: unknown
requestId?: string
}
}Response 404 · `not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.
{
error: {
code: "bad_request" | "conflict" | "forbidden" | "internal_error" | "mfa_required" | "not_found" | "payload_too_large" | "quota_exceeded" | … 6 more
message: string
details?: unknown
requestId?: string
}
}Response 429 · `rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.
{
error: {
code: "bad_request" | "conflict" | "forbidden" | "internal_error" | "mfa_required" | "not_found" | "payload_too_large" | "quota_exceeded" | … 6 more
message: string
details?: unknown
requestId?: string
}
}Response 500 · `internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.
{
error: {
code: "bad_request" | "conflict" | "forbidden" | "internal_error" | "mfa_required" | "not_found" | "payload_too_large" | "quota_exceeded" | … 6 more
message: string
details?: unknown
requestId?: string
}
}Request
curl https://api.bucker.io/status/{orgSlug}/{pageSlug}/api/v2/scheduled-maintenances/upcoming.jsonGET/status/{orgSlug}/{pageSlug}/api/v2/status.json
No declared credential scheme
Reachable without a Bucker session token. Statuspage v2 compatibility surface: an unauthenticated read, in a shape that is not ours to change.
Parameters
| Name | In | Type | Notes |
|---|---|---|---|
orgSlugrequired | path | string | min length 1 |
pageSlugrequired | path | string | min length 1, max length 64 |
Response 200
unknownResponse 400 · `bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.
{
error: {
code: "bad_request" | "conflict" | "forbidden" | "internal_error" | "mfa_required" | "not_found" | "payload_too_large" | "quota_exceeded" | … 6 more
message: string
details?: unknown
requestId?: string
}
}Response 404 · `not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.
{
error: {
code: "bad_request" | "conflict" | "forbidden" | "internal_error" | "mfa_required" | "not_found" | "payload_too_large" | "quota_exceeded" | … 6 more
message: string
details?: unknown
requestId?: string
}
}Response 429 · `rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.
{
error: {
code: "bad_request" | "conflict" | "forbidden" | "internal_error" | "mfa_required" | "not_found" | "payload_too_large" | "quota_exceeded" | … 6 more
message: string
details?: unknown
requestId?: string
}
}Response 500 · `internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.
{
error: {
code: "bad_request" | "conflict" | "forbidden" | "internal_error" | "mfa_required" | "not_found" | "payload_too_large" | "quota_exceeded" | … 6 more
message: string
details?: unknown
requestId?: string
}
}Request
curl https://api.bucker.io/status/{orgSlug}/{pageSlug}/api/v2/status.jsonGET/status/{orgSlug}/{pageSlug}/api/v2/summary.json
No declared credential scheme
Reachable without a Bucker session token. Statuspage v2 compatibility surface: an unauthenticated read, in a shape that is not ours to change.
Parameters
| Name | In | Type | Notes |
|---|---|---|---|
orgSlugrequired | path | string | min length 1 |
pageSlugrequired | path | string | min length 1, max length 64 |
Response 200
unknownResponse 400 · `bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.
{
error: {
code: "bad_request" | "conflict" | "forbidden" | "internal_error" | "mfa_required" | "not_found" | "payload_too_large" | "quota_exceeded" | … 6 more
message: string
details?: unknown
requestId?: string
}
}Response 404 · `not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.
{
error: {
code: "bad_request" | "conflict" | "forbidden" | "internal_error" | "mfa_required" | "not_found" | "payload_too_large" | "quota_exceeded" | … 6 more
message: string
details?: unknown
requestId?: string
}
}Response 429 · `rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.
{
error: {
code: "bad_request" | "conflict" | "forbidden" | "internal_error" | "mfa_required" | "not_found" | "payload_too_large" | "quota_exceeded" | … 6 more
message: string
details?: unknown
requestId?: string
}
}Response 500 · `internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.
{
error: {
code: "bad_request" | "conflict" | "forbidden" | "internal_error" | "mfa_required" | "not_found" | "payload_too_large" | "quota_exceeded" | … 6 more
message: string
details?: unknown
requestId?: string
}
}Request
curl https://api.bucker.io/status/{orgSlug}/{pageSlug}/api/v2/summary.jsonPOST/status/{orgSlug}/{pageSlug}/subscribe
No declared credential scheme
Reachable without a Bucker session token. A subscriber is a member of the public by definition.
Parameters
| Name | In | Type | Notes |
|---|---|---|---|
orgSlugrequired | path | string | min length 1 |
pageSlugrequired | path | string | min length 1, max length 64 |
Request body (required) · application/json
{
kind?: "EMAIL" | "WEBHOOK" | "SLACK"
email?: string (email)
url?: string (uri)
componentSlugs?: string[]
}Response 202
{
status: "pending"
}Response 400 · `bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.
{
error: {
code: "bad_request" | "conflict" | "forbidden" | "internal_error" | "mfa_required" | "not_found" | "payload_too_large" | "quota_exceeded" | … 6 more
message: string
details?: unknown
requestId?: string
}
}Response 404 · `not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.
{
error: {
code: "bad_request" | "conflict" | "forbidden" | "internal_error" | "mfa_required" | "not_found" | "payload_too_large" | "quota_exceeded" | … 6 more
message: string
details?: unknown
requestId?: string
}
}Response 429 · `rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.
{
error: {
code: "bad_request" | "conflict" | "forbidden" | "internal_error" | "mfa_required" | "not_found" | "payload_too_large" | "quota_exceeded" | … 6 more
message: string
details?: unknown
requestId?: string
}
}Response 500 · `internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.
{
error: {
code: "bad_request" | "conflict" | "forbidden" | "internal_error" | "mfa_required" | "not_found" | "payload_too_large" | "quota_exceeded" | … 6 more
message: string
details?: unknown
requestId?: string
}
}Request
curl -X POST https://api.bucker.io/status/{orgSlug}/{pageSlug}/subscribe \
-H 'content-type: application/json' \
-d '{ … }'GET/status/{orgSlug}/{pageSlug}/v1/components
No declared credential scheme
Reachable without a Bucker session token. Public status page read.
Parameters
| Name | In | Type | Notes |
|---|---|---|---|
orgSlugrequired | path | string | min length 1 |
pageSlugrequired | path | string | min length 1, max length 64 |
Response 200
{
spec: string
generatedAt: string
dataAsOf: string
stalenessSeconds: integer
history: {
chainDigest: string | null
sequence: integer | null
}
page: {
id: string
slug: string
orgSlug: string
name: string
headline: string | null
supportUrl: string | null
brandColor: string | null
logoBlobKey: string | null
faviconBlobKey: string | null
timezone: string
locale: string
uptimeWindowDays: integer
defaultUptimeExcludesMaintenance: boolean
}
groups: {
id: string
name: string
position: integer
collapsed: boolean
}[]
components: {
id: string
slug: string
name: string
description: string | null
groupId: string | null
position: integer
showcase: boolean
onlyShowIfDegraded: boolean
startDate: string | null
status: "unknown" | "operational" | "degraded_performance" | "partial_outage" | "major_outage" | "under_maintenance"
derivedStatus: "unknown" | "operational" | "degraded_performance" | "partial_outage" | "major_outage" | "under_maintenance"
assertedStatus: "unknown" | "operational" | "degraded_performance" | "partial_outage" | "major_outage" | "under_maintenance"
manualOverride: {
at: string
reason: string | null
contradicts: boolean
} | null
evidence: string[]
uptime: {
windowFrom: string
windowTo: string
windowDays: integer
daysWithData: integer
coverageRatio: number
checks: integer
successes: integer
checkRatio: number | null
upSeconds: integer
degradedSeconds: integer
downSeconds: integer
maintenanceSeconds: integer
recordedSeconds: integer
ratio: number | null
ratioExcludingMaintenance: number | null
p50LatencyMs: number | null
p95LatencyMs: number | null
}
uptimeDays: {
day: string
status: "operational" | "degraded" | "down" | "maintenance" | null
checks: integer
successes: integer
upSeconds: integer
degradedSeconds: integer
downSeconds: integer
maintenanceSeconds: integer
ratio: number | null
}[]
slo: {
target: number
achieved: number | null
budgetSeconds: number
consumedSeconds: number
remainingRatio: number | null
met: boolean | null
coverageRatio: number
} | null
}[]
}Response 400 · `bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.
{
error: {
code: "bad_request" | "conflict" | "forbidden" | "internal_error" | "mfa_required" | "not_found" | "payload_too_large" | "quota_exceeded" | … 6 more
message: string
details?: unknown
requestId?: string
}
}Response 404 · `not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.
{
error: {
code: "bad_request" | "conflict" | "forbidden" | "internal_error" | "mfa_required" | "not_found" | "payload_too_large" | "quota_exceeded" | … 6 more
message: string
details?: unknown
requestId?: string
}
}Response 429 · `rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.
{
error: {
code: "bad_request" | "conflict" | "forbidden" | "internal_error" | "mfa_required" | "not_found" | "payload_too_large" | "quota_exceeded" | … 6 more
message: string
details?: unknown
requestId?: string
}
}Response 500 · `internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.
{
error: {
code: "bad_request" | "conflict" | "forbidden" | "internal_error" | "mfa_required" | "not_found" | "payload_too_large" | "quota_exceeded" | … 6 more
message: string
details?: unknown
requestId?: string
}
}Request
curl https://api.bucker.io/status/{orgSlug}/{pageSlug}/v1/componentsGET/status/{orgSlug}/{pageSlug}/v1/incidents
No declared credential scheme
Reachable without a Bucker session token. Public status page read.
Parameters
| Name | In | Type | Notes |
|---|---|---|---|
orgSlugrequired | path | string | min length 1 |
pageSlugrequired | path | string | min length 1, max length 64 |
open | query | boolean |
Response 200
{
spec: string
generatedAt: string
dataAsOf: string
stalenessSeconds: integer
history: {
chainDigest: string | null
sequence: integer | null
}
page: {
id: string
slug: string
orgSlug: string
name: string
headline: string | null
supportUrl: string | null
brandColor: string | null
logoBlobKey: string | null
faviconBlobKey: string | null
timezone: string
locale: string
uptimeWindowDays: integer
defaultUptimeExcludesMaintenance: boolean
}
incidents: {
id: string
number: integer
title: string
status: "investigating" | "identified" | "monitoring" | "resolved" | "postmortem"
impact: "none" | "minor" | "major" | "critical"
startedAt: string
resolvedAt: string | null
publishedAt: string
autoPublished: boolean
componentIds: string[]
updates: {
id: string
body: string
status: "investigating" | "identified" | "monitoring" | "resolved" | "postmortem"
displayAt: string
edited: boolean
drafted: boolean
}[]
evidence: {
kind: string
label: string
url: string | null
}[]
postmortem: string | null
}[]
}Response 400 · `bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.
{
error: {
code: "bad_request" | "conflict" | "forbidden" | "internal_error" | "mfa_required" | "not_found" | "payload_too_large" | "quota_exceeded" | … 6 more
message: string
details?: unknown
requestId?: string
}
}Response 404 · `not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.
{
error: {
code: "bad_request" | "conflict" | "forbidden" | "internal_error" | "mfa_required" | "not_found" | "payload_too_large" | "quota_exceeded" | … 6 more
message: string
details?: unknown
requestId?: string
}
}Response 429 · `rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.
{
error: {
code: "bad_request" | "conflict" | "forbidden" | "internal_error" | "mfa_required" | "not_found" | "payload_too_large" | "quota_exceeded" | … 6 more
message: string
details?: unknown
requestId?: string
}
}Response 500 · `internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.
{
error: {
code: "bad_request" | "conflict" | "forbidden" | "internal_error" | "mfa_required" | "not_found" | "payload_too_large" | "quota_exceeded" | … 6 more
message: string
details?: unknown
requestId?: string
}
}Request
curl https://api.bucker.io/status/{orgSlug}/{pageSlug}/v1/incidentsGET/status/{orgSlug}/{pageSlug}/v1/incidents/{number}
No declared credential scheme
Reachable without a Bucker session token. Public status page read.
Parameters
| Name | In | Type | Notes |
|---|---|---|---|
orgSlugrequired | path | string | min length 1 |
pageSlugrequired | path | string | min length 1, max length 64 |
numberrequired | path | integer | min 0 |
Response 200
{
spec: string
generatedAt: string
dataAsOf: string
stalenessSeconds: integer
history: {
chainDigest: string | null
sequence: integer | null
}
page: {
id: string
slug: string
orgSlug: string
name: string
headline: string | null
supportUrl: string | null
brandColor: string | null
logoBlobKey: string | null
faviconBlobKey: string | null
timezone: string
locale: string
uptimeWindowDays: integer
defaultUptimeExcludesMaintenance: boolean
}
incident: {
id: string
number: integer
title: string
status: "investigating" | "identified" | "monitoring" | "resolved" | "postmortem"
impact: "none" | "minor" | "major" | "critical"
startedAt: string
resolvedAt: string | null
publishedAt: string
autoPublished: boolean
componentIds: string[]
updates: {
id: string
body: string
status: "investigating" | "identified" | "monitoring" | "resolved" | "postmortem"
displayAt: string
edited: boolean
drafted: boolean
}[]
evidence: {
kind: string
label: string
url: string | null
}[]
postmortem: string | null
}
}Response 400 · `bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.
{
error: {
code: "bad_request" | "conflict" | "forbidden" | "internal_error" | "mfa_required" | "not_found" | "payload_too_large" | "quota_exceeded" | … 6 more
message: string
details?: unknown
requestId?: string
}
}Response 404 · `not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.
{
error: {
code: "bad_request" | "conflict" | "forbidden" | "internal_error" | "mfa_required" | "not_found" | "payload_too_large" | "quota_exceeded" | … 6 more
message: string
details?: unknown
requestId?: string
}
}Response 429 · `rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.
{
error: {
code: "bad_request" | "conflict" | "forbidden" | "internal_error" | "mfa_required" | "not_found" | "payload_too_large" | "quota_exceeded" | … 6 more
message: string
details?: unknown
requestId?: string
}
}Response 500 · `internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.
{
error: {
code: "bad_request" | "conflict" | "forbidden" | "internal_error" | "mfa_required" | "not_found" | "payload_too_large" | "quota_exceeded" | … 6 more
message: string
details?: unknown
requestId?: string
}
}Request
curl https://api.bucker.io/status/{orgSlug}/{pageSlug}/v1/incidents/{number}GET/status/{orgSlug}/{pageSlug}/v1/maintenances
No declared credential scheme
Reachable without a Bucker session token. Public status page read.
Parameters
| Name | In | Type | Notes |
|---|---|---|---|
orgSlugrequired | path | string | min length 1 |
pageSlugrequired | path | string | min length 1, max length 64 |
Response 200
{
spec: string
generatedAt: string
dataAsOf: string
stalenessSeconds: integer
history: {
chainDigest: string | null
sequence: integer | null
}
page: {
id: string
slug: string
orgSlug: string
name: string
headline: string | null
supportUrl: string | null
brandColor: string | null
logoBlobKey: string | null
faviconBlobKey: string | null
timezone: string
locale: string
uptimeWindowDays: integer
defaultUptimeExcludesMaintenance: boolean
}
scheduledMaintenances: {
id: string
number: integer
title: string
status: "scheduled" | "in_progress" | "verifying" | "completed"
scheduledFor: string
scheduledUntil: string
componentIds: string[]
updates: {
id: string
body: string
status: "scheduled" | "in_progress" | "verifying" | "completed"
displayAt: string
}[]
}[]
}Response 400 · `bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.
{
error: {
code: "bad_request" | "conflict" | "forbidden" | "internal_error" | "mfa_required" | "not_found" | "payload_too_large" | "quota_exceeded" | … 6 more
message: string
details?: unknown
requestId?: string
}
}Response 404 · `not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.
{
error: {
code: "bad_request" | "conflict" | "forbidden" | "internal_error" | "mfa_required" | "not_found" | "payload_too_large" | "quota_exceeded" | … 6 more
message: string
details?: unknown
requestId?: string
}
}Response 429 · `rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.
{
error: {
code: "bad_request" | "conflict" | "forbidden" | "internal_error" | "mfa_required" | "not_found" | "payload_too_large" | "quota_exceeded" | … 6 more
message: string
details?: unknown
requestId?: string
}
}Response 500 · `internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.
{
error: {
code: "bad_request" | "conflict" | "forbidden" | "internal_error" | "mfa_required" | "not_found" | "payload_too_large" | "quota_exceeded" | … 6 more
message: string
details?: unknown
requestId?: string
}
}Request
curl https://api.bucker.io/status/{orgSlug}/{pageSlug}/v1/maintenancesGET/status/{orgSlug}/{pageSlug}/v1/summary
No declared credential scheme
Reachable without a Bucker session token. Public status page read.
Parameters
| Name | In | Type | Notes |
|---|---|---|---|
orgSlugrequired | path | string | min length 1 |
pageSlugrequired | path | string | min length 1, max length 64 |
Response 200
{
spec: string
generatedAt: string
dataAsOf: string
stalenessSeconds: integer
history: {
chainDigest: string | null
sequence: integer | null
}
page: {
id: string
slug: string
orgSlug: string
name: string
headline: string | null
supportUrl: string | null
brandColor: string | null
logoBlobKey: string | null
faviconBlobKey: string | null
timezone: string
locale: string
uptimeWindowDays: integer
defaultUptimeExcludesMaintenance: boolean
}
status: {
indicator: "none" | "minor" | "major" | "critical"
description: string
coverage: string | null
}
groups: {
id: string
name: string
position: integer
collapsed: boolean
}[]
components: {
id: string
slug: string
name: string
description: string | null
groupId: string | null
position: integer
showcase: boolean
onlyShowIfDegraded: boolean
startDate: string | null
status: "unknown" | "operational" | "degraded_performance" | "partial_outage" | "major_outage" | "under_maintenance"
derivedStatus: "unknown" | "operational" | "degraded_performance" | "partial_outage" | "major_outage" | "under_maintenance"
assertedStatus: "unknown" | "operational" | "degraded_performance" | "partial_outage" | "major_outage" | "under_maintenance"
manualOverride: {
at: string
reason: string | null
contradicts: boolean
} | null
evidence: string[]
uptime: {
windowFrom: string
windowTo: string
windowDays: integer
daysWithData: integer
coverageRatio: number
checks: integer
successes: integer
checkRatio: number | null
upSeconds: integer
degradedSeconds: integer
downSeconds: integer
maintenanceSeconds: integer
recordedSeconds: integer
ratio: number | null
ratioExcludingMaintenance: number | null
p50LatencyMs: number | null
p95LatencyMs: number | null
}
uptimeDays: {
day: string
status: "operational" | "degraded" | "down" | "maintenance" | null
checks: integer
successes: integer
upSeconds: integer
degradedSeconds: integer
downSeconds: integer
maintenanceSeconds: integer
ratio: number | null
}[]
slo: {
target: number
achieved: number | null
budgetSeconds: number
consumedSeconds: number
remainingRatio: number | null
met: boolean | null
coverageRatio: number
} | null
}[]
incidents: {
id: string
number: integer
title: string
status: "investigating" | "identified" | "monitoring" | "resolved" | "postmortem"
impact: "none" | "minor" | "major" | "critical"
startedAt: string
resolvedAt: string | null
publishedAt: string
autoPublished: boolean
componentIds: string[]
updates: {
id: string
body: string
status: "investigating" | "identified" | "monitoring" | "resolved" | "postmortem"
displayAt: string
edited: boolean
drafted: boolean
}[]
evidence: {
kind: string
label: string
url: string | null
}[]
postmortem: string | null
}[]
scheduledMaintenances: {
id: string
number: integer
title: string
status: "scheduled" | "in_progress" | "verifying" | "completed"
scheduledFor: string
scheduledUntil: string
componentIds: string[]
updates: {
id: string
body: string
status: "scheduled" | "in_progress" | "verifying" | "completed"
displayAt: string
}[]
}[]
}Response 400 · `bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.
{
error: {
code: "bad_request" | "conflict" | "forbidden" | "internal_error" | "mfa_required" | "not_found" | "payload_too_large" | "quota_exceeded" | … 6 more
message: string
details?: unknown
requestId?: string
}
}Response 404 · `not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.
{
error: {
code: "bad_request" | "conflict" | "forbidden" | "internal_error" | "mfa_required" | "not_found" | "payload_too_large" | "quota_exceeded" | … 6 more
message: string
details?: unknown
requestId?: string
}
}Response 429 · `rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.
{
error: {
code: "bad_request" | "conflict" | "forbidden" | "internal_error" | "mfa_required" | "not_found" | "payload_too_large" | "quota_exceeded" | … 6 more
message: string
details?: unknown
requestId?: string
}
}Response 500 · `internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.
{
error: {
code: "bad_request" | "conflict" | "forbidden" | "internal_error" | "mfa_required" | "not_found" | "payload_too_large" | "quota_exceeded" | … 6 more
message: string
details?: unknown
requestId?: string
}
}Request
curl https://api.bucker.io/status/{orgSlug}/{pageSlug}/v1/summaryGET/status/{orgSlug}/{pageSlug}/v1/uptime
No declared credential scheme
Reachable without a Bucker session token. Public status page read.
Parameters
| Name | In | Type | Notes |
|---|---|---|---|
orgSlugrequired | path | string | min length 1 |
pageSlugrequired | path | string | min length 1, max length 64 |
componentSlug | query | string | min length 1, max length 64 |
days | query | integer | default 90, min 1, max 365 |
Response 200
{
spec: string
generatedAt: string
dataAsOf: string
stalenessSeconds: integer
history: {
chainDigest: string | null
sequence: integer | null
}
page: {
id: string
slug: string
orgSlug: string
name: string
headline: string | null
supportUrl: string | null
brandColor: string | null
logoBlobKey: string | null
faviconBlobKey: string | null
timezone: string
locale: string
uptimeWindowDays: integer
defaultUptimeExcludesMaintenance: boolean
}
data: {
componentSlug: string
componentName: string
summary: {
windowFrom: string
windowTo: string
windowDays: integer
daysWithData: integer
coverageRatio: number
checks: integer
successes: integer
checkRatio: number | null
upSeconds: integer
degradedSeconds: integer
downSeconds: integer
maintenanceSeconds: integer
recordedSeconds: integer
ratio: number | null
ratioExcludingMaintenance: number | null
p50LatencyMs: number | null
p95LatencyMs: number | null
}
days: {
day: string
status: "operational" | "degraded" | "down" | "maintenance" | null
checks: integer
successes: integer
upSeconds: integer
degradedSeconds: integer
downSeconds: integer
maintenanceSeconds: integer
ratio: number | null
}[]
}[]
}Response 400 · `bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.
{
error: {
code: "bad_request" | "conflict" | "forbidden" | "internal_error" | "mfa_required" | "not_found" | "payload_too_large" | "quota_exceeded" | … 6 more
message: string
details?: unknown
requestId?: string
}
}Response 404 · `not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.
{
error: {
code: "bad_request" | "conflict" | "forbidden" | "internal_error" | "mfa_required" | "not_found" | "payload_too_large" | "quota_exceeded" | … 6 more
message: string
details?: unknown
requestId?: string
}
}Response 429 · `rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.
{
error: {
code: "bad_request" | "conflict" | "forbidden" | "internal_error" | "mfa_required" | "not_found" | "payload_too_large" | "quota_exceeded" | … 6 more
message: string
details?: unknown
requestId?: string
}
}Response 500 · `internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.
{
error: {
code: "bad_request" | "conflict" | "forbidden" | "internal_error" | "mfa_required" | "not_found" | "payload_too_large" | "quota_exceeded" | … 6 more
message: string
details?: unknown
requestId?: string
}
}Request
curl https://api.bucker.io/status/{orgSlug}/{pageSlug}/v1/uptimeGET/status/confirm
No declared credential scheme
Reachable without a Bucker session token. Signed double-opt-in token from the confirmation email.
Parameters
| Name | In | Type | Notes |
|---|---|---|---|
tokenrequired | query | string | min length 1, max length 4096 |
Response 200
{
ok: boolean
pageId: string | null
}Response 400 · `bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.
{
error: {
code: "bad_request" | "conflict" | "forbidden" | "internal_error" | "mfa_required" | "not_found" | "payload_too_large" | "quota_exceeded" | … 6 more
message: string
details?: unknown
requestId?: string
}
}Response 429 · `rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.
{
error: {
code: "bad_request" | "conflict" | "forbidden" | "internal_error" | "mfa_required" | "not_found" | "payload_too_large" | "quota_exceeded" | … 6 more
message: string
details?: unknown
requestId?: string
}
}Response 500 · `internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.
{
error: {
code: "bad_request" | "conflict" | "forbidden" | "internal_error" | "mfa_required" | "not_found" | "payload_too_large" | "quota_exceeded" | … 6 more
message: string
details?: unknown
requestId?: string
}
}Request
curl https://api.bucker.io/status/confirmGET/status/unsubscribe
No declared credential scheme
Reachable without a Bucker session token. Signed token in the email footer; one-click unsubscribe cannot ask for a login.
Parameters
| Name | In | Type | Notes |
|---|---|---|---|
tokenrequired | query | string | min length 1, max length 4096 |
Response 200
{
ok: boolean
pageId: string | null
}Response 400 · `bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.
{
error: {
code: "bad_request" | "conflict" | "forbidden" | "internal_error" | "mfa_required" | "not_found" | "payload_too_large" | "quota_exceeded" | … 6 more
message: string
details?: unknown
requestId?: string
}
}Response 429 · `rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.
{
error: {
code: "bad_request" | "conflict" | "forbidden" | "internal_error" | "mfa_required" | "not_found" | "payload_too_large" | "quota_exceeded" | … 6 more
message: string
details?: unknown
requestId?: string
}
}Response 500 · `internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.
{
error: {
code: "bad_request" | "conflict" | "forbidden" | "internal_error" | "mfa_required" | "not_found" | "payload_too_large" | "quota_exceeded" | … 6 more
message: string
details?: unknown
requestId?: string
}
}Request
curl https://api.bucker.io/status/unsubscribePOST/status/unsubscribe
No declared credential scheme
Reachable without a Bucker session token. RFC 8058 List-Unsubscribe-Post, from the mail client.
Parameters
| Name | In | Type | Notes |
|---|---|---|---|
tokenrequired | query | string | min length 1, max length 4096 |
Response 200
{
ok: boolean
pageId: string | null
}Response 400 · `bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.
{
error: {
code: "bad_request" | "conflict" | "forbidden" | "internal_error" | "mfa_required" | "not_found" | "payload_too_large" | "quota_exceeded" | … 6 more
message: string
details?: unknown
requestId?: string
}
}Response 429 · `rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.
{
error: {
code: "bad_request" | "conflict" | "forbidden" | "internal_error" | "mfa_required" | "not_found" | "payload_too_large" | "quota_exceeded" | … 6 more
message: string
details?: unknown
requestId?: string
}
}Response 500 · `internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.
{
error: {
code: "bad_request" | "conflict" | "forbidden" | "internal_error" | "mfa_required" | "not_found" | "payload_too_large" | "quota_exceeded" | … 6 more
message: string
details?: unknown
requestId?: string
}
}Request
curl -X POST https://api.bucker.io/status/unsubscribe