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

# Données des QR codes par type

> Le format des données, un exemple de requête et le comportement après impression de chacun des 16 types de QR codes.

> [!NOTE]
>
> L'API GetQR est en version bêta et réservée à certains espaces de travail. Certains détails peuvent changer avant la disponibilité générale.

Chaque QR code a un `qrType`, et ce type détermine ce que `data` doit contenir. Ce guide présente le format de chaque type, un corps de requête qui fonctionne, et ce que vous pouvez encore modifier une fois le code imprimé.

Les exemples sont des corps de requête pour [Créer un QR code](https://docs.getqr.com/fr/api/endpoints/qr-codes.md#créer-un-qr-code). Envoyez-les ainsi :

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

## Aperçu de tous les types

| `qrType` | `data` | Modifiable après impression |
| - | - | - |
| [`website`](#website) | URL http(s) | Oui |
| [`feedback`](#feedback) | URL http(s) du formulaire | Oui |
| [`payment`](#payment) | URL du prestataire de paiement | Oui |
| [`whatsapp`](#whatsapp) | Lien `wa.me` | Oui |
| [`location`](#location) | URL de carte | Oui |
| [`app`](#app-link) | URL de store ou vide, plus `link.ios` / `link.android` | Oui |
| [`email`](#email) | URI `mailto:` | Oui |
| [`sms`](#sms) | URI `sms:` | Oui |
| [`wifi`](#wifi) | Payload `WIFI:` | **Non** |
| [`pdf`, `image`, `video`](#pdf-image-et-video) | Vide, avec un `fileId` | Oui |
| [`vcard`](#vcard) | Texte vCard 3.0 | Oui |
| [`social`](#social-media) | Chaîne JSON | Oui |
| [`multilink`](#multi-link) | Chaîne JSON | Oui |
| [`event`](#event) | Chaîne JSON | Oui |

## Comment un QR code est résolu

Chaque QR code est un lien court associé à un payload. Deux champs portent le contenu :

| Champ | Ce que c'est |
| - | - |
| `link.url` | L'endroit où le lien court envoie le visiteur. C'est la vraie destination pour tous les types sauf `wifi`. |
| `data` | Le payload du type, vérifié selon `qrType`. Il n'est stocké tel quel que pour `wifi`, `vcard`, `social`, `multilink`, `event` et `sms`. Pour tous les autres types, il sert seulement à renseigner `link.url`, et la valeur `data` stockée devient le lien court. Lisez la destination dans `url` de la réponse. |

Règles valables pour tous les types :

* **Valeurs par défaut.** À la création, un `link.url` omis ou vide prend la valeur de `data`, et vous pouvez omettre tout l'objet `link`. Si les deux sont envoyés et diffèrent, `link.url` l'emporte. Envoyez-les identiques, ou n'envoyez que `data`.
* **Ce qu'encode l'image.** L'image encode le lien court pour tous les types sauf `wifi`. Vous pouvez donc changer la destination d'un code imprimé, et ses scans sont suivis. Un QR code WiFi encode le réseau lui-même : vous ne pouvez pas le modifier après impression, et ses scans ne sont pas suivis.
* **Schémas.** `link.url` n'accepte que `http:`, `https:`, `wifi:`, `mailto:`, `sms:` et `begin:`. Tout autre schéma, y compris `geo:`, `smsto:`, `matmsg:` et `tel:`, renvoie `422 Invalid destination URL`, même là où `data` l'accepte.
* **Données vides.** Un `data` vide saute la vérification du type. Pour un type de redirection, `link.url` doit alors être défini, sinon l'appel renvoie `400 Missing destination URL`.
* **Structure.** Au-delà de la vérification du type, le serveur ne valide pas le payload. Un type JSON doit seulement être analysable comme un objet JSON, et une vCard doit seulement commencer par `BEGIN:VCARD`.

> [!TIP]
>
> Les limites marquées **Builder** ci-dessous sont celles qu'applique l'éditeur du tableau de bord. L'API accepte des payloads qui les ignorent, mais ils peuvent s'afficher bizarrement sur la page de destination ou dans l'éditeur.

## Website

`qrType` : `"website"`. Guide du tableau de bord : [QR code Website](https://docs.getqr.com/fr/qr-types/website.md).

| Champ | Comportement |
| - | - |
| `data` | Une URL http(s). |
| `link.url` | La destination. Par défaut `data`. |
| `fileId` | Non autorisé. |
| Encode | Le lien court, qui redirige vers `link.url`. Les scans sont suivis. |
| Après impression | Modifiable. Envoyez `data` ou `link.url` pour changer la destination. `data` seul suffit. |

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

Erreurs :

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

## Feedback

`qrType` : `"feedback"`. Guide du tableau de bord : [QR code Feedback](https://docs.getqr.com/fr/qr-types/feedback.md).

`data` est l'URL http(s) du formulaire d'avis, par exemple un Google Form ou une page d'avis. Tout le reste fonctionne comme pour [Website](#website).

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

## Payment

`qrType` : `"payment"`. Guide du tableau de bord : [QR code Payment](https://docs.getqr.com/fr/qr-types/payment.md).

`data` est l'URL de paiement du prestataire, par exemple :

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

L'éditeur du tableau de bord reconnaît ces hôtes : `paypal.me`, `paypal.com/paypalme`, `cash.app`, `venmo.com`, `buy.stripe.com`, `stripe.com`, `square.link` et `payoneer.com`. Pour PayPal, le montant est le dernier segment du chemin. Toute autre URL http(s) fonctionne aussi, mais l'éditeur ne la décompose pas en prestataire et montant. Tout le reste fonctionne comme pour [Website](#website).

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

## WhatsApp

`qrType` : `"whatsapp"`. Guide du tableau de bord : [QR code WhatsApp](https://docs.getqr.com/fr/qr-types/whatsapp.md).

`data` est un lien `wa.me` : le numéro international en chiffres sans `+`, éventuellement avec un texte prérempli.

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

Le serveur vérifie seulement qu'il s'agit d'une URL http(s). Le tableau de bord lit aussi les liens `api.whatsapp.com/send`. Tout le reste fonctionne comme pour [Website](#website).

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

## Location

`qrType` : `"location"`. Guide du tableau de bord : [QR code Location](https://docs.getqr.com/fr/qr-types/location.md).

`data` est une URL de carte. Utilisez ce format pour que le QR code reste modifiable dans le tableau de bord (`query_place_id` est facultatif) :

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

Toute autre URL http(s) redirige aussi. Une URI `geo:` passe la vérification de `data` mais est refusée comme destination : ne l'utilisez pas. Tout le reste fonctionne comme pour [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"`. Guide du tableau de bord : [QR code App Link](https://docs.getqr.com/fr/qr-types/app-link.md).

| Champ | Comportement |
| - | - |
| `link.ios`, `link.android` | URL App Store et Google Play. Les visiteurs iOS vont vers `ios`, les visiteurs Android vers `android`. Elles l'emportent sur tout le reste au moment du scan. |
| `link.url` | La destination de repli pour les autres appareils. Par défaut `data`, puis `ios` ou `android`. |
| `data` | Une URL http(s) (le tableau de bord envoie l'URL du store), ou vide. Au moins un champ parmi `link.ios`, `link.android`, `link.url` ou `data` doit être défini, sinon l'appel renvoie `400 Missing destination URL`. |
| `fileId` | Non autorisé. |
| Encode | Le lien court. Les scans sont suivis. |
| Après impression | Modifiable. `link.ios` et `link.android` sont appliqués indépendamment, chacun seulement s'il est envoyé. `null` en efface un. Inutile de renvoyer `qrType`. Passer à un autre type efface les deux liens de store. |

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

Erreurs :

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

## Email

`qrType` : `"email"`. Guide du tableau de bord : [QR code Email](https://docs.getqr.com/fr/qr-types/email.md).

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

| Champ | Comportement |
| - | - |
| `data` | Une URI `mailto:` avec un objet et un corps facultatifs. Encodez les espaces en `%20` : le tableau de bord les écrit en `+`, que toutes les applications de messagerie ne lisent pas comme un espace. `matmsg:` est refusé comme destination. |
| `link.url` | L'URI `mailto:`. Par défaut `data`. |
| `fileId` | Non autorisé. |
| Encode | Le lien court, qui ouvre une page qui passe le relais à l'application de messagerie. |
| Après impression | Modifiable. Envoyez `data` ou `link.url` pour modifier le message. `data` seul suffit. |

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

Erreurs :

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

## SMS

`qrType` : `"sms"`. Guide du tableau de bord : [QR code SMS](https://docs.getqr.com/fr/qr-types/sms.md).

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

| Champ | Comportement |
| - | - |
| `data` | Une URI `sms:` avec un corps facultatif. Le tableau de bord ne lit que cette forme exacte. `smsto:` est refusé comme destination. |
| `link.url` | L'URI `sms:`. Par défaut `data`. |
| `fileId` | Non autorisé. |
| Encode | Le lien court, qui ouvre une page qui passe le relais à l'application de messages. |
| Après impression | Modifiable. Envoyez `data` ou `link.url` pour modifier le message. `data` seul suffit. |

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

Erreurs :

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

## WiFi

`qrType` : `"wifi"`. Guide du tableau de bord : [QR code WiFi](https://docs.getqr.com/fr/qr-types/wifi.md).

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

| Champ | Comportement |
| - | - |
| `data` | Obligatoire. Respectez l'ordre `T`, `S`, `P`, `H` : l'éditeur et la liste du tableau de bord en dépendent. Échappez `\`, `;`, `"` et `:` dans le SSID et le mot de passe avec une barre oblique inverse. Pour un réseau ouvert, utilisez `T:nopass` avec un `P:` vide. Les scanners refusent `T:none`. **Builder :** SSID obligatoire, mot de passe d'au moins 8 caractères sauf avec `nopass`. |
| `link.url` | Non utilisé pour le scan. Par défaut `data`. |
| `fileId` | Non autorisé. |
| Encode | Le payload `WIFI:` brut, pas le lien court. Les scans ne sont pas suivis. |
| Après impression | **Non modifiable.** Un nouveau `data` ne change que les futurs téléchargements. Les codes imprimés gardent l'ancien réseau. |

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

Erreurs :

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

> [!WARNING]
>
> Ne changez pas le type d'un QR code WiFi imprimé. Les codes imprimés gardent l'ancien réseau.

## PDF, Image et Video

`qrType` : `"pdf"`, `"image"` ou `"video"`. Guides du tableau de bord : [PDF](https://docs.getqr.com/fr/qr-types/pdf.md), [Image](https://docs.getqr.com/fr/qr-types/image.md), [Video](https://docs.getqr.com/fr/qr-types/video.md).

| Champ | Comportement |
| - | - |
| `fileId` | Le fichier. Importez-le avec la cible correspondant au type : `pdf`, `image` ou `video`. Avec un `fileId`, `link.url` devient l'URL du fichier, et tout ce que vous y envoyez est ignoré. |
| `data` | N'importe quoi sauf le payload d'un autre type (`WIFI:`, `BEGIN:VCARD`, `sms:`, `mailto:`, un objet JSON). Vide convient. |
| `link.url` | Sans `fileId`, `link.url` (ou `data`) sert de destination externe. Cela fonctionne, mais le tableau de bord n'affiche aucun fichier. |
| Encode | Le lien court, qui redirige directement vers le fichier. Un PDF s'ouvre comme fichier brut, pas dans une page de visualisation. |
| Après impression | Modifiable. Envoyez un nouveau `fileId` pour remplacer le fichier. L'ancien est libéré. |

Un fichier par QR code : les lots de PDF et les galeries d'images ne sont pas disponibles via l'API. Consultez [Non pris en charge par l'API](#non-pris-en-charge-par-l-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"
}
```

Pour importer le fichier et obtenir son `fileId`, consultez [Fichiers](https://docs.getqr.com/fr/api/endpoints/files.md).

## vCard

`qrType` : `"vcard"`. Guide du tableau de bord : [QR code vCard](https://docs.getqr.com/fr/qr-types/vcard.md).

| Champ | Comportement |
| - | - |
| `data` | Obligatoire. Texte vCard 3.0 commençant par `BEGIN:VCARD`, lignes séparées par `\r\n` (`\n` fonctionne aussi). |
| `fileId` | Image de profil facultative (cible `logo`), utilisée quand `data` n'a pas de ligne `PHOTO` ni `X-GETQR-IMAGE-FILEID`. |
| `link.url` | Ignoré et remplacé par la page hébergée. Omettez-le. |
| Encode | Le lien court, qui ouvre la page de contact hébergée avec un téléchargement pour enregistrer le contact (`.vcf`). |
| Après impression | Modifiable. Envoyez un nouveau `data` pour mettre à jour la page. |

La page de destination et l'éditeur ne lisent que les formes de lignes ci-dessous. Les autres variantes, comme `TEL;CELL:` ou `EMAIL;TYPE=INTERNET:`, sont stockées mais n'apparaissent pas sur la page.

* `N:<last>;<first>;;;` : nom et prénom. **Builder :** les deux obligatoires, jusqu'à 40 caractères.
* `FN:<first> <last>` : non lu par la page. Le libellé dans la liste du tableau de bord en provient.
* `ORG:<company>` et `TITLE:<role>` : entreprise et fonction. **Builder :** jusqu'à 40 caractères.
* `TEL;TYPE=HOME:`, `TEL;TYPE=CELL:`, `TEL;TYPE=WORK:`, `TEL;TYPE=FAX:` : numéros de téléphone, de mobile, professionnel et de fax (`+` et chiffres).
* `EMAIL:<email>` : adresse e-mail.
* `URL:<url>` : site web.
* `NOTE:<text>` : résumé. Échappez `\\`, `\n`, `\;` et `\,`. **Builder :** jusqu'à 200 caractères.
* `ADR:;;<street>;<city>;<state>;<zip>;<country>` : adresse.
* `X-SOCIALPROFILE;TYPE=<platform>:<url>` ou `URL;TYPE=<PLATFORM>:<url>` : liens de réseaux sociaux, une ligne par plateforme.
* `PHOTO;VALUE=URI:<url>` : URL de l'image de profil. L'emporte sur tout ID de fichier.
* `X-GETQR-IMAGE-FILEID:<fileId>` : image de profil (cible `logo`).
* `X-GETQR-PAGE-LOGO-FILEID:<fileId>` : logo de la page (cible `logo`).
* `X-GETQR-LANDING-THEME:p|<0-4>` ou `X-GETQR-LANDING-THEME:c|#RRGGBB|#RRGGBB|#RRGGBB` : thème de la page de destination, soit l'index d'un thème prédéfini (0 à 4), soit des couleurs personnalisées d'arrière-plan, de bouton et d'icône.

Plateformes sociales : `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"
}
```

Erreurs :

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

## Social Media

`qrType` : `"social"`. Guide du tableau de bord : [QR code Social Media](https://docs.getqr.com/fr/qr-types/social.md).

| Champ | Comportement |
| - | - |
| `data` | Obligatoire. Une chaîne JSON qui encode un objet. Construisez-la avec `JSON.stringify`. |
| `fileId` | Image de profil facultative au premier niveau (cible `logo`). |
| `link.url` | Ignoré et remplacé par la page hébergée. Omettez-le. |
| Encode | Le lien court, qui ouvre la page sociale hébergée. |
| Après impression | Modifiable. Envoyez un nouveau `data` pour mettre à jour la page. |

Champs de `data` :

| Champ | Type | Remarques |
| - | - | - |
| `firstName` | string | Titre de la page et seul nom affiché. **Builder :** obligatoire, jusqu'à 40. |
| `lastName` | string | Jusqu'à 40. Non affiché sur la page. |
| `summary` | string | Jusqu'à 200. |
| `socialLinks` | `{ platform, url }[]` | `platform` est l'une des [plateformes sociales de la vCard](#vcard). **Builder :** chaque plateforme une seule fois. |
| `customItems` | `{ name, url, logoFileId }[]` | **Builder :** `name` jusqu'à 40, une `url` http(s) et un `logoFileId`. Au moins un lien social ou un élément personnalisé au total. |
| `fileId` | string | Image de profil (cible `logo`). Le `fileId` de premier niveau sert de repli. |
| `imageUrl` | string | URL externe de l'image de profil, utilisée seulement en l'absence d'ID de fichier. |
| `pageLogoFileId` | string | Logo de la page (cible `logo`). |
| `landingThemeMode` | `"preset" \| "custom"` | Par défaut `preset`. |
| `landingPresetIndex` | 0–4 | Par défaut 0. |
| `landingCustomBg`, `landingCustomButton`, `landingCustomIcon` | `#RRGGBB` | Utilisés quand le mode est `custom`. |

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

Erreurs :

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

## Multi-Link

`qrType` : `"multilink"`. Guide du tableau de bord : [QR code Multi-Link](https://docs.getqr.com/fr/qr-types/multi-link.md).

| Champ | Comportement |
| - | - |
| `data` | Obligatoire. Une chaîne JSON qui encode un objet. |
| `fileId` | Image de profil facultative au premier niveau (cible `logo`). |
| `link.url` | Ignoré et remplacé par la page hébergée. Omettez-le. |
| Encode | Le lien court, qui ouvre la page multi-liens hébergée. |
| Après impression | Modifiable. Envoyez un nouveau `data` pour mettre à jour la page. |

Les champs de `data` sont ceux de [Social Media](#social-media), sauf que `firstName`, `lastName` et `summary` sont remplacés par :

| Champ | Type | Remarques |
| - | - | - |
| `title` | string | Titre de la page. **Builder :** obligatoire, jusqu'à 40. |
| `description` | string | Jusqu'à 200. |

Dans `customItems`, `logoFileId` est facultatif : une icône par défaut s'affiche. **Builder :** au moins un lien social ou un élément personnalisé non vide.

```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\":\"\"}]}"
}
```

Erreurs :

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

## Event

`qrType` : `"event"`. Guide du tableau de bord : [QR code Event](https://docs.getqr.com/fr/qr-types/event.md).

| Champ | Comportement |
| - | - |
| `data` | Obligatoire. Une chaîne JSON qui encode un objet. Les valeurs inconnues ou invalides reprennent leur valeur par défaut. |
| `fileId` | Validé (cible `logo`) et stocké, mais la page de l'événement ne lit sa couverture que dans `data.fileId`. Placez l'ID de la couverture dans le payload. |
| `link.url` | Ignoré et remplacé par la page hébergée. Omettez-le. |
| Encode | Le lien court, qui ouvre la page de l'événement hébergée avec un téléchargement `.ics`. |
| Après impression | Modifiable. Envoyez un nouveau `data` pour mettre à jour la page. |

Champs de `data` :

| Champ | Type | Remarques |
| - | - | - |
| `name` | string | **Builder :** obligatoire. |
| `eventType` | string | L'un des types d'événement ci-dessous, ou vide. |
| `start`, `end` | `"YYYY-MM-DDTHH:mm"` | Heure locale dans `timezone`. **Builder :** les deux obligatoires, la fin après le début. |
| `timezone` | IANA, par exemple `"Europe/Berlin"` | Place le début et la fin dans le fichier `.ics`. Envoyez-le toujours : avec un fuseau vide ou inconnu, le `.ics` traite les heures comme de l'UTC. |
| `street`, `zip`, `city`, `state`, `country` | string | **Builder :** `city` et `country` obligatoires, jusqu'à 40 chacun. |
| `facilities` | string\[] | ID de la liste ci-dessous. Les ID inconnus sont ignorés. |
| `notes` | string | Texte libre. |
| `fileId` | string | Image de couverture (cible `logo`). |
| `pageLogoFileId` | string | Logo de la page (cible `logo`). |
| `organizerName`, `organizerEmail`, `mobile`, `work` | string | `mobile` et `work` jusqu'à 40. |
| `socialLinks` | `{ platform, url }[]` | Les [plateformes sociales de la vCard](#vcard), plus `website`. |
| `ticketsUrl` | URL http(s) | Lien pour acheter des billets. |
| `ticketsLabel` | string | Jusqu'à 20 caractères. Les libellés plus longs sont tronqués. Vide affiche le libellé par défaut. |

> [accordion] Types d'événement
>
> `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] Équipements
>
> | Groupe | ID |
> | - | - |
> | Entrée | `freeEntry`, `idRequired`, `invitationOnly`, `plusOneAllowed`, `reEntryAllowed` |
> | Âge (un seul choix) | `adultsOnly`, `age18Plus`, `age21Plus`, `kidsWelcome` |
> | Sur place | `parking`, `publicTransport`, `shuttle`, `wheelchairAccess`, `evCharging`, `wifi`, `foodDrinks`, `alcoholServed`, `atm`, `coatCheck`, `pool`, `phoneCharging`, `firstAid`, `wc` |
> | Règles | `petsAllowed`, `noPets`, `smokingArea`, `noSmoking`, `noPhotos` |
> | Code vestimentaire (un seul choix) | `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\"}"
}
```

Erreurs :

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

## Fichiers dans les QR codes

Enregistrez un fichier avec [Fichiers](https://docs.getqr.com/fr/api/endpoints/files.md), importez-le, puis transmettez son `fileId`. Utilisez la cible qui correspond à l'usage :

* **`pdf`, `image`, `video`.** Le contenu d'un QR code PDF, Image ou Video.
* **`logo`.** Images de profil, logos de page, icônes de liens personnalisés et logos centraux.

Les fichiers qui ne sont jamais rattachés à un QR code sont supprimés après un délai de grâce.

Erreurs liées à `fileId`, renvoyées à la création et sur `PATCH` quand `fileId` est envoyé :

| Statut | Cause |
| - | - |
| `422 unprocessable_entity` | Le type n'accepte pas de fichier. Seuls `pdf`, `image`, `video`, `vcard`, `social`, `multilink` et `event` en acceptent un. |
| `404 not_found` | Aucun fichier avec cet ID. Enregistrez-le d'abord avec `POST /api/v1/files`. |
| `422 unprocessable_entity` | Le fichier a été importé pour une autre cible. Par exemple, un import `image` sur un QR code PDF, ou un import `pdf`, `image` ou `video` utilisé comme photo de vCard. |
| `422 unprocessable_entity` | Le fichier est enregistré, mais l'import vers `uploadUrl` ne s'est jamais terminé. |

Les ID de fichiers à l'intérieur d'un payload (`fileId`, `pageLogoFileId`, `customItems[].logoFileId`, lignes `X-GETQR-*-FILEID`) ne sont pas validés. Ils ne s'affichent que s'ils ont été importés avec la cible `logo`. Le QR code se les approprie, le nettoyage ne les touche donc pas.

## Changer de type

Vous pouvez changer `qrType` avec [Modifier un QR code](https://docs.getqr.com/fr/api/endpoints/qr-codes.md#modifier-un-qr-code). Envoyez un `data` qui correspond au nouveau type : le payload stocké appartient à l'ancien type, donc un changement sans lui est refusé.

Après une mise à jour, la destination est déterminée dans cet ordre :

1. `vcard`, `social`, `multilink`, `event` : toujours la page hébergée.
2. Un lot de PDF ou une galerie d'images créé dans le tableau de bord : sa page de destination.
3. `pdf`, `image`, `video` : l'URL du fichier (un nouveau `fileId`, sinon celui stocké).
4. `link.url`, s'il est envoyé.
5. Le `data` modifié.
6. L'URL stockée.

Effet de chaque changement :

* **Depuis `pdf`, `image` ou `video`.** `fileId` et tout lot ou galerie sont effacés.
* **Vers `pdf`, `image` ou `video`.** Envoyez aussi `fileId`, sinon celui stocké est réutilisé, et il peut s'agir d'une photo de vCard.
* **Depuis `app`.** Le nom de l'application, `link.ios` et `link.android` sont effacés, pour que les téléphones suivent la nouvelle destination.
* **Vers `wifi`.** L'image passe au payload brut. Les codes déjà imprimés contiennent toujours le lien court, qui redirige désormais vers une URL `wifi:`.
* **Depuis `wifi`.** Les codes imprimés gardent leur ancien réseau.
* **Vers `vcard`, `social`, `multilink` ou `event`.** Le lien court pointe vers la nouvelle page hébergée.
* **Depuis `vcard`, `social`, `multilink` ou `event`.** Envoyez le nouveau `data`. La destination le suit.

Les QR codes statiques créés dans le tableau de bord n'ont pas de lien court : modifier leur `link.url` renvoie donc `422`.

## Non pris en charge par l'API

Ces fonctionnalités du tableau de bord ne font pas partie de l'API v1. Les champs inconnus sont ignorés sans erreur, les envoyer n'a donc aucun effet.

| Champ | Description |
| - | - |
| `appName` | Le nom affiché d'un QR code App Link. Les QR codes App Link créés via l'API affichent leur URL de store dans la liste du tableau de bord. |
| `isStatic` | Un QR code statique sans lien court. Chaque QR code créé par l'API en a un, il peut donc être modifié et suivi après impression (sauf `wifi`). |
| `pdfBundle` | Un QR code PDF avec deux fichiers ou plus. L'API ne crée que des QR codes PDF à fichier unique. |
| `imageGallery` | Un QR code Image avec deux images ou plus. L'API ne crée que des QR codes à image unique. |

Les lots et galeries créés dans le tableau de bord peuvent toujours être lus, mis en pause et supprimés via l'API, mais leurs fichiers ne peuvent pas être modifiés par ce biais.

## Problèmes courants

> [accordion] 422 Invalid destination URL
>
> `link.url` utilise un schéma vers lequel le lien court ne peut pas rediriger, comme `geo:`, `smsto:`, `matmsg:` ou `tel:`. Utilisez les formats de cette page.

> [accordion] 400 Missing destination URL
>
> `data` est vide et il n'y a pas de `link.url`. Pour `app`, définissez au moins un champ parmi `link.ios`, `link.android`, `link.url` ou `data`.

> [accordion] La valeur data de la réponse est un lien court, pas mon URL
>
> Pour les types de lien, le `data` stocké est le lien court. Lisez la destination dans `url`.

> [accordion] La page de destination n'affiche pas certains détails de mon payload
>
> La page ne lit que les champs et formes de lignes listés pour le type. Les autres champs sont stockés mais pas affichés.

## Et ensuite

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

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

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

> [card] [Règles d'accès](https://docs.getqr.com/fr/api/guides/access-rules.md)


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