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

# Datos del código QR por tipo

> El formato de datos, un ejemplo de solicitud y qué se puede editar tras imprimir en cada uno de los 16 tipos de código QR.

> [!NOTE]
>
> La API de GetQR está en beta y solo está disponible para algunos espacios de trabajo. Los detalles pueden cambiar antes del lanzamiento general.

Cada código QR tiene un `qrType`, y el tipo determina qué debe contener `data`. Esta guía recoge el formato de cada tipo, un cuerpo de solicitud que funciona y lo que aún puedes cambiar una vez impreso el código.

Los ejemplos son cuerpos de solicitud para [Crear un código QR](https://docs.getqr.com/es/api/endpoints/qr-codes.md#crear-un-código-qr). Envíalos así:

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

## Todos los tipos de un vistazo

| `qrType` | `data` | Editable tras imprimir |
| - | - | - |
| [`website`](#website) | URL http(s) | Sí |
| [`feedback`](#opiniones) | URL http(s) del formulario | Sí |
| [`payment`](#pago) | URL del proveedor de pagos | Sí |
| [`whatsapp`](#whatsapp) | Enlace `wa.me` | Sí |
| [`location`](#ubicación) | URL de un mapa | Sí |
| [`app`](#app-link) | URL de la tienda o vacío, más `link.ios` / `link.android` | Sí |
| [`email`](#correo-electrónico) | URI `mailto:` | Sí |
| [`sms`](#sms) | URI `sms:` | Sí |
| [`wifi`](#wifi) | Carga útil `WIFI:` | **No** |
| [`pdf`, `image`, `video`](#pdf-imagen-y-vídeo) | Vacío, con un `fileId` | Sí |
| [`vcard`](#vcard) | Texto vCard 3.0 | Sí |
| [`social`](#social-media) | Cadena JSON | Sí |
| [`multilink`](#multi-link) | Cadena JSON | Sí |
| [`event`](#evento) | Cadena JSON | Sí |

## Cómo se resuelve un código QR

Cada código QR es un enlace corto más una carga útil. El contenido va en dos campos:

| Campo | Qué es |
| - | - |
| `link.url` | A dónde envía el enlace corto a quien escanea. Es el destino real en todos los tipos excepto `wifi`. |
| `data` | La carga útil del tipo, validada según `qrType`. Solo se guarda tal cual se envía en `wifi`, `vcard`, `social`, `multilink`, `event` y `sms`. En los demás tipos solo sirve para rellenar `link.url`, y el `data` guardado pasa a ser el enlace corto. Lee el destino en `url` de la respuesta. |

Reglas para todos los tipos:

* **Valores por defecto.** Al crear, un `link.url` omitido o vacío toma el valor de `data`, y puedes omitir todo el objeto `link`. Si envías ambos y son distintos, gana `link.url`. Envíalos iguales o envía solo `data`.
* **Qué codifica la imagen.** La imagen codifica el enlace corto en todos los tipos excepto `wifi`. Así puedes cambiar a dónde lleva un código impreso, y sus escaneos se registran. Un código QR WiFi codifica la propia red: no puedes cambiarlo tras imprimirlo y sus escaneos no se registran.
* **Esquemas.** `link.url` solo acepta `http:`, `https:`, `wifi:`, `mailto:`, `sms:` y `begin:`. Cualquier otro, incluidos `geo:`, `smsto:`, `matmsg:` y `tel:`, devuelve `422 Invalid destination URL`, aunque `data` lo acepte.
* **Data vacío.** Un `data` vacío omite la validación del tipo. En un tipo de redirección, `link.url` debe estar definido entonces, o la llamada devuelve `400 Missing destination URL`.
* **Estructura.** Más allá de la validación del tipo, el servidor no valida la carga útil. Un tipo JSON solo tiene que poder analizarse como objeto JSON, y una vCard solo tiene que empezar por `BEGIN:VCARD`.

> [!TIP]
>
> Los límites marcados como **Editor** son los que aplica el editor del panel. La API acepta cargas útiles que no los cumplen, pero pueden verse mal en la página de destino o en el editor.

## Website

`qrType`: `"website"`. Guía del panel: [Código QR de Website](https://docs.getqr.com/es/qr-types/website.md).

| Campo | Comportamiento |
| - | - |
| `data` | Una URL http(s). |
| `link.url` | El destino. Por defecto, `data`. |
| `fileId` | No permitido. |
| Codifica | El enlace corto, que redirige a `link.url`. Los escaneos se registran. |
| Tras imprimir | Editable. Envía `data` o `link.url` para cambiar el destino. Basta con `data`. |

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

Errores:

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

## Opiniones

`qrType`: `"feedback"`. Guía del panel: [Código QR de opiniones](https://docs.getqr.com/es/qr-types/feedback.md).

`data` es la URL http(s) del formulario de opinión, por ejemplo un Google Form o una página de reseñas. Todo lo demás funciona como en [Website](#website).

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

## Pago

`qrType`: `"payment"`. Guía del panel: [Código QR de pago](https://docs.getqr.com/es/qr-types/payment.md).

`data` es la URL de pago del proveedor, por ejemplo:

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

El editor del panel reconoce estos dominios: `paypal.me`, `paypal.com/paypalme`, `cash.app`, `venmo.com`, `buy.stripe.com`, `stripe.com`, `square.link` y `payoneer.com`. En PayPal, el importe es el último segmento de la ruta. Cualquier otra URL http(s) también funciona, pero el editor no la separará en proveedor e importe. Todo lo demás funciona como en [Website](#website).

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

## WhatsApp

`qrType`: `"whatsapp"`. Guía del panel: [Código QR de WhatsApp](https://docs.getqr.com/es/qr-types/whatsapp.md).

`data` es un enlace `wa.me`: el número internacional en dígitos sin `+`, opcionalmente con un texto predefinido.

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

El servidor solo comprueba que sea una URL http(s). El panel también lee enlaces `api.whatsapp.com/send`. Todo lo demás funciona como en [Website](#website).

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

## Ubicación

`qrType`: `"location"`. Guía del panel: [Código QR de ubicación](https://docs.getqr.com/es/qr-types/location.md).

`data` es la URL de un mapa. Usa este formato para que el código QR siga siendo editable en el panel (`query_place_id` es opcional):

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

Cualquier otra URL http(s) también redirige. Una URI `geo:` supera la validación de `data`, pero se rechaza como destino, así que no la uses. Todo lo demás funciona como en [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"`. Guía del panel: [Código QR de App Link](https://docs.getqr.com/es/qr-types/app-link.md).

| Campo | Comportamiento |
| - | - |
| `link.ios`, `link.android` | URL de App Store y Google Play. Los visitantes de iOS van a `ios` y los de Android a `android`. Tienen prioridad sobre todo lo demás al escanear. |
| `link.url` | El destino alternativo para otros dispositivos. Por defecto, `data` y, si no, `ios` o `android`. |
| `data` | Una URL http(s) (el panel envía la URL de la tienda) o vacío. Al menos uno de `link.ios`, `link.android`, `link.url` o `data` debe estar definido, o la llamada devuelve `400 Missing destination URL`. |
| `fileId` | No permitido. |
| Codifica | El enlace corto. Los escaneos se registran. |
| Tras imprimir | Editable. `link.ios` y `link.android` se aplican por separado, cada uno solo si se envía. `null` borra uno. No tienes que volver a enviar `qrType`. Cambiar a otro tipo borra los dos enlaces de tienda. |

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

Errores:

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

## Correo electrónico

`qrType`: `"email"`. Guía del panel: [Código QR de correo electrónico](https://docs.getqr.com/es/qr-types/email.md).

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

| Campo | Comportamiento |
| - | - |
| `data` | Una URI `mailto:` con asunto y cuerpo opcionales. Codifica los espacios como `%20`: el panel los escribe como `+`, y no todas las apps de correo lo leen como un espacio. `matmsg:` se rechaza como destino. |
| `link.url` | La URI `mailto:`. Por defecto, `data`. |
| `fileId` | No permitido. |
| Codifica | El enlace corto, que abre una página que pasa el mensaje a la app de correo. |
| Tras imprimir | Editable. Envía `data` o `link.url` para cambiar el mensaje. Basta con `data`. |

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

Errores:

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

## SMS

`qrType`: `"sms"`. Guía del panel: [Código QR de SMS](https://docs.getqr.com/es/qr-types/sms.md).

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

| Campo | Comportamiento |
| - | - |
| `data` | Una URI `sms:` con un cuerpo opcional. El panel solo lee exactamente esta forma. `smsto:` se rechaza como destino. |
| `link.url` | La URI `sms:`. Por defecto, `data`. |
| `fileId` | No permitido. |
| Codifica | El enlace corto, que abre una página que pasa el mensaje a la app de mensajería. |
| Tras imprimir | Editable. Envía `data` o `link.url` para cambiar el mensaje. Basta con `data`. |

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

Errores:

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

## WiFi

`qrType`: `"wifi"`. Guía del panel: [Código QR de WiFi](https://docs.getqr.com/es/qr-types/wifi.md).

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

| Campo | Comportamiento |
| - | - |
| `data` | Obligatorio. Mantén el orden `T`, `S`, `P`, `H`: el editor y la lista del panel dependen de él. Escapa `\`, `;`, `"` y `:` en el SSID y la contraseña con una barra invertida. Para una red abierta, usa `T:nopass` con un `P:` vacío. Los escáneres rechazan `T:none`. **Editor:** SSID obligatorio, contraseña de al menos 8 caracteres salvo con `nopass`. |
| `link.url` | No se usa al escanear. Por defecto, `data`. |
| `fileId` | No permitido. |
| Codifica | La carga útil `WIFI:` en bruto, no el enlace corto. Los escaneos no se registran. |
| Tras imprimir | **No editable.** Un `data` nuevo solo cambia las descargas futuras. Los códigos impresos mantienen la red antigua. |

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

Errores:

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

> [!WARNING]
>
> No cambies el tipo de un código QR WiFi ya impreso. Los códigos impresos mantienen la red antigua.

## PDF, imagen y vídeo

`qrType`: `"pdf"`, `"image"` o `"video"`. Guías del panel: [PDF](https://docs.getqr.com/es/qr-types/pdf.md), [Image](https://docs.getqr.com/es/qr-types/image.md), [Video](https://docs.getqr.com/es/qr-types/video.md).

| Campo | Comportamiento |
| - | - |
| `fileId` | El archivo. Súbelo con el target que corresponde al tipo: `pdf`, `image` o `video`. Con un `fileId`, `link.url` pasa a ser la URL del archivo, y lo que envíes en él se ignora. |
| `data` | Cualquier cosa excepto la carga útil de otro tipo (`WIFI:`, `BEGIN:VCARD`, `sms:`, `mailto:`, un objeto JSON). Puede ir vacío. |
| `link.url` | Sin `fileId`, `link.url` (o `data`) se usa como destino externo. Funciona, pero el panel no muestra ningún archivo. |
| Codifica | El enlace corto, que redirige directamente al archivo. Un PDF se abre como archivo sin más, no en una página de visor. |
| Tras imprimir | Editable. Envía un `fileId` nuevo para sustituir el archivo. El anterior se libera. |

Un archivo por código QR: los paquetes de PDF y las galerías de imágenes no están disponibles en la API. Consulta [No disponible en la API](#no-disponible-en-la-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"
}
```

Para subir el archivo y obtener su `fileId`, consulta [Archivos](https://docs.getqr.com/es/api/endpoints/files.md).

## vCard

`qrType`: `"vcard"`. Guía del panel: [Código QR de vCard](https://docs.getqr.com/es/qr-types/vcard.md).

| Campo | Comportamiento |
| - | - |
| `data` | Obligatorio. Texto vCard 3.0 que empieza por `BEGIN:VCARD`, con las líneas separadas por `\r\n` (`\n` también funciona). |
| `fileId` | Imagen de perfil opcional (target `logo`), que se usa cuando `data` no tiene una línea `PHOTO` ni `X-GETQR-IMAGE-FILEID`. |
| `link.url` | Se ignora y se sustituye por la página alojada. Omítelo. |
| Codifica | El enlace corto, que abre la página de contacto alojada con la descarga del contacto (`.vcf`). |
| Tras imprimir | Editable. Envía un `data` nuevo para actualizar la página. |

La página de destino y el editor solo leen las formas de línea siguientes. Otras variantes, como `TEL;CELL:` o `EMAIL;TYPE=INTERNET:`, se guardan pero no aparecen en la página.

* `N:<last>;<first>;;;`: apellidos y nombre. **Editor:** ambos obligatorios, hasta 40 caracteres.
* `FN:<first> <last>`: la página no lo lee. De aquí sale la etiqueta de la lista del panel.
* `ORG:<company>` y `TITLE:<role>`: empresa y cargo. **Editor:** hasta 40 caracteres.
* `TEL;TYPE=HOME:`, `TEL;TYPE=CELL:`, `TEL;TYPE=WORK:`, `TEL;TYPE=FAX:`: números de teléfono, móvil, trabajo y fax (`+` y dígitos).
* `EMAIL:<email>`: dirección de correo electrónico.
* `URL:<url>`: sitio web.
* `NOTE:<text>`: resumen. Escapa `\\`, `\n`, `\;` y `\,`. **Editor:** hasta 200 caracteres.
* `ADR:;;<street>;<city>;<state>;<zip>;<country>`: dirección.
* `X-SOCIALPROFILE;TYPE=<platform>:<url>` o `URL;TYPE=<PLATFORM>:<url>`: enlaces a redes sociales, una línea por plataforma.
* `PHOTO;VALUE=URI:<url>`: URL de la imagen de perfil. Tiene prioridad sobre cualquier ID de archivo.
* `X-GETQR-IMAGE-FILEID:<fileId>`: imagen de perfil (target `logo`).
* `X-GETQR-PAGE-LOGO-FILEID:<fileId>`: logotipo de la página (target `logo`).
* `X-GETQR-LANDING-THEME:p|<0-4>` o `X-GETQR-LANDING-THEME:c|#RRGGBB|#RRGGBB|#RRGGBB`: tema de la página, ya sea un índice de preset (de 0 a 4) o colores personalizados de fondo, botones e iconos.

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

Errores:

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

## Social Media

`qrType`: `"social"`. Guía del panel: [Código QR de Social Media](https://docs.getqr.com/es/qr-types/social.md).

| Campo | Comportamiento |
| - | - |
| `data` | Obligatorio. Una cadena JSON que codifica un objeto. Créala con `JSON.stringify`. |
| `fileId` | Imagen de perfil opcional en el nivel superior (target `logo`). |
| `link.url` | Se ignora y se sustituye por la página alojada. Omítelo. |
| Codifica | El enlace corto, que abre la página de redes sociales alojada. |
| Tras imprimir | Editable. Envía un `data` nuevo para actualizar la página. |

Campos de `data`:

| Campo | Tipo | Notas |
| - | - | - |
| `firstName` | string | Titular de la página y único nombre que se muestra. **Editor:** obligatorio, hasta 40. |
| `lastName` | string | Hasta 40. No se muestra en la página. |
| `summary` | string | Hasta 200. |
| `socialLinks` | `{ platform, url }[]` | `platform` es una de las [redes sociales de vCard](#vcard). **Editor:** cada plataforma una sola vez. |
| `customItems` | `{ name, url, logoFileId }[]` | **Editor:** `name` de hasta 40, una `url` http(s) y un `logoFileId`. Al menos un enlace social o un elemento personalizado en total. |
| `fileId` | string | Imagen de perfil (target `logo`). El `fileId` de nivel superior sirve de alternativa. |
| `imageUrl` | string | URL externa de la imagen de perfil; solo se usa si no hay ID de archivo. |
| `pageLogoFileId` | string | Logotipo de la página (target `logo`). |
| `landingThemeMode` | `"preset" \| "custom"` | Por defecto, `preset`. |
| `landingPresetIndex` | 0–4 | Por defecto, 0. |
| `landingCustomBg`, `landingCustomButton`, `landingCustomIcon` | `#RRGGBB` | Se usan cuando el modo es `custom`. |

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

Errores:

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

## Multi-Link

`qrType`: `"multilink"`. Guía del panel: [Código QR de Multi-Link](https://docs.getqr.com/es/qr-types/multi-link.md).

| Campo | Comportamiento |
| - | - |
| `data` | Obligatorio. Una cadena JSON que codifica un objeto. |
| `fileId` | Imagen de perfil opcional en el nivel superior (target `logo`). |
| `link.url` | Se ignora y se sustituye por la página alojada. Omítelo. |
| Codifica | El enlace corto, que abre la página multienlace alojada. |
| Tras imprimir | Editable. Envía un `data` nuevo para actualizar la página. |

Los campos de `data` son los de [Social Media](#social-media), salvo que `firstName`, `lastName` y `summary` se sustituyen por:

| Campo | Tipo | Notas |
| - | - | - |
| `title` | string | Título de la página. **Editor:** obligatorio, hasta 40. |
| `description` | string | Hasta 200. |

En `customItems`, `logoFileId` es opcional: se muestra un icono alternativo. **Editor:** al menos un enlace social o un elemento personalizado no vacío.

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

Errores:

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

## Evento

`qrType`: `"event"`. Guía del panel: [Código QR de evento](https://docs.getqr.com/es/qr-types/event.md).

| Campo | Comportamiento |
| - | - |
| `data` | Obligatorio. Una cadena JSON que codifica un objeto. Los valores desconocidos o no válidos se sustituyen por los valores por defecto. |
| `fileId` | Se valida (target `logo`) y se guarda, pero la página del evento solo lee la portada de `data.fileId`. Pon el ID de la portada en la carga útil. |
| `link.url` | Se ignora y se sustituye por la página alojada. Omítelo. |
| Codifica | El enlace corto, que abre la página del evento alojada con la descarga de un `.ics`. |
| Tras imprimir | Editable. Envía un `data` nuevo para actualizar la página. |

Campos de `data`:

| Campo | Tipo | Notas |
| - | - | - |
| `name` | string | **Editor:** obligatorio. |
| `eventType` | string | Uno de los tipos de evento siguientes, o vacío. |
| `start`, `end` | `"YYYY-MM-DDTHH:mm"` | Hora local en `timezone`. **Editor:** ambos obligatorios, el final después del inicio. |
| `timezone` | IANA, por ejemplo `"Europe/Berlin"` | Sitúa el inicio y el final en el archivo `.ics`. Envíalo siempre: con una zona vacía o desconocida, el `.ics` trata las horas como UTC. |
| `street`, `zip`, `city`, `state`, `country` | string | **Editor:** `city` y `country` obligatorios, hasta 40 cada uno. |
| `facilities` | string\[] | ID de la lista siguiente. Los ID desconocidos se descartan. |
| `notes` | string | Texto libre. |
| `fileId` | string | Imagen de portada (target `logo`). |
| `pageLogoFileId` | string | Logotipo de la página (target `logo`). |
| `organizerName`, `organizerEmail`, `mobile`, `work` | string | `mobile` y `work` hasta 40. |
| `socialLinks` | `{ platform, url }[]` | Las [redes sociales de vCard](#vcard), más `website`. |
| `ticketsUrl` | URL http(s) | Enlace para comprar entradas. |
| `ticketsLabel` | string | Hasta 20 caracteres. Las etiquetas más largas se recortan. Si está vacío, se muestra la etiqueta predeterminada. |

> [accordion] Tipos de evento
>
> `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] Instalaciones
>
> | Grupo | ID |
> | - | - |
> | Entrada | `freeEntry`, `idRequired`, `invitationOnly`, `plusOneAllowed`, `reEntryAllowed` |
> | Edad (elige una) | `adultsOnly`, `age18Plus`, `age21Plus`, `kidsWelcome` |
> | En el lugar | `parking`, `publicTransport`, `shuttle`, `wheelchairAccess`, `evCharging`, `wifi`, `foodDrinks`, `alcoholServed`, `atm`, `coatCheck`, `pool`, `phoneCharging`, `firstAid`, `wc` |
> | Normas | `petsAllowed`, `noPets`, `smokingArea`, `noSmoking`, `noPhotos` |
> | Código de vestimenta (elige uno) | `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\"}"
}
```

Errores:

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

## Archivos en códigos QR

Registra un archivo con [Archivos](https://docs.getqr.com/es/api/endpoints/files.md), súbelo y pasa después su `fileId`. Usa el target que corresponda al uso:

* **`pdf`, `image`, `video`.** El contenido de un código QR de PDF, imagen o vídeo.
* **`logo`.** Imágenes de perfil, logotipos de página, iconos de enlaces personalizados y logotipos centrales.

Los archivos que nunca se vinculan a un código QR se eliminan tras un periodo de gracia.

Errores de `fileId`, que se devuelven al crear y en `PATCH` cuando se envía `fileId`:

| Estado | Causa |
| - | - |
| `422 unprocessable_entity` | El tipo no admite archivo. Solo lo admiten `pdf`, `image`, `video`, `vcard`, `social`, `multilink` y `event`. |
| `404 not_found` | No hay ningún archivo con este ID. Regístralo antes con `POST /api/v1/files`. |
| `422 unprocessable_entity` | El archivo se subió para otro target. Por ejemplo, una subida `image` en un código QR de PDF, o una subida `pdf`, `image` o `video` usada como foto de una vCard. |
| `422 unprocessable_entity` | El archivo está registrado, pero la subida a `uploadUrl` nunca se completó. |

Los ID de archivo dentro de una carga útil (`fileId`, `pageLogoFileId`, `customItems[].logoFileId`, líneas `X-GETQR-*-FILEID`) no se validan. Solo se muestran si se subieron con el target `logo`. El código QR los reclama, así que la limpieza no los toca.

## Cambio de tipo

Puedes cambiar `qrType` con [Actualizar un código QR](https://docs.getqr.com/es/api/endpoints/qr-codes.md#actualizar-un-código-qr). Envía un `data` que coincida con el nuevo tipo: la carga útil guardada pertenece al tipo anterior, así que un cambio sin ella se rechaza.

Tras una actualización, el destino se resuelve en este orden:

1. `vcard`, `social`, `multilink`, `event`: siempre la página alojada.
2. Un paquete de PDF o una galería de imágenes creados en el panel: su página de destino.
3. `pdf`, `image`, `video`: la URL del archivo (un `fileId` nuevo o, si no, el guardado).
4. `link.url`, si se envía.
5. El `data` modificado.
6. La URL guardada.

Qué hace cada cambio:

* **Al salir de `pdf`, `image` o `video`.** Se borran `fileId` y cualquier paquete o galería.
* **Al pasar a `pdf`, `image` o `video`.** Envía también `fileId`, o se reutiliza el guardado, que puede ser la foto de una vCard.
* **Al salir de `app`.** Se borran el nombre de la app, `link.ios` y `link.android`, así que los móviles siguen el nuevo destino.
* **Al pasar a `wifi`.** La imagen pasa a la carga útil en bruto. Los códigos ya impresos siguen conteniendo el enlace corto, que ahora redirige a una URL `wifi:`.
* **Al salir de `wifi`.** Los códigos impresos mantienen su red antigua.
* **Al pasar a `vcard`, `social`, `multilink` o `event`.** El enlace corto pasa a apuntar a la nueva página alojada.
* **Al salir de `vcard`, `social`, `multilink` o `event`.** Envía el `data` nuevo. El destino se ajusta a él.

Los códigos QR estáticos creados en el panel no tienen enlace corto, así que cambiar su `link.url` devuelve `422`.

## No disponible en la API

Estas funciones del panel no forman parte de la API v1. Los campos desconocidos se descartan sin error, así que enviarlos no tiene efecto.

| Campo | Descripción |
| - | - |
| `appName` | El nombre visible de un código QR de App Link. Los códigos QR de App Link creados con la API muestran la URL de su tienda en la lista del panel. |
| `isStatic` | Un código QR estático sin enlace corto. Todos los códigos QR que crea la API tienen uno, así que se pueden editar y medir después de imprimirlos (excepto `wifi`). |
| `pdfBundle` | Un código QR de PDF con dos o más archivos. La API solo crea códigos QR de PDF de un único archivo. |
| `imageGallery` | Un código QR de Image con dos o más imágenes. La API solo crea códigos QR de una única imagen. |

Los paquetes y galerías creados en el panel se pueden consultar, pausar y eliminar con la API, pero sus archivos no se pueden cambiar con ella.

## Problemas habituales

> [accordion] 422 Invalid destination URL
>
> `link.url` usa un esquema al que el enlace corto no puede redirigir, como `geo:`, `smsto:`, `matmsg:` o `tel:`. Usa los formatos de esta página.

> [accordion] 400 Missing destination URL
>
> `data` está vacío y no hay `link.url`. En `app`, define al menos uno de `link.ios`, `link.android`, `link.url` o `data`.

> [accordion] En la respuesta, data es un enlace corto y no mi URL
>
> En los tipos de enlace, el `data` guardado es el enlace corto. Lee el destino en `url`.

> [accordion] A la página de destino le faltan datos de mi carga útil
>
> La página solo lee los campos y las formas de línea indicados para el tipo. Los demás campos se guardan, pero no se muestran.

## Siguientes pasos

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

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

> [card] [Personalización](https://docs.getqr.com/es/api/guides/customization.md)

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


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