# POST /document-templates/import

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

Turn a PDF into an imported document template that can be sent for e-signature (the Document Builder's Import PDF). Pass the PDF as file_id (upload it first with upload_file, type "document") or as file_base64. Optionally place the signing boxes in the same call with signers + field_overlays, then send it with send_for_signing using the returned id as template_id.

## Parameters

| Name | In | Type | Required | Description |
|------|----|------|----------|-------------|
| `name` | body | string | yes | Template name, shown in the template list. |
| `file_id` | body | string | no | A document-type file from upload_file or list_files. Pass this or file_base64. |
| `file_base64` | body | string | no | The PDF itself, base64 encoded (up to about 23 MB). Pass this or file_id. |
| `description` | body | string | no | What this template is for, shown under its name in the list. |
| `signing_settings` | body | object | no | Signing delivery: { deliver: "email"\|"portal", portalTemplateId, sendEmail }. |
| `signers` | body | array | no | Imported-PDF templates only (category "imported"): the signing roles, in order. Each is { id, name?, email? }, e.g. [{ "id": "signer_1", "name": "Director" }]. send_for_signing maps its signers onto these by position: its first signer fills every box owned by signers[0], and so on. Sending the array replaces the roster. |
| `field_overlays` | body | array | no | Imported-PDF templates only (category "imported"): the boxes placed on the PDF. Positions are fractions of the page (0 to 1) measured from the TOP-LEFT corner, so x 0.1, y 0.8 sits near the bottom-left. The builder's default sizes: signature w 0.28 h 0.06; name and text w 0.26 h 0.032; date w 0.16 h 0.032. A box with signer_id is filled by that signer; a box with no signer_id is a document field whose value (static text or a {{variable}}) is stamped on. Sending the array replaces every box. |
| `require_approval` | body | boolean | no | Optional. Set true to route this write into the approval queue for human review instead of executing it immediately (returns 202 + an approval_id). Works even when your key/token has permission to execute directly. |

## Request example

```bash
curl -X POST   "https://api.trustpager.com/functions/v1/api/v1/document-templates/import"   -H "Authorization: Bearer YOUR_API_KEY"   -H "Content-Type: application/json"   -d '{"name":"...","file_id":"...","file_base64":"..."}'
```

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