---
title: "Page Themes API Reference"
description: "Endpoints for managing page visual themes. These endpoints allow you to create, read, and update themes for canvas, cover, badge, container, typography, footer logo, and interactive elements."
canonical: "https://linkbreakers.com/help/api/page-themes"
---

# Page Themes

Endpoints for managing page visual themes. These endpoints allow you to create, read, and update themes for canvas, cover, badge, container, typography, footer logo, and interactive elements.

## Page Themes

## [#](#page-themes-object)The Page Theme object

Page theme configuration

badgeEnabled

boolean

\--- Badge Section --- Whether badge is enabled

badgeIconColor

object

Reusable color payload used across design-oriented APIs (page themes, QR code designs, etc.). It supports solid colors and gradients with optional direction and per-stop offsets.

badgeId

string

Badge image ID (references media table)

badgeShape

string (enum)

Badge shape

##### Allowed values

`PAGE_THEME_BADGE_SHAPE_UNSPECIFIED`

`PAGE_THEME_BADGE_SHAPE_CIRCLE`

`PAGE_THEME_BADGE_SHAPE_SQUARE`

`PAGE_THEME_BADGE_SHAPE_ROUNDED`

bodyFont

object

Font configuration with family, styling, and color

canvasColor

object

Reusable color payload used across design-oriented APIs (page themes, QR code designs, etc.). It supports solid colors and gradients with optional direction and per-stop offsets.

canvasCoverId

string

Optional cover media ID (references media table)

canvasCoverMode

string (enum)

Cover display mode

##### Allowed values

`PAGE_THEME_BACKGROUND_COVER_MODE_UNSPECIFIED`

`PAGE_THEME_BACKGROUND_COVER_MODE_FULL`

`PAGE_THEME_BACKGROUND_COVER_MODE_PROGRESSIVE_TOP`

`PAGE_THEME_BACKGROUND_COVER_MODE_PROGRESSIVE_BOTTOM`

containerConfig

object

Container styling configuration

containerEnabled

boolean

Whether container is enabled

createdAt

string (date-time)

When the page theme was created

elementColor

object

Reusable color payload used across design-oriented APIs (page themes, QR code designs, etc.). It supports solid colors and gradients with optional direction and per-stop offsets.

elementFont

object

Font configuration with family, styling, and color

footerLogoEnabled

boolean

Whether the footer logo (a small company or brand logo centered at the bottom of every page using this theme) is shown. Turning it off keeps footer\_logo\_id, so turning it back on restores the same image.

footerLogoId

string

Footer logo image ID (a media library image)

id

string

Page theme ID

titleFont

object

Font configuration with family, styling, and color

updatedAt

string (date-time)

When the page theme was last updated

workspaceId

string

Workspace ID this page theme belongs to

