Creates a new proposal under the authenticated account. You must supply the ID of a salesperson (user) who belongs to the same account. If no name is provided, the system assigns a default name using the same naming logic as the Portal.io UI. The response returns the complete proposal detail object, including the new proposal’s ID, number, status, and financial summary.Documentation Index
Fetch the complete documentation index at: https://docs.portal.io/llms.txt
Use this file to discover all available pages before exploring further.
Request
POST /public/proposals
Headers
Must be
application/json.Must be
application/x-www-form-urlencoded.Your API Application Key.
Your User API Key obtained from the authentication exchange.
Current UTC timestamp in RFC 7231 format, e.g.
Mon, 06 Apr 2026 00:22:19 GMT.HMAC-SHA256 signature of the canonical request message, Base64-encoded.
Body Parameters
The ID of the salesperson (user) who will own the proposal. Must be a user in the current account.
Display name for the new proposal. If omitted, the system assigns a default name.
Response
200 Success
Unique numeric ID of the new proposal. Use this value in all subsequent calls that reference the proposal.
Proposal number unique within the dealer account.
Display name of the proposal.
Current proposal status. One of
Undefined, Draft, Submitted, ViewedByClient, Accepted, Declined, Delayed, Completed, EmailFailed, Expired. Newly created proposals start as Draft.ISO 8601 timestamp when the proposal was created.
ISO 8601 timestamp of the most recent modification.
ISO 8601 timestamp when the proposal was last modified by a human user.
ISO 8601 timestamp when the proposal was last submitted to the client. Null if never submitted.
ISO 8601 timestamp when the client last opened the proposal. Null if never opened.
ISO 8601 timestamp when the client last accepted or declined the proposal. Null if no decision made.
ISO 8601 timestamp when the proposal was last marked as completed. Null if never completed.
Calculated totals for the proposal. All values are zero for a newly created proposal.
The proposal’s areas (rooms). Empty array for a newly created proposal.
Change orders associated with this proposal. Empty for a newly created proposal.
Customer contact assigned to this proposal. Null until a contact is assigned via the assign-contact endpoint.
Dealer account details for the account that owns this proposal.
Absolute URL of the proposal cover image. Null when no cover image is set.
The about us text from the company profile.
Client-facing description of the project.
Profit summary for the proposal.
Recurring service plan details associated with the proposal.
Payment schedule configuration for the proposal.
Payment requests issued for this proposal.
Terms and conditions for the project.
Details of the user who last modified the proposal.
Error Codes
| Code | Meaning |
|---|---|
| 401 | Not authorized. Check that your HMAC signature and headers are correct. |
| 402 | The account’s subscription is inactive or expired. |
| 403 | Your user does not have permission to create proposals. |
| 404 | The specified SalesPersonId was not found in the current account. |