Proposal templates
GET /proposals/templates Leads, deals and proposals: read
Example
curl https://app.msmepulse.com/api/v1/proposals/templates \
-H "Authorization: Bearer $MSMEPULSE_TOKEN"
Answers 200 with the same data the MSMEPulse web app shows for it.
List proposals
GET /proposals Leads, deals and proposals: read
Example
curl https://app.msmepulse.com/api/v1/proposals \
-H "Authorization: Bearer $MSMEPULSE_TOKEN"
Answers 200 with the same data the MSMEPulse web app shows for it.
Create a draft proposal
POST /proposals Leads, deals and proposals: read and write
Request body
| Field | Type | Required | Notes |
|---|---|---|---|
clientId | string | Yes | at least 1 characters |
title | string | Yes | 3–150 characters |
issueDate | string | Yes | format ^\d{4}-\d{2}-\d{2}$ |
validUntil | string | Yes | format ^\d{4}-\d{2}-\d{2}$ |
currency | "INR" | "SGD" | "USD" | "EUR" | "GBP" | "AED" | "AUD" | "MYR" | "CAD" | "CHF" | "HKD" | "NZD" | Yes | |
exchangeRate | number or null | ||
intro | string | up to 20000 characters | |
terms | string | up to 20000 characters | |
lines | array of object | Yes | at most 100 items |
lines[].description | string | Yes | 1–1000 characters |
lines[].quantity | number | Yes | 0.001 to 1000000 |
lines[].unit | string | up to 20 characters | |
lines[].unitPrice | integer | Yes | 0 to … |
lines[].discount | integer | 0 to … · default 0 | |
lines[].hsnSac | string | up to 8 characters | |
lines[].rateBps | integer | 0 to … · default 0 | |
lines[].treatment | "taxable" | "exempt" | "nil" | "non_gst" | default "taxable" | |
lines[].sgTaxCode | "SR" | "ZR" | "ES" | "OS" | default "SR" | |
lines[].catalogueItemId | string or null | ||
templateId | string or null | ||
dealId | string or null |
Example
curl -X POST https://app.msmepulse.com/api/v1/proposals \
-H "Authorization: Bearer $MSMEPULSE_TOKEN" \
-H "Content-Type: application/json" \
-d '{"clientId":"65f0c2a1b4e8d9f0a1b2c3d4","title":"Website rebuild","issueDate":"2026-10-26","validUntil":"2026-10-26","currency":"INR","lines":[{"description":"Rollout support","quantity":1,"unitPrice":100000}]}'
Answers 200 with the same data the MSMEPulse web app shows for it.
Work out a proposal's totals without saving it
POST /proposals/preview Leads, deals and proposals: read and write
Request body
| Field | Type | Required | Notes |
|---|---|---|---|
clientId | string | Yes | at least 1 characters |
title | string | Yes | 3–150 characters |
issueDate | string | Yes | format ^\d{4}-\d{2}-\d{2}$ |
validUntil | string | Yes | format ^\d{4}-\d{2}-\d{2}$ |
currency | "INR" | "SGD" | "USD" | "EUR" | "GBP" | "AED" | "AUD" | "MYR" | "CAD" | "CHF" | "HKD" | "NZD" | Yes | |
exchangeRate | number or null | ||
intro | string | up to 20000 characters | |
terms | string | up to 20000 characters | |
lines | array of object | Yes | at most 100 items |
lines[].description | string | Yes | 1–1000 characters |
lines[].quantity | number | Yes | 0.001 to 1000000 |
lines[].unit | string | up to 20 characters | |
lines[].unitPrice | integer | Yes | 0 to … |
lines[].discount | integer | 0 to … · default 0 | |
lines[].hsnSac | string | up to 8 characters | |
lines[].rateBps | integer | 0 to … · default 0 | |
lines[].treatment | "taxable" | "exempt" | "nil" | "non_gst" | default "taxable" | |
lines[].sgTaxCode | "SR" | "ZR" | "ES" | "OS" | default "SR" | |
lines[].catalogueItemId | string or null | ||
templateId | string or null | ||
dealId | string or null |
Example
curl -X POST https://app.msmepulse.com/api/v1/proposals/preview \
-H "Authorization: Bearer $MSMEPULSE_TOKEN" \
-H "Content-Type: application/json" \
-d '{"clientId":"65f0c2a1b4e8d9f0a1b2c3d4","title":"Website rebuild","issueDate":"2026-10-26","validUntil":"2026-10-26","currency":"INR","lines":[{"description":"Rollout support","quantity":1,"unitPrice":100000}]}'
Answers 200 with the same data the MSMEPulse web app shows for it.
Get a proposal
GET /proposals/{id} Leads, deals and proposals: read
id
Example
curl https://app.msmepulse.com/api/v1/proposals/{id} \
-H "Authorization: Bearer $MSMEPULSE_TOKEN"
Answers 200 with the same data the MSMEPulse web app shows for it.
Replace a draft proposal
PUT /proposals/{id} Leads, deals and proposals: read and write
id
Request body
| Field | Type | Required | Notes |
|---|---|---|---|
clientId | string | Yes | at least 1 characters |
title | string | Yes | 3–150 characters |
issueDate | string | Yes | format ^\d{4}-\d{2}-\d{2}$ |
validUntil | string | Yes | format ^\d{4}-\d{2}-\d{2}$ |
currency | "INR" | "SGD" | "USD" | "EUR" | "GBP" | "AED" | "AUD" | "MYR" | "CAD" | "CHF" | "HKD" | "NZD" | Yes | |
exchangeRate | number or null | ||
intro | string | up to 20000 characters | |
terms | string | up to 20000 characters | |
lines | array of object | Yes | at most 100 items |
lines[].description | string | Yes | 1–1000 characters |
lines[].quantity | number | Yes | 0.001 to 1000000 |
lines[].unit | string | up to 20 characters | |
lines[].unitPrice | integer | Yes | 0 to … |
lines[].discount | integer | 0 to … · default 0 | |
lines[].hsnSac | string | up to 8 characters | |
lines[].rateBps | integer | 0 to … · default 0 | |
lines[].treatment | "taxable" | "exempt" | "nil" | "non_gst" | default "taxable" | |
lines[].sgTaxCode | "SR" | "ZR" | "ES" | "OS" | default "SR" | |
lines[].catalogueItemId | string or null | ||
templateId | string or null | ||
dealId | string or null |
Example
curl -X PUT https://app.msmepulse.com/api/v1/proposals/{id} \
-H "Authorization: Bearer $MSMEPULSE_TOKEN" \
-H "Content-Type: application/json" \
-d '{"clientId":"65f0c2a1b4e8d9f0a1b2c3d4","title":"Website rebuild","issueDate":"2026-10-26","validUntil":"2026-10-26","currency":"INR","lines":[{"description":"Rollout support","quantity":1,"unitPrice":100000}]}'
Answers 200 with the same data the MSMEPulse web app shows for it.
Delete a draft proposal
DELETE /proposals/{id} Leads, deals and proposals: read and write
id
Example
curl -X DELETE https://app.msmepulse.com/api/v1/proposals/{id} \
-H "Authorization: Bearer $MSMEPULSE_TOKEN"
Answers 200 with the same data the MSMEPulse web app shows for it.
Copy a proposal
POST /proposals/{id}/duplicate Leads, deals and proposals: read and write
id
Example
curl -X POST https://app.msmepulse.com/api/v1/proposals/{id}/duplicate \
-H "Authorization: Bearer $MSMEPULSE_TOKEN"
Answers 200 with the same data the MSMEPulse web app shows for it.
Email a proposal for e-signature
POST /proposals/{id}/send Leads, deals and proposals: read and write
id
Request body
| Field | Type | Required | Notes |
|---|---|---|---|
to | string | Yes | an email address |
name | string | up to 80 characters | |
message | string | up to 2000 characters |
Example
curl -X POST https://app.msmepulse.com/api/v1/proposals/{id}/send \
-H "Authorization: Bearer $MSMEPULSE_TOKEN" \
-H "Content-Type: application/json" \
-d '{"to":"someone@example.com"}'
Answers 200 with the same data the MSMEPulse web app shows for it.
Get the client's link to view and sign
POST /proposals/{id}/link Leads, deals and proposals: read and write
id
Example
curl -X POST https://app.msmepulse.com/api/v1/proposals/{id}/link \
-H "Authorization: Bearer $MSMEPULSE_TOKEN"
Answers 200 with the same data the MSMEPulse web app shows for it.
Start a new revision of a sent proposal
POST /proposals/{id}/revise Leads, deals and proposals: read and write
id
Example
curl -X POST https://app.msmepulse.com/api/v1/proposals/{id}/revise \
-H "Authorization: Bearer $MSMEPULSE_TOKEN"
Answers 200 with the same data the MSMEPulse web app shows for it.
Turn an accepted proposal into a project
POST /proposals/{id}/convert Projects and tasks: read and write
id
Request body
| Field | Type | Required | Notes |
|---|---|---|---|
name | string | Yes | 2–120 characters |
as | "milestones" | "budget" | default "milestones" | |
startDate | string or null | format ^\d{4}-\d{2}-\d{2}$ |
Example
curl -X POST https://app.msmepulse.com/api/v1/proposals/{id}/convert \
-H "Authorization: Bearer $MSMEPULSE_TOKEN" \
-H "Content-Type: application/json" \
-d '{"name":"Nova Retail Pvt Ltd"}'
Answers 200 with the same data the MSMEPulse web app shows for it.
Download a proposal as a PDF
GET /proposals/{id}/pdf Leads, deals and proposals: read
id
Example
curl https://app.msmepulse.com/api/v1/proposals/{id}/pdf \
-H "Authorization: Bearer $MSMEPULSE_TOKEN"
Answers 200 with the same data the MSMEPulse web app shows for it.