[Learn moreLearn more about page themes in Linkbreakers.](https://linkbreakers.com/help/article/whats-a-page-theme)

Example object

```json
{
  "badgeEnabled": false,
  "badgeIconColor": {
    "colors": [
      "string"
    ],
    "direction": "string",
    "stops": [
      "string"
    ],
    "type": "THEME_COLOR_TYPE_UNSPECIFIED"
  },
  "badgeId": "string",
  "badgeShape": "PAGE_THEME_BADGE_SHAPE_UNSPECIFIED",
  "bodyFont": {
    "bold": false,
    "color": {
      "colors": [
        "string"
      ],
      "direction": "string",
      "stops": [
        "string"
      ],
      "type": "THEME_COLOR_TYPE_UNSPECIFIED"
    },
    "family": "PAGE_THEME_FONT_FAMILY_UNSPECIFIED",
    "familyStack": "\"Gill Sans\", \"Trebuchet MS\", sans-serif",
    "fontSize": 0,
    "italic": false
  },
  "canvasColor": {
    "colors": [
      "string"
    ],
    "direction": "string",
    "stops": [
      "string"
    ],
    "type": "THEME_COLOR_TYPE_UNSPECIFIED"
  },
  "canvasCoverId": "string",
  "canvasCoverMode": "PAGE_THEME_BACKGROUND_COVER_MODE_UNSPECIFIED",
  "containerConfig": {
    "backgroundColor": {
      "colors": [
        "string"
      ],
      "direction": "string",
      "stops": [
        "string"
      ],
      "type": "THEME_COLOR_TYPE_UNSPECIFIED"
    },
    "borderColor": {
      "colors": [
        "string"
      ],
      "direction": "string",
      "stops": [
        "string"
      ],
      "type": "THEME_COLOR_TYPE_UNSPECIFIED"
    },
    "borderSize": 0,
    "borderStyle": "PAGE_THEME_BORDER_STYLE_UNSPECIFIED",
    "opacity": 0,
    "variant": "PAGE_THEME_CONTAINER_VARIANT_UNSPECIFIED"
  },
  "containerEnabled": false,
  "createdAt": "2026-10-27T00:26:05.036Z",
  "elementColor": {
    "colors": [
      "string"
    ],
    "direction": "string",
    "stops": [
      "string"
    ],
    "type": "THEME_COLOR_TYPE_UNSPECIFIED"
  },
  "elementFont": {
    "bold": false,
    "color": {
      "colors": [
        "string"
      ],
      "direction": "string",
      "stops": [
        "string"
      ],
      "type": "THEME_COLOR_TYPE_UNSPECIFIED"
    },
    "family": "PAGE_THEME_FONT_FAMILY_UNSPECIFIED",
    "familyStack": "\"Gill Sans\", \"Trebuchet MS\", sans-serif",
    "fontSize": 0,
    "italic": false
  },
  "footerLogoEnabled": false,
  "footerLogoId": "string",
  "id": "string",
  "titleFont": {
    "bold": false,
    "color": {
      "colors": [
        "string"
      ],
      "direction": "string",
      "stops": [
        "string"
      ],
      "type": "THEME_COLOR_TYPE_UNSPECIFIED"
    },
    "family": "PAGE_THEME_FONT_FAMILY_UNSPECIFIED",
    "familyStack": "\"Gill Sans\", \"Trebuchet MS\", sans-serif",
    "fontSize": 0,
    "italic": false
  },
  "updatedAt": "2026-10-27T00:26:05.036Z",
  "workspaceId": "string"
}
```

GET

`/v1/page-themes`

Requires auth

## [#](#list-page-themes-for-the-current-workspace)List page themes for the current workspace

Retrieves all page themes belonging to the caller's workspace. Requires the \`page\_themes:read\` scope.

### [#](#list-page-themes-for-the-current-workspace-parameters)Parameters

#### query parameters

pageSize

integer (int64)

query

Maximum number of page themes to return. Defaults to 100, capped at 1000.

pageToken

string

query

Cursor from a previous response's next\_page\_token. Empty starts at the first page. Pages are ordered by (created\_at, id), which never change, so a record cannot move between pages while a client is walking them.

cursor

string

query

Opaque cursor from the previous page's nextPageToken. Same as pageToken; when both are sent, pageToken wins.

### [#](#list-page-themes-for-the-current-workspace-response)Response

200

Everything worked as expected.

nextPageToken

string

Cursor to continue listing page themes. Empty on the last page.

pageThemes

array<object>

List of page themes

totalCount

integer (int64)

How many records exist in total, so a client can tell a complete answer from a page of one. A local-first client reads absence from this list as deletion, and may only do so when the count it was given matches what it received: without that, one page would look like the whole model and everything beyond it would be removed locally.

### [#](#list-page-themes-for-the-current-workspace-error)Error response

400-599

All endpoints may return an unexpected error payload when a request cannot be processed.

error

object

Required

Wrapped error response.

Example request (cURL)

```bash
curl -X GET "https://api.linkbreakers.com/v1/page-themes?pageSize={pageSize}&pageToken={pageToken}&cursor={cursor}" \
  -H "Authorization: Bearer YOUR_TOKEN"
```

Typical response

```json
{
  "nextPageToken": "string",
  "pageThemes": [
    {
      "badgeEnabled": false,
      "badgeIconColor": {
        "colors": [],
        "direction": "string",
        "stops": [],
        "type": "THEME_COLOR_TYPE_UNSPECIFIED"
      },
      "badgeId": "string",
      "badgeShape": "PAGE_THEME_BADGE_SHAPE_UNSPECIFIED",
      "bodyFont": {
        "bold": false,
        "color": {},
        "family": "PAGE_THEME_FONT_FAMILY_UNSPECIFIED",
        "familyStack": "\"Gill Sans\", \"Trebuchet MS\", sans-serif",
        "fontSize": 0,
        "italic": false
      },
      "canvasColor": {
        "colors": [],
        "direction": "string",
        "stops": [],
        "type": "THEME_COLOR_TYPE_UNSPECIFIED"
      },
      "canvasCoverId": "string",
      "canvasCoverMode": "PAGE_THEME_BACKGROUND_COVER_MODE_UNSPECIFIED",
      "containerConfig": {
        "backgroundColor": {},
        "borderColor": {},
        "borderSize": 0,
        "borderStyle": "PAGE_THEME_BORDER_STYLE_UNSPECIFIED",
        "opacity": 0,
        "variant": "PAGE_THEME_CONTAINER_VARIANT_UNSPECIFIED"
      },
      "containerEnabled": false,
      "createdAt": "2026-10-27T00:26:05.032Z",
      "elementColor": {
        "colors": [],
        "direction": "string",
        "stops": [],
        "type": "THEME_COLOR_TYPE_UNSPECIFIED"
      },
      "elementFont": {
        "bold": false,
        "color": {},
        "family": "PAGE_THEME_FONT_FAMILY_UNSPECIFIED",
        "familyStack": "\"Gill Sans\", \"Trebuchet MS\", sans-serif",
        "fontSize": 0,
        "italic": false
      },
      "footerLogoEnabled": false,
      "footerLogoId": "string",
      "id": "string",
      "titleFont": {
        "bold": false,
        "color": {},
        "family": "PAGE_THEME_FONT_FAMILY_UNSPECIFIED",
        "familyStack": "\"Gill Sans\", \"Trebuchet MS\", sans-serif",
        "fontSize": 0,
        "italic": false
      },
      "updatedAt": "2026-10-27T00:26:05.032Z",
      "workspaceId": "string"
    }
  ],
  "totalCount": 0
}
```

Base URL: `https://api.linkbreakers.com`

GET

`/v1/page-themes/{id}`

Requires auth

## [#](#get-a-page-theme)Get a page theme

Retrieves a specific page theme by ID. Requires the \`page\_themes:read\` scope.

### [#](#get-a-page-theme-parameters)Parameters

#### path parameters

id

string

Required

path

Page theme ID to retrieve

### [#](#get-a-page-theme-response)Response

200

Everything worked as expected.

pageTheme

object

Page theme configuration

### [#](#get-a-page-theme-error)Error response

400-599

All endpoints may return an unexpected error payload when a request cannot be processed.

error

object

Required

Wrapped error response.

Example request (cURL)

```bash
curl -X GET "https://api.linkbreakers.com/v1/page-themes/{id}" \
  -H "Authorization: Bearer YOUR_TOKEN"
```

Typical response

```json
{
  "pageTheme": {
    "badgeEnabled": false,
    "badgeIconColor": {
      "colors": [
        "string"
      ],
      "direction": "string",
      "stops": [
        "string"
      ],
      "type": "THEME_COLOR_TYPE_UNSPECIFIED"
    },
    "badgeId": "string",
    "badgeShape": "PAGE_THEME_BADGE_SHAPE_UNSPECIFIED",
    "bodyFont": {
      "bold": false,
      "color": {
        "colors": [],
        "direction": "string",
        "stops": [],
        "type": "THEME_COLOR_TYPE_UNSPECIFIED"
      },
      "family": "PAGE_THEME_FONT_FAMILY_UNSPECIFIED",
      "familyStack": "\"Gill Sans\", \"Trebuchet MS\", sans-serif",
      "fontSize": 0,
      "italic": false
    },
    "canvasColor": {
      "colors": [
        "string"
      ],
      "direction": "string",
      "stops": [
        "string"
      ],
      "type": "THEME_COLOR_TYPE_UNSPECIFIED"
    },
    "canvasCoverId": "string",
    "canvasCoverMode": "PAGE_THEME_BACKGROUND_COVER_MODE_UNSPECIFIED",
    "containerConfig": {
      "backgroundColor": {
        "colors": [],
        "direction": "string",
        "stops": [],
        "type": "THEME_COLOR_TYPE_UNSPECIFIED"
      },
      "borderColor": {
        "colors": [],
        "direction": "string",
        "stops": [],
        "type": "THEME_COLOR_TYPE_UNSPECIFIED"
      },
      "borderSize": 0,
      "borderStyle": "PAGE_THEME_BORDER_STYLE_UNSPECIFIED",
      "opacity": 0,
      "variant": "PAGE_THEME_CONTAINER_VARIANT_UNSPECIFIED"
    },
    "containerEnabled": false,
    "createdAt": "2026-10-27T00:26:05.035Z",
    "elementColor": {
      "colors": [
        "string"
      ],
      "direction": "string",
      "stops": [
        "string"
      ],
      "type": "THEME_COLOR_TYPE_UNSPECIFIED"
    },
    "elementFont": {
      "bold": false,
      "color": {
        "colors": [],
        "direction": "string",
        "stops": [],
        "type": "THEME_COLOR_TYPE_UNSPECIFIED"
      },
      "family": "PAGE_THEME_FONT_FAMILY_UNSPECIFIED",
      "familyStack": "\"Gill Sans\", \"Trebuchet MS\", sans-serif",
      "fontSize": 0,
      "italic": false
    },
    "footerLogoEnabled": false,
    "footerLogoId": "string",
    "id": "string",
    "titleFont": {
      "bold": false,
      "color": {
        "colors": [],
        "direction": "string",
        "stops": [],
        "type": "THEME_COLOR_TYPE_UNSPECIFIED"
      },
      "family": "PAGE_THEME_FONT_FAMILY_UNSPECIFIED",
      "familyStack": "\"Gill Sans\", \"Trebuchet MS\", sans-serif",
      "fontSize": 0,
      "italic": false
    },
    "updatedAt": "2026-10-27T00:26:05.035Z",
    "workspaceId": "string"
  }
}
```

Base URL: `https://api.linkbreakers.com`

GET

`/v1/page-themes/matching-template`

Requires auth

## [#](#find-a-page-theme-template-matching-a-link-s-styling)Find a page theme template matching a link's styling

Returns the page theme template available to the workspace whose styling is identical to the link's current page theme, if one exists. Saving the theme as a template again would only duplicate it. Requires the \`page\_themes:read\` scope.

### [#](#find-a-page-theme-template-matching-a-link-s-styling-parameters)Parameters

#### query parameters

linkId

string

Required

query

Link whose current page theme should be matched

### [#](#find-a-page-theme-template-matching-a-link-s-styling-response)Response

200

Everything worked as expected.

matched

boolean

Whether the link's styling already exists as a template

pageThemeTemplate

object

Reusable page styling presets that help teams give every link page a consistent look.

### [#](#find-a-page-theme-template-matching-a-link-s-styling-error)Error response

400-599

All endpoints may return an unexpected error payload when a request cannot be processed.

error

object

Required

Wrapped error response.

Example request (cURL)

```bash
curl -X GET "https://api.linkbreakers.com/v1/page-themes/matching-template?linkId={linkId}" \
  -H "Authorization: Bearer YOUR_TOKEN"
```

Typical response

```json
{
  "matched": false,
  "pageThemeTemplate": {
    "badgeSignedUrl": "https://example.com",
    "builtIn": false,
    "coverSignedUrl": "https://example.com",
    "createdAt": "2026-10-27T00:26:05.033Z",
    "description": "string",
    "duplicatedFrom": "0d7f4d9c-1aef-4ed4-821b-321a3f9cba1d",
    "faq": "string",
    "footerLogoSignedUrl": "https://example.com",
    "id": "0d7f4d9c-1aef-4ed4-821b-321a3f9cba1d",
    "learnMore": "string",
    "name": "string",
    "owned": false,
    "pageTheme": {
      "badgeEnabled": false,
      "badgeIconColor": {
        "colors": [],
        "direction": "string",
        "stops": [],
        "type": "THEME_COLOR_TYPE_UNSPECIFIED"
      },
      "badgeId": "string",
      "badgeShape": "PAGE_THEME_BADGE_SHAPE_UNSPECIFIED",
      "bodyFont": {
        "bold": false,
        "color": {},
        "family": "PAGE_THEME_FONT_FAMILY_UNSPECIFIED",
        "familyStack": "\"Gill Sans\", \"Trebuchet MS\", sans-serif",
        "fontSize": 0,
        "italic": false
      },
      "canvasColor": {
        "colors": [],
        "direction": "string",
        "stops": [],
        "type": "THEME_COLOR_TYPE_UNSPECIFIED"
      },
      "canvasCoverId": "string",
      "canvasCoverMode": "PAGE_THEME_BACKGROUND_COVER_MODE_UNSPECIFIED",
      "containerConfig": {
        "backgroundColor": {},
        "borderColor": {},
        "borderSize": 0,
        "borderStyle": "PAGE_THEME_BORDER_STYLE_UNSPECIFIED",
        "opacity": 0,
        "variant": "PAGE_THEME_CONTAINER_VARIANT_UNSPECIFIED"
      },
      "containerEnabled": false,
      "createdAt": "2026-10-27T00:26:05.034Z",
      "elementColor": {
        "colors": [],
        "direction": "string",
        "stops": [],
        "type": "THEME_COLOR_TYPE_UNSPECIFIED"
      },
      "elementFont": {
        "bold": false,
        "color": {},
        "family": "PAGE_THEME_FONT_FAMILY_UNSPECIFIED",
        "familyStack": "\"Gill Sans\", \"Trebuchet MS\", sans-serif",
        "fontSize": 0,
        "italic": false
      },
      "footerLogoEnabled": false,
      "footerLogoId": "string",
      "id": "string",
      "titleFont": {
        "bold": false,
        "color": {},
        "family": "PAGE_THEME_FONT_FAMILY_UNSPECIFIED",
        "familyStack": "\"Gill Sans\", \"Trebuchet MS\", sans-serif",
        "fontSize": 0,
        "italic": false
      },
      "updatedAt": "2026-10-27T00:26:05.034Z",
      "workspaceId": "string"
    },
    "pageThemeId": "a8c5e111-8894-4f8a-b5db-9efe0d12a210",
    "publishedAt": "2026-10-27T00:26:05.034Z",
    "slug": "string",
    "tags": "string",
    "thumbnailPendingUpdateSince": "2026-10-27T00:26:05.034Z",
    "thumbnailSignedUrl": "https://example.com",
    "updatedAt": "2026-10-27T00:26:05.034Z",
    "usageCount": 0,
    "workspaceId": "c0d3cafe-5b1e-4d42-a6fd-0c5f5c3962d0"
  }
}
```

Base URL: `https://api.linkbreakers.com`

POST

`/v1/page-themes/apply-template`

Requires auth

## [#](#apply-a-page-theme-template-to-a-link)Apply a page theme template to a link

Copies a template's styling into the link's own page theme. The link keeps its own theme row, so the template can later be edited or deleted without changing any page that was styled from it. Cover, badge and footer logo media are copied into the caller's workspace when the template carries them. Requires the \`page\_themes:write\` scope.

### [#](#apply-a-page-theme-template-to-a-link-parameters)Parameters

#### header parameters

Idempotency-Key

string

header

Makes retrying this request safe. See components.parameters.IdempotencyKey.

### [#](#apply-a-page-theme-template-to-a-link-request)Request body

linkId

string

Required

Link whose page theme should be restyled

pageThemeTemplateId

string

Template to apply, addressed by ID. Use this for workspace templates that have not been published and therefore have no slug.

slug

string

Slug of the page theme template to apply. Only published and built-in templates carry a slug: it is the public identifier the gallery and the marketing site address them by. Supply page\_theme\_template\_id instead for a workspace's own drafts, which have none. Exactly one of the two is required.

### [#](#apply-a-page-theme-template-to-a-link-response)Response

200

Everything worked as expected.

pageTheme

object

Page theme configuration

### [#](#apply-a-page-theme-template-to-a-link-error)Error response

400-599

All endpoints may return an unexpected error payload when a request cannot be processed.

error

object

Required

Wrapped error response.

Example request (cURL)

```bash
curl -X POST "https://api.linkbreakers.com/v1/page-themes/apply-template" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Idempotency-Key: string" \
  -H "Content-Type: application/json" \
  --data '{"linkId":"string","pageThemeTemplateId":"0d7f4d9c-1aef-4ed4-821b-321a3f9cba1d","slug":"string"}'
```

Sample payload (application/json)

```json
{
  "linkId": "string",
  "pageThemeTemplateId": "0d7f4d9c-1aef-4ed4-821b-321a3f9cba1d",
  "slug": "string"
}
```

Typical response

```json
{
  "pageTheme": {
    "badgeEnabled": false,
    "badgeIconColor": {
      "colors": [
        "string"
      ],
      "direction": "string",
      "stops": [
        "string"
      ],
      "type": "THEME_COLOR_TYPE_UNSPECIFIED"
    },
    "badgeId": "string",
    "badgeShape": "PAGE_THEME_BADGE_SHAPE_UNSPECIFIED",
    "bodyFont": {
      "bold": false,
      "color": {
        "colors": [],
        "direction": "string",
        "stops": [],
        "type": "THEME_COLOR_TYPE_UNSPECIFIED"
      },
      "family": "PAGE_THEME_FONT_FAMILY_UNSPECIFIED",
      "familyStack": "\"Gill Sans\", \"Trebuchet MS\", sans-serif",
      "fontSize": 0,
      "italic": false
    },
    "canvasColor": {
      "colors": [
        "string"
      ],
      "direction": "string",
      "stops": [
        "string"
      ],
      "type": "THEME_COLOR_TYPE_UNSPECIFIED"
    },
    "canvasCoverId": "string",
    "canvasCoverMode": "PAGE_THEME_BACKGROUND_COVER_MODE_UNSPECIFIED",
    "containerConfig": {
      "backgroundColor": {
        "colors": [],
        "direction": "string",
        "stops": [],
        "type": "THEME_COLOR_TYPE_UNSPECIFIED"
      },
      "borderColor": {
        "colors": [],
        "direction": "string",
        "stops": [],
        "type": "THEME_COLOR_TYPE_UNSPECIFIED"
      },
      "borderSize": 0,
      "borderStyle": "PAGE_THEME_BORDER_STYLE_UNSPECIFIED",
      "opacity": 0,
      "variant": "PAGE_THEME_CONTAINER_VARIANT_UNSPECIFIED"
    },
    "containerEnabled": false,
    "createdAt": "2026-10-27T00:26:05.032Z",
    "elementColor": {
      "colors": [
        "string"
      ],
      "direction": "string",
      "stops": [
        "string"
      ],
      "type": "THEME_COLOR_TYPE_UNSPECIFIED"
    },
    "elementFont": {
      "bold": false,
      "color": {
        "colors": [],
        "direction": "string",
        "stops": [],
        "type": "THEME_COLOR_TYPE_UNSPECIFIED"
      },
      "family": "PAGE_THEME_FONT_FAMILY_UNSPECIFIED",
      "familyStack": "\"Gill Sans\", \"Trebuchet MS\", sans-serif",
      "fontSize": 0,
      "italic": false
    },
    "footerLogoEnabled": false,
    "footerLogoId": "string",
    "id": "string",
    "titleFont": {
      "bold": false,
      "color": {
        "colors": [],
        "direction": "string",
        "stops": [],
        "type": "THEME_COLOR_TYPE_UNSPECIFIED"
      },
      "family": "PAGE_THEME_FONT_FAMILY_UNSPECIFIED",
      "familyStack": "\"Gill Sans\", \"Trebuchet MS\", sans-serif",
      "fontSize": 0,
      "italic": false
    },
    "updatedAt": "2026-10-27T00:26:05.032Z",
    "workspaceId": "string"
  }
}
```

Base URL: `https://api.linkbreakers.com`

PATCH

`/v1/page-themes/{id}`

Requires auth

## [#](#update-a-page-theme)Update a page theme

Updates an existing page theme. Cannot update page themes that are currently attached to links. Requires the \`page\_themes:write\` scope.

### [#](#update-a-page-theme-parameters)Parameters

#### path parameters

id

string

Required

path

Page theme ID to update

#### header parameters

Idempotency-Key

string

header

Makes retrying this request safe. See components.parameters.IdempotencyKey.

### [#](#update-a-page-theme-request)Request body

badge

object

MediaSelection picks an image from the workspace's media library, or removes it. Any ready image of at most 3 MB can be a background cover, badge or footer logo, wherever it was uploaded from; anything else is refused with MEDIA\_NOT\_ALLOWED\_HERE, whose metadata names the slot, the reason (KIND\_NOT\_ACCEPTED or TOO\_LARGE) and the limit.

badgeEnabled

boolean

\--- Badge Section --- Whether badge is enabled

badgeIconColor

object

Reusable color payload used across design-oriented APIs (page themes, QR code designs, etc.). It supports solid colors and gradients with optional direction and per-stop offsets.

badgeShape

string (enum)

Badge shape to update

##### Allowed values

`PAGE_THEME_BADGE_SHAPE_UNSPECIFIED`

`PAGE_THEME_BADGE_SHAPE_CIRCLE`

`PAGE_THEME_BADGE_SHAPE_SQUARE`

`PAGE_THEME_BADGE_SHAPE_ROUNDED`

bodyFont

object

Font configuration with family, styling, and color

canvasColor

object

Reusable color payload used across design-oriented APIs (page themes, QR code designs, etc.). It supports solid colors and gradients with optional direction and per-stop offsets.

canvasCover

object

MediaSelection picks an image from the workspace's media library, or removes it. Any ready image of at most 3 MB can be a background cover, badge or footer logo, wherever it was uploaded from; anything else is refused with MEDIA\_NOT\_ALLOWED\_HERE, whose metadata names the slot, the reason (KIND\_NOT\_ACCEPTED or TOO\_LARGE) and the limit.

canvasCoverMode

string (enum)

Cover display mode to update

##### Allowed values

`PAGE_THEME_BACKGROUND_COVER_MODE_UNSPECIFIED`

`PAGE_THEME_BACKGROUND_COVER_MODE_FULL`

`PAGE_THEME_BACKGROUND_COVER_MODE_PROGRESSIVE_TOP`

`PAGE_THEME_BACKGROUND_COVER_MODE_PROGRESSIVE_BOTTOM`

containerConfig

object

Container styling configuration

containerEnabled

boolean

Whether container is enabled (false clears container\_config)

elementColor

object

Reusable color payload used across design-oriented APIs (page themes, QR code designs, etc.). It supports solid colors and gradients with optional direction and per-stop offsets.

elementFont

object

Font configuration with family, styling, and color

footerLogo

object

MediaSelection picks an image from the workspace's media library, or removes it. Any ready image of at most 3 MB can be a background cover, badge or footer logo, wherever it was uploaded from; anything else is refused with MEDIA\_NOT\_ALLOWED\_HERE, whose metadata names the slot, the reason (KIND\_NOT\_ACCEPTED or TOO\_LARGE) and the limit.

footerLogoEnabled

boolean

Whether to show the footer logo, a small company or brand logo centered at the bottom of every page using this theme (false hides it but keeps the image).

titleFont

object

Font configuration with family, styling, and color

### [#](#update-a-page-theme-response)Response

200

Everything worked as expected.

pageTheme

object

Page theme configuration

### [#](#update-a-page-theme-error)Error response

400-599

All endpoints may return an unexpected error payload when a request cannot be processed.

error

object

Required

Wrapped error response.

Example request (cURL)

```bash
curl -X PATCH "https://api.linkbreakers.com/v1/page-themes/{id}" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Idempotency-Key: string" \
  -H "Content-Type: application/json" \
  --data '{"badge":{"delete":{},"id":"string"},"badgeEnabled":false,"badgeIconColor":{"colors":["string"],"direction":"string","stops":["string"],"type":"THEME_COLOR_TYPE_UNSPECIFIED"},"badgeShape":"PAGE_THEME_BADGE_SHAPE_UNSPECIFIED","bodyFont":{"bold":false,"color":{"colors":["string"],"direction":"string","stops":["string"],"type":"THEME_COLOR_TYPE_UNSPECIFIED"},"family":"PAGE_THEME_FONT_FAMILY_UNSPECIFIED","familyStack":"\"Gill Sans\", \"Trebuchet MS\", sans-serif","fontSize":0,"italic":false},"canvasColor":{"colors":["string"],"direction":"string","stops":["string"],"type":"THEME_COLOR_TYPE_UNSPECIFIED"},"canvasCover":{"delete":{},"id":"string"},"canvasCoverMode":"PAGE_THEME_BACKGROUND_COVER_MODE_UNSPECIFIED","containerConfig":{"backgroundColor":{"colors":["string"],"direction":"string","stops":["string"],"type":"THEME_COLOR_TYPE_UNSPECIFIED"},"borderColor":{"colors":["string"],"direction":"string","stops":["string"],"type":"THEME_COLOR_TYPE_UNSPECIFIED"},"borderSize":0,"borderStyle":"PAGE_THEME_BORDER_STYLE_UNSPECIFIED","opacity":0,"variant":"PAGE_THEME_CONTAINER_VARIANT_UNSPECIFIED"},"containerEnabled":false,"elementColor":{"colors":["string"],"direction":"string","stops":["string"],"type":"THEME_COLOR_TYPE_UNSPECIFIED"},"elementFont":{"bold":false,"color":{"colors":["string"],"direction":"string","stops":["string"],"type":"THEME_COLOR_TYPE_UNSPECIFIED"},"family":"PAGE_THEME_FONT_FAMILY_UNSPECIFIED","familyStack":"\"Gill Sans\", \"Trebuchet MS\", sans-serif","fontSize":0,"italic":false},"footerLogo":{"delete":{},"id":"string"},"footerLogoEnabled":false,"titleFont":{"bold":false,"color":{"colors":["string"],"direction":"string","stops":["string"],"type":"THEME_COLOR_TYPE_UNSPECIFIED"},"family":"PAGE_THEME_FONT_FAMILY_UNSPECIFIED","familyStack":"\"Gill Sans\", \"Trebuchet MS\", sans-serif","fontSize":0,"italic":false}}'
