Endpoint
Headers
| Header | Required | Description |
|---|---|---|
Accept | Yes | Must be application/json |
Response
A200 response returns the full proposal details including customer information, areas with line items, financial summary, profit breakdown, recurring services, change orders, and links to generated documents.
Response Fields
| Field | Type | Description |
|---|---|---|
id | integer | Proposal ID. |
number | integer | Human-readable proposal number. |
name | string | Display name of the proposal. |
status | string | Current proposal status (see statuses). |
total | number or null | Total proposal amount. |
customer | object or null | Customer contact (see customer fields). |
proposalPdf | string or null | URL to client PDF. Only populated when status is Accepted. |
proposalCsv | string or null | URL to CSV export. Only populated when status is Accepted. |
installerPdf | string or null | URL to installer PDF. Only populated when status is Accepted. |
salesPerson | string | Full name of the assigned salesperson. |
salesPersonEmail | string | Salesperson email address. |
areas | array or null | Proposal areas with options and line items (see area fields). |
financialSummary | object or null | Financial breakdown (see financial summary fields). |
profit | object or null | Profit breakdown (percentage, total, labor profit, part profit). |
recurringServices | object or null | Recurring services summary, if enabled. |
changeOrders | array | Associated change orders. |
Proposal Statuses
| Value | Description |
|---|---|
Undefined | Unset/default status. |
Draft | Proposal is being edited, not yet sent. |
Submitted | Sent to the client. |
ViewedByClient | Client has opened the proposal. |
Accepted | Client has accepted the proposal. |
Declined | Client has declined. |
Delayed | Proposal has been delayed. |
Completed | Proposal is marked complete. |
EmailFailed | Delivery email failed. |
Expired | Proposal has expired. |
Customer Fields
| Field | Type | Description |
|---|---|---|
id | integer | Contact ID. |
partyType | string | One of Undefined, Person, Company. |
contactType | string | One of Undefined, Client, Employee, Contractor, Other. |
firstName | string | First name. |
lastName | string | Last name. |
companyName | string | Company name, when applicable. |
contactEmail | string | Primary email. |
contactEmailCC | string | CC email address. |
contactPhone | string | Primary phone number. |
location | object | Primary location with id, street, suite, city, postalCode, state, stateAbbrev, country, phone. |
Area Fields
| Field | Type | Description |
|---|---|---|
id | integer | Area ID. |
name | string | Area name. |
options | array | Area options, each containing id, status, lastModifiedDate, clientDescription, installerDescription, items, total, totalRecurringService. |
items array contains line items with:
| Field | Type | Description |
|---|---|---|
id | integer | Item ID. |
parentId | integer | Parent item ID. |
itemType | string | One of Part, Labor, CustomItem, Fee. |
referencedItemId | integer | Catalog item ID reference. |
brand | string | Item brand. |
model | string | Item model. |
description | string | Full description. |
name | string | Item name. |
shortDescription | string | Short description. |
quantity | number | Quantity. |
sellPrice | number | Sell price per unit. |
cost | number | Cost per unit. |
Financial Summary Fields
| Field | Type | Description |
|---|---|---|
partsSubtotal | number | Parts subtotal before discount. |
partsTotal | number | Parts total after discount. |
laborTotal | number | Total labor cost. |
feeTotal | number | Total fees. |
proposalSubtotal | number | Subtotal before tax. |
proposalTotal | number | Grand total including tax. |
This endpoint is designed for the Portal.io Zapier integration. If you are building a direct integration, consider using the webhook subscription endpoints instead.