Everything on this page is aimed at software agents ordering on someone's behalf. If you are a person, just build a set the normal way — it is easier.
If you speak MCP, skip the HTTP flow. Add https://eatmeprint-mcp.eatmeprint.workers.dev/mcp as a custom connector (Claude: Settings → Connectors → Add custom connector; ChatGPT: Settings → Connectors → Add). No install, no account. Tools: get_pricing, preview_set, place_order, check_order. The HTTP steps below still work and are what the MCP server calls.
Machine-readable entry points: /llms.txt (a short orientation file for AI assistants) and /openapi.json (the full HTTP API spec). Both describe the same flow documented on this page.
What you are ordering. One set is nine macarons in a 3 × 3 box, each printed with one of your images in edible ink. $67 per set. Shipping is priced from live USPS/UPS carrier rates at order time for all US addresses, California included (1-2 business days in transit; quote a ZIP with the MCP get_pricing tool). The exact total is returned when the order is created.
Send exactly nine public image URLs, in grid order (left to right, top to bottom). We fetch and centre-crop them for you, so there is no upload widget to drive.
POST https://eatmeprint.com/agent-set/
Content-Type: application/json
{
"images": [
"https://example.com/1.jpg", "https://example.com/2.jpg", "https://example.com/3.jpg",
"https://example.com/4.jpg", "https://example.com/5.jpg", "https://example.com/6.jpg",
"https://example.com/7.jpg", "https://example.com/8.jpg", "https://example.com/9.jpg"
],
"email": "you@example.com"
}
Image rules: JPEG or PNG, up to 10 MB each, reachable over plain https with no redirect (send the final URL). Private or internal addresses are refused.
The reply is {"status":"ok","data":{...}}. Under data you get set_hash, a preview array of thumbnails, price, currency, checkout_url, and an add_to_cart object holding the exact next request.
If something is wrong the reply is {"status":"fail","errors":"<reason>"} — and note that this still comes back with HTTP 200. Check the status field, not the HTTP status code. Example: {"status":"fail","errors":"image 1: server returned HTTP 404."}
POST the fields exactly as returned, and keep the cookies — the cart lives in your session.
POST https://eatmeprint.com/cart/add/ product_id=1&set=<set_hash>&features[10]=<value from add_to_cart.fields>
One JSON call turns the cart into a real order and returns a crypto deposit address — no web form to drive. Keep the same cookie jar you used for /cart/add/. Send an Idempotency-Key header (a UUID); a retry with the same key returns the same order and the same address, never a duplicate.
POST https://eatmeprint.com/agent-order/
Content-Type: application/json
Idempotency-Key: 8f3c...-uuid
{
"email": "you@example.com",
"recipient": {
"first_name": "Jane", "last_name": "Doe",
"street": "123 Main St", "city": "Los Angeles",
"state": "CA", "zip": "90001", "phone": "+1-555-0100"
},
"pay_currency": "usdttrc20"
}
All recipient fields are required except last_name — including phone (any format; carriers need it for the shipping label).
The reply is {"status":"ok","data":{...}} with HTTP 201. Under data: order_id, a no-login status_url, amount, line_items, an allergens string, and a payment object with pay_address, pay_amount, pay_currency and expires_at. All money is a fixed-decimal string, e.g. "81.51" and pay_amount "89.48787100".
Unlike /agent-set/, /agent-order/ returns real HTTP status codes (400/409/422/429/502) alongside the status envelope. Treat any non-2xx as a failure, whatever the body says.
Send exactly pay_amount of pay_currency to pay_address. The order enters the bakery queue only after the crypto payment confirms. Poll status_url (the /my/order/<id>/<code>/ link — no account, no password) until it shows the order as paid, then report back to the person who asked you.
You never need an account to order — checkout works fine as a guest. An account just saves your address and past orders for next time.
Our manager will contact you within 20 min.
By clicking on the submit button you agree with the Privacy policy