Skip to content
bucker

API reference

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

Parameters for POST /status/{orgSlug}/{pageSlug}/access
NameInTypeNotes
orgSlugrequiredpathstringmin length 1
pageSlugrequiredpathstringmin 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

Parameters for GET /status/{orgSlug}/{pageSlug}/api/v2/components.json
NameInTypeNotes
orgSlugrequiredpathstringmin length 1
pageSlugrequiredpathstringmin length 1, max length 64

Response 200

unknown

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}/api/v2/components.json

GET/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

Parameters for GET /status/{orgSlug}/{pageSlug}/api/v2/incidents.json
NameInTypeNotes
orgSlugrequiredpathstringmin length 1
pageSlugrequiredpathstringmin length 1, max length 64

Response 200

unknown

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}/api/v2/incidents.json

GET/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

Parameters for GET /status/{orgSlug}/{pageSlug}/api/v2/incidents/unresolved.json
NameInTypeNotes
orgSlugrequiredpathstringmin length 1
pageSlugrequiredpathstringmin length 1, max length 64

Response 200

unknown

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}/api/v2/incidents/unresolved.json

GET/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

Parameters for GET /status/{orgSlug}/{pageSlug}/api/v2/scheduled-maintenances.json
NameInTypeNotes
orgSlugrequiredpathstringmin length 1
pageSlugrequiredpathstringmin length 1, max length 64

Response 200

unknown

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}/api/v2/scheduled-maintenances.json

GET/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

Parameters for GET /status/{orgSlug}/{pageSlug}/api/v2/scheduled-maintenances/active.json
NameInTypeNotes
orgSlugrequiredpathstringmin length 1
pageSlugrequiredpathstringmin length 1, max length 64

Response 200

unknown

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}/api/v2/scheduled-maintenances/active.json

GET/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

Parameters for GET /status/{orgSlug}/{pageSlug}/api/v2/scheduled-maintenances/upcoming.json
NameInTypeNotes
orgSlugrequiredpathstringmin length 1
pageSlugrequiredpathstringmin length 1, max length 64

Response 200

unknown

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}/api/v2/scheduled-maintenances/upcoming.json

GET/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

Parameters for GET /status/{orgSlug}/{pageSlug}/api/v2/status.json
NameInTypeNotes
orgSlugrequiredpathstringmin length 1
pageSlugrequiredpathstringmin length 1, max length 64

Response 200

unknown

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}/api/v2/status.json

GET/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

Parameters for GET /status/{orgSlug}/{pageSlug}/api/v2/summary.json
NameInTypeNotes
orgSlugrequiredpathstringmin length 1
pageSlugrequiredpathstringmin length 1, max length 64

Response 200

unknown

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}/api/v2/summary.json

POST/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

Parameters for POST /status/{orgSlug}/{pageSlug}/subscribe
NameInTypeNotes
orgSlugrequiredpathstringmin length 1
pageSlugrequiredpathstringmin 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

Parameters for GET /status/{orgSlug}/{pageSlug}/v1/components
NameInTypeNotes
orgSlugrequiredpathstringmin length 1
pageSlugrequiredpathstringmin 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/components

GET/status/{orgSlug}/{pageSlug}/v1/incidents

No declared credential scheme

Reachable without a Bucker session token. Public status page read.

Parameters

Parameters for GET /status/{orgSlug}/{pageSlug}/v1/incidents
NameInTypeNotes
orgSlugrequiredpathstringmin length 1
pageSlugrequiredpathstringmin length 1, max length 64
openqueryboolean

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/incidents

GET/status/{orgSlug}/{pageSlug}/v1/incidents/{number}

No declared credential scheme

Reachable without a Bucker session token. Public status page read.

Parameters

Parameters for GET /status/{orgSlug}/{pageSlug}/v1/incidents/{number}
NameInTypeNotes
orgSlugrequiredpathstringmin length 1
pageSlugrequiredpathstringmin length 1, max length 64
numberrequiredpathintegermin 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

Parameters for GET /status/{orgSlug}/{pageSlug}/v1/maintenances
NameInTypeNotes
orgSlugrequiredpathstringmin length 1
pageSlugrequiredpathstringmin 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/maintenances

GET/status/{orgSlug}/{pageSlug}/v1/summary

No declared credential scheme

Reachable without a Bucker session token. Public status page read.

Parameters

Parameters for GET /status/{orgSlug}/{pageSlug}/v1/summary
NameInTypeNotes
orgSlugrequiredpathstringmin length 1
pageSlugrequiredpathstringmin 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/summary

GET/status/{orgSlug}/{pageSlug}/v1/uptime

No declared credential scheme

Reachable without a Bucker session token. Public status page read.

Parameters

Parameters for GET /status/{orgSlug}/{pageSlug}/v1/uptime
NameInTypeNotes
orgSlugrequiredpathstringmin length 1
pageSlugrequiredpathstringmin length 1, max length 64
componentSlugquerystringmin length 1, max length 64
daysqueryintegerdefault 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/uptime

GET/status/confirm

No declared credential scheme

Reachable without a Bucker session token. Signed double-opt-in token from the confirmation email.

Parameters

Parameters for GET /status/confirm
NameInTypeNotes
tokenrequiredquerystringmin 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/confirm

GET/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

Parameters for GET /status/unsubscribe
NameInTypeNotes
tokenrequiredquerystringmin 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/unsubscribe

POST/status/unsubscribe

No declared credential scheme

Reachable without a Bucker session token. RFC 8058 List-Unsubscribe-Post, from the mail client.

Parameters

Parameters for POST /status/unsubscribe
NameInTypeNotes
tokenrequiredquerystringmin 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