# POST /portals/template-content

**Resource:** [Portals](./portals.md)  
**MCP tool:** `set_portal_template_content`  
**Scopes:** `portals:write`  
**Write operation:** yes

Safely set ONE template-content type (Container 2) on a portal TEMPLATE — server-side merge. This content proliferates into every instance (signing/documents rendered per instance with the referrer/opportunity variables). Pass the full desired id list for the type (replaces just that type's list). Use list_portal_template_content_candidates to find valid ids.

## Parameters

| Name | In | Type | Required | Description |
|------|----|------|----------|-------------|
| `template_id` | body | string | yes |  |
| `content_type` | body | string | yes | One of: signing, documents, files, images, notepads. signing/documents take document_template ids; files/images/notepads take the workspace resource ids. |
| `resource_ids` | body | array | yes | The full id list for this type (empty array clears it). |
| `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/portals/template-content"   -H "Authorization: Bearer YOUR_API_KEY"   -H "Content-Type: application/json"   -d '{"template_id":"...","content_type":"...","resource_ids":"..."}'
```

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