Skip to main content

Decline Quote

Decline a quote on the customer's behalf. Any held dates come free immediately and the supplier is notified. Equivalent to Delete Quote.

POST /v1/quotes/{id}/decline

Authenticationโ€‹

Requires a valid API key with quotes:write scope.

Path Parametersโ€‹

ParameterTypeDescription
idintegerQuote ID

Request Bodyโ€‹

FieldTypeRequiredDescription
reasonstringNoDecline reason (max 1000 chars)

Request Exampleโ€‹

curl -X POST "https://app.equipdash.com/api/v1/quotes/123/decline" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "reason": "Budget changed" }'

Responseโ€‹

Returns 200 OK with the updated quote โ€” state is declined, decided_at is stamped, and any date hold has been released.

{
"data": {
"id": 123,
"quote_number": "Q-123",
"state": "declined",
"reserves_dates": false,
"decided_at": "2026-02-05T14:00:00+00:00",
"decline_reason": "Budget changed",
"...": "..."
},
"meta": {
"request_id": "req_abc123",
"timestamp": "2026-02-05T14:00:00+00:00"
}
}
note

decline_reason is stored as an empty string when no reason is given โ€” that is how a decline is distinguished from an automatic expiry in the derived state.

Error Responsesโ€‹

StatusCodeDescription
401authentication_requiredMissing or invalid API key
403insufficient_scopeAPI key lacks quotes:write scope
404not_foundQuote not found (or belongs to another account)
409conflictThe quote has already been decided
422validation_errorreason exceeds 1000 characters