ANGELS OF THE ANDES

For agents

What an agent can do here

Pieces
35
Offers
138
Contract
agent-feed v1
Generated
2026-09-29

Angels of the Andes publishes one file for software that shops on a person’s behalf: the catalogue feed. It carries every piece the house will print, at every size the master file can hold, at the price the server will charge. A size that is missing is not for sale. Nothing in it is marked unavailable or coming soon; an unsellable rung is simply absent, because a flagged rung is an invitation to try it anyway.

The feed is built from the same catalogue the shop reads, by the same script that emits the family’s offers file, and the build fails if the two disagree. The Product and Offer records on each piece page are the feed’s own records for that piece, not a second opinion. A plain-text pointer to all of this lives at /llms.txt.

The Cart Line

An agent posts JSON to https://angels-of-the-andes.vercel.app/api/checkout: a piece, a format, a size and a quantity, and nothing else. The server sets every price. A line carrying an amount is refused with a code, never honoured. What comes back is a Stripe Checkout URL, and a person completes payment there. No delegated payment exists in this version: an agent never pays on anyone’s behalf.

{
  "lines": [
    {
      "pieceSlug": "adoration-of-the-magi-cusco",
      "formatId": "giclee_print",
      "size": "8x10",
      "qty": 1
    }
  ]
}

What Comes Back

Success is 200 with a checkout URL. Every refusal carries a sentence for a person and a code for a machine. The codes are part of the contract; the sentences are not.

CodeStatusMeaning
INVALID_REQUEST400the body is not JSON or not the documented shape
CART_EMPTY400lines is empty
INVALID_QUANTITY400qty is not an integer from 1 to 25
UNKNOWN_PIECE400pieceSlug names no piece the house sells
UNKNOWN_PRODUCT400formatId and size are not a catalogue pair
PRODUCT_UNAVAILABLE400the pair exists but the house cannot fulfil it
UNKNOWN_SET400bundleSlug names no set
SET_UNAVAILABLE400a member of the set is not sellable
CLIENT_PRICE_REFUSED400a line or the body carried an amount or price field; the server is the only price authority
STRIPE_NOT_CONFIGURED503the house has no payment key; nothing was charged

None of this says an agent will shop here. It says one can, and exactly how.