# POST /document-templates/:id/sections

**Resource:** [Document Templates](./document-templates.md)  
**Scopes:** `documents:write`  
**Write operation:** yes

Add a section to a template. The "type" field accepts kebab-case (e.g. "signer-input"), PascalCase aliases (e.g. "SignerInput"), and underscore aliases (e.g. "signer_input") -- all normalized server-side. Valid types: cover-page, text-block, two-column, table, product-table, product-showcase, image-block, signature-block, signer-input, divider, page-break, quote-callout, terms-conditions, guarantee, doc-header, doc-footer, dynamic-pricing, dynamic-products, dynamic-timeline, dynamic-executive-summary, dynamic-needs-solutions, dynamic-recommendations, dynamic-callout, dynamic-guarantee, rich-content, product-brochure.

## Parameters

| Name | In | Type | Required | Description |
|------|----|------|----------|-------------|
| `id` | path | uuid | yes | Template ID |
| `type` | body | string | yes | Section type. Use "signer-input" for a field the signer fills in at signing time (not the sender). The signer-input content shape: { label: string, fieldType: "text"\|"textarea"\|"date"\|"number", required: boolean, placeholder?: string, signerEmail?: string }. Leave signerEmail blank to assign to the primary signer. |
| `content` | body | object | no | Section content JSON. Shape varies by type. |
| `styling` | body | object | no | Section styling overrides (backgroundColor, paddingTop, paddingBottom). |
| `order_index` | body | number | no | Display order (ascending). |
| `is_visible` | body | boolean | no | Whether the section is visible (default true). |

---
Base URL: `https://api.trustpager.com/functions/v1/api/v1` — Auth: `Authorization: Bearer YOUR_API_KEY`