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

# QR kódy

> Vytvářejte, vypisujte, upravujte, pozastavujte, duplikujte, mažte a stahujte QR kódy.

> [!NOTE]
>
> GetQR API je v beta verzi a je dostupné pro vybrané pracovní prostory. Do obecného vydání se podrobnosti mohou změnit.

QR kód v GetQR tvoří obrázek a krátký odkaz, přes který se vyhodnocuje. Při vytvoření QR kódu vznikne i jeho krátký odkaz, takže cíl můžete později změnit, aniž byste kód znovu tiskli.

| Metoda | Cesta | Popis |
| - | - | - |
| `GET` | `/api/v1/qrs` | [Výpis QR kódů](#výpis-qr-kódů) |
| `POST` | `/api/v1/qrs` | [Vytvoření QR kódu](#vytvoření-qr-kódu) |
| `GET` | `/api/v1/qrs/{qrId}` | [Získání QR kódu](#získání-qr-kódu) |
| `PATCH` | `/api/v1/qrs/{qrId}` | [Úprava QR kódu](#úprava-qr-kódu) |
| `PUT` | `/api/v1/qrs/{qrId}` | [Nastavení stavu pozastavení](#nastavení-stavu-pozastavení) |
| `POST` | `/api/v1/qrs/{qrId}/pause` | [Pozastavení QR kódu](#pozastavení-qr-kódu) |
| `POST` | `/api/v1/qrs/{qrId}/activate` | [Opětovná aktivace QR kódu](#opětovná-aktivace-qr-kódu) |
| `POST` | `/api/v1/qrs/{qrId}/duplicate` | [Duplikace QR kódu](#duplikace-qr-kódu) |
| `DELETE` | `/api/v1/qrs/{qrId}` | [Smazání QR kódu](#smazání-qr-kódu) |
| `GET` | `/api/v1/qrs/{qrId}/download` | [Stažení obrázku QR kódu](#stažení-obrázku-qr-kódu) |

> [card] [Data QR kódu podle typu](https://docs.getqr.com/cs/api/guides/qr-types.md)
>
> Formát `data` pro každý ze 16 typů.

> [card] [Přizpůsobení](https://docs.getqr.com/cs/api/guides/customization.md)
>
> Styly bodů, barvy, rámečky a loga.

> [card] [Pravidla přístupu](https://docs.getqr.com/cs/api/guides/access-rules.md)
>
> Plán, limit skenování a heslo.

Statistiky skenování QR kódu najdete v části [Analytika](https://docs.getqr.com/cs/api/endpoints/analytics.md).

## Objekt QR kódu

Tímto objektem odpovídá každý endpoint QR kódů kromě [smazání](#smazání-qr-kódu) a [stažení](#stažení-obrázku-qr-kódu). Výpis vrací jejich pole.

**id** `string`

Jedinečné ID QR kódu, například `qr_1EPcVfeHZAY2iNoVLsgW2Aqf`.

**qrType** `string`

Typ QR kódu, například `website`. Všech 16 hodnot najdete v části [Data QR kódu podle typu](https://docs.getqr.com/cs/api/guides/qr-types.md).

**title** `string | null`

Název QR kódu zobrazený v dashboardu.

**description** `string | null`

Volná poznámka ke QR kódu.

**data** `string`

Uložený obsah. U `wifi`, `vcard`, `social`, `multilink`, `event` a `sms` je to obsah, který jste poslali. U všech ostatních typů je to krátký odkaz, takže cíl čtěte z `url`.

**archived** `boolean`

`true`, když je QR kód pozastavený.

**isStatic** `boolean`

`true` u statického QR kódu vytvořeného v dashboardu, který nemá krátký odkaz. API vždy vytváří dynamické QR kódy.

**shortLink** `string | null`

Celý krátký odkaz, například `https://getqr.sh/x7Kd2p1`.

**domain** `string | null`

Doména krátkého odkazu.

**key** `string | null`

Slug krátkého odkazu.

**keyIsCustom** `boolean`

`true`, když byl slug zvolen, a ne vygenerován.

**url** `string | null`

Cíl, na který krátký odkaz přesměruje.

**ios** `string | null`

Cíl pro návštěvníky s iOS, u QR kódů `app`.

**android** `string | null`

Cíl pro návštěvníky s Androidem, u QR kódů `app`.

**scans** `integer`

Celkový počet skenování.

**access** `object`

Pravidla přístupu. Samotné heslo se nikdy nevrací. Viz [Pravidla přístupu](https://docs.getqr.com/cs/api/guides/access-rules.md).

**properties**

**passwordProtected** `boolean`

Zda musí návštěvníci zadat heslo.

**activeAt** `string | null`

Plánovaný začátek, ISO 8601.

**pauseAt** `string | null`

Plánovaný konec, ISO 8601.

**scanLimit** `integer | null`

Maximální počet skenování.

**designKind** `string`

Jen pro čtení. `custom` je design, který API může plně upravovat. `branded` a `ai` jsou design Branded nebo AI vytvořený v dashboardu. API nemůže upravit jeho obrázek, ale při změně ostatních polí ho zachová.

**design** `object`

Uložený design: `styles`, `frameOptions` a `logoOptions`, každé jako objekt nebo `null`. Mají stejný tvar jako pole požadavku, takže je můžete poslat zpět. Viz [Přizpůsobení](https://docs.getqr.com/cs/api/guides/customization.md).

**file** `object | null`

Soubor QR kódu `pdf`, `image` nebo `video`: `id`, `name` a `size` v bajtech.

**appName** `string | null`

Jen pro čtení. Zobrazovaný název QR kódu `app` vytvořeného v dashboardu.

**pdfBundle** `object | null`

Jen pro čtení. QR kód `pdf` s více soubory vytvořený v dashboardu: `title`, `layout` a `files`.

**imageGallery** `object | null`

Jen pro čtení. QR kód `image` s více obrázky vytvořený v dashboardu: `title`, `layout` a `files`.

**createdAt** `string`

Datum vytvoření, ISO 8601.

**updatedAt** `string`

Datum poslední úpravy, ISO 8601.

Tajné údaje a interní ID (`password`, `userId`, `workspaceId`, `projectId`) se nikdy nevracejí.

```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"
}
```

## Výpis QR kódů

`GET /api/v1/qrs`

Vrací QR kódy ve vašem pracovním prostoru po stránkách.

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

Stránka, která se má vrátit, 1 nebo více.

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

Počet QR kódů na stránku, od 1 do 100. Větší hodnota se odmítne.

**search** `string`

Hledá v názvu QR kódu. Dotazy delší než 2 znaky hledají i v uloženém `data`. U typů s odkazem je v uloženém `data` krátký odkaz, takže cílové URL vyhledat nelze.

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

Pole pro řazení: `createdAt`, `updatedAt`, `clicks` (celkový počet skenování), `lastClicked` (poslední skenování) nebo `type`. `type` řadí vždy sestupně a ignoruje `sortOrder`.

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

Směr řazení: `asc` nebo `desc`.

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

Zahrne pozastavené QR kódy.

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

Vrátí jen pozastavené QR kódy. Má přednost před `showArchived`.

Logické parametry přijímají řetězce `true` nebo `false`. Dokud je `pagination.hasMore` rovno `true`, vyžádejte si další stránku. Viz [Stránkování](https://docs.getqr.com/cs/api/introduction.md#stránkování).

```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 }
}
```

## Vytvoření QR kódu

`POST /api/v1/qrs`

Vytvoří QR kód spolu s jeho krátkým odkazem. Odpoví `201 Created` s novým [QR kódem](#objekt-qr-kódu).

**Idempotency-Key** `string`

Váš vlastní token pro opakování. Zopakování požadavku se stejným klíčem do 24 hodin vrátí původní odpověď místo vytvoření druhého QR kódu. Viz [Opakování a duplicity](#opakování-a-duplicity).

**qrType** `string` *required*

Co QR kód kóduje. Určuje také formát, ve kterém musí být `data`. Jedna z hodnot `website`, `pdf`, `image`, `video`, `whatsapp`, `social`, `wifi`, `app`, `feedback`, `vcard`, `sms`, `payment`, `location`, `multilink`, `email`, `event`.

**data** `string` *required*

Obsah daného typu, ověřovaný podle `qrType`. Prázdný řetězec kontrolu přeskočí. Formát každého typu najdete v části [Data QR kódu podle typu](https://docs.getqr.com/cs/api/guides/qr-types.md).

**link** `object`

Krátký odkaz, přes který se QR kód vyhodnocuje. Nepovinné: pokud ho vynecháte, `link.url` se řídí podle `data`.

**properties**

**url** `string`

Cíl, na který krátký odkaz přesměruje. Pokud ho vynecháte nebo necháte prázdný, výchozí hodnota je `data`. Když pošlete obojí a hodnoty se liší, má přednost `link.url`. QR kódy `vcard`, `social`, `multilink` a `event` vždy vedou na svou hostovanou stránku a QR kódy `pdf`, `image` a `video` s `fileId` na soubor. Přijímaná schémata: `http:`, `https:`, `wifi:`, `mailto:`, `sms:`, `begin:`.

**domain** `string`

Doména krátkého odkazu. Musí to být aktivní doména vašeho pracovního prostoru: jiná doména vrátí `403` a doména, která ještě není aktivní, vrátí `422`. Výchozí je výchozí doména pracovního prostoru.

**key** `string`

Slug krátkého odkazu, 3 až 15 znaků, ukládá se malými písmeny. Nepovolený slug vrátí `422` a obsazený vrátí `409`. Pokud ho vynecháte, vygeneruje se náhodný slug o 7 znacích.

**ios** `string | null`

Cílová URL pro návštěvníky s iOS, u QR kódů `app`.

**android** `string | null`

Cílová URL pro návštěvníky s Androidem, u QR kódů `app`.

**title** `string | null`

Titulek náhledu odkazu (`og:title`), uložený u krátkého odkazu. Liší se od vlastního `title` QR kódu. Zatím ho nic nezobrazuje.

**description** `string | null`

Popis náhledu odkazu (`og:description`), uložený u krátkého odkazu. Zatím ho nic nezobrazuje.

**expiresAt, expiredUrl** `—`

V tomto API nejsou k dispozici: odeslání kteréhokoli z nich vrátí `422`. K zastavení QR kódu v určitý čas použijte `access.pauseAt`.

**title** `string`

Název QR kódu zobrazený v dashboardu. Ořízne se, 1 až 40 znaků. Pokud ho vynecháte, QR kód zůstane bez názvu.

**description** `string`

Volná poznámka ke QR kódu. Nejvýše 280 znaků.

**fileId** `string`

Soubor QR kódu `pdf`, `image` nebo `video`, nahraný s odpovídajícím cílem. U `vcard`, `social` a `multilink` volitelný profilový obrázek nahraný s cílem `logo`. `event` ho přijímá také, ale jeho stránka čte titulní obrázek z `data.fileId`. Ostatní typy vrátí `422`. Soubor nejprve nahrajte přes [Soubory](https://docs.getqr.com/cs/api/endpoints/files.md). Viz [Soubory v QR kódech](https://docs.getqr.com/cs/api/guides/qr-types.md#soubory-v-qr-kódech).

**templateId** `string`

[Šablona](https://docs.getqr.com/cs/api/endpoints/templates.md), jejíž design se použije pro nový QR kód. Pole designu, která pošlete, se s ní sloučí a mají přednost. Šablona s designem Branded nebo AI vrátí `422` (`art_template_unsupported`). Neznámá šablona nebo šablona z jiného pracovního prostoru vrátí `404`.

**styles** `object`

Tvary a barvy bodů a rohů. Viz [Přizpůsobení](https://docs.getqr.com/cs/api/guides/customization.md).

**frameOptions** `object`

Rámeček kolem QR kódu a text jeho výzvy k akci. Viz [Přizpůsobení](https://docs.getqr.com/cs/api/guides/customization.md).

**logoOptions** `object`

Logo uprostřed: navrhované logo nebo vlastní soubor nahraný s cílem `logo`. Neznámý soubor, nedokončené nahrání nebo soubor z jiného cíle se odmítne. Viz [Přizpůsobení](https://docs.getqr.com/cs/api/guides/customization.md).

**access** `object`

Plán, limit skenování a ochrana heslem. Viz [Pravidla přístupu](https://docs.getqr.com/cs/api/guides/access-rules.md).

**properties**

**activeAt** `string | null`

Plánovaný začátek, ISO 8601.

**pauseAt** `string | null`

Plánovaný konec, ISO 8601.

**scanLimit** `integer | null`

Maximální počet skenování, kladné celé číslo.

**password** `string | null`

Heslo, které musí návštěvníci zadat. Jeho odesláním se zapne ochrana.

**passwordProtected** `boolean`

Vypne nebo znovu zapne ochranu a zachová uložené heslo.

**archived** `boolean`

Zda je QR kód pozastavený. `true` ho vytvoří pozastavený: skenování zobrazí stránku pozastavení místo cíle.

Neznámá pole se bez chyby zahodí. Viz [Nepodporováno přes API](https://docs.getqr.com/cs/api/guides/qr-types.md#nepodporováno-přes-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 },
  "…": "…"
}
```

### Opakování a duplicity

* **S klíčem.** S hlavičkou `Idempotency-Key` se odpověď 24 hodin přehrává znovu.
* **Bez klíče.** Stejné tělo odeslané do 30 sekund se považuje za duplicitu.
* **Přehrání.** Přehraná odpověď vrátí uloženou odpověď s `x-idempotent-replay: true`. Nový QR kód vrátí `false`.
* **Probíhající požadavek.** Druhý požadavek, zatímco první ještě běží, dostane `409 conflict`.
* **Selhání.** Neúspěšné vytvoření klíč okamžitě uvolní, takže to můžete zkusit znovu se stejným klíčem.
* **Bez záruky.** Pokud ochrana není dostupná, vytvoření proběhne bez ní.

Viz také [Idempotence](https://docs.getqr.com/cs/api/introduction.md#idempotence).

## Získání QR kódu

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

Vrátí [QR kód](#objekt-qr-kódu) s jeho krátkým odkazem, pravidly přístupu, designem a u typů se souborem i s jeho souborem.

**qrId** `string` *required*

ID QR kódu z odpovědi výpisu nebo vytvoření.

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

Odpovědí je úplný [objekt QR kódu](#objekt-qr-kódu).

## Úprava QR kódu

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

Změní obsah, cíl, design nebo pravidla přístupu QR kódu. Pošlete jen pole, která chcete změnit. Odpoví aktualizovaným [QR kódem](#objekt-qr-kódu).

**qrId** `string` *required*

ID QR kódu.

Tělo přijímá stejná pole jako [vytvoření QR kódu](#vytvoření-qr-kódu), všechna nepovinná, s těmito rozdíly:

* **`templateId`.** Nepřijímá se.
* **`link`.** Částečný. Pokud vynecháte `link.url`, aktuální cíl zůstane zachován. `link.domain` a `link.key` vrátí `422`: vytištěný kód kóduje právě krátký odkaz, takže pro jiný odkaz vytvořte nový QR kód.
* **`data`.** Ověřuje se podle výsledného typu, jen když se změní `data` nebo `qrType`. Změna `qrType` bez odpovídajících `data` se odmítne. Viz [Změna typu](https://docs.getqr.com/cs/api/guides/qr-types.md#změna-typu).
* **Design.** `styles`, `frameOptions` a `logoOptions` se sloučí s uloženým designem, takže částečný objekt změní jen to, co uvádí. Výběr jiného loga ho nahradí, ale zachová jeho velikost.
* **`access`.** Každý klíč se použije, pokud je uveden. `null` pravidlo zruší. Pravidla přístupu patří do `access`: jejich odeslání v `link` vrátí `422`.
* **`archived`.** Pozastaví nebo znovu aktivuje QR kód i jeho krátký odkaz najednou, stejně jako [pozastavení](#pozastavení-qr-kódu) a [opětovná aktivace](#opětovná-aktivace-qr-kódu).

```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 lze u jednotlivých typů po vytištění změnit, najdete v části [Data QR kódu podle typu](https://docs.getqr.com/cs/api/guides/qr-types.md).

## Nastavení stavu pozastavení

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

Přímo nastaví stav pozastavení. [Pozastavení](#pozastavení-qr-kódu) a [opětovná aktivace](#opětovná-aktivace-qr-kódu) dělají totéž a jsou přehlednější.

**qrId** `string` *required*

ID QR kódu.

**archived** `boolean` *required*

`true` QR kód pozastaví, `false` ho znovu aktivuje.

```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,
  "…": "…"
}
```

## Pozastavení QR kódu

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

QR kód přestane vést na svůj cíl: skenování místo toho zobrazí stránku pozastavení. Vytištěný kód i jeho krátký odkaz zůstávají platné. Bez těla požadavku.

**qrId** `string` *required*

ID QR kódu.

```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,
  "…": "…"
}
```

## Opětovná aktivace QR kódu

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

Pozastavený QR kód znovu povede na svůj cíl. Plán i limit skenování stále platí. Bez těla požadavku.

**qrId** `string` *required*

ID QR kódu.

```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,
  "…": "…"
}
```

## Duplikace QR kódu

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

Vytvoří kopii se stejným obsahem a designem. Bez těla požadavku. Odpoví `201 Created` s novým [QR kódem](#objekt-qr-kódu).

**qrId** `string` *required*

ID QR kódu, který se má zkopírovat.

* **Krátký odkaz.** Kopie dostane vlastní krátký odkaz s náhodným slugem na výchozí doméně pracovního prostoru, ne na doméně zdroje. Její skenování se počítají zvlášť.
* **Název.** K názvu se přidá přípona ` (Copy)`. Výsledek nepřesáhne 40 znaků: dlouhý název se nejdřív zkrátí. QR kód bez názvu zůstane bez názvu.
* **Nekopíruje se.** Pravidla přístupu (heslo, plán, limit skenování) a stav pozastavení. Kopie je vždy aktivní.
* **Soubory.** Soubory PDF a obrázků, včetně souborů balíčků a galerií, se zkopírují, takže je kopie vlastní. Videa a soubory designu, například loga, sdílí se zdrojem.

```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,
  "…": "…"
}
```

## Smazání QR kódu

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

Smaže QR kód i jeho krátký odkaz. Odpoví ID smazaného kódu.

> [!WARNING]
>
> Smazání je trvalé. Vytištěný kód i jeho krátký odkaz přestanou fungovat a historie skenování už nebude dostupná. Pokud budete QR kód možná ještě potřebovat, raději ho [pozastavte](#pozastavení-qr-kódu).

**qrId** `string` *required*

ID QR kódu.

**id** `string`

ID smazaného QR kódu.

**deleted** `boolean`

Vždy `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 }
```

## Stažení obrázku QR kódu

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

Vykreslí QR kód s jeho designem a vrátí soubor.

**qrId** `string` *required*

ID QR kódu, který se má vykreslit, z odpovědi výpisu nebo vytvoření.

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

Výstupní formát: `jpg`, `png`, `svg`, `pdf` (stránka A4) nebo `eps`. Design Branded nebo AI lze stáhnout jen jako `jpg`, `png` nebo `pdf`.

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

Velikost obrázku v pixelech: `1024`, `2048` nebo `4096`. `svg` a `pdf` ji ignorují. Design Branded nebo AI lze stáhnout jen v rozlišení `1024`.

| `format` | `Content-Type` | Název souboru |
| - | - | - |
| `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` |

* **Tělo.** Tělem odpovědi je soubor. Navržený název souboru je v hlavičce `Content-Disposition` a tvoří se z názvu QR kódu, u QR kódu bez názvu je to `qr-code`.
* **Mezipaměť.** Odpovědi obsahují `ETag` a `Cache-Control: private, max-age=3600, must-revalidate`. Pošlete `ETag` zpět v `If-None-Match` a když se QR kód nezměnil, dostanete `304 Not Modified`.
* **Chyby.** Nepodporovaný formát nebo rozlišení vrátí `400 bad_request`. Chybová zpráva uvádí důvod: `qr_download_invalid_format`, `qr_download_invalid_resolution`, `qr_download_art_format_unsupported` nebo `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>
```

## Pravidla přístupu

Při vytvoření nebo úpravě pošlete objekt `access`, abyste naplánovali začátek a konec, omezili počet skenování nebo vyžadovali heslo. Vynechaná pravidla zůstanou beze změny a `null` pravidlo zruší. Úplné chování s příklady najdete v části [Pravidla přístupu](https://docs.getqr.com/cs/api/guides/access-rules.md).

## Objekty designu

`styles`, `frameOptions` a `logoOptions` nastavují tvary bodů a rohů, barvy, rámeček a logo. Fungují stejně u QR kódů, [šablon](https://docs.getqr.com/cs/api/endpoints/templates.md) i [hromadného vytváření](https://docs.getqr.com/cs/api/endpoints/bulk-qr-creations.md). Neznámé tvary, rámečky nebo loga se odmítnou. Všechny přijímané hodnoty a ukázkový příklad najdete v části [Přizpůsobení](https://docs.getqr.com/cs/api/guides/customization.md).

## Časté problémy

> [accordion] 422 při nastavení hesla, plánu nebo limitu skenování
>
> Pravidlo pošlete v `access`, ne v `link`.

> [accordion] 422 při změně link.domain nebo link.key
>
> Krátký odkaz nelze po vytvoření změnit, protože ho vytištěný kód kóduje. Místo toho vytvořte nový QR kód.

> [accordion] 422 "Expected … for qrType"
>
> `data` neodpovídá formátu `qrType`. Zkontrolujte typ v části [Data QR kódu podle typu](https://docs.getqr.com/cs/api/guides/qr-types.md).

> [accordion] 409 conflict při vytváření QR kódu
>
> Stejné vytvoření ještě probíhá, nebo je `link.key` obsazený. Zkuste to znovu, až první požadavek doběhne. S `Idempotency-Key` vrátí opakovaný pokus původní QR kód.

> [accordion] Stažený soubor je JPEG, ne PNG
>
> Parametry jsou `format` a `resolution` a výchozí hodnota `format` je `jpg`. Pošlete `format=png`.

> [accordion] 404 u QR kódu, který vidím v dashboardu
>
> Každý požadavek se provádí v pracovním prostoru vašeho API klíče. Ověřte, že QR kód do něj patří. Viz [Ověřování](https://docs.getqr.com/cs/api/authentication.md).

## Co dál

> [card] [Data QR kódu podle typu](https://docs.getqr.com/cs/api/guides/qr-types.md)

> [card] [Přizpůsobení](https://docs.getqr.com/cs/api/guides/customization.md)

> [card] [Pravidla přístupu](https://docs.getqr.com/cs/api/guides/access-rules.md)

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


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