> ## 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-Code-Daten nach Typ

> Datenformat, Beispielanfrage und Änderbarkeit nach dem Druck für jeden der 16 QR-Code-Typen.

> [!NOTE]
>
> Die GetQR API befindet sich in der Beta-Phase und steht ausgewählten Workspaces zur Verfügung. Details können sich bis zur allgemeinen Veröffentlichung noch ändern.

Jeder QR-Code hat einen `qrType`, und der Typ legt fest, was `data` enthalten muss. Dieser Leitfaden zeigt für jeden Typ das Format, einen funktionierenden Anfrage-Body und was Sie nach dem Druck noch ändern können.

Die Beispiele sind Anfrage-Bodys für [QR-Code erstellen](https://docs.getqr.com/de/api/endpoints/qr-codes.md#qr-code-erstellen). Senden Sie sie so:

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

## Alle Typen im Überblick

| `qrType` | `data` | Nach dem Druck änderbar |
| - | - | - |
| [`website`](#website) | http(s)-URL | Ja |
| [`feedback`](#feedback) | http(s)-URL des Formulars | Ja |
| [`payment`](#zahlung) | URL des Zahlungsanbieters | Ja |
| [`whatsapp`](#whatsapp) | `wa.me`-Link | Ja |
| [`location`](#standort) | Karten-URL | Ja |
| [`app`](#app-link) | Store-URL oder leer, dazu `link.ios` / `link.android` | Ja |
| [`email`](#e-mail) | `mailto:`-URI | Ja |
| [`sms`](#sms) | `sms:`-URI | Ja |
| [`wifi`](#wifi) | `WIFI:`-Payload | **Nein** |
| [`pdf`, `image`, `video`](#dateibasierte-typen) | Leer, mit einer `fileId` | Ja |
| [`vcard`](#vcard) | vCard-3.0-Text | Ja |
| [`social`](#social-media) | JSON-String | Ja |
| [`multilink`](#multi-link) | JSON-String | Ja |
| [`event`](#event) | JSON-String | Ja |

## Wie ein QR-Code aufgelöst wird

Jeder QR-Code besteht aus einem Kurzlink und einer Payload. Zwei Felder tragen den Inhalt:

| Feld | Bedeutung |
| - | - |
| `link.url` | Wohin der Kurzlink Besucher leitet. Das ist bei allen Typen außer `wifi` das eigentliche Ziel. |
| `data` | Die Payload des Typs, geprüft anhand von `qrType`. Unverändert gespeichert wird sie nur bei `wifi`, `vcard`, `social`, `multilink`, `event` und `sms`. Bei allen anderen Typen liefert sie nur `link.url`, und das gespeicherte `data` wird zum Kurzlink. Lesen Sie das Ziel aus `url` in der Antwort. |

Regeln für alle Typen:

* **Standardwerte.** Beim Erstellen wird ein fehlendes oder leeres `link.url` zu `data`, und Sie können das gesamte `link`-Objekt weglassen. Werden beide gesendet und unterscheiden sie sich, gewinnt `link.url`. Senden Sie beide gleich oder nur `data`.
* **Was das Bild kodiert.** Das Bild kodiert bei allen Typen außer `wifi` den Kurzlink. So können Sie ändern, wohin ein gedruckter Code führt, und seine Scans werden erfasst. Ein WiFi-QR-Code kodiert das Netzwerk selbst: Sie können ihn nach dem Druck nicht ändern, und seine Scans werden nicht erfasst.
* **Schemata.** `link.url` akzeptiert nur `http:`, `https:`, `wifi:`, `mailto:`, `sms:` und `begin:`. Alles andere, auch `geo:`, `smsto:`, `matmsg:` und `tel:`, erhält `422 Invalid destination URL`, selbst wenn `data` es akzeptiert.
* **Leere Daten.** Ein leeres `data` überspringt die Typprüfung. Bei einem Weiterleitungstyp muss dann `link.url` gesetzt sein, sonst erhält der Aufruf `400 Missing destination URL`.
* **Struktur.** Über die Typprüfung hinaus validiert der Server die Payload nicht. Ein JSON-Typ muss sich nur als JSON-Objekt parsen lassen, und eine vCard muss nur mit `BEGIN:VCARD` beginnen.

> [!TIP]
>
> Unten mit **Editor** markierte Grenzen setzt der Editor im Dashboard durch. Die API akzeptiert auch Payloads, die sie missachten, doch diese werden auf der Landingpage oder im Editor womöglich fehlerhaft dargestellt.

## Website

`qrType`: `"website"`. Anleitung zum Dashboard: [Website-QR-Code](https://docs.getqr.com/de/qr-types/website.md).

| Feld | Verhalten |
| - | - |
| `data` | Eine http(s)-URL. |
| `link.url` | Das Ziel. Standard ist `data`. |
| `fileId` | Nicht erlaubt. |
| Kodiert | Den Kurzlink, der auf `link.url` weiterleitet. Scans werden erfasst. |
| Nach dem Druck | Änderbar. Senden Sie `data` oder `link.url`, um das Ziel zu ändern. `data` allein genügt. |

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

Fehler:

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

## Feedback

`qrType`: `"feedback"`. Anleitung zum Dashboard: [Feedback-QR-Code](https://docs.getqr.com/de/qr-types/feedback.md).

`data` ist die http(s)-URL des Feedback-Formulars, zum Beispiel ein Google-Formular oder eine Bewertungsseite. Alles Weitere funktioniert wie bei [Website](#website).

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

## Zahlung

`qrType`: `"payment"`. Anleitung zum Dashboard: [Zahlungs-QR-Code](https://docs.getqr.com/de/qr-types/payment.md).

`data` ist die Zahlungs-URL des Anbieters, zum Beispiel:

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

Der Editor im Dashboard erkennt diese Hosts: `paypal.me`, `paypal.com/paypalme`, `cash.app`, `venmo.com`, `buy.stripe.com`, `stripe.com`, `square.link` und `payoneer.com`. Bei PayPal ist der Betrag das letzte Pfadsegment. Jede andere http(s)-URL funktioniert ebenfalls, der Editor zerlegt sie aber nicht in Anbieter und Betrag. Alles Weitere funktioniert wie bei [Website](#website).

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

## WhatsApp

`qrType`: `"whatsapp"`. Anleitung zum Dashboard: [WhatsApp-QR-Code](https://docs.getqr.com/de/qr-types/whatsapp.md).

`data` ist ein `wa.me`-Link: die internationale Nummer als Ziffern ohne `+`, optional mit vorausgefülltem Text.

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

Der Server prüft nur, ob es eine http(s)-URL ist. Das Dashboard liest auch `api.whatsapp.com/send`-Links. Alles Weitere funktioniert wie bei [Website](#website).

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

## Standort

`qrType`: `"location"`. Anleitung zum Dashboard: [Standort-QR-Code](https://docs.getqr.com/de/qr-types/location.md).

`data` ist eine Karten-URL. Verwenden Sie dieses Format, damit der QR-Code im Dashboard bearbeitbar bleibt (`query_place_id` ist optional):

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

Jede andere http(s)-URL leitet ebenfalls weiter. Eine `geo:`-URI besteht die `data`-Prüfung, wird als Ziel aber abgelehnt. Verwenden Sie sie daher nicht. Alles Weitere funktioniert wie bei [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"`. Anleitung zum Dashboard: [App-Link-QR-Code](https://docs.getqr.com/de/qr-types/app-link.md).

| Feld | Verhalten |
| - | - |
| `link.ios`, `link.android` | URLs aus App Store und Google Play. iOS-Besucher landen bei `ios`, Android-Besucher bei `android`. Beim Scannen haben sie Vorrang vor allem anderen. |
| `link.url` | Das Ausweichziel für andere Geräte. Standard ist `data`, danach `ios` oder `android`. |
| `data` | Eine http(s)-URL (das Dashboard sendet die Store-URL) oder leer. Mindestens eines von `link.ios`, `link.android`, `link.url` oder `data` muss gesetzt sein, sonst erhält der Aufruf `400 Missing destination URL`. |
| `fileId` | Nicht erlaubt. |
| Kodiert | Den Kurzlink. Scans werden erfasst. |
| Nach dem Druck | Änderbar. `link.ios` und `link.android` werden unabhängig voneinander übernommen, jeweils nur, wenn sie gesendet werden. `null` entfernt einen davon. Sie müssen `qrType` nicht erneut senden. Ein Wechsel zu einem anderen Typ entfernt beide Store-Links. |

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

Fehler:

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

## E-Mail

`qrType`: `"email"`. Anleitung zum Dashboard: [E-Mail-QR-Code](https://docs.getqr.com/de/qr-types/email.md).

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

| Feld | Verhalten |
| - | - |
| `data` | Eine `mailto:`-URI mit optionalem Betreff und Text. Kodieren Sie Leerzeichen als `%20`: Das Dashboard schreibt sie als `+`, was nicht jede Mail-App als Leerzeichen liest. `matmsg:` wird als Ziel abgelehnt. |
| `link.url` | Die `mailto:`-URI. Standard ist `data`. |
| `fileId` | Nicht erlaubt. |
| Kodiert | Den Kurzlink, der eine Seite öffnet, die an die Mail-App übergibt. |
| Nach dem Druck | Änderbar. Senden Sie `data` oder `link.url`, um die Nachricht zu ändern. `data` allein genügt. |

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

Fehler:

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

## SMS

`qrType`: `"sms"`. Anleitung zum Dashboard: [SMS-QR-Code](https://docs.getqr.com/de/qr-types/sms.md).

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

| Feld | Verhalten |
| - | - |
| `data` | Eine `sms:`-URI mit optionalem Text. Das Dashboard liest nur genau diese Form. `smsto:` wird als Ziel abgelehnt. |
| `link.url` | Die `sms:`-URI. Standard ist `data`. |
| `fileId` | Nicht erlaubt. |
| Kodiert | Den Kurzlink, der eine Seite öffnet, die an die Nachrichten-App übergibt. |
| Nach dem Druck | Änderbar. Senden Sie `data` oder `link.url`, um die Nachricht zu ändern. `data` allein genügt. |

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

Fehler:

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

## WiFi

`qrType`: `"wifi"`. Anleitung zum Dashboard: [WiFi-QR-Code](https://docs.getqr.com/de/qr-types/wifi.md).

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

| Feld | Verhalten |
| - | - |
| `data` | Pflichtfeld. Halten Sie die Reihenfolge `T`, `S`, `P`, `H` ein: Editor und Liste im Dashboard sind darauf angewiesen. Maskieren Sie `\`, `;`, `"` und `:` in SSID und Passwort mit einem Backslash. Für ein offenes Netzwerk verwenden Sie `T:nopass` mit leerem `P:`. Scanner lehnen `T:none` ab. **Editor:** SSID erforderlich, Passwort mindestens 8 Zeichen, außer bei `nopass`. |
| `link.url` | Wird beim Scannen nicht verwendet. Standard ist `data`. |
| `fileId` | Nicht erlaubt. |
| Kodiert | Die rohe `WIFI:`-Payload, nicht den Kurzlink. Scans werden nicht erfasst. |
| Nach dem Druck | **Nicht änderbar.** Neue `data` wirken sich nur auf künftige Downloads aus. Gedruckte Codes behalten das alte Netzwerk. |

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

Fehler:

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

> [!WARNING]
>
> Ändern Sie nicht den Typ eines gedruckten WiFi-QR-Codes. Die gedruckten Codes behalten das alte Netzwerk.

## Dateibasierte Typen

`qrType`: `"pdf"`, `"image"` oder `"video"`. Anleitungen zum Dashboard: [PDF](https://docs.getqr.com/de/qr-types/pdf.md), [Image](https://docs.getqr.com/de/qr-types/image.md), [Video](https://docs.getqr.com/de/qr-types/video.md).

| Feld | Verhalten |
| - | - |
| `fileId` | Die Datei. Laden Sie sie mit dem Target hoch, das zum Typ passt: `pdf`, `image` oder `video`. Mit einer `fileId` wird `link.url` zur URL der Datei, und alles, was Sie dort senden, wird ignoriert. |
| `data` | Alles außer der Payload eines anderen Typs (`WIFI:`, `BEGIN:VCARD`, `sms:`, `mailto:`, ein JSON-Objekt). Leer ist erlaubt. |
| `link.url` | Ohne `fileId` wird `link.url` (oder `data`) als externes Ziel verwendet. Das funktioniert, aber das Dashboard zeigt dann keine Datei an. |
| Kodiert | Den Kurzlink, der direkt auf die Datei weiterleitet. Ein PDF öffnet sich als Rohdatei, nicht in einer Viewer-Seite. |
| Nach dem Druck | Änderbar. Senden Sie eine neue `fileId`, um die Datei zu ersetzen. Die alte wird freigegeben. |

Eine Datei pro QR-Code: PDF-Bundles und Bildergalerien sind über die API nicht verfügbar. Siehe [Nicht über die API unterstützt](#nicht-über-die-api-unterstützt).

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

Wie Sie die Datei hochladen und ihre `fileId` erhalten, steht unter [Dateien](https://docs.getqr.com/de/api/endpoints/files.md).

## vCard

`qrType`: `"vcard"`. Anleitung zum Dashboard: [vCard-QR-Code](https://docs.getqr.com/de/qr-types/vcard.md).

| Feld | Verhalten |
| - | - |
| `data` | Pflichtfeld. vCard-3.0-Text, der mit `BEGIN:VCARD` beginnt, Zeilen getrennt durch `\r\n` (`\n` funktioniert auch). |
| `fileId` | Optionales Profilbild (Target `logo`), verwendet, wenn `data` keine `PHOTO`- oder `X-GETQR-IMAGE-FILEID`-Zeile enthält. |
| `link.url` | Wird ignoriert und durch die gehostete Seite ersetzt. Lassen Sie es weg. |
| Kodiert | Den Kurzlink, der die gehostete Kontaktseite mit einem Download zum Speichern des Kontakts (`.vcf`) öffnet. |
| Nach dem Druck | Änderbar. Senden Sie neue `data`, um die Seite zu aktualisieren. |

Landingpage und Editor lesen nur die unten aufgeführten Zeilenformen. Andere Varianten wie `TEL;CELL:` oder `EMAIL;TYPE=INTERNET:` werden gespeichert, erscheinen aber nicht auf der Seite.

* `N:<last>;<first>;;;`: Nach- und Vorname. **Editor:** beide erforderlich, bis zu 40 Zeichen.
* `FN:<first> <last>`: wird von der Seite nicht gelesen. Daraus stammt die Bezeichnung in der Dashboard-Liste.
* `ORG:<company>` und `TITLE:<role>`: Firma und Position. **Editor:** bis zu 40 Zeichen.
* `TEL;TYPE=HOME:`, `TEL;TYPE=CELL:`, `TEL;TYPE=WORK:`, `TEL;TYPE=FAX:`: Telefon-, Mobil-, Geschäfts- und Faxnummer (`+` und Ziffern).
* `EMAIL:<email>`: E-Mail-Adresse.
* `URL:<url>`: Website.
* `NOTE:<text>`: Zusammenfassung. Maskieren Sie `\\`, `\n`, `\;` und `\,`. **Editor:** bis zu 200 Zeichen.
* `ADR:;;<street>;<city>;<state>;<zip>;<country>`: Adresse.
* `X-SOCIALPROFILE;TYPE=<platform>:<url>` oder `URL;TYPE=<PLATFORM>:<url>`: Social-Media-Links, eine Zeile pro Plattform.
* `PHOTO;VALUE=URI:<url>`: URL des Profilbilds. Hat Vorrang vor jeder Datei-ID.
* `X-GETQR-IMAGE-FILEID:<fileId>`: Profilbild (Target `logo`).
* `X-GETQR-PAGE-LOGO-FILEID:<fileId>`: Seitenlogo (Target `logo`).
* `X-GETQR-LANDING-THEME:p|<0-4>` oder `X-GETQR-LANDING-THEME:c|#RRGGBB|#RRGGBB|#RRGGBB`: Theme der Landingpage, entweder ein Preset-Index (0 bis 4) oder eigene Farben für Hintergrund, Buttons und Symbole.

Soziale Plattformen: `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"
}
```

Fehler:

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

## Social Media

`qrType`: `"social"`. Anleitung zum Dashboard: [Social-Media-QR-Code](https://docs.getqr.com/de/qr-types/social.md).

| Feld | Verhalten |
| - | - |
| `data` | Pflichtfeld. Ein JSON-String, der ein Objekt kodiert. Erzeugen Sie ihn mit `JSON.stringify`. |
| `fileId` | Optionales Profilbild auf oberster Ebene (Target `logo`). |
| `link.url` | Wird ignoriert und durch die gehostete Seite ersetzt. Lassen Sie es weg. |
| Kodiert | Den Kurzlink, der die gehostete Social-Media-Seite öffnet. |
| Nach dem Druck | Änderbar. Senden Sie neue `data`, um die Seite zu aktualisieren. |

Felder in `data`:

| Feld | Typ | Hinweise |
| - | - | - |
| `firstName` | string | Überschrift der Seite und der einzige angezeigte Name. **Editor:** erforderlich, bis zu 40. |
| `lastName` | string | Bis zu 40. Wird auf der Seite nicht angezeigt. |
| `summary` | string | Bis zu 200. |
| `socialLinks` | `{ platform, url }[]` | `platform` ist eine der [sozialen Plattformen der vCard](#vcard). **Editor:** jede Plattform nur einmal. |
| `customItems` | `{ name, url, logoFileId }[]` | **Editor:** `name` bis zu 40, eine http(s)-`url` und eine `logoFileId`. Insgesamt mindestens ein Social-Media-Link oder ein eigenes Element. |
| `fileId` | string | Profilbild (Target `logo`). Die `fileId` auf oberster Ebene dient als Ersatz. |
| `imageUrl` | string | Externe URL des Profilbilds, nur verwendet, wenn keine Datei-ID vorhanden ist. |
| `pageLogoFileId` | string | Seitenlogo (Target `logo`). |
| `landingThemeMode` | `"preset" \| "custom"` | Standard ist `preset`. |
| `landingPresetIndex` | 0–4 | Standard ist 0. |
| `landingCustomBg`, `landingCustomButton`, `landingCustomIcon` | `#RRGGBB` | Wird verwendet, wenn der Modus `custom` ist. |

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

Fehler:

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

## Multi-Link

`qrType`: `"multilink"`. Anleitung zum Dashboard: [Multi-Link-QR-Code](https://docs.getqr.com/de/qr-types/multi-link.md).

| Feld | Verhalten |
| - | - |
| `data` | Pflichtfeld. Ein JSON-String, der ein Objekt kodiert. |
| `fileId` | Optionales Profilbild auf oberster Ebene (Target `logo`). |
| `link.url` | Wird ignoriert und durch die gehostete Seite ersetzt. Lassen Sie es weg. |
| Kodiert | Den Kurzlink, der die gehostete Multi-Link-Seite öffnet. |
| Nach dem Druck | Änderbar. Senden Sie neue `data`, um die Seite zu aktualisieren. |

Die Felder in `data` entsprechen denen von [Social Media](#social-media), nur werden `firstName`, `lastName` und `summary` ersetzt durch:

| Feld | Typ | Hinweise |
| - | - | - |
| `title` | string | Seitenüberschrift. **Editor:** erforderlich, bis zu 40. |
| `description` | string | Bis zu 200. |

In `customItems` ist `logoFileId` optional: Dann wird ein Ersatzsymbol angezeigt. **Editor:** mindestens ein Social-Media-Link oder ein nicht leeres eigenes 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\":\"\"}]}"
}
```

Fehler:

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

## Event

`qrType`: `"event"`. Anleitung zum Dashboard: [Event-QR-Code](https://docs.getqr.com/de/qr-types/event.md).

| Feld | Verhalten |
| - | - |
| `data` | Pflichtfeld. Ein JSON-String, der ein Objekt kodiert. Unbekannte oder ungültige Werte fallen auf Standardwerte zurück. |
| `fileId` | Wird validiert (Target `logo`) und gespeichert, aber die Event-Seite liest ihr Titelbild nur aus `data.fileId`. Legen Sie die ID des Titelbilds in die Payload. |
| `link.url` | Wird ignoriert und durch die gehostete Seite ersetzt. Lassen Sie es weg. |
| Kodiert | Den Kurzlink, der die gehostete Event-Seite mit einem `.ics`-Download öffnet. |
| Nach dem Druck | Änderbar. Senden Sie neue `data`, um die Seite zu aktualisieren. |

Felder in `data`:

| Feld | Typ | Hinweise |
| - | - | - |
| `name` | string | **Editor:** erforderlich. |
| `eventType` | string | Einer der unten aufgeführten Event-Typen oder leer. |
| `start`, `end` | `"YYYY-MM-DDTHH:mm"` | Ortszeit in `timezone`. **Editor:** beide erforderlich, Ende nach Beginn. |
| `timezone` | IANA, zum Beispiel `"Europe/Berlin"` | Verortet Beginn und Ende in der `.ics`-Datei. Senden Sie sie immer: Bei einer leeren oder unbekannten Zeitzone behandelt die `.ics`-Datei die Zeiten als UTC. |
| `street`, `zip`, `city`, `state`, `country` | string | **Editor:** `city` und `country` erforderlich, jeweils bis zu 40. |
| `facilities` | string\[] | IDs aus der Liste unten. Unbekannte IDs werden verworfen. |
| `notes` | string | Freitext. |
| `fileId` | string | Titelbild (Target `logo`). |
| `pageLogoFileId` | string | Seitenlogo (Target `logo`). |
| `organizerName`, `organizerEmail`, `mobile`, `work` | string | `mobile` und `work` bis zu 40. |
| `socialLinks` | `{ platform, url }[]` | Die [sozialen Plattformen der vCard](#vcard), dazu `website`. |
| `ticketsUrl` | http(s)-URL | Link zum Ticketkauf. |
| `ticketsLabel` | string | Bis zu 20 Zeichen. Längere Beschriftungen werden abgeschnitten. Leer zeigt die Standardbeschriftung. |

> [accordion] Event-Typen
>
> `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] Ausstattung
>
> | Gruppe | IDs |
> | - | - |
> | Einlass | `freeEntry`, `idRequired`, `invitationOnly`, `plusOneAllowed`, `reEntryAllowed` |
> | Alter (eine Option wählen) | `adultsOnly`, `age18Plus`, `age21Plus`, `kidsWelcome` |
> | Vor Ort | `parking`, `publicTransport`, `shuttle`, `wheelchairAccess`, `evCharging`, `wifi`, `foodDrinks`, `alcoholServed`, `atm`, `coatCheck`, `pool`, `phoneCharging`, `firstAid`, `wc` |
> | Regeln | `petsAllowed`, `noPets`, `smokingArea`, `noSmoking`, `noPhotos` |
> | Dresscode (eine Option wählen) | `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\"}"
}
```

Fehler:

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

## Dateien in QR-Codes

Registrieren Sie eine Datei über [Dateien](https://docs.getqr.com/de/api/endpoints/files.md), laden Sie sie hoch und übergeben Sie dann ihre `fileId`. Verwenden Sie das Target, das zum Zweck passt:

* **`pdf`, `image`, `video`.** Der Inhalt eines PDF-, Bild- oder Video-QR-Codes.
* **`logo`.** Profilbilder, Seitenlogos, Symbole eigener Links und Logos in der Mitte.

Dateien, die nie an einen QR-Code angehängt werden, werden nach einer Karenzzeit gelöscht.

`fileId`-Fehler, die beim Erstellen und bei `PATCH` zurückgegeben werden, wenn `fileId` gesendet wird:

| Status | Ursache |
| - | - |
| `422 unprocessable_entity` | Der Typ nimmt keine Datei an. Nur `pdf`, `image`, `video`, `vcard`, `social`, `multilink` und `event` akzeptieren eine. |
| `404 not_found` | Keine Datei mit dieser ID. Registrieren Sie sie zuerst mit `POST /api/v1/files`. |
| `422 unprocessable_entity` | Die Datei wurde für ein anderes Target hochgeladen. Zum Beispiel ein `image`-Upload für einen PDF-QR-Code oder ein `pdf`-, `image`- oder `video`-Upload als vCard-Foto. |
| `422 unprocessable_entity` | Die Datei ist registriert, aber der Upload an `uploadUrl` wurde nie abgeschlossen. |

Datei-IDs innerhalb einer Payload (`fileId`, `pageLogoFileId`, `customItems[].logoFileId`, `X-GETQR-*-FILEID`-Zeilen) werden nicht validiert. Sie werden nur dargestellt, wenn sie mit dem Target `logo` hochgeladen wurden. Der QR-Code beansprucht sie, sodass die Bereinigung sie nicht löscht.

## Typwechsel

Sie können `qrType` mit [QR-Code aktualisieren](https://docs.getqr.com/de/api/endpoints/qr-codes.md#qr-code-aktualisieren) ändern. Senden Sie `data`, die zum neuen Typ passen: Die gespeicherte Payload gehört zum alten Typ, daher wird ein Wechsel ohne neue Daten abgelehnt.

Nach einer Aktualisierung wird das Ziel in dieser Reihenfolge bestimmt:

1. `vcard`, `social`, `multilink`, `event`: immer die gehostete Seite.
2. Ein im Dashboard erstelltes PDF-Bundle oder eine Bildergalerie: deren Landingpage.
3. `pdf`, `image`, `video`: die Datei-URL (eine neue `fileId`, sonst die gespeicherte).
4. `link.url`, falls gesendet.
5. Geänderte `data`.
6. Die gespeicherte URL.

Was die einzelnen Wechsel bewirken:

* **Weg von `pdf`, `image` oder `video`.** `fileId` und ein eventuelles Bundle oder eine Galerie werden entfernt.
* **Zu `pdf`, `image` oder `video`.** Senden Sie auch `fileId`, sonst wird die gespeicherte wiederverwendet, die ein vCard-Foto sein kann.
* **Weg von `app`.** Der App-Name, `link.ios` und `link.android` werden entfernt, sodass Smartphones dem neuen Ziel folgen.
* **Zu `wifi`.** Das Bild wechselt zur rohen Payload. Bereits gedruckte Codes enthalten weiterhin den Kurzlink, der jetzt auf eine `wifi:`-URL weiterleitet.
* **Weg von `wifi`.** Gedruckte Codes behalten ihr altes Netzwerk.
* **Zu `vcard`, `social`, `multilink` oder `event`.** Der Kurzlink wird auf die neue gehostete Seite gerichtet.
* **Weg von `vcard`, `social`, `multilink` oder `event`.** Senden Sie die neuen `data`. Das Ziel folgt ihnen.

Statische QR-Codes aus dem Dashboard haben keinen Kurzlink, daher erhält eine Änderung ihres `link.url` den Status `422`.

## Nicht über die API unterstützt

Diese Dashboard-Funktionen sind nicht Teil der v1-API. Unbekannte Felder werden ohne Fehler verworfen, sodass ihr Senden keine Wirkung hat.

| Feld | Beschreibung |
| - | - |
| `appName` | Der Anzeigename eines App-Link-QR-Codes. Über die API erstellte App-Link-QR-Codes zeigen in der Dashboard-Liste ihre Store-URL. |
| `isStatic` | Ein statischer QR-Code ohne Kurzlink. Jeder von der API erstellte QR-Code hat einen und lässt sich daher nach dem Druck bearbeiten und erfassen (außer `wifi`). |
| `pdfBundle` | Ein PDF-QR-Code mit zwei oder mehr Dateien. Die API erstellt nur PDF-QR-Codes mit einer Datei. |
| `imageGallery` | Ein Image-QR-Code mit zwei oder mehr Bildern. Die API erstellt nur QR-Codes mit einem Bild. |

Im Dashboard erstellte Bundles und Galerien lassen sich über die API weiterhin abrufen, pausieren und löschen, ihre Dateien aber nicht ändern.

## Häufige Probleme

> [accordion] 422 Invalid destination URL
>
> `link.url` verwendet ein Schema, auf das der Kurzlink nicht weiterleiten kann, etwa `geo:`, `smsto:`, `matmsg:` oder `tel:`. Verwenden Sie die Formate auf dieser Seite.

> [accordion] 400 Missing destination URL
>
> `data` ist leer und es gibt kein `link.url`. Setzen Sie bei `app` mindestens eines von `link.ios`, `link.android`, `link.url` oder `data`.

> [accordion] Das data in der Antwort ist ein Kurzlink, nicht meine URL
>
> Bei Link-Typen ist das gespeicherte `data` der Kurzlink. Lesen Sie das Ziel aus `url`.

> [accordion] Auf der Landingpage fehlen Angaben aus meiner Payload
>
> Die Seite liest nur die für den Typ aufgeführten Felder und Zeilenformen. Andere Felder werden gespeichert, aber nicht angezeigt.

## Wie geht es weiter?

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

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

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

> [card] [Zugriffsregeln](https://docs.getqr.com/de/api/guides/access-rules.md)


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