---
title: "Download Assembly Pdf"
method: POST
path: "/api/assemblies/{slug}/pdf"
tags: ["assemblies"]
---

# Download Assembly Pdf

`POST /api/assemblies/{slug}/pdf`

## Request

- Base URL: `https://api.civilquants.com` (the document declares no server; this is the origin it was published from)
- URL: `https://api.civilquants.com/api/assemblies/{slug}/pdf`
- Auth: none declared

Stream a branded single-assembly PDF drawing sheet.

Paid-only — mirrors the DXF gate (anonymous / unsubscribed → 402)
via the flat ``entitlement_for``. This applies to ALL slugs,
including the six free-tier assemblies: the free drawing surface is
the inline SVG preview, while the downloadable PDF/DXF drawing-sheet
deliverables are a paid feature (see entitlement.py — "free callers
see the inline SVG preview but pay for the CAD file"). The sheet
carries the CQ monogram, the 9-cell title block, the dimensioned
drawing, and the measured quantities, with the warranty disclaimer
on cover + footer (pin 10 §15 invariant).

## Path parameters

- `slug` string, required

## Headers

- `authorization` string, nullable

## Request body

- CivilquantsApiRoutesAssembliesComputeRequest
  - `parameters` object
  - `standard` 'CESMM4' | 'NRM2' | 'SMM7' | 'MMHW', required
  - `project` ProjectMeta: Option C free-text Project entity per 25th-fire (filed 2026-05-19, in-scope for the architectural rewrite per INBOX 26th-fire Amendment C). Thin-slice precursor to a full Project entity in v1.1: just two optional free-text fields that the workspace surfaces at the top of every assembly form and that propagate to the BoQ header, the PDF cover sheet, and the DXF title block. No DB persistence, no cross-assembly rollup — those land in v1.1.
    - `name` string, nullable: Free-text project name, e.g. "Phase 2 Drainage Works".
    - `reference` string, nullable: Free-text project reference, e.g. "PRJ-2026-042".
  - `render_artefacts` boolean, nullable: Opt-in to eagerly render + persist the Excel/DXF/PDF export bundle (signed-URL artefacts) inline on this compute. Omitted / null / false means OFF, so the interactive workspace recompute path — debounced POST /compute on every parameter change — stays pure-engine fast and never launches the Puppeteer/Chromium PDF sidecar. Exports are fetched on demand via the dedicated /excel /pdf /dxf endpoints; only callers that genuinely want inline download URLs in one round-trip (e.g. an agent batch) set this True. Nullable default (mirroring `project`) keeps it an optional request field in the generated client. Still subject to the same server-side entitlement + export-gate checks.

## Response `200`

Streamed PDF drawing sheet — CQ-branded cover + title block + dimensioned drawing + measured quantities + warranty disclaimer.

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/civilquants/apis/civilquants-api.md) · [All operations](https://skmtc.dev/civilquants/apis/civilquants-api/llms.txt) · [OpenAPI document](https://skmtc.dev/civilquants/apis/civilquants-api/revisions/84569a3761e1?raw)
