Access and gates
set_paid_access
Create or update one paid access offer (GBP only): omit offer_id to create, pass it to update. protected_paths is a FULL REPLACEMENT, selected_pages only. access_days sets the access length in whole days, or null for lifetime. buyer_audience picks the checkout compliance flow: consumers_allowed (default on create) keeps the consumer disclosure and cancellation layer and requires the account's public seller details (get_seller_details / set_seller_details) before a live offer is accepted; business_only asks the buyer to confirm a business purchase instead and needs no seller address. Pick it from who the creator actually intends to sell to, never to bypass consumer rules. Omitting buyer_audience on update leaves it unchanged. Side effect: saving a SITE-WIDE offer (entire_site or except_homepage) also makes paid the site's configured primary gate, so a separate set_gate_access is not needed; selected_pages offers never change the primary gate, and archiving the last site-wide offer falls back to the stored classic gate. publish_site is still required before visitors see it. Buyer requirements: set_paid_access_requirements and set_paid_access_password. Needs a Stripe account that can take payments (get_commerce_setup, create_stripe_connect_link) and editor role.
Behaviour
- Effect
- Destructive. It can remove or overwrite existing data.
- Repeat calls
- Idempotent. Repeating the same call produces the same result.
- Plan
- Pro plan required (Paid Access).
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| request_id | string | Yes | - |
| site_id | uuid | Yes | Site UUID from list_sites. |
| offer_id | uuid | No | Omit to create a new offer; pass to update an existing one. |
| title | string | Yes | - |
| description | string or null | No | - |
| price_minor | integer | Yes | Price in GBP minor units (pence). Minimum 100 (£1.00). Whole pence only. |
| protection_scope | enum entire_site | except_homepage | selected_pages | Yes | What visitors pay for. selected_pages REQUIRES protected_paths; the other two REJECT it. |
| protected_paths | array of string | No | FULL REPLACEMENT list of leading-slash paths to lock, each existing on the newest version. selected_pages only. |
| access_days | integer or null | No | Access length in whole days, or null for lifetime access. |
| buyer_audience | enum business_only | consumers_allowed | No | Who may buy. consumers_allowed keeps the consumer disclosure and cancellation layer; business_only asks the buyer to confirm a business purchase instead. Omit on update to leave it unchanged; omit on create for the safe consumers_allowed default. |
| status | enum live | paused | archived | No | Optional lifecycle change applied after the write. |
Returns
| Name | Type |
|---|---|
| site_id | string |
| offer_id | string |
| status | string |
| protection_scope | enum entire_site | except_homepage | selected_pages |
| publish_required | boolean |
| published_primary_gate | enum classic | paid |
| configured_primary_gate | enum classic | paid |
| idempotency_replay | boolean |
Using it
set_paid_access is called by an AI assistant connected to Sentway over MCP, not by hand. Point the assistant at the Sentway MCP endpoint and complete the OAuth flow, and the tool becomes available in the same session as the other 56 Sentway tools. See connecting over MCP.