> ## Documentation Index
> Fetch the complete documentation index at: https://firespark.cloud/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Vincular dispositivo kiosco

> Consulta un device code hasta que el panel lo reclama y devuelve scope, ajustes, pagos y overrides.

La tablet envía un `device_code` estable de hardware y un `device_secret` que guarda en local. Hasta que alguien reclama ese código en el panel (**Devices → Link device**), la API responde `404` con `DEVICE_NOT_LINKED`. Después del reclamo, la primera llamada exitosa fija el secreto a esa fila. Las siguientes devuelven la config vinculada.

> [!NOTE]
>
> Estas rutas de kiosco no usan un access token de cliente. Envía `device_code`
> y `device_secret` en el body JSON. El secreto se queda en la tablet: no llega
> al panel.

El código es único por merchant. Derívalo del ID de hardware (SHA-1, primeros 8 hex, luego base36) para que una reinstalación conserve el mismo código. Ver [Configurar kioscos](https://firespark.cloud/docs/es/guides/channels/kiosk.md).

## Request body

| Campo | Requerido | Tipo | Descripción |
| - | - | - | - |
| `device_code` | Sí | string | Mínimo 8 caracteres. Se recorta y pasa a mayúsculas. |
| `device_secret` | Sí | string | Secreto de la tablet. El primer escritor gana si dos tablets consultan el mismo código sin bind. |

## Request

```bash theme={null}
curl -X POST "https://firespark.cloud/api/storefront/v1/kiosk/devices/link" \
  -H "Content-Type: application/json" \
  -d '{"device_code":"A1B2C3D4","device_secret":"ksec_9f86d081884c7d659a2feaa0c55ad015"}'
```

## Response

El body es `{ data: KioskDeviceConfig }`.

| Campo | Descripción |
| - | - |
| `device.uid` | Id interno. Úsalo en el [heartbeat](https://firespark.cloud/docs/es/storefront-api/kiosk/devices/me/post.md) y en las demás llamadas. |
| `device.id` | Id externo del dispositivo. |
| `device.alias` | Etiqueta puesta al reclamar el código. |
| `scope.store_id` | Tienda asignada al reclamar, o `null`. |
| `scope.channel_id` | Id del canal kiosco. |
| `settings.idle_timeout_seconds` | Timeout de inactividad del canal. |
| `settings.idle_warning_seconds` | Aviso de inactividad antes del reset. |
| `settings.offline_after_minutes` | Minutos sin heartbeat para marcar la tablet offline en el panel. |
| `overrides.disabled_payment_ids` | Ids de pago que esta tablet debe ocultar. |
| `payments` | Catálogo de pagos del storefront para la tienda y el canal. Sin secretos. |

## Errores

| Status | Cuándo |
| - | - |
| `404` | El código no está reclamado. El body incluye `code: "DEVICE_NOT_LINKED"`. Sigue consultando. |
| `401` | Hay un dispositivo reclamado para este código, pero el secreto no coincide. |
| `403` | Existe una fila para este código y está `DISABLED`. |
| `400` | El body no pasó validación. |


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