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

# Dane kodu QR według typu

> Format danych, przykładowe żądanie i możliwość zmian po wydruku dla każdego z 16 typów 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ą.

Każdy kod QR ma `qrType`, a typ określa, co musi zawierać `data`. Ten przewodnik opisuje format każdego typu, działającą treść żądania i to, co możesz zmienić po wydrukowaniu kodu.

Przykłady to treści żądań dla [tworzenia kodu QR](https://docs.getqr.com/pl/api/endpoints/qr-codes.md#tworzenie-kodu-qr). Wysyłaj je tak:

```bash theme={null}
curl -X POST "https://getqr.com/api/v1/qrs" \
  -H "Authorization: Bearer $GETQR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "qrType": "website", "data": "https://example.com/menu", "title": "Menu" }'
```

## Wszystkie typy w skrócie

| `qrType` | `data` | Edytowalny po wydruku |
| - | - | - |
| [`website`](#website) | Adres URL http(s) | Tak |
| [`feedback`](#feedback) | Adres URL http(s) formularza | Tak |
| [`payment`](#payment) | Adres URL dostawcy płatności | Tak |
| [`whatsapp`](#whatsapp) | Link `wa.me` | Tak |
| [`location`](#location) | Adres URL mapy | Tak |
| [`app`](#app-link) | Adres URL sklepu lub pusty, plus `link.ios` / `link.android` | Tak |
| [`email`](#email) | URI `mailto:` | Tak |
| [`sms`](#sms) | URI `sms:` | Tak |
| [`wifi`](#wifi) | Dane `WIFI:` | **Nie** |
| [`pdf`, `image`, `video`](#pdf-image-i-video) | Puste, z `fileId` | Tak |
| [`vcard`](#vcard) | Tekst vCard 3.0 | Tak |
| [`social`](#social-media) | Ciąg JSON | Tak |
| [`multilink`](#multi-link) | Ciąg JSON | Tak |
| [`event`](#event) | Ciąg JSON | Tak |

## Jak rozwiązywany jest kod QR

Każdy kod QR to krótki link plus dane. Treść przenoszą dwa pola:

| Pole | Czym jest |
| - | - |
| `link.url` | Dokąd krótki link kieruje odwiedzającego. To rzeczywisty cel dla wszystkich typów oprócz `wifi`. |
| `data` | Dane danego typu, sprawdzane względem `qrType`. W niezmienionej postaci są zapisywane tylko dla `wifi`, `vcard`, `social`, `multilink`, `event` i `sms`. W każdym innym typie służą jedynie do ustawienia `link.url`, a jako `data` zapisywany jest krótki link. Cel odczytuj z `url` w odpowiedzi. |

Reguły dla wszystkich typów:

* **Wartości domyślne.** Przy tworzeniu pominięty lub pusty `link.url` przyjmuje wartość `data`, a cały obiekt `link` można pominąć. Gdy wyślesz oba i się różnią, wygrywa `link.url`. Wysyłaj je z tą samą wartością albo wyślij tylko `data`.
* **Co koduje obraz.** We wszystkich typach oprócz `wifi` obraz koduje krótki link. Dzięki temu możesz zmienić, dokąd prowadzi wydrukowany kod, a jego skanowania są śledzone. Kod QR WiFi koduje samą sieć: po wydrukowaniu nie da się go zmienić, a jego skanowania nie są śledzone.
* **Schematy.** `link.url` przyjmuje tylko `http:`, `https:`, `wifi:`, `mailto:`, `sms:` i `begin:`. Wszystko inne, w tym `geo:`, `smsto:`, `matmsg:` i `tel:`, dostaje `422 Invalid destination URL`, nawet jeśli `data` to przyjmuje.
* **Puste dane.** Puste `data` pomija sprawdzenie typu. Dla typu z przekierowaniem trzeba wtedy ustawić `link.url`, inaczej wywołanie dostaje `400 Missing destination URL`.
* **Struktura.** Poza sprawdzeniem typu serwer nie waliduje danych. Typ JSON musi jedynie dać się sparsować jako obiekt JSON, a vCard musi tylko zaczynać się od `BEGIN:VCARD`.

> [!TIP]
>
> Limity oznaczone poniżej jako **Kreator** egzekwuje kreator w panelu. API przyjmuje dane, które ich nie spełniają, ale mogą one wyglądać dziwnie na stronie docelowej lub w kreatorze.

## Website

`qrType`: `"website"`. Przewodnik po panelu: [Kod QR Website](https://docs.getqr.com/pl/qr-types/website.md).

| Pole | Działanie |
| - | - |
| `data` | Adres URL http(s). |
| `link.url` | Cel. Domyślnie `data`. |
| `fileId` | Niedozwolone. |
| Koduje | Krótki link, który przekierowuje do `link.url`. Skanowania są śledzone. |
| Po wydruku | Edytowalny. Wyślij `data` lub `link.url`, aby zmienić cel. Samo `data` wystarczy. |

```json Request body theme={null}
{
  "qrType": "website",
  "data": "https://example.com/menu",
  "title": "Menu"
}
```

Błędy:

* `422 Expected an http(s) URL, e.g. "https://example.com" for qrType "website".`
* `422 Invalid destination URL`

## Feedback

`qrType`: `"feedback"`. Przewodnik po panelu: [Kod QR Feedback](https://docs.getqr.com/pl/qr-types/feedback.md).

`data` to adres URL http(s) formularza opinii, np. Google Form lub strony z recenzjami. Wszystko inne działa jak w typie [Website](#website).

```json Request body theme={null}
{
  "qrType": "feedback",
  "data": "https://forms.gle/abc123"
}
```

## Payment

`qrType`: `"payment"`. Przewodnik po panelu: [Kod QR Payment](https://docs.getqr.com/pl/qr-types/payment.md).

`data` to adres URL płatności u dostawcy, np.:

```text theme={null}
https://paypal.me/<user>/25EUR
```

Kreator w panelu rozpoznaje te hosty: `paypal.me`, `paypal.com/paypalme`, `cash.app`, `venmo.com`, `buy.stripe.com`, `stripe.com`, `square.link` i `payoneer.com`. W przypadku PayPal kwota jest ostatnim segmentem ścieżki. Działa też każdy inny adres URL http(s), ale kreator nie rozdzieli go na dostawcę i kwotę. Wszystko inne działa jak w typie [Website](#website).

```json Request body theme={null}
{
  "qrType": "payment",
  "data": "https://paypal.me/acme/25EUR"
}
```

## WhatsApp

`qrType`: `"whatsapp"`. Przewodnik po panelu: [Kod QR WhatsApp](https://docs.getqr.com/pl/qr-types/whatsapp.md).

`data` to link `wa.me`: numer międzynarodowy w cyfrach bez `+`, opcjonalnie ze wstępnie wypełnionym tekstem.

```text theme={null}
https://wa.me/<digits>
https://wa.me/<digits>?text=<urlencoded>
```

Serwer sprawdza tylko, czy to adres URL http(s). Panel odczytuje też linki `api.whatsapp.com/send`. Wszystko inne działa jak w typie [Website](#website).

```json Request body theme={null}
{
  "qrType": "whatsapp",
  "data": "https://wa.me/14155550123?text=Hi%20there"
}
```

## Location

`qrType`: `"location"`. Przewodnik po panelu: [Kod QR Location](https://docs.getqr.com/pl/qr-types/location.md).

`data` to adres URL mapy. Użyj tego formatu, aby kod QR dało się edytować w panelu (`query_place_id` jest opcjonalny):

```text theme={null}
https://www.google.com/maps/search/?api=1&query=<address>&query_place_coords=<lat>,<lng>&query_place_id=<id>
```

Każdy inny adres URL http(s) też przekierowuje. URI `geo:` przechodzi sprawdzenie `data`, ale jest odrzucany jako cel, więc go nie używaj. Wszystko inne działa jak w typie [Website](#website).

```json Request body theme={null}
{
  "qrType": "location",
  "data": "https://www.google.com/maps/search/?api=1&query=Golden+Gate+Bridge&query_place_coords=37.8199,-122.4783"
}
```

## App Link

`qrType`: `"app"`. Przewodnik po panelu: [Kod QR App Link](https://docs.getqr.com/pl/qr-types/app-link.md).

| Pole | Działanie |
| - | - |
| `link.ios`, `link.android` | Adresy URL w App Store i Google Play. Odwiedzający z iOS trafiają do `ios`, a z Androida do `android`. Przy skanowaniu mają one pierwszeństwo przed wszystkim innym. |
| `link.url` | Cel zastępczy dla innych urządzeń. Domyślnie `data`, a następnie `ios` lub `android`. |
| `data` | Adres URL http(s) (panel wysyła adres URL sklepu) lub pusty. Musi być ustawione co najmniej jedno z `link.ios`, `link.android`, `link.url` lub `data`, inaczej wywołanie dostaje `400 Missing destination URL`. |
| `fileId` | Niedozwolone. |
| Koduje | Krótki link. Skanowania są śledzone. |
| Po wydruku | Edytowalny. `link.ios` i `link.android` są stosowane niezależnie, każde tylko wtedy, gdy je wyślesz. `null` czyści wartość. Nie musisz ponownie wysyłać `qrType`. Zmiana na inny typ czyści oba linki do sklepów. |

```json Request body theme={null}
{
  "qrType": "app",
  "data": "https://apps.apple.com/app/id123456789",
  "link": {
    "ios": "https://apps.apple.com/app/id123456789",
    "android": "https://play.google.com/store/apps/details?id=com.acme.app"
  }
}
```

Błędy:

* `422 Invalid URL`
* `400 Missing destination URL`

## Email

`qrType`: `"email"`. Przewodnik po panelu: [Kod QR Email](https://docs.getqr.com/pl/qr-types/email.md).

```text theme={null}
mailto:<address>?subject=<subject>&body=<body>
```

| Pole | Działanie |
| - | - |
| `data` | URI `mailto:` z opcjonalnym tematem i treścią. Spacje koduj jako `%20`: panel zapisuje je jako `+`, czego nie każdy program pocztowy odczytuje jako spację. `matmsg:` jest odrzucany jako cel. |
| `link.url` | URI `mailto:`. Domyślnie `data`. |
| `fileId` | Niedozwolone. |
| Koduje | Krótki link, który otwiera stronę przekazującą wiadomość do aplikacji pocztowej. |
| Po wydruku | Edytowalny. Wyślij `data` lub `link.url`, aby zmienić wiadomość. Samo `data` wystarczy. |

```json Request body theme={null}
{
  "qrType": "email",
  "data": "mailto:hi@example.com?subject=Hello&body=Hi%20there"
}
```

Błędy:

* `422 Expected a mailto URI, e.g. "mailto:hi@example.com?subject=Hello" for qrType "email".`

## SMS

`qrType`: `"sms"`. Przewodnik po panelu: [Kod QR SMS](https://docs.getqr.com/pl/qr-types/sms.md).

```text theme={null}
sms:+<digits>
sms:+<digits>?body=<encodeURIComponent(text)>
```

| Pole | Działanie |
| - | - |
| `data` | URI `sms:` z opcjonalną treścią. Panel odczytuje tylko dokładnie tę postać. `smsto:` jest odrzucany jako cel. |
| `link.url` | URI `sms:`. Domyślnie `data`. |
| `fileId` | Niedozwolone. |
| Koduje | Krótki link, który otwiera stronę przekazującą wiadomość do aplikacji do wiadomości. |
| Po wydruku | Edytowalny. Wyślij `data` lub `link.url`, aby zmienić wiadomość. Samo `data` wystarczy. |

```json Request body theme={null}
{
  "qrType": "sms",
  "data": "sms:+14155550123?body=Table%2012"
}
```

Błędy:

* `422 Expected an SMS URI, e.g. "sms:+14155550123?body=Hello" for qrType "sms".`

## WiFi

`qrType`: `"wifi"`. Przewodnik po panelu: [Kod QR WiFi](https://docs.getqr.com/pl/qr-types/wifi.md).

```text theme={null}
WIFI:T:<WPA|WEP|nopass>;S:<ssid>;P:<password>;H:<true|false>;;
```

| Pole | Działanie |
| - | - |
| `data` | Wymagane. Zachowaj kolejność `T`, `S`, `P`, `H`: zależą od niej kreator i lista w panelu. W SSID i haśle poprzedzaj ukośnikiem wstecznym znaki `\`, `;`, `"` i `:`. Dla sieci otwartej użyj `T:nopass` z pustym `P:`. Skanery odrzucają `T:none`. **Kreator:** SSID wymagany, hasło co najmniej 8 znaków, chyba że `nopass`. |
| `link.url` | Nieużywany przy skanowaniu. Domyślnie `data`. |
| `fileId` | Niedozwolone. |
| Koduje | Surowe dane `WIFI:`, a nie krótki link. Skanowania nie są śledzone. |
| Po wydruku | **Nieedytowalny.** Nowe `data` zmienia tylko przyszłe pobrania. Wydrukowane kody zachowują starą sieć. |

```json Request body theme={null}
{
  "qrType": "wifi",
  "data": "WIFI:T:WPA;S:Cafe Guest;P:espresso42;H:false;;"
}
```

Błędy:

* `422 Expected a Wi-Fi payload, e.g. "WIFI:T:WPA;S:MyNetwork;P:secret;H:false;" for qrType "wifi".`

> [!WARNING]
>
> Nie zmieniaj typu wydrukowanego kodu QR WiFi. Wydrukowane kody zachowują starą sieć.

## PDF, Image i Video

`qrType`: `"pdf"`, `"image"` lub `"video"`. Przewodniki po panelu: [PDF](https://docs.getqr.com/pl/qr-types/pdf.md), [Image](https://docs.getqr.com/pl/qr-types/image.md), [Video](https://docs.getqr.com/pl/qr-types/video.md).

| Pole | Działanie |
| - | - |
| `fileId` | Plik. Prześlij go z celem (target) odpowiadającym typowi: `pdf`, `image` lub `video`. Gdy podasz `fileId`, `link.url` staje się adresem URL pliku, a wszystko, co w nim wyślesz, jest ignorowane. |
| `data` | Cokolwiek oprócz danych innego typu (`WIFI:`, `BEGIN:VCARD`, `sms:`, `mailto:`, obiekt JSON). Może być puste. |
| `link.url` | Bez `fileId` wartość `link.url` (lub `data`) jest używana jako zewnętrzny cel. To działa, ale panel nie pokazuje wtedy żadnego pliku. |
| Koduje | Krótki link, który przekierowuje bezpośrednio do pliku. PDF otwiera się jako surowy plik, a nie na stronie przeglądarki. |
| Po wydruku | Edytowalny. Wyślij nowy `fileId`, aby zastąpić plik. Stary plik zostaje zwolniony. |

Jeden plik na kod QR: pakiety PDF i galerie obrazów nie są dostępne w API. Zobacz [Nieobsługiwane przez API](#nieobsługiwane-przez-api).

```json pdf theme={null}
{
  "qrType": "pdf",
  "data": "",
  "fileId": "file_9f8e7d6c5b4a",
  "title": "Brochure"
}
```

```json image theme={null}
{
  "qrType": "image",
  "data": "",
  "fileId": "file_3c2b1a0f9e8d",
  "title": "Floor plan"
}
```

```json video theme={null}
{
  "qrType": "video",
  "data": "",
  "fileId": "file_5e4d3c2b1a0f",
  "title": "Product demo"
}
```

Jak przesłać plik i uzyskać jego `fileId`, opisuje strona [Pliki](https://docs.getqr.com/pl/api/endpoints/files.md).

## vCard

`qrType`: `"vcard"`. Przewodnik po panelu: [Kod QR vCard](https://docs.getqr.com/pl/qr-types/vcard.md).

| Pole | Działanie |
| - | - |
| `data` | Wymagane. Tekst vCard 3.0 zaczynający się od `BEGIN:VCARD`, z wierszami rozdzielonymi `\r\n` (działa też `\n`). |
| `fileId` | Opcjonalne zdjęcie profilowe (target `logo`), używane, gdy `data` nie zawiera wiersza `PHOTO` ani `X-GETQR-IMAGE-FILEID`. |
| `link.url` | Ignorowane i zastępowane hostowaną stroną. Pomiń je. |
| Koduje | Krótki link, który otwiera hostowaną stronę kontaktu z możliwością pobrania kontaktu (`.vcf`). |
| Po wydruku | Edytowalny. Wyślij nowe `data`, aby zaktualizować stronę. |

Strona docelowa i kreator odczytują tylko poniższe postacie wierszy. Inne warianty, takie jak `TEL;CELL:` czy `EMAIL;TYPE=INTERNET:`, są zapisywane, ale nie pojawiają się na stronie.

* `N:<last>;<first>;;;`: nazwisko i imię. **Kreator:** oba wymagane, do 40 znaków.
* `FN:<first> <last>`: nieodczytywane przez stronę. Z niego pochodzi etykieta na liście w panelu.
* `ORG:<company>` i `TITLE:<role>`: firma i stanowisko. **Kreator:** do 40 znaków.
* `TEL;TYPE=HOME:`, `TEL;TYPE=CELL:`, `TEL;TYPE=WORK:`, `TEL;TYPE=FAX:`: numery telefonu, komórki, służbowy i faksu (`+` i cyfry).
* `EMAIL:<email>`: adres e-mail.
* `URL:<url>`: strona internetowa.
* `NOTE:<text>`: podsumowanie. Stosuj znaki ucieczki `\\`, `\n`, `\;` i `\,`. **Kreator:** do 200 znaków.
* `ADR:;;<street>;<city>;<state>;<zip>;<country>`: adres.
* `X-SOCIALPROFILE;TYPE=<platform>:<url>` lub `URL;TYPE=<PLATFORM>:<url>`: linki do mediów społecznościowych, jeden wiersz na serwis.
* `PHOTO;VALUE=URI:<url>`: adres URL zdjęcia profilowego. Ma pierwszeństwo przed każdym ID pliku.
* `X-GETQR-IMAGE-FILEID:<fileId>`: zdjęcie profilowe (target `logo`).
* `X-GETQR-PAGE-LOGO-FILEID:<fileId>`: logo strony (target `logo`).
* `X-GETQR-LANDING-THEME:p|<0-4>` lub `X-GETQR-LANDING-THEME:c|#RRGGBB|#RRGGBB|#RRGGBB`: motyw strony docelowej, czyli indeks gotowego motywu (od 0 do 4) albo własne kolory tła, przycisku i ikon.

Serwisy społecznościowe: `facebook`, `whatsapp`, `instagram`, `youtube`, `tiktok`, `messenger`, `snapchat`, `linkedin`, `x`, `reddit`, `pinterest`, `telegram`, `wechat`, `viber`, `line`.

```json Request body theme={null}
{
  "qrType": "vcard",
  "data": "BEGIN:VCARD\r\nVERSION:3.0\r\nN:Doe;Jane;;;\r\nFN:Jane Doe\r\nORG:Acme\r\nTITLE:CTO\r\nTEL;TYPE=CELL:+14155550123\r\nEMAIL:jane@acme.com\r\nURL:https://acme.com\r\nX-GETQR-LANDING-THEME:p|0\r\nEND:VCARD",
  "title": "Jane Doe"
}
```

Błędy:

* `422 Expected a vCard payload starting with "BEGIN:VCARD" for qrType "vcard".`

## Social Media

`qrType`: `"social"`. Przewodnik po panelu: [Kod QR Social Media](https://docs.getqr.com/pl/qr-types/social.md).

| Pole | Działanie |
| - | - |
| `data` | Wymagane. Ciąg JSON zawierający obiekt. Zbuduj go za pomocą `JSON.stringify`. |
| `fileId` | Opcjonalne zdjęcie profilowe na najwyższym poziomie (target `logo`). |
| `link.url` | Ignorowane i zastępowane hostowaną stroną. Pomiń je. |
| Koduje | Krótki link, który otwiera hostowaną stronę z profilami społecznościowymi. |
| Po wydruku | Edytowalny. Wyślij nowe `data`, aby zaktualizować stronę. |

Pola w `data`:

| Pole | Typ | Uwagi |
| - | - | - |
| `firstName` | string | Nagłówek strony i jedyna wyświetlana nazwa. **Kreator:** wymagane, do 40. |
| `lastName` | string | Do 40. Niewyświetlane na stronie. |
| `summary` | string | Do 200. |
| `socialLinks` | `{ platform, url }[]` | `platform` to jeden z [serwisów społecznościowych vCard](#vcard). **Kreator:** każdy serwis raz. |
| `customItems` | `{ name, url, logoFileId }[]` | **Kreator:** `name` do 40, `url` http(s) i `logoFileId`. Łącznie co najmniej jeden link społecznościowy lub własny element. |
| `fileId` | string | Zdjęcie profilowe (target `logo`). Wartością zastępczą jest `fileId` z najwyższego poziomu. |
| `imageUrl` | string | Zewnętrzny adres URL zdjęcia profilowego, używany tylko wtedy, gdy nie ma ID pliku. |
| `pageLogoFileId` | string | Logo strony (target `logo`). |
| `landingThemeMode` | `"preset" \| "custom"` | Domyślnie `preset`. |
| `landingPresetIndex` | 0–4 | Domyślnie 0. |
| `landingCustomBg`, `landingCustomButton`, `landingCustomIcon` | `#RRGGBB` | Używane, gdy tryb to `custom`. |

```json Request body theme={null}
{
  "qrType": "social",
  "data": "{\"firstName\":\"Acme Coffee\",\"summary\":\"Follow us\",\"socialLinks\":[{\"platform\":\"instagram\",\"url\":\"https://instagram.com/acme\"}],\"customItems\":[]}"
}
```

Błędy:

* `422 Expected a JSON object describing the social profile page for qrType "social".`

## Multi-Link

`qrType`: `"multilink"`. Przewodnik po panelu: [Kod QR Multi-Link](https://docs.getqr.com/pl/qr-types/multi-link.md).

| Pole | Działanie |
| - | - |
| `data` | Wymagane. Ciąg JSON zawierający obiekt. |
| `fileId` | Opcjonalne zdjęcie profilowe na najwyższym poziomie (target `logo`). |
| `link.url` | Ignorowane i zastępowane hostowaną stroną. Pomiń je. |
| Koduje | Krótki link, który otwiera hostowaną stronę z wieloma linkami. |
| Po wydruku | Edytowalny. Wyślij nowe `data`, aby zaktualizować stronę. |

Pola w `data` są takie same jak w typie [Social Media](#social-media), z tą różnicą, że `firstName`, `lastName` i `summary` zastępują:

| Pole | Typ | Uwagi |
| - | - | - |
| `title` | string | Nagłówek strony. **Kreator:** wymagane, do 40. |
| `description` | string | Do 200. |

W `customItems` pole `logoFileId` jest opcjonalne: wyświetlana jest ikona zastępcza. **Kreator:** co najmniej jeden link społecznościowy lub jeden niepusty własny element.

```json Request body theme={null}
{
  "qrType": "multilink",
  "data": "{\"title\":\"Acme links\",\"description\":\"Everything in one place\",\"socialLinks\":[],\"customItems\":[{\"name\":\"Shop\",\"url\":\"https://acme.com/shop\",\"logoFileId\":\"\"}]}"
}
```

Błędy:

* `422 Expected a JSON object describing the multi-link page for qrType "multilink".`

## Event

`qrType`: `"event"`. Przewodnik po panelu: [Kod QR Event](https://docs.getqr.com/pl/qr-types/event.md).

| Pole | Działanie |
| - | - |
| `data` | Wymagane. Ciąg JSON zawierający obiekt. Nieznane lub nieprawidłowe wartości są zastępowane wartościami domyślnymi. |
| `fileId` | Sprawdzane (target `logo`) i zapisywane, ale strona wydarzenia odczytuje okładkę tylko z `data.fileId`. Umieść ID okładki w danych. |
| `link.url` | Ignorowane i zastępowane hostowaną stroną. Pomiń je. |
| Koduje | Krótki link, który otwiera hostowaną stronę wydarzenia z plikiem `.ics` do pobrania. |
| Po wydruku | Edytowalny. Wyślij nowe `data`, aby zaktualizować stronę. |

Pola w `data`:

| Pole | Typ | Uwagi |
| - | - | - |
| `name` | string | **Kreator:** wymagane. |
| `eventType` | string | Jeden z poniższych typów wydarzeń lub pusty. |
| `start`, `end` | `"YYYY-MM-DDTHH:mm"` | Czas lokalny w strefie `timezone`. **Kreator:** oba wymagane, koniec po początku. |
| `timezone` | IANA, np. `"Europe/Berlin"` | Umieszcza początek i koniec w pliku `.ics`. Zawsze ją wysyłaj: przy pustej lub nieznanej strefie plik `.ics` traktuje czasy jako UTC. |
| `street`, `zip`, `city`, `state`, `country` | string | **Kreator:** `city` i `country` wymagane, każde do 40. |
| `facilities` | string\[] | ID z poniższej listy. Nieznane ID są pomijane. |
| `notes` | string | Dowolny tekst. |
| `fileId` | string | Obraz okładki (target `logo`). |
| `pageLogoFileId` | string | Logo strony (target `logo`). |
| `organizerName`, `organizerEmail`, `mobile`, `work` | string | `mobile` i `work` do 40. |
| `socialLinks` | `{ platform, url }[]` | [Serwisy społecznościowe vCard](#vcard) oraz `website`. |
| `ticketsUrl` | Adres URL http(s) | Link do zakupu biletów. |
| `ticketsLabel` | string | Do 20 znaków. Dłuższe etykiety są obcinane. Pusta wartość pokazuje etykietę domyślną. |

> [accordion] Typy wydarzeń
>
> `conference`, `seminar`, `workshop`, `training`, `webinar`, `meetup`, `networking`, `corporateEvent`, `productLaunch`, `tradeShow`, `jobFair`, `fundraiser`, `charity`, `wedding`, `engagement`, `birthday`, `anniversary`, `babyShower`, `graduation`, `reunion`, `party`, `religious`, `funeralMemorial`, `ceremony`, `concert`, `festival`, `clubNight`, `theater`, `comedy`, `filmScreening`, `exhibition`, `sports`, `tournament`, `raceMarathon`, `fitnessClass`, `foodDrink`, `market`, `openHouse`, `community`, `schoolEvent`, `kids`, `travelTour`

> [accordion] Udogodnienia
>
> | Grupa | ID |
> | - | - |
> | Wstęp | `freeEntry`, `idRequired`, `invitationOnly`, `plusOneAllowed`, `reEntryAllowed` |
> | Wiek (wybierz jeden) | `adultsOnly`, `age18Plus`, `age21Plus`, `kidsWelcome` |
> | Na miejscu | `parking`, `publicTransport`, `shuttle`, `wheelchairAccess`, `evCharging`, `wifi`, `foodDrinks`, `alcoholServed`, `atm`, `coatCheck`, `pool`, `phoneCharging`, `firstAid`, `wc` |
> | Zasady | `petsAllowed`, `noPets`, `smokingArea`, `noSmoking`, `noPhotos` |
> | Strój (wybierz jeden) | `dressCasual`, `dressSmartCasual`, `dressBusiness`, `dressCocktail`, `dressThemed` |

```json Request body theme={null}
{
  "qrType": "event",
  "data": "{\"name\":\"Launch party\",\"eventType\":\"productLaunch\",\"start\":\"2026-11-20T18:00\",\"end\":\"2026-11-20T22:00\",\"timezone\":\"Europe/Berlin\",\"city\":\"Berlin\",\"country\":\"Germany\",\"facilities\":[\"freeEntry\"],\"socialLinks\":[],\"ticketsUrl\":\"https://acme.com/tickets\"}"
}
```

Błędy:

* `422 Expected a JSON object describing the event page for qrType "event".`

## Pliki w kodach QR

Zarejestruj plik przez [Pliki](https://docs.getqr.com/pl/api/endpoints/files.md), prześlij go, a następnie przekaż jego `fileId`. Użyj celu (target) odpowiadającego zastosowaniu:

* **`pdf`, `image`, `video`.** Treść kodu QR typu PDF, Image lub Video.
* **`logo`.** Zdjęcia profilowe, logo stron, ikony własnych linków i logo na środku kodu.

Pliki, które nigdy nie zostały dołączone do kodu QR, są usuwane po okresie karencji.

Błędy `fileId` zwracane przy tworzeniu oraz przy `PATCH`, gdy wysłano `fileId`:

| Status | Przyczyna |
| - | - |
| `422 unprocessable_entity` | Ten typ nie przyjmuje pliku. Plik przyjmują tylko `pdf`, `image`, `video`, `vcard`, `social`, `multilink` i `event`. |
| `404 not_found` | Brak pliku o tym ID. Najpierw zarejestruj go przez `POST /api/v1/files`. |
| `422 unprocessable_entity` | Plik został przesłany z innym celem. Na przykład przesłanie `image` w kodzie QR typu PDF albo przesłanie `pdf`, `image` lub `video` użyte jako zdjęcie vCard. |
| `422 unprocessable_entity` | Plik jest zarejestrowany, ale przesyłanie na `uploadUrl` nigdy się nie zakończyło. |

ID plików wewnątrz danych (`fileId`, `pageLogoFileId`, `customItems[].logoFileId`, wiersze `X-GETQR-*-FILEID`) nie są sprawdzane. Wyświetlają się tylko wtedy, gdy przesłano je z celem `logo`. Kod QR przejmuje je na własność, więc czyszczenie ich nie usuwa.

## Zmiana typu

Możesz zmienić `qrType` za pomocą [aktualizacji kodu QR](https://docs.getqr.com/pl/api/endpoints/qr-codes.md#aktualizacja-kodu-qr). Wyślij `data` pasujące do nowego typu: zapisane dane należą do starego typu, więc zmiana bez nich jest odrzucana.

Po aktualizacji cel jest ustalany w tej kolejności:

1. `vcard`, `social`, `multilink`, `event`: zawsze hostowana strona.
2. Pakiet PDF lub galeria obrazów utworzone w panelu: ich strona docelowa.
3. `pdf`, `image`, `video`: adres URL pliku (nowego `fileId`, a w przeciwnym razie zapisanego).
4. `link.url`, jeśli został wysłany.
5. Zmienione `data`.
6. Zapisany adres URL.

Co robi każda zmiana:

* **Z `pdf`, `image` lub `video`.** `fileId` oraz ewentualny pakiet lub galeria są czyszczone.
* **Na `pdf`, `image` lub `video`.** Wyślij też `fileId`, inaczej zostanie ponownie użyty zapisany plik, którym może być zdjęcie vCard.
* **Z `app`.** Nazwa aplikacji, `link.ios` i `link.android` są czyszczone, więc telefony trafiają do nowego celu.
* **Na `wifi`.** Obraz przełącza się na surowe dane. Już wydrukowane kody nadal zawierają krótki link, który teraz przekierowuje na adres URL `wifi:`.
* **Z `wifi`.** Wydrukowane kody zachowują starą sieć.
* **Na `vcard`, `social`, `multilink` lub `event`.** Krótki link zaczyna wskazywać nową hostowaną stronę.
* **Z `vcard`, `social`, `multilink` lub `event`.** Wyślij nowe `data`. Cel się do nich dostosuje.

Statyczne kody QR utworzone w panelu nie mają krótkiego linku, więc zmiana ich `link.url` dostaje `422`.

## Nieobsługiwane przez API

Te funkcje panelu nie są częścią API v1. Nieznane pola są pomijane bez błędu, więc ich wysłanie nic nie zmienia.

| Pole | Opis |
| - | - |
| `appName` | Wyświetlana nazwa kodu QR typu App Link. Kody QR App Link utworzone przez API pokazują na liście w panelu adres URL sklepu. |
| `isStatic` | Statyczny kod QR bez krótkiego linku. Każdy kod QR utworzony przez API ma krótki link, więc po wydrukowaniu można go edytować i śledzić (oprócz `wifi`). |
| `pdfBundle` | Kod QR typu PDF z dwoma lub więcej plikami. API tworzy tylko kody QR PDF z jednym plikiem. |
| `imageGallery` | Kod QR typu Image z dwoma lub więcej obrazami. API tworzy tylko kody QR z jednym obrazem. |

Pakiety i galerie utworzone w panelu można nadal odczytywać, wstrzymywać i usuwać przez API, ale nie można przez nie zmieniać ich plików.

## Typowe problemy

> [accordion] 422 Invalid destination URL
>
> `link.url` używa schematu, do którego krótki link nie może przekierować, np. `geo:`, `smsto:`, `matmsg:` lub `tel:`. Użyj formatów opisanych na tej stronie.

> [accordion] 400 Missing destination URL
>
> `data` jest puste i nie ma `link.url`. Dla `app` ustaw co najmniej jedno z `link.ios`, `link.android`, `link.url` lub `data`.

> [accordion] Pole data w odpowiedzi to krótki link, a nie mój adres URL
>
> W typach z linkiem zapisane `data` to krótki link. Cel odczytuj z `url`.

> [accordion] Na stronie docelowej brakuje informacji z moich danych
>
> Strona odczytuje tylko pola i postacie wierszy wymienione dla danego typu. Inne pola są zapisywane, ale niewyświetlane.

## Co dalej

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

> [card] [Pliki](https://docs.getqr.com/pl/api/endpoints/files.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)


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