# Create a fare Sign in with email (a magic link) or Google. Drop a file or paste a webhook. Price in dollars. Payout USDC (or USD after we verify partner deposits). Copy fare.run/{slug}. Webhook: HTTPS URL you control, plus a header or query secret (or mark the URL as the secret). Fare injects the secret only after settle. We do not refund failed webhooks. File: CSV, JSON, text, or markdown. Bytes live only behind payment. Size cap 2 MB. Optional: already sell on Gumroad or Stripe? Add that checkout. Card buyers leave Fare; they are not paying this fare. You still fulfill there. Sign back in later to change the webhook, replace the file, rotate the secret, or update payout and checkout. Destination, payout, and checkout wait for email confirm so callers keep the current values until you confirm. The published slug does not change. Your agent can create and update fares on your account. Mint a token on the dashboard (Your agents). Send Authorization: Bearer. POST /v1/fares to create (file body is Base64). PUT /v1/fares/{slug}/file to replace bytes on the same slug. PATCH price, pause, or rotate a header/query secret. Destination, payout, and checkout wait for email confirm — the token cannot apply them live. Revoke the token to stop further creates. Callers still never need an account. Prefer one published slug and replace the file (or keep the same webhook) instead of a new public slug for every artifact. Test from the dashboard is a real payment when payment mode is enforce and the canary budget is armed. Bypass (local) does not settle USDC and must not show LIVE. --- # Call a fare Same URL for humans and agents. Browsers get an HTML paywall. Agents send Accept: application/json. curl -H "Accept: application/json" https://fare.run/{slug} HTTP 402: decode PAYMENT-REQUIRED (JSON body equals that object). Sign accepts[0] (exact USDC on Base) and retry with PAYMENT-SIGNATURE. HTTP 503: the payment is not confirmed yet. Retry the same signature. Do not sign a new one. Use the official @x402/fetch wrapper. Fare does not ship a buyer SDK. Calling agents do not sign in and are not sent to Create. A seller’s own agent that lists fares uses the seller account (see /docs/create), not a caller identity. That token is Authorization: Bearer on /v1/fares. It is not sent to /{slug} and is not a caller login. Human checkout URLs are never in the JSON 402 body. --- # Payouts Sellers get USDC instantly at their address. USD comes later through a licensed partner after we prove deposits. Fare never holds the money. Callers pay USDC. You can get paid in USD; callers still pay USDC. --- # Sell to bots You already have work a bot can run: a webhook, a file, a small HTTPS job a client pays you to keep up. Bots will not open a Stripe invoice, create an account, or keep an API key in a dashboard. Selling to bots means they pay per run of something you already ship, then they get that run. It is not a marketplace, and it is not wrapping a public website. Fare is the paid link in front of that work. You paste a webhook plus the secret it already checks, or you drop a file. You get fare.run/{slug}. Callers pay USDC via x402. You receive USDC at your address. USD comes later through a licensed partner after we prove deposits. Fare never holds the money. If you already sell the same thing on Gumroad or Stripe, you can send card buyers to that store. Paying there does not unlock this fare. You still fulfill there. Create (/docs/create) is the seller path: email or Google, webhook or file, a dollar price, a payout, copy the link. Your agent can create and update those fares on your seller account. Callers still never need an account. Call (/docs/call) is the same URL for humans and agents. Browsers get an HTML paywall. Agents send Accept: application/json and pay with @x402/fetch. Payouts (/docs/payouts) is USDC now, USD via partner after proof, never a Fare-held balance. We did not invent x402. We host the gate so a web2 seller does not implement it. You do not need bots to have customer accounts. You need a URL they can pay. If they already hit your hook for free, this is the same hook with a fare in front. Price it in dollars on Create. They pay USDC. You get paid in USDC or, after the partner is live, in USD. That is the whole product: a paid link for the work you already have. --- # Charge AI agents People looking up how to charge AI agents usually land on Stripe invoices, customer portals, and API keys. Agents do not use those. They send one HTTP request, pay, and continue. Charging an agent is a per-request paid URL, not a monthly plan and not a key you mint by hand. Fare is that URL. Webhook plus injected secret, or a hosted file, then fare.run/{slug}. Callers pay USDC via x402. Sellers receive USDC, or USD later via a licensed partner. Fare never holds the money. An optional separate-store card exit can send humans to your Gumroad or Stripe. That payment does not unlock the fare. Pays-this-fare (card unlocks this file here) is not shipped. Create (/docs/create) shows what you paste. Your agent can list that fare on your account. Call (/docs/call) shows what the calling agent sends: Accept: application/json, HTTP 402 unpaid, HTTP 503 retry the same PAYMENT-SIGNATURE, @x402/fetch — not a Fare buyer SDK. Payouts (/docs/payouts) says the quiet part: you can get USD; callers still pay USDC. We did not invent x402. We host the gate so a web2 seller does not implement it. Do not invoice a calling agent. Do not hand them a dashboard. Give them fare.run/{slug}. Humans with a wallet pay on the same page. Agents do it automatically. Your own agent can put that slug up on your seller account. That is how you charge them without teaching them Stripe. --- # Monetize a webhook for agents If the thing you sell is already a Make, n8n, Zapier, or other HTTPS hook, you do not need a new API. You need a paid URL in front of the hook you already run, and the secret field that hook already checks. Monetizing a webhook for agents is that: price per run, inject the secret only after payment, hide the hook if the URL itself is the credential. On Create you paste the HTTPS URL and a header or query secret Fare injects only after a valid payment. You can drop a file instead. Either way you copy fare.run/{slug}. Callers pay USDC via x402. You get USDC, or USD later through a licensed partner. Fare never holds the money. Optional Gumroad or Stripe checkout is a separate store for card buyers. It does not unlock this webhook. Create (/docs/create) is where the secret field lives. Your agent can create and update that fare on your seller account. Call (/docs/call) is the agent contract: JSON Accept, 402 then PAYMENT-SIGNATURE, @x402/fetch. Payouts (/docs/payouts) is USDC at your address or USD via partner after proof. We did not invent x402. We host the gate so a web2 seller does not implement it. n8n, Make, and Zapier already give you a URL and a shared secret. Agents can hit that URL. They will not pay you unless something sits in front and charges per request. Fare is that front. Do not put a public website behind it. Put the hook you control, with the secret your scenario already expects. --- # x402 paid link x402 is the HTTP payment protocol: unpaid callers get 402 Payment Required; after USDC they get the work. An x402 paid link is that URL, already hosted. Fare is the hosted paid URL, not DIY middleware, not a Cloudflare or AWS template you maintain, and not a claim that we wrote the protocol. Paste a webhook plus secret, or a file. Copy fare.run/{slug}. Callers pay USDC via x402. Sellers get USDC, or USD later via a licensed partner. Fare never holds the money. A separate-store card exit to Gumroad or Stripe does not unlock the fare. Create (/docs/create), Call (/docs/call), and Payouts (/docs/payouts) are the same facts as this page. Calling agents use @x402/fetch and Accept: application/json. A seller’s agent lists on the seller account, not as a caller. We speak x402 V2 on the wire. We did not invent x402. We host the gate so a web2 seller does not implement it. Closest hosted clone is Proxy402: paste a URL, short link, USDC. We are not them. Fare requires a private origin (file bytes or a secret-injected webhook, not an honor-system public site), x402 V2, Try as obvious as Create, and USD via a licensed partner after we prove credits. Availability is the pitch. We did not invent 402; we ship the gate a web2 seller can actually use. --- # Agents (protocol) Protocol appendix. Linked from Call, not the homepage hero. Calling agents: Accept: application/json, PAYMENT-REQUIRED, @x402/fetch. They never sign in. They are not sent to Create. A seller’s agent that creates or updates fares acts on the seller account (see /docs/create). Mint on /home, Authorization: Bearer, POST /v1/fares. Same unique payTo and confirm-change rules. Not a second catalog. Not a buyer SDK. Not GitHub OAuth. Network eip155:8453. Asset Base USDC 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913. Scheme exact. extra.assetTransferMethod eip3009. extra.paymentFlow upfront. maxTimeoutSeconds 600. Headers: PAYMENT-REQUIRED (402), PAYMENT-SIGNATURE (retry), PAYMENT-RESPONSE (200). V1 X-PAYMENT is accepted as an alias. JSON 402 body equals the decoded PAYMENT-REQUIRED object. Empty {} is a bug. Fare does not ship a buyer SDK. Do not use @farerun/sdk.