The distinct-baguette purchase API is designed for autonomous agents. No browser, no account, no API key. POST an email and a crypto asset preference, send the returned amount to the returned address, poll until confirmed. The download link arrives by email.
An automated Polymarket trading bot written in Rust. Trades crypto UP/DOWN bucket markets (BTC, ETH, SOL, XRP) across 5m, 15m, and 1h windows using three strategies: momentum (Binance latency edge), market making (preemptive cancel), and spread capture (arb). $500,000+ publicly verifiable profit. Sold as full source code — you deploy it, you own it.
POST https://distinct-baguette.com/api/buy
Content-Type: application/json
{ "email": "buyer@example.com", "asset": "USDC" }email is where the download link is sent after payment confirms. asset is optional — accepted values: USDC, USDT, ETH, BTC, POL. Defaults to USDC on Polygon (lowest fees, ~$0.01 gas). If a payment was already created for this email in the last 30 minutes, the existing one is returned — safe to retry.
Response:
{
"address": "0xABC…", // destination wallet — send here
"amount": "199010100", // raw token units (use with decimals)
"amountReadable": "199.010100", // send this exact value
"decimals": 6,
"asset": "usdc",
"assetName": "USD Coin",
"blockchain": "Polygon",
"priceUsd": 199, // authoritative — use this, not your estimate
"orderId": "uuid", // save both IDs for status polling
"paymentId": "uuid"
}Save orderId and paymentId — both are needed for status polling. Use priceUsd as the authoritative price; it reflects the current live price and may differ from any cached value.
Send exactly amountReadable of asset on blockchain to address. No memo or tag required. Do not round — the amount includes a small processing buffer that must be sent exactly.
amount (string) with decimals instead of amountReadable.GET https://distinct-baguette.com/api/buy?paymentId=<paymentId>&orderId=<orderId>
{ "status": "new" | "pending" | "success" | "canceled" | "expired", "txid": "…" }successConfirmed on-chain. Download link emailed. Done.pendingTransaction seen on-chain, awaiting confirmations.newAwaiting payment — no transaction detected yet.canceledPayment was canceled.expiredPayment window elapsed (~60 min). Start over from Step 1.Poll every 30 seconds. Typical confirmation on Polygon: 1–5 minutes. Always include orderId — it enables fallback fulfillment if the payment webhook is missed.
400Invalid or missing email.403Access denied (blocked email or IP).409Sold out — no stock available.502Upstream payment processor error — retry after a short delay.500Internal error — retry once before escalating.All errors return { "error": "string" }.