# POST /portals/:portal_id/shares

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

Share a workspace record into a portal so its members can see it. This is the explicit access grant - nothing appears in a portal until shared. Idempotent. resource_type is one of: document, file, image, invoice, signing_envelope, booking, scheduled_event_type, form_template, form_submission, work_order, work_order_portal, referral, commission_payment, notepad, notepad_folder, transcript, opportunity_notepad. Scheduler (scheduled_event_type) and form_template surface as Tools the member can act on; documents, invoices and signing surface as Details; opportunity_notepad surfaces as a member-editable notepad in the portal.

## Parameters

| Name | In | Type | Required | Description |
|------|----|------|----------|-------------|
| `portal_id` | path | string | yes |  |
| `resource_type` | body | string | yes | The kind of record being shared (e.g. document, invoice, scheduled_event_type, form_template, work_order). |
| `resource_id` | body | string | yes | UUID of the record to share. |
| `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/:portal_id/shares"   -H "Authorization: Bearer YOUR_API_KEY"   -H "Content-Type: application/json"   -d '{"resource_type":"...","resource_id":"..."}'
```

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