# 3pm-backend route `listBuckets`

Paths are relative to the backend's origin (https://fleet.edgecr4ft.net, or your own 3pm-backend), not to this site. Index: https://3pm.edgecr4ft.net/docs/backend/api.md

---

tokens:
  claude: 509
  o200k: 307
# GET /api/buckets (listBuckets)

The caller's buckets, oldest first.

- auth: an account — Authorization: Bearer 3pmu_<token>, or the dashboard's session cookie
- answer: BucketView[] (JSON)

## Types

```ts
interface BucketView {
  cluster_id: ClusterId;
  name: string;
  created_at: EpochMs;
  /** Does a host that links with a reusable token wait for `approveNode`? `false`: a valid token of the bucket is enough (`setBucketSettings`). For the owner only — absent from what a node's bearer reads. */
  approval?: boolean;
  /** Does a node ask of the bucket only what it was granted (`setNodeAccess`)? `false`: every active node may place a call on every other, with no scope granted node by node (`setBucketSettings`). For the owner only, like `approval`. */
  require_access_rights?: boolean;
  /** Is the screen of each `3pm fleet ssh` / `fleet attach` session kept as an asciicast artifact of its call (`setBucketSettings`)? On by default. For the owner only, like `approval`. */
  record_shells?: boolean;
}

/** `3pmc_…` — a bucket. */
type ClusterId = string;

/** Milliseconds since the Unix epoch. */
type EpochMs = number;
```
