POST /v3/vendor/products/:id/pull — withdraw package
const url = 'https://api-ha-prod-p8.handbid.dev/v3/vendor/products/5001/pull';const options = { method: 'POST', headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'}, body: '{"emergency":false,"reason":""}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request POST \ --url https://api-ha-prod-p8.handbid.dev/v3/vendor/products/5001/pull \ --header 'Authorization: Bearer <token>' \ --header 'Content-Type: application/json' \ --data '{ "emergency": false, "reason": "" }'Withdraw the package from the marketplace. Preview first with GET .../pull-preview.
Emergency pull: emergency: true bypasses the standard 60-day notice window but requires a non-empty reason — omitting it is a 422 validation_error (“An emergency pull requires a reason.”).
Responses: 204 No Content on success; 422 (emergency without a reason); 404 (not in your catalog); 401 / 403 as elsewhere.
Authorizations
Section titled “Authorizations ”Parameters
Section titled “ Parameters ”Path Parameters
Section titled “Path Parameters ”Example
5001Request Body
Section titled “Request Body ”object
Bypass the standard notice window. Requires a non-empty reason.
Example
{ "emergency": false, "reason": ""}Responses
Section titled “ Responses ”The package was pulled.
No or invalid Bearer token.
Unified error envelope. retryAfter is present only on transient (429 / 503) responses.
object
Stable machine-readable error code (e.g. unauthorized, forbidden, not_found, validation_error, unavailable).
Human-readable explanation.
Seconds to wait before retrying. Present on 429 and 503.
Example
{ "error": "unauthorized", "message": "A valid Bearer token is required."}The token’s organization is not a marketplace vendor.
Unified error envelope. retryAfter is present only on transient (429 / 503) responses.
object
Stable machine-readable error code (e.g. unauthorized, forbidden, not_found, validation_error, unavailable).
Human-readable explanation.
Seconds to wait before retrying. Present on 429 and 503.
Example
{ "error": "forbidden", "message": "Your organization is not a marketplace vendor."}Not found in your catalog.
Unified error envelope. retryAfter is present only on transient (429 / 503) responses.
object
Stable machine-readable error code (e.g. unauthorized, forbidden, not_found, validation_error, unavailable).
Human-readable explanation.
Seconds to wait before retrying. Present on 429 and 503.
Example
{ "error": "not_found", "message": "Product not found in your catalog."}An emergency pull was requested without a reason.
Unified error envelope. retryAfter is present only on transient (429 / 503) responses.
object
Stable machine-readable error code (e.g. unauthorized, forbidden, not_found, validation_error, unavailable).
Human-readable explanation.
Seconds to wait before retrying. Present on 429 and 503.
Example
{ "error": "validation_error", "message": "An emergency pull requires a reason."}