Skip to content

Download generated Investor Packet (PDF)

GET
/api/canvas/{deal_id}/ip/download-pdf
curl --request GET \
--url https://example.com/api/canvas/example/ip/download-pdf \
--header 'Authorization: Bearer <token>'

Download the generated PDF Investor Packet file.

Only available when Gotenberg PDF conversion is enabled (GOTENBERG_URL set). RequireEditor: matches DOCX download endpoint for consistent access control — IP PDFs are external-facing artifacts that should not be downloaded by read-only viewers; the Canvas memo PDF (which is the working-document export) uses the more permissive RequireViewer tier by design.

Wave 2 Tier 1 (2026-05-23): the Wave 1 B2 stale-PDF gate is REMOVED. Reads now come from ApprovalSnapshotService, which is append-only — a snapshot row is bound to the approval that minted it and cannot be made stale by a subsequent EDITING transition. Reopening a doc leaves all prior snapshots untouched; re-approval mints a fresh snapshot. The historical download surface (?approval_id=...) lets callers fetch a specific past snapshot.

B18: rate-limited (3/min/user) to match other Canvas download endpoints and prevent a held download URL from triggering a download storm.

deal_id
required
Deal Id
string
approval_id
Any of:
string

Successful Response

Media type application/json
Example generated
example

Validation Error

Media type application/json
HTTPValidationError
object
detail
Detail
Array<object>
ValidationError
object
loc
required
Location
Array
msg
required
Message
string
type
required
Error Type
string
input
Input
ctx
Context
object
Example generated
{
"detail": [
{
"loc": [
"example"
],
"msg": "example",
"type": "example",
"input": "example",
"ctx": {}
}
]
}