Clatter Labs
Console

Code Buckets

Get the code tree

Every file and folder in the bucket's code.

GETapi.codebuckets.clatterlabs.xyz/v1/buckets/{bucket_id}/treebuckets:read

Lists the code tree as flat paths. Pass ref to read a specific version; responses for an explicit ref never change, so they're cached at the edge and come back fast.

Authorizations

Authorizationstringrequired

Your API key as a bearer token: Bearer clsk_.... Create keys in the Console with the Code Buckets permissions you need.

X-Clatter-Accountstringrequired

The Account ID that owns the key, like CL-7K2M9QXA. Find it in Console › Settings. A missing value answers 401 missing_account_id; someone else's answers 401 account_mismatch.

Path parameters

bucket_idstringrequired

The bucket id (cbk_…).

Query parameters

refstring

A code ref (40 hex characters) from bucket.code.ref, an event, or a backup's code_ref. Defaults to the current tree.

Response

200 · application/json

objectstring

tree.

bucket_idstring

The bucket.

refstring | null

The ref listed (null when there's no code yet).

filesobject[]

{ path, type: "file", size } and { path, type: "dir" }, sorted by path.

truncatedboolean

true for very large trees (over 100,000 entries).

Errors

StatusCodeWhen
401invalid_api_key / missing_account_id / account_mismatchThe key or Account ID is wrong.
402quota_exceededThis month's free tokens are used up.
403insufficient_scopeThe key lacks the permission.
404not_foundNo bucket with that id on your account.
400bad_refref isn't 40 hex characters.
curl "https://api.codebuckets.clatterlabs.xyz/v1/buckets/BUCKET_ID/tree?ref=9b1f0c5e2a7d43e8b6c1f0a9d2e5b7c4a1f3e8d0" \
  -H "Authorization: Bearer $CLATTER_API_KEY" \
  -H "X-Clatter-Account: $CLATTER_ACCOUNT_ID"
import os
import requests

headers = {
    "Authorization": f"Bearer {os.environ['CLATTER_API_KEY']}",
    "X-Clatter-Account": os.environ["CLATTER_ACCOUNT_ID"],
}

r = requests.get("https://api.codebuckets.clatterlabs.xyz/v1/buckets/BUCKET_ID/tree", params={"ref": "9b1f0c5e2a7d43e8b6c1f0a9d2e5b7c4a1f3e8d0"}, headers=headers)
print(r.json())
const headers = {
  Authorization: `Bearer ${process.env.CLATTER_API_KEY}`,
  "X-Clatter-Account": process.env.CLATTER_ACCOUNT_ID,
};

const res = await fetch("https://api.codebuckets.clatterlabs.xyz/v1/buckets/BUCKET_ID/tree?ref=9b1f0c5e2a7d43e8b6c1f0a9d2e5b7c4a1f3e8d0", {
  method: "GET",
  headers,
});
console.log(await res.json());
{
  "object": "tree",
  "bucket_id": "cbk_q7c1r9t2y6u0i3o8p5a4",
  "ref": "9b1f0c5e2a7d43e8b6c1f0a9d2e5b7c4a1f3e8d0",
  "files": [
    {
      "path": "README.md",
      "type": "file",
      "size": 1840
    },
    {
      "path": "src",
      "type": "dir"
    },
    {
      "path": "src/index.ts",
      "type": "file",
      "size": 5121
    }
  ],
  "truncated": false
}