# Errores de la API

Errores de la API de Pristo: los códigos de estado y los mensajes de texto de las respuestas 400, 401, 404 y 500, y cómo resolver cada uno.

Esta página enumera todos los errores que devuelven los endpoints `POST /v1/events/send` y `POST /v1/links/generate/{prjId}` de la API de Pristo, con el mensaje del cuerpo y la solución.

## Cómo son los errores

- La mayoría de los errores `400` y `404` tienen un cuerpo de texto sin formato, por ejemplo `contact is required`. No es JSON, así que léelo como texto.
- Los errores `401` y `415`, algunos `400` y la mayoría de los `500` tienen un cuerpo de problema JSON (`Content-Type: application/problem+json`) con `title` y `status`. Un `500` puede agregar un mensaje `detail`.
- La API revisa la solicitud en este orden: la ruta, el cuerpo, la clave API y luego los datos. Una solicitud con varios problemas devuelve solo el primero.

## Errores en ambos endpoints

| Estado | Cuerpo | Causa | Solución |
|---|---|---|---|
| `400` | Cuerpo de problema JSON, `title` `Bad Request` | Falta el cuerpo o no es JSON válido, o un campo tiene el tipo JSON incorrecto, como `"isReusable": "true"` | Envía un objeto JSON. Envía `{}` cuando no tengas campos que definir |
| `400` | `Payload size exceeds the maximum allowed size of 10000 bytes` | El cuerpo ocupa más de 10 000 bytes | Envía menos campos personalizados o campos más cortos |
| `400` | `Value is invalid` | El valor de `X-API-Key` tiene menos de 24 caracteres. En los eventos, `type` o `contact.id` solo tiene espacios. En los enlaces, `language` no es un código ISO 639-1 | Copia la clave completa. Corrige el campo |
| `401` | Cuerpo de problema JSON, `title` `Unauthorized` | Falta el encabezado `X-API-Key` o está vacío, o la clave es incorrecta, está desactivada o se eliminó | Envía una clave activa. Consulta [Autenticarse con una clave API](https://docs.pristo.io/es/cx/api/authentication) |
| `405` | Vacío | La solicitud no usó `POST` | Envía `POST` |
| `415` | Cuerpo de problema JSON, `title` `Unsupported Media Type` | El encabezado `Content-Type` no es `application/json` | Agrega `Content-Type: application/json` |
| `500` | `Internal server error` o un cuerpo de problema JSON | Algo falló del lado de Pristo | Espera y vuelve a intentarlo. Si el error continúa, comunícate con el soporte de Pristo |

## Enviar un evento

| Estado | Cuerpo | Causa | Solución |
|---|---|---|---|
| `400` | `contact is required` | El cuerpo no tiene un objeto `contact` | Agrega `contact` con al menos `id` |
| `400` | `type is required and must be between 1 and 50 characters long` | Falta `type`, está vacío o tiene más de 50 caracteres | Envía el **Identificador único** del tipo de evento |
| `400` | `contact.id is required and must be between 1 and 50 characters long` | Falta `contact.id`, está vacío o tiene más de 50 caracteres | Envía tu ID del contacto |
| `404` | `no population is associated with this api key` | El programa de la clave API no tiene población | Crea la población del programa o usa una clave de un programa que tenga una |
| `404` | `Population with id not found` | No se encontró la población del programa al guardar el evento | Revisa la población en la aplicación y vuelve a intentarlo |

## Generar un enlace de encuesta

| Estado | Cuerpo | Causa | Solución |
|---|---|---|---|
| `400` | `provided surveyId is not valid` | El `prjId` de la ruta no es un ID de cuestionario de 22 caracteres. Un UUID completo también falla | Copia el ID desde la pestaña **Compartir** del cuestionario |
| `400` | `expiresInMinutes must be between 1 and 1576800` | `expiresInMinutes` es menor que 1 o mayor que 1 576 800 | Envía un valor de 1 a 1 576 800 o no lo incluyas para que el enlace no caduque |
| `400` | `language must be exactly 2 characters long (iso 639-1)` | `language` no tiene 2 caracteres | Envía un código como `en` o `he` |
| `400` | `title must be at most 50 characters long` | `title` tiene más de 50 caracteres | Acorta el título |
| `400` | `customField values must be strings` | Un valor de `customFields` es un número, un booleano, un objeto o un arreglo | Envía todos los valores como cadenas |
| `400` | `customField keys and values must be at most 50 characters long` | Una clave o un valor de `customFields` tiene más de 50 caracteres | Acórtalo |
| `404` | `project with id <UUID> not found` | No hay ningún cuestionario con este ID en la cuenta de la clave API, o el cuestionario se eliminó | Revisa el ID y la cuenta de la clave |
| `500` | Cuerpo de problema JSON, `detail` `project does not have a form associated` | El cuestionario no tiene formulario | Comunícate con el soporte de Pristo e indica el ID del cuestionario |
| `500` | Cuerpo de problema JSON, `detail` `a problem occurred, please try again later` | No se pudo cargar el cuestionario | Espera y vuelve a intentarlo |

## Temas relacionados

- [Introducción a la API de Pristo](https://docs.pristo.io/es/cx/api)
- [Enviar un evento](https://docs.pristo.io/es/cx/api/send-an-event)
- [Generar un enlace de encuesta](https://docs.pristo.io/es/cx/api/generate-a-survey-link)
- [Referencia de la API (en inglés)](https://docs.pristo.io/cx/api/reference)
