---
title: "QR Code Templates API Reference"
description: "Endpoints for managing QR Code Templates in Linkbreakers. These endpoints allow you to create, retrieve, update, and delete QR Code Templates."
canonical: "https://linkbreakers.com/help/api/qr-code-templates"
---

# QR Code Templates

Endpoints for managing QR Code Templates in Linkbreakers. These endpoints allow you to create, retrieve, update, and delete QR Code Templates.

## QR Code Templates

## [#](#qr-code-templates-object)The QR Code Template object

Reusable QR code design presets that help teams create branded links with consistent styling and messaging.

builtIn

boolean

Whether the template is maintained by Linkbreakers (available to every workspace)

createdAt

string (date-time)

When the template was created

description

string

Short marketing description displayed in the template picker

duplicatedFrom

string

Reference to the original public template when this template was created via import. Null for original templates.

faq

string

Frequently Asked Questions about this template stored as JSON

id

string

Unique identifier of the template (UUID)

learnMore

string

Extended markdown-supported content providing detailed information about the template

name

string

Human-readable name shown in the gallery

owned

boolean

True when the template belongs to the caller's workspace. False for built-in templates and for community templates published by other workspaces.

publishedAt

string (date-time)

When the template was published. Null means private template, only visible to creating workspace.

qrcodeDesign

object

Captures the visual recipe Linkbreakers uses when rendering downloadable QR codes, including colors, shapes, export options, and center media. QR Code Designs are the visual representation of a link. They can be attached to QR Code Templates for reusability. They can only be attached to one record at a time.

qrcodeDesignId

string

Backing QR code design that determines styling defaults (UUID)

slug

string

Slug used in public template selection URLs

tags

string

Tags for categorizing and filtering templates (comma-separated)

thumbnailPendingUpdateSince

string (date-time)

When the template thumbnail entered the regeneration queue

thumbnailSignedUrl

string

Signed thumbnail preview of the template design

updatedAt

string (date-time)

When the template metadata was last updated

usageCount

integer (int64)

Number of links in the caller's workspace that were created from this template. Drives the 'most used' ordering in the template picker.

workspaceId

string

Workspace that owns the template; empty for built-in templates (UUID when present)

