ServicesAuction

Proxy Bidding

A proxy bid is a private ceiling: the service bids on your behalf, always the minimum needed to keep you in front, and never past your maximum. The visible price rises only as far as rivals push it.

snug auctions proxy-bid <auction-id> --max-amount 300.0

How the war plays out

A proxy acts immediately when set, and again inside each rival's bid request - the rival's bid call returns, and the proxy has already countered. Verified sequence on an auction with starting price 100.0 and increment 5.0:

  1. Bidder A bids 100.0 manually and leads.
  2. Bidder B sets a proxy with ceiling 300.0. The proxy instantly bids the minimum to lead (105.0) - B is now the high bidder.
  3. A bids 150.0. The response says accepted: true, current_price: 150.0, but fetching the auction shows current_price: 155.0 with B leading: the proxy countered within A's own request.
  4. A bids 400.0, past B's ceiling. The proxy cannot counter; A leads.

Two proxies against each other work the same way: each auto-bid is a real bid, so the war climbs in increments until one ceiling is exceeded.

Reading the war in bid history

bid-history returns bids newest first, with auto-bids flagged is_proxy:

snug --output json auctions bid-history <auction-id> --limit 20
{
  "bids": [
    { "bidder_id": "docs4-bidder1", "amount": 400.0, "is_proxy": false, ... },
    { "bidder_id": "docs4-bidder2", "amount": 155.0, "is_proxy": true, ... },
    { "bidder_id": "docs4-bidder1", "amount": 150.0, "is_proxy": false, ... },
    { "bidder_id": "docs4-bidder2", "amount": 105.0, "is_proxy": true, ... },
    { "bidder_id": "docs4-bidder1", "amount": 100.0, "is_proxy": false, ... }
  ],
  "total": 5
}

Each entry also carries the treasury hold_id backing that bid, so the history doubles as an escrow audit trail.

Gotchas

  • An accepted bid's response can already be stale. It reports the price as of your bid; a proxy may have countered before the response reached you. Fetch the auction (or the history) to see who actually leads.
  • Every proxy counter-bid escrows real funds - the auto-bid places a treasury hold like any manual bid, and the outbid rival's hold is released. Setting the proxy itself checks nothing: an unfunded proxy is accepted with success: true but never manages to counter (verified - the rival stayed in front).
  • Ceilings are capped server-side - a --max-amount above the configured maximum is rejected with 400 proxy_bid_limit_exceeded.
  • A proxy needs an open auction - setting one on a scheduled auction fails with 400 auction_not_open.
  • Proxy counters extend the clock too - an auto-bid inside the anti-sniping window pushes end_time out like any other bid.

The exact request and response shapes are in the Auction API reference.

On this page