```

Sample payload (application/json)

```json
{
  "badge": {
    "delete": {},
    "id": "string"
  },
  "badgeEnabled": false,
  "badgeIconColor": {
    "colors": [
      "string"
    ],
    "direction": "string",
    "stops": [
      "string"
    ],
    "type": "THEME_COLOR_TYPE_UNSPECIFIED"
  },
  "badgeShape": "PAGE_THEME_BADGE_SHAPE_UNSPECIFIED",
  "bodyFont": {
    "bold": false,
    "color": {
      "colors": [
        "string"
      ],
      "direction": "string",
      "stops": [
        "string"
      ],
      "type": "THEME_COLOR_TYPE_UNSPECIFIED"
    },
    "family": "PAGE_THEME_FONT_FAMILY_UNSPECIFIED",
    "familyStack": "\"Gill Sans\", \"Trebuchet MS\", sans-serif",
    "fontSize": 0,
    "italic": false
  },
  "canvasColor": {
    "colors": [
      "string"
    ],
    "direction": "string",
    "stops": [
      "string"
    ],
    "type": "THEME_COLOR_TYPE_UNSPECIFIED"
  },
  "canvasCover": {
    "delete": {},
    "id": "string"
  },
  "canvasCoverMode": "PAGE_THEME_BACKGROUND_COVER_MODE_UNSPECIFIED",
  "containerConfig": {
    "backgroundColor": {
      "colors": [
        "string"
      ],
      "direction": "string",
      "stops": [
        "string"
      ],
      "type": "THEME_COLOR_TYPE_UNSPECIFIED"
    },
    "borderColor": {
      "colors": [
        "string"
      ],
      "direction": "string",
      "stops": [
        "string"
      ],
      "type": "THEME_COLOR_TYPE_UNSPECIFIED"
    },
    "borderSize": 0,
    "borderStyle": "PAGE_THEME_BORDER_STYLE_UNSPECIFIED",
    "opacity": 0,
    "variant": "PAGE_THEME_CONTAINER_VARIANT_UNSPECIFIED"
  },
  "containerEnabled": false,
  "elementColor": {
    "colors": [
      "string"
    ],
    "direction": "string",
    "stops": [
      "string"
    ],
    "type": "THEME_COLOR_TYPE_UNSPECIFIED"
  },
  "elementFont": {
    "bold": false,
    "color": {
      "colors": [
        "string"
      ],
      "direction": "string",
      "stops": [
        "string"
      ],
      "type": "THEME_COLOR_TYPE_UNSPECIFIED"
    },
    "family": "PAGE_THEME_FONT_FAMILY_UNSPECIFIED",
    "familyStack": "\"Gill Sans\", \"Trebuchet MS\", sans-serif",
    "fontSize": 0,
    "italic": false
  },
  "footerLogo": {
    "delete": {},
    "id": "string"
  },
  "footerLogoEnabled": false,
  "titleFont": {
    "bold": false,
    "color": {
      "colors": [
        "string"
      ],
      "direction": "string",
      "stops": [
        "string"
      ],
      "type": "THEME_COLOR_TYPE_UNSPECIFIED"
    },
    "family": "PAGE_THEME_FONT_FAMILY_UNSPECIFIED",
    "familyStack": "\"Gill Sans\", \"Trebuchet MS\", sans-serif",
    "fontSize": 0,
    "italic": false
  }
}
```

Typical response

```json
{
  "pageTheme": {
    "badgeEnabled": false,
    "badgeIconColor": {
      "colors": [
        "string"
      ],
      "direction": "string",
      "stops": [
        "string"
      ],
      "type": "THEME_COLOR_TYPE_UNSPECIFIED"
    },
    "badgeId": "string",
    "badgeShape": "PAGE_THEME_BADGE_SHAPE_UNSPECIFIED",
    "bodyFont": {
      "bold": false,
      "color": {
        "colors": [],
        "direction": "string",
        "stops": [],
        "type": "THEME_COLOR_TYPE_UNSPECIFIED"
      },
      "family": "PAGE_THEME_FONT_FAMILY_UNSPECIFIED",
      "familyStack": "\"Gill Sans\", \"Trebuchet MS\", sans-serif",
      "fontSize": 0,
      "italic": false
    },
    "canvasColor": {
      "colors": [
        "string"
      ],
      "direction": "string",
      "stops": [
        "string"
      ],
      "type": "THEME_COLOR_TYPE_UNSPECIFIED"
    },
    "canvasCoverId": "string",
    "canvasCoverMode": "PAGE_THEME_BACKGROUND_COVER_MODE_UNSPECIFIED",
    "containerConfig": {
      "backgroundColor": {
        "colors": [],
        "direction": "string",
        "stops": [],
        "type": "THEME_COLOR_TYPE_UNSPECIFIED"
      },
      "borderColor": {
        "colors": [],
        "direction": "string",
        "stops": [],
        "type": "THEME_COLOR_TYPE_UNSPECIFIED"
      },
      "borderSize": 0,
      "borderStyle": "PAGE_THEME_BORDER_STYLE_UNSPECIFIED",
      "opacity": 0,
      "variant": "PAGE_THEME_CONTAINER_VARIANT_UNSPECIFIED"
    },
    "containerEnabled": false,
    "createdAt": "2026-10-27T00:26:05.035Z",
    "elementColor": {
      "colors": [
        "string"
      ],
      "direction": "string",
      "stops": [
        "string"
      ],
      "type": "THEME_COLOR_TYPE_UNSPECIFIED"
    },
    "elementFont": {
      "bold": false,
      "color": {
        "colors": [],
        "direction": "string",
        "stops": [],
        "type": "THEME_COLOR_TYPE_UNSPECIFIED"
      },
      "family": "PAGE_THEME_FONT_FAMILY_UNSPECIFIED",
      "familyStack": "\"Gill Sans\", \"Trebuchet MS\", sans-serif",
      "fontSize": 0,
      "italic": false
    },
    "footerLogoEnabled": false,
    "footerLogoId": "string",
    "id": "string",
    "titleFont": {
      "bold": false,
      "color": {
        "colors": [],
        "direction": "string",
        "stops": [],
        "type": "THEME_COLOR_TYPE_UNSPECIFIED"
      },
      "family": "PAGE_THEME_FONT_FAMILY_UNSPECIFIED",
      "familyStack": "\"Gill Sans\", \"Trebuchet MS\", sans-serif",
      "fontSize": 0,
      "italic": false
    },
    "updatedAt": "2026-10-27T00:26:05.035Z",
    "workspaceId": "string"
  }
}
```

Base URL: `https://api.linkbreakers.com`

---

Source: https://linkbreakers.com/help/api/page-themes
