putty
API ReferenceArtifacts

What this deployment can take

The payment methods this API has a provider wired for, and for each one the stablecoins it can settle. A storefront renders one Pay button per entry, so a deployment that has wired cards and not stablecoins shows one button rather than a dead second one. `configured` is false for a method with no provider — a card-only deployment is a legitimate state, and a stablecoin checkout on it is refused with a 503 and a sentence rather than failing deeper.

GET
/business/methods

The payment methods this API has a provider wired for, and for each one the stablecoins it can settle. A storefront renders one Pay button per entry, so a deployment that has wired cards and not stablecoins shows one button rather than a dead second one. configured is false for a method with no provider — a card-only deployment is a legitimate state, and a stablecoin checkout on it is refused with a 503 and a sentence rather than failing deeper.

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

Response Body

application/json

application/json

curl -X GET "https://example.com/business/methods"
{  "methods": [    {      "method": "card",      "configured": true,      "label": "string",      "stablecoins": [        {          "symbol": "string",          "name": "string",          "chain": "string",          "chainId": 0,          "available": true        }      ]    }  ]}

Open a checkout POST

Opens a payment for a cart and answers with where to send the customer. **The response shape is identical for both methods:** `checkoutUrl` is the link the storefront's Pay button points at, whether the shopper pays by card or in USDC or USDG. **The customer completes the payment on the payment provider's own page.** putty never takes custody of the money: it never sees a card number, never holds a stablecoin, and never asks for a seed phrase. The stablecoin page shows an amount and a QR code — no wallet prompt, no token ticker the customer did not choose. `successUrl` and `cancelUrl` must be absolute https URLs on the shop's own host, and default to the shop's `/thanks` and `/cart` when omitted. A checkout that returns a customer somewhere else is telling them not to trust the payment, so it is refused. An order is recorded before the response is written, so a customer who sees a link always has an order behind it. A cart the provider refuses gets a 409 with every problem in `error.problems` and no checkout is opened.

The public mint page GET

The drop's public mint page, as HTML. **This route needs no bearer token** — it is the link a creator pastes into a post, a bio, or a DM, and a page that asked a collector to log in before showing them a price would not be a page anyone could share. It renders the drop's name, its image, its supply and what is left, its price, and its mint state, coloured with the brand kit the drop renders with, so an edition looks like the creator's brand rather than like putty. A drop that is still a `draft`, a drop belonging to another creator, and a drop id that does not exist all answer with the same 404, so this route cannot be used to find out that a private drop exists. The page is static HTML with no script: a mint is a server-side reservation, and a page that reserved editions in the browser would be the double-mint bug again.