putty
API ReferenceArtifacts

List a drop's mints

Every edition minted from this drop, in edition order, with the price each was sold for and the collector it went to. A drop belonging to another creator answers with the same 404 as one that does not exist.

GET
/creator/drops/{dropId}/mints

Every edition minted from this drop, in edition order, with the price each was sold for and the collector it went to. A drop belonging to another creator answers with the same 404 as one that does not exist.

Authorization

bearerAuth
AuthorizationBearer <token>

A bearer token. The Account routes accept a Privy access token; the MCP transport accepts an sk- API key issued by POST /account/api-keys.

In: header

Path Parameters

dropId*string

The drop's id. The last segment of its public mint-page URL.

Length1 <= length <= 64

Response Body

application/json

application/json

application/json

application/json

curl -X GET "https://example.com/creator/drops/string/mints"
{  "mints": [    {      "id": "string",      "dropId": "string",      "edition": 1,      "minterId": "string",      "collectorAddress": "string",      "priceUsd": "string",      "providerSessionId": "string",      "createdAt": "string"    }  ]}

Delete a drop DELETE

Deletes a drop the caller owns, along with every mint recorded against it. A drop belonging to another creator answers with the same 404 as one that does not exist, so this route cannot be used to confirm a guessed id. A drop that has been minted from is usually unpublished (`PATCH` with `status: "draft"`) rather than deleted, so the mint history is not thrown away.

Compose a drop's onchain deploy POST

Composes the transaction that publishes this drop onchain and hands it back UNSIGNED: the predicted contract `address`, the `calldata` for the creator to sign, the ABI-encoded `encodedArgs`, and the five `args` in constructor order so a page can show exactly what is being signed. **putty holds no key, signs nothing, and broadcasts nothing.** The drop is owned by the wallet in `args` and minted only by it, so a server that signed the deployment would own every drop it published. You sign `calldata` with your own wallet and send it to `factory` yourself. Calling this route changes no state and can be repeated as often as you like — it is a preview, not a publish. **The factory is this deployment's, never yours.** `factory` is read from configuration, so it cannot be supplied in the body: a request-chosen factory would let you be handed a prediction for a contract putty does not control, which would look entirely correct and would never deploy anywhere. A 400 that mentions `factory` is this api's own body validator refusing an unknown field — this route has no request body, so there is nothing to put one in. **When no factory is configured, `address` is the zero address and `calldata` is `0x`.** A drop deployed by your own contract lands wherever that contract's salt puts it, and putty does not invent an address for it. `args` and `encodedArgs` are still correct in that case: deploy the drop yourself with them. A drop belonging to another creator answers with the same 404 as one that does not exist, byte for byte, so this route cannot be used to find out whose drops exist. A drop putty will not compose — no name, no symbol, a supply below one, a royalty outside 0-10 000 — is a 400 whose `error.code` is the machine-readable reason: `name_required`, `symbol_required`, `supply_invalid`, `royalty_invalid`, or `creator_invalid`. A drop with no `creatorAddress` set at all is a 400 with the code `creator_address_required` — the one address an onchain drop cannot go without, which no amount of retrying will supply, so that page should send the creator to `PATCH /creator/drops/{dropId}` rather than to retry.