Skip to content

POST /v3/item/:id/bid

POST
/v3/item/{itemId}/bid
curl --request POST \
--url https://api-ha-prod-p8.handbid.dev/v3/item/example/bid \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: */*' \
--data '"{\n \"amount\": 25\n}"'

NEW (HAN-1687, 2026-05-06). Place a regular bid.

Body:

  • amount (required, number) — bid amount in DOLLARS. Server converts to cents internally (V1 storage unit) before delegating to the canonical bid pipeline.

Response (200):

{
  itemId: 1962942,
  currentPrice: 25,
  nextMinimumBid: 26,
  bidCount: 3,
  autoBidMax: null,
  winnerId: 1,
  isCurrentUserWinning: true
}

Internally delegates to the V1 HbRestBidCreateAction so all V1 validation (auction status, item status, buy-now ceiling, CC requirement, spending limit, geo-bidding, local-only check-in, ticket gates, manager overrides, same-winner max-bid raise short-circuit, extended-period auto-extension) runs unchanged. Phase 1.5 stat hooks fire on the same HbBid::save()item_stats.validBidQuantity increments correctly.

Errors: the V1 envelope is passed through (e.g. {success: 0, statusCode: 200, data: {error: {amount: ["Bid amount cannot exceed the Buy Now price of $5000."]}}}).

itemId
required
string
Media type */*
string
Example
"{\n \"amount\": 25\n}"

Successful response

Media type application/json