> ## 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.

# Kody QR

> Twórz, wyświetlaj, aktualizuj, wstrzymuj, duplikuj, usuwaj i pobieraj kody 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ą.

Kod QR w GetQR to obraz plus krótki link, przez który kod prowadzi do celu. Utworzenie kodu QR tworzy też jego krótki link, więc możesz później zmienić cel bez ponownego drukowania kodu.

| Metoda | Ścieżka | Opis |
| - | - | - |
| `GET` | `/api/v1/qrs` | [Lista kodów QR](#lista-kodów-qr) |
| `POST` | `/api/v1/qrs` | [Tworzenie kodu QR](#tworzenie-kodu-qr) |
| `GET` | `/api/v1/qrs/{qrId}` | [Odczyt kodu QR](#odczyt-kodu-qr) |
| `PATCH` | `/api/v1/qrs/{qrId}` | [Aktualizacja kodu QR](#aktualizacja-kodu-qr) |
| `PUT` | `/api/v1/qrs/{qrId}` | [Ustawianie stanu wstrzymania](#ustawianie-stanu-wstrzymania) |
| `POST` | `/api/v1/qrs/{qrId}/pause` | [Wstrzymanie kodu QR](#wstrzymanie-kodu-qr) |
| `POST` | `/api/v1/qrs/{qrId}/activate` | [Ponowna aktywacja kodu QR](#ponowna-aktywacja-kodu-qr) |
| `POST` | `/api/v1/qrs/{qrId}/duplicate` | [Duplikowanie kodu QR](#duplikowanie-kodu-qr) |
| `DELETE` | `/api/v1/qrs/{qrId}` | [Usuwanie kodu QR](#usuwanie-kodu-qr) |
| `GET` | `/api/v1/qrs/{qrId}/download` | [Pobieranie obrazu kodu QR](#pobieranie-obrazu-kodu-qr) |

> [card] [Dane kodu QR według typu](https://docs.getqr.com/pl/api/guides/qr-types.md)
>
> Format `data` dla każdego z 16 typów.

> [card] [Personalizacja](https://docs.getqr.com/pl/api/guides/customization.md)
>
> Style kropek, kolory, ramki i logo.

> [card] [Reguły dostępu](https://docs.getqr.com/pl/api/guides/access-rules.md)
>
> Harmonogram, limit skanowań i hasło.

Statystyki skanowań kodu QR znajdziesz w sekcji [Analityka](https://docs.getqr.com/pl/api/endpoints/analytics.md).

## Obiekt kodu QR

Każdy endpoint kodów QR odpowiada tym obiektem, z wyjątkiem [usuwania](#usuwanie-kodu-qr) i [pobierania obrazu](#pobieranie-obrazu-kodu-qr). Lista zwraca tablicę takich obiektów.

**id** `string`

Unikalne ID kodu QR, np. `qr_1EPcVfeHZAY2iNoVLsgW2Aqf`.

**qrType** `string`

Typ kodu QR, np. `website`. Wszystkie 16 wartości opisuje strona [Dane kodu QR według typu](https://docs.getqr.com/pl/api/guides/qr-types.md).

**title** `string | null`

Nazwa kodu QR wyświetlana w panelu.

**description** `string | null`

Dowolna notatka o kodzie QR.

**data** `string`

Zapisane dane. Dla `wifi`, `vcard`, `social`, `multilink`, `event` i `sms` są to dane, które wysłałeś. Dla każdego innego typu jest to krótki link, więc cel odczytuj z `url`.

**archived** `boolean`

`true`, gdy kod QR jest wstrzymany.

**isStatic** `boolean`

`true` dla statycznego kodu QR utworzonego w panelu, który nie ma krótkiego linku. API zawsze tworzy dynamiczne kody QR.

**shortLink** `string | null`

Pełny krótki link, np. `https://getqr.sh/x7Kd2p1`.

**domain** `string | null`

Domena krótkiego linku.

**key** `string | null`

Slug krótkiego linku.

**keyIsCustom** `boolean`

`true`, gdy slug został wybrany, a nie wygenerowany.

**url** `string | null`

Cel, do którego przekierowuje krótki link.

**ios** `string | null`

Cel dla odwiedzających z iOS, w kodach QR typu `app`.

**android** `string | null`

Cel dla odwiedzających z Androidem, w kodach QR typu `app`.

**scans** `integer`

Łączna liczba skanowań.

**access** `object`

Reguły dostępu. Samo hasło nigdy nie jest zwracane. Zobacz [Reguły dostępu](https://docs.getqr.com/pl/api/guides/access-rules.md).

**properties**

**passwordProtected** `boolean`

Czy odwiedzający muszą wpisać hasło.

**activeAt** `string | null`

Zaplanowany początek, ISO 8601.

**pauseAt** `string | null`

Zaplanowany koniec, ISO 8601.

**scanLimit** `integer | null`

Maksymalna liczba skanowań.

**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. API nie może edytować jego grafiki, ale zachowuje ją, gdy zmieniasz inne pola.

**design** `object`

Zapisany projekt: `styles`, `frameOptions` i `logoOptions`, każdy jako obiekt lub `null`. Mają ten sam kształt co pola żądania, więc możesz je odesłać. Zobacz [Personalizacja](https://docs.getqr.com/pl/api/guides/customization.md).

**file** `object | null`

Plik kodu QR typu `pdf`, `image` lub `video`: `id`, `name` i `size` w bajtach.

**appName** `string | null`

Tylko do odczytu. Wyświetlana nazwa kodu QR typu `app` utworzonego w panelu.

**pdfBundle** `object | null`

Tylko do odczytu. Kod QR typu `pdf` z kilkoma plikami, utworzony w panelu: `title`, `layout` i `files`.

**imageGallery** `object | null`

Tylko do odczytu. Kod QR typu `image` z kilkoma obrazami, utworzony w panelu: `title`, `layout` i `files`.

**createdAt** `string`

Data utworzenia, ISO 8601.

**updatedAt** `string`

Data ostatniej aktualizacji, ISO 8601.

Dane poufne i wewnętrzne ID (`password`, `userId`, `workspaceId`, `projectId`) nigdy nie są zwracane.

```json theme={null}
{
  "id": "qr_1EPcVfeHZAY2iNoVLsgW2Aqf",
  "qrType": "website",
  "title": "Landing page",
  "description": null,
  "data": "https://getqr.sh/x7Kd2p1",
  "archived": false,
  "isStatic": false,
  "shortLink": "https://getqr.sh/x7Kd2p1",
  "domain": "getqr.sh",
  "key": "x7Kd2p1",
  "keyIsCustom": false,
  "url": "https://example.com",
  "ios": null,
  "android": null,
  "scans": 128,
  "access": {
    "passwordProtected": false,
    "activeAt": null,
    "pauseAt": null,
    "scanLimit": null
  },
  "designKind": "custom",
  "design": {
    "styles": { "dotsOptions": { "type": "rounded", "color": "#1E40AF" }, … },
    "frameOptions": { "id": "card", "text": "Scan me!", … },
    "logoOptions": { "type": "suggested", "id": "logo-website-3", "scalePercent": 25 }
  },
  "file": null,
  "appName": null,
  "pdfBundle": null,
  "imageGallery": null,
  "createdAt": "2026-08-01T10:00:00.000Z",
  "updatedAt": "2026-08-01T10:00:00.000Z"
}
```

## Lista kodów QR

`GET /api/v1/qrs`

Zwraca kody QR z Twojego obszaru roboczego, po jednej stronie naraz.

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

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

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

Liczba kodów QR na stronę, od 1 do 100. Większa wartość jest odrzucana.

**search** `string`

Dopasowuje tytuł kodu QR. Zapytania dłuższe niż 2 znaki dopasowują też zapisane `data`. W typach z linkiem zapisane `data` to krótki link, więc adresów docelowych nie da się wyszukać.

**sortBy** `string` (default: createdAt)

Pole sortowania: `createdAt`, `updatedAt`, `clicks` (łączna liczba skanowań), `lastClicked` (ostatnie skanowanie) lub `type`. `type` zawsze sortuje malejąco i ignoruje `sortOrder`.

**sortOrder** `string` (default: desc)

Kierunek sortowania: `asc` lub `desc`.

**showArchived** `boolean` (default: false)

Uwzględnia wstrzymane kody QR.

**onlyArchived** `boolean` (default: false)

Zwraca tylko wstrzymane kody QR. Ma pierwszeństwo przed `showArchived`.

Parametry logiczne przyjmują ciągi `true` lub `false`. Pobieraj kolejną stronę, dopóki `pagination.hasMore` ma wartość `true`. Zobacz [Paginacja](https://docs.getqr.com/pl/api/introduction.md#paginacja).

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

```json 200 theme={null}
{
  "data": [
    {
      "id": "qr_1EPcVfeHZAY2iNoVLsgW2Aqf",
      "qrType": "website",
      "title": "Landing page",
      "shortLink": "https://getqr.sh/x7Kd2p1",
      "url": "https://example.com",
      "scans": 128,
      "…": "…"
    }
  ],
  "pagination": { "page": 1, "pageSize": 100, "total": 1, "hasMore": false }
}
```

## Tworzenie kodu QR

`POST /api/v1/qrs`

Tworzy kod QR razem z jego krótkim linkiem. Odpowiada `201 Created` z nowym [kodem QR](#obiekt-kodu-qr).

**Idempotency-Key** `string`

Twój własny token ponowień. Powtórzenie żądania z tym samym kluczem w ciągu 24 godzin zwraca pierwotną odpowiedź zamiast tworzyć drugi kod QR. Zobacz [Ponowienia i duplikaty](#ponowienia-i-duplikaty).

**qrType** `string` *required*

Co koduje kod QR. Określa też format, w jakim musi być `data`. Jedna z wartości: `website`, `pdf`, `image`, `video`, `whatsapp`, `social`, `wifi`, `app`, `feedback`, `vcard`, `sms`, `payment`, `location`, `multilink`, `email`, `event`.

**data** `string` *required*

Dane danego typu, sprawdzane względem `qrType`. Pusty ciąg pomija sprawdzenie. Format każdego typu opisuje strona [Dane kodu QR według typu](https://docs.getqr.com/pl/api/guides/qr-types.md).

**link** `object`

Krótki link, przez który kod QR prowadzi do celu. Opcjonalny: gdy go pominiesz, `link.url` przyjmuje wartość `data`.

**properties**

**url** `string`

Cel, do którego przekierowuje krótki link. Gdy jest pominięty lub pusty, domyślnie przyjmuje wartość `data`. Gdy wyślesz oba i się różnią, wygrywa `link.url`. Kody QR `vcard`, `social`, `multilink` i `event` zawsze wskazują swoją hostowaną stronę, a kody QR `pdf`, `image` i `video` z `fileId` wskazują plik. Akceptowane schematy: `http:`, `https:`, `wifi:`, `mailto:`, `sms:`, `begin:`.

**domain** `string`

Domena krótkiego linku. Musi to być aktywna domena Twojego obszaru roboczego: inna domena dostaje `403`, a domena, która nie jest jeszcze aktywna, dostaje `422`. Domyślnie domena domyślna obszaru roboczego.

**key** `string`

Slug krótkiego linku, od 3 do 15 znaków, zapisywany małymi literami. Niedozwolony slug dostaje `422`, a zajęty dostaje `409`. Gdy go pominiesz, generowany jest losowy slug z 7 znaków.

**ios** `string | null`

Docelowy adres URL dla odwiedzających z iOS, w kodach QR typu `app`.

**android** `string | null`

Docelowy adres URL dla odwiedzających z Androidem, w kodach QR typu `app`.

**title** `string | null`

Tytuł podglądu linku (`og:title`) zapisywany w krótkim linku. To coś innego niż własne `title` kodu QR. Na razie nic go nie wyświetla.

**description** `string | null`

Opis podglądu linku (`og:description`) zapisywany w krótkim linku. Na razie nic go nie wyświetla.

**expiresAt, expiredUrl** `—`

Niedostępne w tym API: wysłanie któregokolwiek z nich zwraca `422`. Aby zatrzymać kod QR o określonym czasie, użyj `access.pauseAt`.

**title** `string`

Nazwa kodu QR wyświetlana w panelu. Po przycięciu spacji od 1 do 40 znaków. Gdy ją pominiesz, kod QR nie ma tytułu.

**description** `string`

Dowolna notatka o kodzie QR. Do 280 znaków.

**fileId** `string`

Plik kodu QR typu `pdf`, `image` lub `video`, przesłany z odpowiadającym mu celem (target). Dla `vcard`, `social` i `multilink` opcjonalne zdjęcie profilowe przesłane z celem `logo`. `event` też go przyjmuje, ale jego strona odczytuje okładkę z `data.fileId`. Inne typy dostają `422`. Najpierw prześlij plik przez [Pliki](https://docs.getqr.com/pl/api/endpoints/files.md). Zobacz [Pliki w kodach QR](https://docs.getqr.com/pl/api/guides/qr-types.md#pliki-w-kodach-qr).

**templateId** `string`

[Szablon](https://docs.getqr.com/pl/api/endpoints/templates.md), którego projekt zostanie zastosowany do nowego kodu QR. Wysłane pola projektu są z nim scalane i mają przed nim pierwszeństwo. Szablon z projektem Branded lub AI dostaje `422` (`art_template_unsupported`). Nieznany szablon lub szablon z innego obszaru roboczego dostaje `404`.

**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 na środku: sugerowane logo albo własny plik przesłany z celem `logo`. Nieznany plik, niedokończone przesyłanie lub plik z innym celem są odrzucane. Zobacz [Personalizacja](https://docs.getqr.com/pl/api/guides/customization.md).

**access** `object`

Harmonogram, limit skanowań i ochrona hasłem. Zobacz [Reguły dostępu](https://docs.getqr.com/pl/api/guides/access-rules.md).

**properties**

**activeAt** `string | null`

Zaplanowany początek, ISO 8601.

**pauseAt** `string | null`

Zaplanowany koniec, ISO 8601.

**scanLimit** `integer | null`

Maksymalna liczba skanowań, dodatnia liczba całkowita.

**password** `string | null`

Hasło, które muszą wpisać odwiedzający. Wysłanie go włącza ochronę.

**passwordProtected** `boolean`

Wyłącza lub ponownie włącza ochronę, zachowując zapisane hasło.

**archived** `boolean`

Czy kod QR jest wstrzymany. `true` tworzy go jako wstrzymany: skanowania pokazują stronę wstrzymania zamiast celu.

Nieznane pola są pomijane bez błędu. Zobacz [Nieobsługiwane przez API](https://docs.getqr.com/pl/api/guides/qr-types.md#nieobsługiwane-przez-api).

```bash cURL theme={null}
curl -X POST "https://getqr.com/api/v1/qrs" \
  -H "Authorization: Bearer $GETQR_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: landing-page-2026-08" \
  -d '{
    "qrType": "website",
    "data": "https://example.com",
    "title": "Landing page",
    "access": { "scanLimit": 500 }
  }'
```

```json 201 theme={null}
{
  "id": "qr_1EPcVfeHZAY2iNoVLsgW2Aqf",
  "qrType": "website",
  "title": "Landing page",
  "data": "https://getqr.sh/x7Kd2p1",
  "shortLink": "https://getqr.sh/x7Kd2p1",
  "url": "https://example.com",
  "scans": 0,
  "access": { "passwordProtected": false, "activeAt": null, "pauseAt": null, "scanLimit": 500 },
  "…": "…"
}
```

### Ponowienia i duplikaty

* **Z kluczem.** Z nagłówkiem `Idempotency-Key` odpowiedź jest odtwarzana przez 24 godziny.
* **Bez klucza.** Identyczna treść wysłana w ciągu 30 sekund jest traktowana jako duplikat.
* **Odtworzenia.** Odtworzenie zwraca zapisaną odpowiedź z `x-idempotent-replay: true`. Nowy kod QR zwraca `false`.
* **W toku.** Drugie żądanie wysłane, gdy pierwsze wciąż trwa, dostaje `409 conflict`.
* **Niepowodzenia.** Nieudane utworzenie od razu zwalnia klucz, więc możesz ponowić żądanie z tym samym kluczem.
* **Bez gwarancji.** Jeśli zabezpieczenie jest niedostępne, utworzenia przechodzą bez ochrony.

Zobacz też [Idempotentność](https://docs.getqr.com/pl/api/introduction.md#idempotentność).

## Odczyt kodu QR

`GET /api/v1/qrs/{qrId}`

Zwraca [kod QR](#obiekt-kodu-qr) z jego krótkim linkiem, regułami dostępu, projektem oraz, w typach opartych na plikach, plikiem.

**qrId** `string` *required*

ID kodu QR z odpowiedzi listy lub tworzenia.

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

Odpowiedzią jest pełny [obiekt kodu QR](#obiekt-kodu-qr).

## Aktualizacja kodu QR

`PATCH /api/v1/qrs/{qrId}`

Zmienia treść, cel, projekt lub reguły dostępu kodu QR. Wysyłaj tylko pola, które chcesz zmienić. Odpowiada zaktualizowanym [kodem QR](#obiekt-kodu-qr).

**qrId** `string` *required*

ID kodu QR.

Treść żądania przyjmuje te same pola co [tworzenie kodu QR](#tworzenie-kodu-qr), wszystkie opcjonalne, z tymi różnicami:

* **`templateId`.** Nieakceptowane.
* **`link`.** Częściowe. Gdy pominiesz `link.url`, obecny cel zostaje zachowany. `link.domain` i `link.key` dostają `422`: krótki link jest tym, co koduje wydrukowany kod, więc aby użyć innego, utwórz nowy kod QR.
* **`data`.** Sprawdzane względem wynikowego typu tylko wtedy, gdy zmienia się `data` lub `qrType`. Zmiana `qrType` bez pasującego `data` jest odrzucana. Zobacz [Zmiana typu](https://docs.getqr.com/pl/api/guides/qr-types.md#zmiana-typu).
* **Projekt.** `styles`, `frameOptions` i `logoOptions` są scalane z zapisanym projektem, więc częściowy obiekt zmienia tylko to, co zawiera. Wybranie innego logo zastępuje je, ale zachowuje jego rozmiar.
* **`access`.** Każdy klucz jest stosowany, gdy jest obecny. `null` usuwa regułę. Reguły dostępu należą do `access`: wysłanie ich w `link` zwraca `422`.
* **`archived`.** Wstrzymuje lub ponownie aktywuje kod QR razem z jego krótkim linkiem, tak jak [wstrzymanie](#wstrzymanie-kodu-qr) i [ponowna aktywacja](#ponowna-aktywacja-kodu-qr).

```bash cURL theme={null}
curl -X PATCH "https://getqr.com/api/v1/qrs/qr_1EPcVfeHZAY2iNoVLsgW2Aqf" \
  -H "Authorization: Bearer $GETQR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "title": "Autumn campaign",
    "access": { "password": "s3cr3t", "passwordProtected": true }
  }'
```

```json 200 theme={null}
{
  "id": "qr_1EPcVfeHZAY2iNoVLsgW2Aqf",
  "title": "Autumn campaign",
  "access": { "passwordProtected": true, "activeAt": null, "pauseAt": null, "scanLimit": null },
  "…": "…"
}
```

Co można zmienić po wydruku w każdym typie, opisuje strona [Dane kodu QR według typu](https://docs.getqr.com/pl/api/guides/qr-types.md).

## Ustawianie stanu wstrzymania

`PUT /api/v1/qrs/{qrId}`

Bezpośrednio ustawia stan wstrzymania. [Wstrzymanie](#wstrzymanie-kodu-qr) i [ponowna aktywacja](#ponowna-aktywacja-kodu-qr) robią to samo i są czytelniejsze.

**qrId** `string` *required*

ID kodu QR.

**archived** `boolean` *required*

`true`, aby wstrzymać kod QR, `false`, aby go ponownie aktywować.

```bash cURL theme={null}
curl -X PUT "https://getqr.com/api/v1/qrs/qr_1EPcVfeHZAY2iNoVLsgW2Aqf" \
  -H "Authorization: Bearer $GETQR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "archived": true }'
```

```json 200 theme={null}
{
  "id": "qr_1EPcVfeHZAY2iNoVLsgW2Aqf",
  "archived": true,
  "…": "…"
}
```

## Wstrzymanie kodu QR

`POST /api/v1/qrs/{qrId}/pause`

Sprawia, że kod QR przestaje prowadzić do celu: skanowania pokazują zamiast tego stronę wstrzymania. Wydrukowany kod i jego krótki link pozostają ważne. Bez treści żądania.

**qrId** `string` *required*

ID kodu QR.

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

```json 200 theme={null}
{
  "id": "qr_1EPcVfeHZAY2iNoVLsgW2Aqf",
  "archived": true,
  "…": "…"
}
```

## Ponowna aktywacja kodu QR

`POST /api/v1/qrs/{qrId}/activate`

Sprawia, że wstrzymany kod QR znowu prowadzi do celu. Harmonogram i limit skanowań nadal obowiązują. Bez treści żądania.

**qrId** `string` *required*

ID kodu QR.

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

```json 200 theme={null}
{
  "id": "qr_1EPcVfeHZAY2iNoVLsgW2Aqf",
  "archived": false,
  "…": "…"
}
```

## Duplikowanie kodu QR

`POST /api/v1/qrs/{qrId}/duplicate`

Tworzy kopię z tą samą treścią i projektem. Bez treści żądania. Odpowiada `201 Created` z nowym [kodem QR](#obiekt-kodu-qr).

**qrId** `string` *required*

ID kodu QR do skopiowania.

* **Krótki link.** Kopia dostaje własny krótki link z losowym slugiem w domenie domyślnej obszaru roboczego, a nie w domenie oryginału. Jej skanowania są liczone osobno.
* **Tytuł.** Tytuł dostaje przyrostek ` (Copy)`. Wynik mieści się w 40 znakach: długi tytuł jest najpierw skracany. Kod QR bez tytułu pozostaje bez tytułu.
* **Niekopiowane.** Reguły dostępu (hasło, harmonogram, limit skanowań) i stan wstrzymania. Kopia jest zawsze aktywna.
* **Pliki.** Pliki PDF i obrazy, w tym pliki pakietów i galerii, są kopiowane, więc kopia jest ich właścicielem. Pliki wideo i pliki projektu, takie jak logo, są współdzielone z oryginałem.

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

```json 201 theme={null}
{
  "id": "qr_7Hk2PqWmX9cTnV4sLbR8YdZe",
  "title": "Landing page (Copy)",
  "shortLink": "https://getqr.sh/p2Wq9dL",
  "url": "https://example.com",
  "archived": false,
  "scans": 0,
  "…": "…"
}
```

## Usuwanie kodu QR

`DELETE /api/v1/qrs/{qrId}`

Usuwa kod QR i jego krótki link. Odpowiada ID usuniętego kodu.

> [!WARNING]
>
> Usunięcie jest trwałe. Wydrukowany kod i jego krótki link przestają działać, a historia skanowań staje się niedostępna. Jeśli kod może się jeszcze przydać, lepiej go [wstrzymaj](#wstrzymanie-kodu-qr).

**qrId** `string` *required*

ID kodu QR.

**id** `string`

ID usuniętego kodu QR.

**deleted** `boolean`

Zawsze `true`.

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

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

## Pobieranie obrazu kodu QR

`GET /api/v1/qrs/{qrId}/download`

Renderuje kod QR z jego projektem i zwraca plik.

**qrId** `string` *required*

ID kodu QR do wyrenderowania, z odpowiedzi listy lub tworzenia.

**format** `string` (default: jpg)

Format wyjściowy: `jpg`, `png`, `svg`, `pdf` (strona A4) lub `eps`. Projekt Branded lub AI można pobrać tylko jako `jpg`, `png` lub `pdf`.

**resolution** `integer` (default: 1024)

Rozmiar obrazu w pikselach: `1024`, `2048` lub `4096`. `svg` i `pdf` go ignorują. Projekt Branded lub AI można pobrać tylko w rozdzielczości `1024`.

| `format` | `Content-Type` | Nazwa pliku |
| - | - | - |
| `jpg` | `image/jpeg` | `<title>-<resolution>px.jpg` |
| `png` | `image/png` | `<title>-<resolution>px.png` |
| `svg` | `image/svg+xml` | `<title>.svg` |
| `pdf` | `application/pdf` | `<title>.pdf` |
| `eps` | `application/postscript` | `<title>-<resolution>px.eps` |

* **Treść.** Treścią odpowiedzi jest plik. Sugerowana nazwa pliku znajduje się w nagłówku `Content-Disposition` i jest tworzona z tytułu albo jako `qr-code` dla kodu QR bez tytułu.
* **Buforowanie.** Odpowiedzi zawierają `ETag` i `Cache-Control: private, max-age=3600, must-revalidate`. Odeślij `ETag` w `If-None-Match`, aby otrzymać `304 Not Modified`, gdy kod QR się nie zmienił.
* **Błędy.** Nieobsługiwany format lub rozdzielczość dostaje `400 bad_request`. Komunikat błędu podaje przyczynę: `qr_download_invalid_format`, `qr_download_invalid_resolution`, `qr_download_art_format_unsupported` lub `qr_download_art_resolution_unsupported`.

```bash cURL theme={null}
curl "https://getqr.com/api/v1/qrs/qr_1EPcVfeHZAY2iNoVLsgW2Aqf/download?format=png&resolution=1024" \
  -H "Authorization: Bearer $GETQR_API_KEY" \
  --output qr-code.png
```

```http 200 theme={null}
HTTP/1.1 200 OK
Content-Type: image/png
Content-Disposition: attachment; filename="landing-page-1024px.png"
ETag: "9f2c0e1b5a7d43c8b016e2f4a9d5c3718be40f92"
Cache-Control: private, max-age=3600, must-revalidate

<binary image data>
```

## Reguły dostępu

Wyślij obiekt `access` przy tworzeniu lub aktualizacji, aby zaplanować początek i koniec, ograniczyć liczbę skanowań lub wymagać hasła. Pominięte reguły pozostają bez zmian, a `null` usuwa regułę. Pełny opis działania z przykładami znajdziesz w przewodniku [Reguły dostępu](https://docs.getqr.com/pl/api/guides/access-rules.md).

## Obiekty projektu

`styles`, `frameOptions` i `logoOptions` ustawiają kształty kropek i narożników, kolory, ramkę i logo. Działają tak samo w kodach QR, [szablonach](https://docs.getqr.com/pl/api/endpoints/templates.md) i [masowym tworzeniu](https://docs.getqr.com/pl/api/endpoints/bulk-qr-creations.md). Nieznane kształty, ramki lub logo są odrzucane. Wszystkie akceptowane wartości i pełny przykład znajdziesz w przewodniku [Personalizacja](https://docs.getqr.com/pl/api/guides/customization.md).

## Typowe problemy

> [accordion] 422 przy ustawianiu hasła, harmonogramu lub limitu skanowań
>
> Wyślij regułę w `access`, a nie w `link`.

> [accordion] 422 przy zmianie link.domain lub link.key
>
> Krótkiego linku nie można zmienić po utworzeniu, ponieważ koduje go wydrukowany kod. Zamiast tego utwórz nowy kod QR.

> [accordion] 422 "Expected … for qrType"
>
> `data` nie pasuje do formatu `qrType`. Sprawdź typ na stronie [Dane kodu QR według typu](https://docs.getqr.com/pl/api/guides/qr-types.md).

> [accordion] 409 conflict przy tworzeniu kodu QR
>
> Identyczne tworzenie wciąż trwa albo `link.key` jest zajęty. Ponów żądanie, gdy pierwsze się zakończy. Z `Idempotency-Key` ponowienie zwraca pierwotny kod QR.

> [accordion] Pobrany plik to JPEG, a nie PNG
>
> Parametry to `format` i `resolution`, a `format` ma domyślnie wartość `jpg`. Wyślij `format=png`.

> [accordion] 404 dla kodu QR, który widzę w panelu
>
> Każde żądanie jest wykonywane w obszarze roboczym Twojego klucza API. Sprawdź, czy kod QR do niego należy. Zobacz [Uwierzytelnianie](https://docs.getqr.com/pl/api/authentication.md).

## Co dalej

> [card] [Dane kodu QR według typu](https://docs.getqr.com/pl/api/guides/qr-types.md)

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

> [card] [Reguły dostępu](https://docs.getqr.com/pl/api/guides/access-rules.md)

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


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