# Partner Pages
> Source: /api-reference/partner/pages
> Partner-managed CMS pages — settings, SEO, theming, custom domains and the publish lifecycle
> Status: PREVIEW
> Note: Preview. The 16 /partner/pages routes shipped to api main in api#1265 and are callable now; the request and response contracts may still change before general availability.

Partner pages are the CMS pages your organization owns — join pages, custom
loyalty landing pages and the like. The `/partner/pages` routes let you read a
page group, edit its settings, SEO and theme, attach a custom domain, and run
the draft → publish lifecycle.

<Note>
  These routes are new. They are live on `api` main and appear in the
  [API explorer](/api-reference/partner/explorer/pages/list), where four of the
  sixteen have a typed request body. None of them publishes a response schema
  yet, so read the Bruno collection (`bruno/Partner/Pages/**`) for response
  shapes before integrating.
</Note>

## Scopes [#scopes]

| Scope | Grants |
|---|---|
| `partner:pages:read` | Read page groups, previews, SEO, theme, eligible domains, gate programs |
| `partner:pages:manage` | Edit settings, SEO, theme, domain, media, and the publish lifecycle |

## Reading [#reading]

<ParamField path="pageGroupId" type="string" required>
  External id of the page group.
</ParamField>

| Method | Path | Purpose |
|---|---|---|
| `GET` | `/partner/pages` | List the page groups your organization owns |
| `GET` | `/partner/pages/{pageGroupId}` | Get one page group |
| `GET` | `/partner/pages/{pageGroupId}/preview` | Render the current draft for preview |
| `GET` | `/partner/pages/{pageGroupId}/seo` | Read SEO settings |
| `GET` | `/partner/pages/{pageGroupId}/theme` | Read the applied theme |
| `GET` | `/partner/pages/{pageGroupId}/eligible-domains` | Custom domains this page may use |
| `GET` | `/partner/pages/{pageGroupId}/member-gate-programs` | Loyalty programs that can gate the page |

## Writing [#writing]

All writes require `partner:pages:manage` and an `Idempotency-Key` header.

| Method | Path | Purpose |
|---|---|---|
| `PATCH` | `/partner/pages/{pageGroupId}` | Update page settings |
| `PATCH` | `/partner/pages/{pageGroupId}/theme` | Update the theme |
| `PUT` | `/partner/pages/{pageGroupId}/seo` | Replace SEO settings |
| `PUT` | `/partner/pages/{pageGroupId}/custom-domain` | Assign a custom domain |
| `POST` | `/partner/pages/{pageGroupId}/featured-image` | Upload the featured image |

## Lifecycle [#lifecycle]

A page group holds a published version and an optional draft. Editing always
goes through the draft.

| Method | Path | Purpose |
|---|---|---|
| `POST` | `/partner/pages/{pageGroupId}/edit` | Open (or re-open) a draft |
| `POST` | `/partner/pages/{pageGroupId}/discard-draft` | Throw the draft away |
| `POST` | `/partner/pages/{pageGroupId}/publish` | Publish the draft |
| `POST` | `/partner/pages/{pageGroupId}/unpublish` | Take the page offline |

<CodeGroup>

```bash cURL
curl "https://api-prd.cf.journey.com/v1/partner/pages" \
  -H "X-API-Key: jny_xxxx"
```

```bash cURL - Publish a draft
curl -X POST "https://api-prd.cf.journey.com/v1/partner/pages/01J5XYZ/publish" \
  -H "X-API-Key: jny_xxxx" \
  -H "Idempotency-Key: publish-01J5XYZ-2026-10-09"
```

</CodeGroup>

## Related [#related]

- [Custom domains](/api-reference/partner/overview#scopes) — a page can only use a domain your organization has connected and verified.
- [Partner authentication](/api-reference/partner/authentication)
