Skip to main content
Returns the proposals belonging to the authenticated account. You can narrow results by status, contact, modified date, search text, and archive state. The response includes a flat array of proposal summaries and a total count, making this the standard starting point for most proposal workflows.

Request

GET /public/proposals

Headers

Accept
string
required
Must be application/json.
X-MSS-API-APPID
string
required
Your API Application Key.
X-MSS-API-USERKEY
string
required
Your User API Key obtained from the authentication exchange.
X-MSS-CUSTOM-DATE
string
required
Current UTC timestamp in RFC 7231 format, e.g. Mon, 06 Apr 2026 00:22:19 GMT.
X-MSS-SIGNATURE
string
required
HMAC-SHA256 signature of the canonical request message, Base64-encoded.

Query Parameters

SearchText
string
Free-text search against proposal name, number, and customer fields.
Statuses
array
Filter results to one or more proposal statuses. Repeat the parameter for multiple values, e.g. Statuses=Draft&Statuses=Sent.
ContactId
integer
Filter results to proposals associated with a specific contact.
ModifiedAfter
string
Return only proposals modified after this date (ISO 8601).
IsArchive
boolean
When true, returns only archived proposals. When false or omitted, returns non-archived proposals.
SortBy
string
Field to sort results by (e.g. CreatedDate, LastModifiedDate, Name).
SortDirection
string
Sort direction. One of Asc or Desc.
PageNumber
integer
1-based page number for paginated results. Must be 1 or greater — values less than 1 return a 400 error.
PageSize
integer
Number of proposals to return per page.

Response

200 Success

proposals
array
required
Array of proposal summary objects (PublicProposalModel).
proposalCount
integer
required
Total number of proposals matching the query (used for pagination).

Error Codes

CodeMeaning
401Not authorized. Check that your HMAC signature and headers are correct.
402The account’s subscription is inactive or expired.
403Your user does not have permission to list proposals.

Example

curl -i -X GET \
  'https://sandbox.api.portal.io/public/proposals?PageNumber=1&PageSize=25' \
  -H 'Accept: application/json' \
  -H 'X-MSS-API-APPID: YOUR_APP_ID' \
  -H 'X-MSS-API-USERKEY: YOUR_USER_KEY' \
  -H 'X-MSS-CUSTOM-DATE: Mon, 06 Apr 2026 00:22:19 GMT' \
  -H 'X-MSS-SIGNATURE: BASE64_SIGNATURE'
{
  "proposals": [
    {
      "id": 1042,
      "number": 1001,
      "name": "Smith Residence AV",
      "status": "Draft",
      "total": {
        "proposalTotal": 12500.00,
        "currency": {
          "code": "USD",
          "symbol": "$"
        }
      },
      "createdDate": "2026-03-10T14:00:00Z",
      "lastModifiedDate": "2026-04-01T09:30:00Z",
      "customer": {
        "id": 88,
        "firstName": "Jane",
        "lastName": "Smith",
        "companyName": "",
        "contactEmail": "jane.smith@example.com"
      }
    }
  ],
  "proposalCount": 1
}