putty
API ReferenceEngine

List your projects

Returns the caller's projects, most recently active first. Soft-deleted projects are never included. Each entry carries the sandbox state and the last checkpoint id, so a dashboard can render the list without a follow-up request.

GET
/projects

Returns the caller's projects, most recently active first. Soft-deleted projects are never included. Each entry carries the sandbox state and the last checkpoint id, so a dashboard can render the list without a follow-up request.

Response Body

application/json

application/json

application/json

curl -X GET "https://example.com/projects"
{  "projects": [    {      "id": "string",      "name": "string",      "templateId": "string",      "templateVersion": "string",      "sandboxId": "string",      "sandboxState": "none",      "brandKitId": "string",      "lastCheckpointId": "string",      "createdAt": "string",      "updatedAt": "string"    }  ]}

The Receipts leaderboard GET

The Receipts leaderboard (§6.2): the most transparent projects, ranked by verified modules, labelled wallets, and verified burns. **No bearer token is required.** Every number is read from the same projection that serves `GET /trust/receipts/{chain}/{token}` — the same module classification, the same change logs, the same honest warnings — so a token cannot claim one count on its Receipts page and a different one here. "Verified modules" means modules the projector **classified** onchain, not modules a creator claims. "Verified burns" means burns in a module's own public change log, so the board never credits a burn it cannot show a receipt for. The `score` is the plain sum of the three counts, unweighted. The plan names the three inputs and no weights, so inventing weights would be inventing economics; an unweighted sum is a **transparency** score, not a value or quality score. The components travel with the row so a reader — or a later decision about the weights — never has to guess how the rank was reached. Candidates are the tokens named on a **published showcase entry**, so the board ranks projects that shipped through putty and chose to be listed. putty has no indexer and does not enumerate the chain: a token that never passed through putty still has its own Receipts page, but it is not ranked here, and the board does not pretend otherwise. `symbol` is attacker-controlled — a token's symbol is arbitrary bytes its deployer chose — so a client that renders it must escape it. A candidate whose chain read fails is counted in `skipped` and omitted from `rows`, rather than ranked zero: a zero would be indistinguishable from "read it, found nothing", which is the same lie a trust page must not tell.

Create a project POST

Creates a project from a pinned catalog template version. The template is not started here: the first `POST /projects/{id}/runs` is what materialises the sandbox. Pass a `brandKitId` to apply a brand kit from the start, or omit it to start from the template's defaults.