Skip to main content
Returns the latest AI-generated outline for the specified proposal. The status field indicates whether generation is still in progress (Generating) or finished (Completed). The outline field is only populated once the status reaches Completed.
Outline generation is asynchronous. After calling Generate Proposal Outline, poll this endpoint or listen for the Proposal Outline Status Changed webhook to know when the outline is ready.

Request

GET /public/api/proposals/{ProposalId}/ai/outline

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.
X-MSS-CUSTOM-DATE
string
required
Current UTC timestamp in RFC 7231 format.
X-MSS-SIGNATURE
string
required
HMAC-SHA256 signature, Base64-encoded.

Path parameters

ProposalId
integer
required
Unique identifier of the proposal to retrieve the AI-generated outline for.

Response

Success

proposalId
integer
required
The ID of the proposal for which the outline is returned.
status
string
required
Current generation status. Possible values: Generating, Completed.
outline
string
The AI-generated outline text. Only present when status is Completed.

Error codes

CodeMeaning
401Not authorized — invalid credentials or incorrect HMAC signature.
403Forbidden — your account does not have permission for this API call.
404Proposal or outline not found.

Example

curl -i -X GET \
  'https://api.portal.io/public/api/proposals/12345/ai/outline' \
  -H 'Accept: application/json' \
  -H 'X-MSS-API-APPID: YOUR_API_APPID' \
  -H 'X-MSS-API-USERKEY: YOUR_API_USERKEY' \
  -H 'X-MSS-CUSTOM-DATE: Thu, 17 Apr 2026 12:00:00 GMT' \
  -H 'X-MSS-SIGNATURE: Base64EncodedHMACSHA256Signature'
Response (Completed)
{
  "proposalId": 12345,
  "status": "Completed",
  "outline": "## Executive Summary\nThis proposal covers the development of...\n\n## Scope of Work\n..."
}
Response (Generating)
{
  "proposalId": 12345,
  "status": "Generating",
  "outline": null
}