> ## Documentation Index
> Fetch the complete documentation index at: https://docs.getqr.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Szablony

> Zapisuj projekty kodów QR wielokrotnego użytku i stosuj je do nowych kodów QR.

> [!NOTE]
>
> API GetQR jest w wersji beta i jest dostępne dla wybranych obszarów roboczych. Szczegóły mogą się zmienić przed ogólną premierą.

Szablon przechowuje projekt wielokrotnego użytku: `styles`, `frameOptions` i `logoOptions`. Nigdy nie zawiera treści ani linku. Szablony są wspólne dla wszystkich w obszarze roboczym.

| Metoda | Ścieżka | Opis |
| - | - | - |
| `GET` | `/api/v1/templates` | [Lista szablonów](#lista-szablonów) |
| `POST` | `/api/v1/templates` | [Tworzenie szablonu](#tworzenie-szablonu) |
| `GET` | `/api/v1/templates/{templateId}` | [Odczyt szablonu](#odczyt-szablonu) |
| `PATCH` | `/api/v1/templates/{templateId}` | [Aktualizacja szablonu](#aktualizacja-szablonu) |
| `DELETE` | `/api/v1/templates/{templateId}` | [Usuwanie szablonu](#usuwanie-szablonu) |
| `POST` | `/api/v1/templates/{templateId}/duplicate` | [Duplikowanie szablonu](#duplikowanie-szablonu) |

## Stosowanie szablonu

Przekaż `templateId`, gdy [tworzysz kod QR](https://docs.getqr.com/pl/api/endpoints/qr-codes.md). Projekt szablonu zostanie zastosowany do nowego kodu QR. Każdy z trzech obiektów projektu wysłany w tym samym żądaniu jest z nim scalany i ma przed nim pierwszeństwo.

* **Kopia, a nie powiązanie.** Kod QR przechowuje własną kopię projektu. Późniejsza edycja lub usunięcie szablonu go nie zmienia.
* **Tylko projekty Custom.** Szablonu z `designKind` równym `branded` lub `ai` nie można zastosować przez API: zwraca `422` (`art_template_unsupported`).
* **Tylko Twój obszar roboczy.** Nieznany szablon lub szablon z innego obszaru roboczego zwraca `404`.

## Nagłówki

**Authorization** `string` *required*

`Bearer`, a po nim Twój klucz API. Zobacz [Uwierzytelnianie](https://docs.getqr.com/pl/api/authentication.md).

**Content-Type** `string`

`application/json`. Wymagany w żądaniach z treścią.

## Obiekt szablonu

**id** `string`

ID szablonu, np. `qrt_8Hs2mQvKpLd4RtYw`.

**name** `string`

Nazwa wyświetlana przy wyborze szablonu.

**designKind** `string`

Tylko do odczytu. `custom` to projekt, który API może w pełni edytować. `branded` i `ai` to projekt Branded lub AI utworzony w panelu: jego grafiki nie można edytować przez API i jest ona zachowywana, gdy zmieniasz pozostałe pola projektu.

**design** `object`

Zapisany projekt. Każde pole ma ten sam kształt co pole żądania o tej samej nazwie, więc możesz je odesłać.

**properties**

**styles** `object | null`

Kształty i kolory kropek oraz narożników.

**frameOptions** `object | null`

Ramka wokół kodu QR i jej tekst wezwania do działania.

**logoOptions** `object | null`

Logo na środku.

**createdAt** `string`

Data utworzenia, ISO 8601.

**updatedAt** `string`

Data ostatniej aktualizacji, ISO 8601.

## Lista szablonów

`GET /api/v1/templates`

Zwraca szablony Twojego obszaru roboczego, od najnowszych. Lista jest paginowana: zobacz [Paginacja](https://docs.getqr.com/pl/api/introduction.md#paginacja).

**page** `integer` (default: 1)

Strona do zwrócenia, 1 lub więcej.

**pageSize** `integer` (default: 100)

Liczba wyników na stronę, od 1 do 100.

```bash cURL theme={null}
curl "https://getqr.com/api/v1/templates?page=1&pageSize=100" \
  -H "Authorization: Bearer $GETQR_API_KEY"
```

```json 200 theme={null}
{
  "data": [
    {
      "id": "qrt_8Hs2mQvKpLd4RtYw",
      "name": "Brand blue",
      "designKind": "custom",
      "design": {
        "styles": {
          "dotsOptions": { "type": "rounded", "color": "#1E40AF" },
          "backgroundOptions": { "color": "#FFFFFF" }
        },
        "frameOptions": null,
        "logoOptions": null
      },
      "createdAt": "2026-07-20T09:12:00.000Z",
      "updatedAt": "2026-07-20T09:12:00.000Z"
    }
  ],
  "pagination": { "page": 1, "pageSize": 100, "total": 1, "hasMore": false }
}
```

## Tworzenie szablonu

`POST /api/v1/templates`

Zapisuje nowy projekt. Odpowiada `201 Created`. Pola projektu są sprawdzane względem katalogów z przewodnika [Personalizacja](https://docs.getqr.com/pl/api/guides/customization.md), więc nieznany kształt, ramka lub logo są odrzucane z kodem `422`.

**name** `string` *required*

Nazwa wyświetlana przy wyborze szablonu, od 1 do 40 znaków.

**styles** `object`

Kształty i kolory kropek oraz narożników. Zobacz [Personalizacja](https://docs.getqr.com/pl/api/guides/customization.md).

**frameOptions** `object`

Ramka wokół kodu QR i jej tekst wezwania do działania. Zobacz [Personalizacja](https://docs.getqr.com/pl/api/guides/customization.md).

**logoOptions** `object`

Logo umieszczone na środku: sugerowane logo albo własny plik przesłany z celem `logo` przez [Pliki](https://docs.getqr.com/pl/api/endpoints/files.md). Zobacz [Personalizacja](https://docs.getqr.com/pl/api/guides/customization.md).

```bash cURL theme={null}
curl -X POST "https://getqr.com/api/v1/templates" \
  -H "Authorization: Bearer $GETQR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Brand blue",
    "styles": {
      "dotsOptions": { "type": "rounded", "color": "#1E40AF" },
      "backgroundOptions": { "color": "#FFFFFF" }
    }
  }'
```

```json 201 theme={null}
{
  "id": "qrt_8Hs2mQvKpLd4RtYw",
  "name": "Brand blue",
  "designKind": "custom",
  "design": {
    "styles": {
      "dotsOptions": { "type": "rounded", "color": "#1E40AF" },
      "backgroundOptions": { "color": "#FFFFFF" }
    },
    "frameOptions": null,
    "logoOptions": null
  },
  "createdAt": "2026-07-20T09:12:00.000Z",
  "updatedAt": "2026-07-20T09:12:00.000Z"
}
```

## Odczyt szablonu

`GET /api/v1/templates/{templateId}`

**templateId** `string` *required*

ID szablonu. Weź je z odpowiedzi listy lub tworzenia.

```bash cURL theme={null}
curl "https://getqr.com/api/v1/templates/qrt_8Hs2mQvKpLd4RtYw" \
  -H "Authorization: Bearer $GETQR_API_KEY"
```

```json 200 theme={null}
{
  "id": "qrt_8Hs2mQvKpLd4RtYw",
  "name": "Brand blue",
  "designKind": "custom",
  "design": {
    "styles": {
      "dotsOptions": { "type": "rounded", "color": "#1E40AF" },
      "backgroundOptions": { "color": "#FFFFFF" }
    },
    "frameOptions": null,
    "logoOptions": null
  },
  "createdAt": "2026-07-20T09:12:00.000Z",
  "updatedAt": "2026-07-20T09:12:00.000Z"
}
```

## Aktualizacja szablonu

`PATCH /api/v1/templates/{templateId}`

Wysyłaj tylko pola, które chcesz zmienić. Obiekty projektu są scalane z zapisanym projektem, więc częściowe `styles` zachowuje resztę. Kody QR już utworzone z szablonu zachowują projekt, z którym powstały.

**templateId** `string` *required*

ID szablonu.

**name** `string`

Nowa nazwa, od 1 do 40 znaków.

**styles** `object`

Zmiany stylu, scalane z zapisanymi `styles`.

**frameOptions** `object`

Zmiany ramki, scalane z zapisaną ramką.

**logoOptions** `object`

Zmiany logo, scalane z zapisanym logo.

```bash cURL theme={null}
curl -X PATCH "https://getqr.com/api/v1/templates/qrt_8Hs2mQvKpLd4RtYw" \
  -H "Authorization: Bearer $GETQR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "name": "Brand blue (2026)" }'
```

```json 200 theme={null}
{
  "id": "qrt_8Hs2mQvKpLd4RtYw",
  "name": "Brand blue (2026)",
  "designKind": "custom",
  "design": {
    "styles": {
      "dotsOptions": { "type": "rounded", "color": "#1E40AF" },
      "backgroundOptions": { "color": "#FFFFFF" }
    },
    "frameOptions": null,
    "logoOptions": null
  },
  "createdAt": "2026-07-20T09:12:00.000Z",
  "updatedAt": "2026-08-14T09:00:00.000Z"
}
```

## Usuwanie szablonu

`DELETE /api/v1/templates/{templateId}`

Usuwa szablon. Kody QR utworzone z niego zachowują swój projekt.

**templateId** `string` *required*

ID szablonu.

```bash cURL theme={null}
curl -X DELETE "https://getqr.com/api/v1/templates/qrt_8Hs2mQvKpLd4RtYw" \
  -H "Authorization: Bearer $GETQR_API_KEY"
```

```json 200 theme={null}
{ "id": "qrt_8Hs2mQvKpLd4RtYw", "deleted": true }
```

## Duplikowanie szablonu

`POST /api/v1/templates/{templateId}/duplicate`

Tworzy kopię o nazwie `<name> copy`, z własnym ID i niezależnym projektem, który możesz dowolnie edytować. Nie przyjmuje treści żądania. Odpowiada `201 Created`.

**templateId** `string` *required*

ID szablonu do skopiowania.

```bash cURL theme={null}
curl -X POST "https://getqr.com/api/v1/templates/qrt_8Hs2mQvKpLd4RtYw/duplicate" \
  -H "Authorization: Bearer $GETQR_API_KEY"
```

```json 201 theme={null}
{
  "id": "qrt_2Kd9pLm4Xs7BnVcQ",
  "name": "Brand blue copy",
  "designKind": "custom",
  "design": {
    "styles": {
      "dotsOptions": { "type": "rounded", "color": "#1E40AF" },
      "backgroundOptions": { "color": "#FFFFFF" }
    },
    "frameOptions": null,
    "logoOptions": null
  },
  "createdAt": "2026-08-14T09:30:00.000Z",
  "updatedAt": "2026-08-14T09:30:00.000Z"
}
```

## Typowe problemy

> [accordion] 404 "QR template not found."
>
> `templateId` nie odpowiada żadnemu szablonowi w Twoim obszarze roboczym. Weź je z [listy szablonów](#lista-szablonów).

> [accordion] 422 przy tworzeniu lub aktualizacji szablonu
>
> Pole projektu nie pasuje do katalogów, np. nieznany typ kropek, ramka lub sugerowane logo. Komunikat wskazuje pole. Zobacz [Personalizacja](https://docs.getqr.com/pl/api/guides/customization.md).

> [accordion] 422 art\_template\_unsupported przy tworzeniu kodu QR
>
> Szablon używa projektu Branded lub AI. Zastosuj zamiast niego szablon z `designKind` równym `custom`.

## Co dalej

> [card] [Personalizacja](https://docs.getqr.com/pl/api/guides/customization.md)

> [card] [Kody QR](https://docs.getqr.com/pl/api/endpoints/qr-codes.md)

> [card] [Szablony w aplikacji](https://docs.getqr.com/pl/templates/save-template.md)

> [card] [Pliki](https://docs.getqr.com/pl/api/endpoints/files.md)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.