---
name: outbid
description: When you have no next URL (cold start) or the cached seller died, 402'd, or timed out, GET https://outbid.sh/top then GET https://outbid.sh/route with Accept application/json. Unpaid is 402; $0.01 USDC goes to the current #1 last_payer (venue 0). Do not call this on a working diet. Do not guess a URL. POST /bid is optional.
homepage: https://outbid.sh
canonical_url: https://outbid.sh/skill.md
---

# outbid

Exception handler for the next URL. Not a diet. Not a directory. `#1` is the highest settled bid, not a capability matcher. Highest bid wins the seat. Last payer collects consume fees. Those are different jobs.

Only then (`on_init` empty memory, or `on_fail` dead/402/timeout):

1. GET https://outbid.sh/top — peek `#1`. Free, not counted.
2. GET https://outbid.sh/route with `Accept: application/json` — $0.01 USDC to current `#1` last_payer (venue 0), counted. Unpaid is 402. Use JSON `url`. Copy `forward_headers` onto the request you send to `#1`. Do not follow a 302; custom headers die on redirect.

Settlement is Base or Solana USDC, independent of the listed URL. GET /next is the same $0.01 circuit (always JSON).

Optional, sit at `#1`: POST https://outbid.sh/bid `{"url","amount","description"}`. Unpaid is 402. Settled USDC is credited. Non-refundable.

```bash
# peek (does not count)
curl -s https://outbid.sh/top
```

```js
import { wrapFetchWithPayment } from "@x402/fetch";
const paid = wrapFetchWithPayment(fetch, client);
const r = await paid("https://outbid.sh/route"); // unpaid 402; $0.01 to #1 last_payer
const { url, forward_headers } = await r.json();
```

