API documentation | API docs for agents | OpenAPI 3.1
POST /api/v1/spot-quotes/{spotQuoteId}/quotes/hold-bid
ark.create_spot_quote_customer_quote_and_hold_bid
Creates and sends a customer quote from a visible pending carrier bid, then holds that bid pending the customer response.
- Availability
- Expanded preview
- Scopes
loads:write- ARK permissions
canEditLoad- Team visibility
- Required and enforced
- Idempotency-Key
- Required for this write
- Approval
- No MCP approval on REST API-token calls
- Rate limit
- API credential and organization budgets
Parameters
spotQuoteIdpathstringrequired- format: uuid
Idempotency-Keyheaderstringrequired- Required for external write operations.
- min length: 1; max length: 255
Request body
bidIdstringrequiredVisible pending carrier bid to hold after creating the customer quote.
format: uuid
holdReasonstringmax length: 5000
customerIdstringrequiredCustomer ID. Must match the visible spot quote customer.
format: uuid
pricenumberrequiredCustomer quote price.
markupPercentnumbermin: 0; max: 100
fromBidIdstring | nullCarrier bid used to generate the customer quote. In the hold-bid workflow, bidId is used as the quote source.
format: uuid
etaModestring | nullone of: time_away, exact_time, null
etaHoursinteger | nullmin: 0; max: 999
etaMinutesinteger | nullmin: 0; max: 59
etaDatetimestring | nullformat: date-time
etaTimezonestring | nullmax length: 100
quoteVehicleTypestring | nullmax length: 100
trailerLengthnumber | nulltrailerWidthnumber | nulltrailerHeightnumber | nulltrailerDimensionsUnitstring | nullone of: feet, inches, null
Example request
curl -X POST 'https://arktms.com/api/v1/spot-quotes/<spotQuoteId>/quotes/hold-bid' \
-H "Authorization: Bearer $ARK_API_TOKEN" \
-H "Idempotency-Key: <unique-key>" \
-H "Content-Type: application/json" \
-d '{
"bidId": "<bidId>",
"customerId": "<customerId>",
"price": 1
}'Success response
Spot quote customer quote create result
objectstringrequiredokbooleanrequiredapi_versionstringrequiredrequest_idstringrequireddataobjectrequireddata.spotQuoteIdstringrequiredformat: uuid
data.quoteIdstringrequiredformat: uuid
data.quoteobjectrequireddata.heldBidobject | nullrequireddata.notificationCountintegerrequiredmin: 0
data.emailSentbooleanrequireddata.sideEffectErrorstring | nullrequiredErrors
HTTP 400- Invalid request
HTTP 401- Authentication required
HTTP 403- Permission, scope, team, or entitlement denied
HTTP 404- Resource not found
HTTP 409- Idempotency conflict or in-progress retry