[Learn moreLearn more about QR code templates in Linkbreakers](https://linkbreakers.com/help/article/whats-a-qr-code-template)

Example object

```json
{
  "builtIn": false,
  "createdAt": "2026-10-13T15:03:06.389Z",
  "description": "string",
  "duplicatedFrom": "0d7f4d9c-1aef-4ed4-821b-321a3f9cba1d",
  "faq": "string",
  "id": "0d7f4d9c-1aef-4ed4-821b-321a3f9cba1d",
  "learnMore": "string",
  "name": "string",
  "owned": false,
  "publishedAt": "2026-10-13T15:03:06.389Z",
  "qrcodeDesign": {
    "backgroundOptions": {
      "themeColor": {
        "colors": [],
        "direction": "string",
        "stops": [],
        "type": "THEME_COLOR_TYPE_UNSPECIFIED"
      }
    },
    "centralImageMargin": 0,
    "centralImageSignedUrl": "https://example.com",
    "centralImageSize": 0,
    "cornersDotOptions": {
      "themeColor": {
        "colors": [],
        "direction": "string",
        "stops": [],
        "type": "THEME_COLOR_TYPE_UNSPECIFIED"
      },
      "type": "CORNERS_DOT_TYPE_UNSPECIFIED"
    },
    "cornersSquareOptions": {
      "themeColor": {
        "colors": [],
        "direction": "string",
        "stops": [],
        "type": "THEME_COLOR_TYPE_UNSPECIFIED"
      },
      "type": "CORNERS_SQUARE_TYPE_UNSPECIFIED"
    },
    "createdAt": "2026-10-13T15:03:06.389Z",
    "dotsOptions": {
      "themeColor": {
        "colors": [],
        "direction": "string",
        "stops": [],
        "type": "THEME_COLOR_TYPE_UNSPECIFIED"
      },
      "type": "DOTS_TYPE_UNSPECIFIED"
    },
    "errorCorrectionLevel": "string",
    "height": 0,
    "hideBackgroundDots": false,
    "id": "a8c5e111-8894-4f8a-b5db-9efe0d12a210",
    "outputFileFormat": "OUTPUT_FILE_FORMAT_PNG",
    "shape": "SHAPE_SQUARE",
    "updatedAt": "2026-10-13T15:03:06.389Z",
    "width": 0
  },
  "qrcodeDesignId": "a8c5e111-8894-4f8a-b5db-9efe0d12a210",
  "slug": "string",
  "tags": "string",
  "thumbnailPendingUpdateSince": "2026-10-13T15:03:06.389Z",
  "thumbnailSignedUrl": "https://example.com",
  "updatedAt": "2026-10-13T15:03:06.389Z",
  "usageCount": 0,
  "workspaceId": "c0d3cafe-5b1e-4d42-a6fd-0c5f5c3962d0"
}
```

GET

`/v1/public/qrcode-templates`

## [#](#list-qr-code-templates)List QR code templates

Retrieve available QR code templates, optionally filtered by search terms or link destination.

### [#](#list-qr-code-templates-parameters)Parameters

#### query parameters

include

array<string>

query

Related objects to include in the response List of related objects to include. Supported values: 'workspace'

search

string

query

Search query applied to template name/description

pageSize

integer (int64)

query

Maximum number of templates to return (defaults to 20)

pageToken

string

query

Cursor token to retrieve the next page of results

workspaceId

string

query

Optional workspace ID to filter templates by workspace Filter public templates by workspace. Only published templates for that workspace will be returned.

cursor

string

query

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

### [#](#list-qr-code-templates-response)Response

200

Everything worked as expected.

hasMore

boolean

Whether another page exists after this result set

nextPageToken

string

Cursor token returned when another page is available

qrcodeTemplates

array<object>

### [#](#list-qr-code-templates-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/public/qrcode-templates?include={include}&search={search}&pageSize={pageSize}&pageToken={pageToken}&workspaceId={workspaceId}&cursor={cursor}"
```

Typical response

```json
{
  "hasMore": false,
  "nextPageToken": "eyJxdHMiOiJxdGVtcGxhdGUifQ==",
  "qrcodeTemplates": [
    {
      "builtIn": false,
      "description": "string",
      "faq": "string",
      "learnMore": "string",
      "name": "string",
      "publishedAt": "2026-10-13T15:03:06.383Z",
      "slug": "string",
      "tags": "string",
      "thumbnailSignedUrl": "https://example.com",
      "workspace": {
        "description": "string",
        "faq": "string",
        "name": "string",
        "publishedAt": "2026-10-13T15:03:06.383Z",
        "shortDescription": "string",
        "slug": "string",
        "tags": "string",
        "website": "string"
      }
    }
  ]
}
```

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

GET

`/v1/public/qrcode-templates/{slug}`

## [#](#get-a-public-qr-code-template)Get a public QR code template

Retrieve a single published QR code template that is visible in the public gallery.

### [#](#get-a-public-qr-code-template-parameters)Parameters

#### path parameters

slug

string

Required

path

#### query parameters

include

array<string>

query

Related objects to include in the response List of related objects to include. Supported values: 'workspace'

### [#](#get-a-public-qr-code-template-response)Response

200

Everything worked as expected.

builtIn

boolean

Whether the template is maintained by Linkbreakers (available to every workspace)

description

string

Short marketing description displayed in the template picker

faq

string

Frequently Asked Questions about this template stored as JSON

learnMore

string

Extended markdown-supported content providing detailed information about the template

name

string

Human-readable name shown in the gallery

publishedAt

string (date-time)

When the template was published and made available to all workspaces

slug

string

Slug used in public template selection URLs

tags

string

Tags for categorizing and filtering templates (comma-separated)

thumbnailSignedUrl

string

Signed thumbnail preview of the template design

workspace

object

PublicWorkspace represents a publicly visible workspace with limited data

### [#](#get-a-public-qr-code-template-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/public/qrcode-templates/{slug}?include={include}"
```

Typical response

```json
{
  "builtIn": false,
  "description": "string",
  "faq": "string",
  "learnMore": "string",
  "name": "string",
  "publishedAt": "2026-10-13T15:03:06.383Z",
  "slug": "string",
  "tags": "string",
  "thumbnailSignedUrl": "https://example.com",
  "workspace": {
    "description": "string",
    "faq": "string",
    "name": "string",
    "publishedAt": "2026-10-13T15:03:06.383Z",
    "shortDescription": "string",
    "slug": "string",
    "tags": "string",
    "website": "string"
  }
}
```

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

GET

`/v1/qrcode-templates`

Requires auth

## [#](#list-my-qr-code-templates)List my QR code templates

Retrieve QR code templates that belong to the authenticated caller's workspace. Requires the \`qrcodes:read\` scope.

### [#](#list-my-qr-code-templates-parameters)Parameters

#### query parameters

include

array<string>

query

search

string

query

pageSize

integer (int64)

query

pageToken

string

query

scope

string

query

Which templates to return. WORKSPACE (default) returns only templates owned by the caller's workspace. AVAILABLE also returns built-in templates and templates other workspaces have published, ordered by the workspace's own usage first, then its own templates, then the rest. templates published by other workspaces.

##### Allowed values

`QRCODE_TEMPLATE_SCOPE_UNSPECIFIED`

Defaults to QRCODE\_TEMPLATE\_SCOPE\_WORKSPACE.

`QRCODE_TEMPLATE_SCOPE_WORKSPACE`

Only templates owned by the caller's workspace.

`QRCODE_TEMPLATE_SCOPE_AVAILABLE`

Every template the workspace may use: its own, built-in ones, and

cursor

string

query

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

### [#](#list-my-qr-code-templates-response)Response

200

Everything worked as expected.

hasMore

boolean

Whether another page exists after this result set

nextPageToken

string

Cursor token returned when another page is available

qrcodeTemplates

array<object>

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-my-qr-code-templates-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/qrcode-templates?include={include}&search={search}&pageSize={pageSize}&pageToken={pageToken}&scope={scope}&cursor={cursor}" \
  -H "Authorization: Bearer YOUR_TOKEN"
```

Typical response

```json
{
  "hasMore": false,
  "nextPageToken": "eyJxdHMiOiJxdGVtcGxhdGUifQ==",
  "qrcodeTemplates": [
    {
      "builtIn": false,
      "createdAt": "2026-10-13T15:03:06.385Z",
      "description": "string",
      "duplicatedFrom": "0d7f4d9c-1aef-4ed4-821b-321a3f9cba1d",
      "faq": "string",
      "id": "0d7f4d9c-1aef-4ed4-821b-321a3f9cba1d",
      "learnMore": "string",
      "name": "string",
      "owned": false,
      "publishedAt": "2026-10-13T15:03:06.385Z",
      "qrcodeDesign": {
        "backgroundOptions": {},
        "centralImageMargin": 0,
        "centralImageSignedUrl": "https://example.com",
        "centralImageSize": 0,
        "cornersDotOptions": {},
        "cornersSquareOptions": {},
        "createdAt": "2026-10-13T15:03:06.385Z",
        "dotsOptions": {},
        "errorCorrectionLevel": "string",
        "height": 0,
        "hideBackgroundDots": false,
        "id": "a8c5e111-8894-4f8a-b5db-9efe0d12a210",
        "outputFileFormat": "OUTPUT_FILE_FORMAT_PNG",
        "shape": "SHAPE_SQUARE",
        "updatedAt": "2026-10-13T15:03:06.385Z",
        "width": 0
      },
      "qrcodeDesignId": "a8c5e111-8894-4f8a-b5db-9efe0d12a210",
      "slug": "string",
      "tags": "string",
      "thumbnailPendingUpdateSince": "2026-10-13T15:03:06.385Z",
      "thumbnailSignedUrl": "https://example.com",
      "updatedAt": "2026-10-13T15:03:06.385Z",
      "usageCount": 0,
      "workspaceId": "c0d3cafe-5b1e-4d42-a6fd-0c5f5c3962d0"
    }
  ],
  "totalCount": 0
}
```

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

GET

`/v1/qrcode-templates/{id}`

Requires auth

## [#](#get-a-workspace-qr-code-template)Get a workspace QR code template

Retrieve a QR code template that belongs to the authenticated caller's workspace. Requires the \`qrcodes:read\` scope.

### [#](#get-a-workspace-qr-code-template-parameters)Parameters

#### path parameters

id

string

Required

path

#### query parameters

include

array<string>

query

### [#](#get-a-workspace-qr-code-template-response)Response

200

Everything worked as expected.

builtIn

boolean

Whether the template is maintained by Linkbreakers (available to every workspace)

createdAt

string (date-time)

When the template was created

description

string

Short marketing description displayed in the template picker

duplicatedFrom

string

Reference to the original public template when this template was created via import. Null for original templates.

faq

string

Frequently Asked Questions about this template stored as JSON

id

string

Unique identifier of the template (UUID)

learnMore

string

Extended markdown-supported content providing detailed information about the template

name

string

Human-readable name shown in the gallery

owned

boolean

True when the template belongs to the caller's workspace. False for built-in templates and for community templates published by other workspaces.

publishedAt

string (date-time)

When the template was published. Null means private template, only visible to creating workspace.

qrcodeDesign

object

Captures the visual recipe Linkbreakers uses when rendering downloadable QR codes, including colors, shapes, export options, and center media. QR Code Designs are the visual representation of a link. They can be attached to QR Code Templates for reusability. They can only be attached to one record at a time.

qrcodeDesignId

string

Backing QR code design that determines styling defaults (UUID)

slug

string

Slug used in public template selection URLs

tags

string

Tags for categorizing and filtering templates (comma-separated)

thumbnailPendingUpdateSince

string (date-time)

When the template thumbnail entered the regeneration queue

thumbnailSignedUrl

string

Signed thumbnail preview of the template design

updatedAt

string (date-time)

When the template metadata was last updated

usageCount

integer (int64)

Number of links in the caller's workspace that were created from this template. Drives the 'most used' ordering in the template picker.

workspaceId

string

Workspace that owns the template; empty for built-in templates (UUID when present)

### [#](#get-a-workspace-qr-code-template-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/qrcode-templates/{id}?include={include}" \
  -H "Authorization: Bearer YOUR_TOKEN"
```

Typical response

```json
{
  "builtIn": false,
  "createdAt": "2026-10-13T15:03:06.386Z",
  "description": "string",
  "duplicatedFrom": "0d7f4d9c-1aef-4ed4-821b-321a3f9cba1d",
  "faq": "string",
  "id": "0d7f4d9c-1aef-4ed4-821b-321a3f9cba1d",
  "learnMore": "string",
  "name": "string",
  "owned": false,
  "publishedAt": "2026-10-13T15:03:06.386Z",
  "qrcodeDesign": {
    "backgroundOptions": {
      "themeColor": {
        "colors": [],
        "direction": "string",
        "stops": [],
        "type": "THEME_COLOR_TYPE_UNSPECIFIED"
      }
    },
    "centralImageMargin": 0,
    "centralImageSignedUrl": "https://example.com",
    "centralImageSize": 0,
    "cornersDotOptions": {
      "themeColor": {
        "colors": [],
        "direction": "string",
        "stops": [],
        "type": "THEME_COLOR_TYPE_UNSPECIFIED"
      },
      "type": "CORNERS_DOT_TYPE_UNSPECIFIED"
    },
    "cornersSquareOptions": {
      "themeColor": {
        "colors": [],
        "direction": "string",
        "stops": [],
        "type": "THEME_COLOR_TYPE_UNSPECIFIED"
      },
      "type": "CORNERS_SQUARE_TYPE_UNSPECIFIED"
    },
    "createdAt": "2026-10-13T15:03:06.386Z",
    "dotsOptions": {
      "themeColor": {
        "colors": [],
        "direction": "string",
        "stops": [],
        "type": "THEME_COLOR_TYPE_UNSPECIFIED"
      },
      "type": "DOTS_TYPE_UNSPECIFIED"
    },
    "errorCorrectionLevel": "string",
    "height": 0,
    "hideBackgroundDots": false,
    "id": "a8c5e111-8894-4f8a-b5db-9efe0d12a210",
    "outputFileFormat": "OUTPUT_FILE_FORMAT_PNG",
    "shape": "SHAPE_SQUARE",
    "updatedAt": "2026-10-13T15:03:06.386Z",
    "width": 0
  },
  "qrcodeDesignId": "a8c5e111-8894-4f8a-b5db-9efe0d12a210",
  "slug": "string",
  "tags": "string",
  "thumbnailPendingUpdateSince": "2026-10-13T15:03:06.386Z",
  "thumbnailSignedUrl": "https://example.com",
  "updatedAt": "2026-10-13T15:03:06.386Z",
  "usageCount": 0,
  "workspaceId": "c0d3cafe-5b1e-4d42-a6fd-0c5f5c3962d0"
}
```

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

POST

`/v1/qrcode-templates`

Requires auth

## [#](#create-a-new-qr-code-template)Create a new QR code template

Create a new QR code template using a fresh design. The design must not be used by any other links or templates. Requires the \`qrcodes:write\` scope.

### [#](#create-a-new-qr-code-template-parameters)Parameters

#### header parameters

Idempotency-Key

string

header

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

### [#](#create-a-new-qr-code-template-request)Request body

description

string

The description of the QR code template

faq

string

FAQ data stored as JSON

learnMore

string

Extended markdown-supported content providing detailed information about the template

name

string

The name of the QR code template

qrcodeDesignId

string

The QR code design must be a fresh design not used elsewhere to ensure template independence

tags

string

Tags for categorizing and filtering templates (comma-separated)

### [#](#create-a-new-qr-code-template-response)Response

200

Everything worked as expected.

qrcodeTemplate

object

Reusable QR code design presets that help teams create branded links with consistent styling and messaging.

### [#](#create-a-new-qr-code-template-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/qrcode-templates" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Idempotency-Key: string" \
  -H "Content-Type: application/json" \
  --data '{"description":"string","faq":"string","learnMore":"string","name":"string","qrcodeDesignId":"a8c5e111-8894-4f8a-b5db-9efe0d12a210","tags":"string"}'
```

Sample payload (application/json)

```json
{
  "description": "string",
  "faq": "string",
  "learnMore": "string",
  "name": "string",
  "qrcodeDesignId": "a8c5e111-8894-4f8a-b5db-9efe0d12a210",
  "tags": "string"
}
```

Typical response

```json
{
  "qrcodeTemplate": {
    "builtIn": false,
    "createdAt": "2026-10-13T15:03:06.385Z",
    "description": "string",
    "duplicatedFrom": "0d7f4d9c-1aef-4ed4-821b-321a3f9cba1d",
    "faq": "string",
    "id": "0d7f4d9c-1aef-4ed4-821b-321a3f9cba1d",
    "learnMore": "string",
    "name": "string",
    "owned": false,
    "publishedAt": "2026-10-13T15:03:06.385Z",
    "qrcodeDesign": {
      "backgroundOptions": {
        "themeColor": {}
      },
      "centralImageMargin": 0,
      "centralImageSignedUrl": "https://example.com",
      "centralImageSize": 0,
      "cornersDotOptions": {
        "themeColor": {},
        "type": "CORNERS_DOT_TYPE_UNSPECIFIED"
      },
      "cornersSquareOptions": {
        "themeColor": {},
        "type": "CORNERS_SQUARE_TYPE_UNSPECIFIED"
      },
      "createdAt": "2026-10-13T15:03:06.385Z",
      "dotsOptions": {
        "themeColor": {},
        "type": "DOTS_TYPE_UNSPECIFIED"
      },
      "errorCorrectionLevel": "string",
      "height": 0,
      "hideBackgroundDots": false,
      "id": "a8c5e111-8894-4f8a-b5db-9efe0d12a210",
      "outputFileFormat": "OUTPUT_FILE_FORMAT_PNG",
      "shape": "SHAPE_SQUARE",
      "updatedAt": "2026-10-13T15:03:06.385Z",
      "width": 0
    },
    "qrcodeDesignId": "a8c5e111-8894-4f8a-b5db-9efe0d12a210",
    "slug": "string",
    "tags": "string",
    "thumbnailPendingUpdateSince": "2026-10-13T15:03:06.385Z",
    "thumbnailSignedUrl": "https://example.com",
    "updatedAt": "2026-10-13T15:03:06.385Z",
    "usageCount": 0,
    "workspaceId": "c0d3cafe-5b1e-4d42-a6fd-0c5f5c3962d0"
  }
}
```

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

POST

`/v1/qrcode-templates/{id}/publish`

Requires auth

## [#](#publish-a-workspace-qr-code-template)Publish a workspace QR code template

Publish a QR code template to make it available in the public gallery. Requires workspace to be public and template to have slug, description, and name. Requires the \`qrcodes:write\` scope.

### [#](#publish-a-workspace-qr-code-template-parameters)Parameters

#### path parameters

id

string

Required

path

The ID of the QR code template to publish (UUID)

#### header parameters

Idempotency-Key

string

header

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

### [#](#publish-a-workspace-qr-code-template-request)Request body

No structured schema available for this section.

### [#](#publish-a-workspace-qr-code-template-response)Response

200

Everything worked as expected.

qrcodeTemplate

object

Reusable QR code design presets that help teams create branded links with consistent styling and messaging.

### [#](#publish-a-workspace-qr-code-template-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/qrcode-templates/{id}/publish" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Idempotency-Key: string" \
  -H "Content-Type: application/json" \
  --data '{}'
```

Sample payload (application/json)

```json
{}
```

Typical response

```json
{
  "qrcodeTemplate": {
    "builtIn": false,
    "createdAt": "2026-10-13T15:03:06.387Z",
    "description": "string",
    "duplicatedFrom": "0d7f4d9c-1aef-4ed4-821b-321a3f9cba1d",
    "faq": "string",
    "id": "0d7f4d9c-1aef-4ed4-821b-321a3f9cba1d",
    "learnMore": "string",
    "name": "string",
    "owned": false,
    "publishedAt": "2026-10-13T15:03:06.387Z",
    "qrcodeDesign": {
      "backgroundOptions": {
        "themeColor": {}
      },
      "centralImageMargin": 0,
      "centralImageSignedUrl": "https://example.com",
      "centralImageSize": 0,
      "cornersDotOptions": {
        "themeColor": {},
        "type": "CORNERS_DOT_TYPE_UNSPECIFIED"
      },
      "cornersSquareOptions": {
        "themeColor": {},
        "type": "CORNERS_SQUARE_TYPE_UNSPECIFIED"
      },
      "createdAt": "2026-10-13T15:03:06.387Z",
      "dotsOptions": {
        "themeColor": {},
        "type": "DOTS_TYPE_UNSPECIFIED"
      },
      "errorCorrectionLevel": "string",
      "height": 0,
      "hideBackgroundDots": false,
      "id": "a8c5e111-8894-4f8a-b5db-9efe0d12a210",
      "outputFileFormat": "OUTPUT_FILE_FORMAT_PNG",
      "shape": "SHAPE_SQUARE",
      "updatedAt": "2026-10-13T15:03:06.387Z",
      "width": 0
    },
    "qrcodeDesignId": "a8c5e111-8894-4f8a-b5db-9efe0d12a210",
    "slug": "string",
    "tags": "string",
    "thumbnailPendingUpdateSince": "2026-10-13T15:03:06.387Z",
    "thumbnailSignedUrl": "https://example.com",
    "updatedAt": "2026-10-13T15:03:06.387Z",
    "usageCount": 0,
    "workspaceId": "c0d3cafe-5b1e-4d42-a6fd-0c5f5c3962d0"
  }
}
```

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

POST

`/v1/qrcode-templates/images:resolve`

Requires auth

## [#](#resolve-qr-code-template-thumbnails)Resolve QR code template thumbnails

Return freshly signed thumbnail URLs for the given templates. The URLs expire, so callers fetch them when they need to render rather than storing them. Requires the \`qrcodes:read\` scope.

### [#](#resolve-qr-code-template-thumbnails-parameters)Parameters

#### header parameters

Idempotency-Key

string

header

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

### [#](#resolve-qr-code-template-thumbnails-request)Request body

templateIds

array<string>

Templates to resolve. Ids the caller cannot see are absent from the response rather than failing the batch.

### [#](#resolve-qr-code-template-thumbnails-response)Response

200

Everything worked as expected.

thumbnailSignedUrls

object

Signed thumbnail URL by template id. These expire; fetch rather than store.

### [#](#resolve-qr-code-template-thumbnails-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/qrcode-templates/images:resolve" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Idempotency-Key: string" \
  -H "Content-Type: application/json" \
  --data '{"templateIds":["string"]}'
```

Sample payload (application/json)

```json
{
  "templateIds": [
    "string"
  ]
}
```

Typical response

```json
{
  "thumbnailSignedUrls": {}
}
```

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

POST

`/v1/qrcode-templates/import`

Requires auth

## [#](#import-a-public-qr-code-template)Import a public QR code template

Import a public QR code template into your workspace by slug. Creates a private copy owned by your workspace. Requires the \`qrcodes:write\` scope.

### [#](#import-a-public-qr-code-template-parameters)Parameters

#### header parameters

Idempotency-Key

string

header

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

### [#](#import-a-public-qr-code-template-request)Request body

slug

string

The slug of the public QR code template to import into your workspace

### [#](#import-a-public-qr-code-template-response)Response

200

Everything worked as expected.

qrcodeTemplate

object

Reusable QR code design presets that help teams create branded links with consistent styling and messaging.

### [#](#import-a-public-qr-code-template-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/qrcode-templates/import" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Idempotency-Key: string" \
  -H "Content-Type: application/json" \
  --data '{"slug":"minimalist-corporate"}'
```

Sample payload (application/json)

```json
{
  "slug": "minimalist-corporate"
}
```

Typical response

```json
{
  "qrcodeTemplate": {
    "builtIn": false,
    "createdAt": "2026-10-13T15:03:06.386Z",
    "description": "string",
    "duplicatedFrom": "0d7f4d9c-1aef-4ed4-821b-321a3f9cba1d",
    "faq": "string",
    "id": "0d7f4d9c-1aef-4ed4-821b-321a3f9cba1d",
    "learnMore": "string",
    "name": "string",
    "owned": false,
    "publishedAt": "2026-10-13T15:03:06.386Z",
    "qrcodeDesign": {
      "backgroundOptions": {
        "themeColor": {}
      },
      "centralImageMargin": 0,
      "centralImageSignedUrl": "https://example.com",
      "centralImageSize": 0,
      "cornersDotOptions": {
        "themeColor": {},
        "type": "CORNERS_DOT_TYPE_UNSPECIFIED"
      },
      "cornersSquareOptions": {
        "themeColor": {},
        "type": "CORNERS_SQUARE_TYPE_UNSPECIFIED"
      },
      "createdAt": "2026-10-13T15:03:06.386Z",
      "dotsOptions": {
        "themeColor": {},
        "type": "DOTS_TYPE_UNSPECIFIED"
      },
      "errorCorrectionLevel": "string",
      "height": 0,
      "hideBackgroundDots": false,
      "id": "a8c5e111-8894-4f8a-b5db-9efe0d12a210",
      "outputFileFormat": "OUTPUT_FILE_FORMAT_PNG",
      "shape": "SHAPE_SQUARE",
      "updatedAt": "2026-10-13T15:03:06.386Z",
      "width": 0
    },
    "qrcodeDesignId": "a8c5e111-8894-4f8a-b5db-9efe0d12a210",
    "slug": "string",
    "tags": "string",
    "thumbnailPendingUpdateSince": "2026-10-13T15:03:06.386Z",
    "thumbnailSignedUrl": "https://example.com",
    "updatedAt": "2026-10-13T15:03:06.386Z",
    "usageCount": 0,
    "workspaceId": "c0d3cafe-5b1e-4d42-a6fd-0c5f5c3962d0"
  }
}
```

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

PATCH

`/v1/qrcode-templates/{id}`

Requires auth

## [#](#update-a-workspace-qr-code-template)Update a workspace QR code template

Modify the name or description of a QR code template owned by the authenticated workspace. Requires the \`qrcodes:write\` scope.

### [#](#update-a-workspace-qr-code-template-parameters)Parameters

#### path parameters

id

string

Required

path

The ID of the QR code template to update (UUID)

#### header parameters

Idempotency-Key

string

header

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

### [#](#update-a-workspace-qr-code-template-request)Request body

description

string

The new description of the QR code template

faq

string

FAQ data to update (JSON string)

learnMore

string

Extended markdown-supported content providing detailed information about the template

name

string

The new name of the QR code template

slug

string

The new slug for the QR code template (must be unique globally)

tags

string

The new tags for the QR code template (comma-separated)

### [#](#update-a-workspace-qr-code-template-response)Response

200

Everything worked as expected.

qrcodeTemplate

object

Reusable QR code design presets that help teams create branded links with consistent styling and messaging.

### [#](#update-a-workspace-qr-code-template-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/qrcode-templates/{id}" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Idempotency-Key: string" \
  -H "Content-Type: application/json" \
  --data '{"description":"string","faq":"string","learnMore":"string","name":"string","slug":"string","tags":"string"}'
```

Sample payload (application/json)

```json
{
  "description": "string",
  "faq": "string",
  "learnMore": "string",
  "name": "string",
  "slug": "string",
  "tags": "string"
}
```

Typical response

```json
{
  "qrcodeTemplate": {
    "builtIn": false,
    "createdAt": "2026-10-13T15:03:06.387Z",
    "description": "string",
    "duplicatedFrom": "0d7f4d9c-1aef-4ed4-821b-321a3f9cba1d",
    "faq": "string",
    "id": "0d7f4d9c-1aef-4ed4-821b-321a3f9cba1d",
    "learnMore": "string",
    "name": "string",
    "owned": false,
    "publishedAt": "2026-10-13T15:03:06.387Z",
    "qrcodeDesign": {
      "backgroundOptions": {
        "themeColor": {}
      },
      "centralImageMargin": 0,
      "centralImageSignedUrl": "https://example.com",
      "centralImageSize": 0,
      "cornersDotOptions": {
        "themeColor": {},
        "type": "CORNERS_DOT_TYPE_UNSPECIFIED"
      },
      "cornersSquareOptions": {
        "themeColor": {},
        "type": "CORNERS_SQUARE_TYPE_UNSPECIFIED"
      },
      "createdAt": "2026-10-13T15:03:06.387Z",
      "dotsOptions": {
        "themeColor": {},
        "type": "DOTS_TYPE_UNSPECIFIED"
      },
      "errorCorrectionLevel": "string",
      "height": 0,
      "hideBackgroundDots": false,
      "id": "a8c5e111-8894-4f8a-b5db-9efe0d12a210",
      "outputFileFormat": "OUTPUT_FILE_FORMAT_PNG",
      "shape": "SHAPE_SQUARE",
      "updatedAt": "2026-10-13T15:03:06.387Z",
      "width": 0
    },
    "qrcodeDesignId": "a8c5e111-8894-4f8a-b5db-9efe0d12a210",
    "slug": "string",
    "tags": "string",
    "thumbnailPendingUpdateSince": "2026-10-13T15:03:06.387Z",
    "thumbnailSignedUrl": "https://example.com",
    "updatedAt": "2026-10-13T15:03:06.387Z",
    "usageCount": 0,
    "workspaceId": "c0d3cafe-5b1e-4d42-a6fd-0c5f5c3962d0"
  }
}
```

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

DELETE

`/v1/qrcode-templates/{id}`

Requires auth

## [#](#delete-a-workspace-qr-code-template)Delete a workspace QR code template

Remove a QR code template belonging to the authenticated caller's workspace. Requires the \`qrcodes:write\` scope.

### [#](#delete-a-workspace-qr-code-template-parameters)Parameters

#### path parameters

id

string

Required

path

### [#](#delete-a-workspace-qr-code-template-response)Response

200

Everything worked as expected.

No structured schema available for this section.

### [#](#delete-a-workspace-qr-code-template-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 DELETE "https://api.linkbreakers.com/v1/qrcode-templates/{id}" \
  -H "Authorization: Bearer YOUR_TOKEN"
```

Typical response

```json
{}
```

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

---

Source: https://linkbreakers.com/help/api/qr-code-templates
