Skip to main content
POST
/
public
/
proposals
/
{ProposalId}
/
ai
/
build
curl -i -X POST \
  'https://api.portal.io/public/proposals/12345/ai/build' \
  -H 'Accept: application/json' \
  -H 'Content-Type: 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' \
  -d '{"proposalId": 12345}'
{
  "proposalId": 123,
  "status": "<string>"
}
Triggers an asynchronous AI build for the specified proposal, using its completed AI outline as the source. The proposal must have a Completed outline before you call this endpoint — if no completed outline exists, the request is rejected with a 400 error.
The build runs asynchronously. The response confirms the build has been queued, but the proposal content will not be ready immediately. Listen for the Proposal Build Status Changed webhook to know when the build finishes, or poll the proposal status directly.
curl -i -X POST \
  'https://api.portal.io/public/proposals/12345/ai/build' \
  -H 'Accept: application/json' \
  -H 'Content-Type: 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' \
  -d '{"proposalId": 12345}'
Response
{
  "proposalId": 12345,
  "status": "Building"
}

Headers

Accept
enum<string>
required

Accept Header

Available options:
application/json
X-MSS-API-APPID
string
required

Application Id

X-MSS-CUSTOM-DATE
string
required

A date timestamp of the request

X-MSS-SIGNATURE
string
required

A signature for the request

X-MSS-API-USERKEY
string
required

User API Key

Path Parameters

ProposalId
integer<int32>
required

Unique identifier corresponding to an existing proposal that has a completed AI outline; otherwise the request will be rejected with a 400 Bad Request.

Body

application/json

Proposals Service - AI Proposal Build

proposalId
integer<int32>
required

Unique identifier corresponding to an existing proposal that has a completed AI outline; otherwise the request will be rejected with a 400 Bad Request.

Response

Success

PublicAiProposalBuildPostResponse

proposalId
integer<int32>
required

Unique identifier corresponding to the proposal for which the build was triggered.

status
string
required

Current status of the proposal build job. Consumers should listen to webhooks to be notified when the status becomes Completed.