ReDesk AI › Proposals
Proposals
A proposal is a versioned pricing document with the bill of materials attached. Each revision is immutable; accepting one locks the price on the project.
The proposal object
FieldTypeDescription
idstringUnique id, prefixed prp_.projectstringThe project it prices.versionintegerStarts at 1; every revision adds one.statusenumdraft, sent, accepted, declined or expired.amountintegerTotal in paise, taxes included.currencystringISO 4217 code, e.g. inr.valid_untiltimestampAfter this the proposal expires.bomarrayLine items: SKU, quantity and unit price.proposal object
{
"id": "prp_5Tq1",
"object": "proposal",
"project": "prj_71Ka",
"version": 2,
"status": "sent",
"amount": 214500000,
"currency": "inr",
"valid_until": "2026-08-31T18:29:59Z",
"bom": [
{
"sku": "MOD-545-TOPCON",
"quantity": 78,
"unit_amount": 1420000
},
{
"sku": "INV-40K-3PH",
"quantity": 1,
"unit_amount": 18500000
}
]
}Create a proposal
POST
/v1/proposalsPrices a project. If the project already has a proposal, this creates the next version.
ParameterDescription
projectbody · stringrequired
bombody · arrayrequired
sku, quantity, unit_amount.valid_daysbody · integer
Request
curl -X POST https://api.redesk.ai/v1/proposals \
-H "Authorization: Bearer sk_test_..." \
-H "Content-Type: application/json" \
-d '{
"project": "prj_71Ka",
"bom": [
{
"sku": "MOD-545-TOPCON",
"quantity": 78,
"unit_amount": 1420000
}
],
"valid_days": 30
}'Response
{
"id": "prp_5Tq1",
"object": "proposal",
"project": "prj_71Ka",
"version": 2,
"status": "sent",
"amount": 214500000,
"currency": "inr",
"valid_until": "2026-08-31T18:29:59Z",
"bom": [
{
"sku": "MOD-545-TOPCON",
"quantity": 78,
"unit_amount": 1420000
},
{
"sku": "INV-40K-3PH",
"quantity": 1,
"unit_amount": 18500000
}
]
}Retrieve a proposal
GET
/v1/proposals/{id}Fetch one proposal version.
ParameterDescription
idpath · stringrequired
Request
curl https://api.redesk.ai/v1/proposals/prp_5Tq1 \ -H "Authorization: Bearer sk_test_..."
Response
{
"id": "prp_5Tq1",
"object": "proposal",
"project": "prj_71Ka",
"version": 2,
"status": "sent",
"amount": 214500000,
"currency": "inr",
"valid_until": "2026-08-31T18:29:59Z",
"bom": [
{
"sku": "MOD-545-TOPCON",
"quantity": 78,
"unit_amount": 1420000
},
{
"sku": "INV-40K-3PH",
"quantity": 1,
"unit_amount": 18500000
}
]
}Accept a proposal
POST
/v1/proposals/{id}/acceptRecords the customer's acceptance and moves the project to approval. Returns 409 if the proposal expired or a newer version exists.
ParameterDescription
idpath · stringrequired
accepted_bybody · stringrequired
Request
curl -X POST https://api.redesk.ai/v1/proposals/prp_5Tq1/accept \
-H "Authorization: Bearer sk_test_..." \
-H "Content-Type: application/json" \
-d '{
"accepted_by": "Anita Kulkarni"
}'Response
{
"id": "prp_5Tq1",
"object": "proposal",
"project": "prj_71Ka",
"version": 2,
"status": "accepted",
"amount": 214500000,
"currency": "inr",
"valid_until": "2026-08-31T18:29:59Z",
"bom": [
{
"sku": "MOD-545-TOPCON",
"quantity": 78,
"unit_amount": 1420000
},
{
"sku": "INV-40K-3PH",
"quantity": 1,
"unit_amount": 18500000
}
]
}
