Ir al contenido

Errores y respuestas de la API

Este artículo de referencia cubre los distintos errores y respuestas del servidor que pueden surgir al utilizar la API de Braze y cómo solucionarlos.

Respuestas del servidor

Si tu carga útil POST fue aceptada por nuestros servidores, los mensajes exitosos recibirán la siguiente respuesta:

{
  "message" : "success"
}

Ten en cuenta que “success” solo significa que la carga útil de la API RESTful estaba correctamente formada y se pasó a nuestros servicios de notificaciones push, correo electrónico u otros servicios de mensajería. No significa que los mensajes se hayan entregado realmente, ya que factores adicionales podrían impedir la entrega del mensaje (por ejemplo, un dispositivo podría estar desconectado, el token de notificaciones push podría ser rechazado por los servidores de Apple, o podrías haber proporcionado un ID de usuario desconocido).

¿Por qué mi solicitud devuelve success cuando no se entregó ningún mensaje?

Una respuesta message: success o 2XX significa que Braze aceptó y puso en cola la solicitud para los endpoints involucrados, no que cada destinatario haya recibido un mensaje. Para la mensajería, la entrega aún depende de la elegibilidad del canal, los tokens, los errores del proveedor y la validación del contenido. Consulta la tabla de errores fatales para ver los errores HTTP que bloquean los envíos, y los análisis de tu Campaign o Canvas para las métricas de entrega posteriores.

Para endpoints como /users/identify, que no envían mensajes, una respuesta de éxito solo significa que Braze aceptó la solicitud para su procesamiento. Si no existe ningún usuario con el alias proporcionado, o si el alias pertenece a un perfil que ya tiene un external_id, Braze omite la identificación. La API sigue devolviendo la respuesta de éxito inicial; no hay ningún error que indique que el alias no coincidió. Dado que alias_name distingue entre mayúsculas y minúsculas, una diferencia de mayúsculas produce el mismo resultado.

Si tu mensaje es exitoso pero tiene errores no fatales, recibirás la siguiente respuesta:

{
  "message" : "success", "errors" : [<minor error message>]
}

En caso de éxito, cualquier mensaje que no se haya visto afectado por un error en el array errors se seguirá entregando. Si tu mensaje tiene un error fatal, recibirás la siguiente respuesta:

{
  "message" : <fatal error message>, "errors" : [<minor error message>]
}

Respuestas para los ID de envío con seguimiento

Los análisis siempre están disponibles para Campaigns. Además, los análisis están disponibles para una instancia de envío de Campaign específica cuando la Campaign se envía como difusión. Cuando el seguimiento está disponible para una instancia de envío de Campaign específica, recibes la siguiente respuesta:

{
  "message": "success", "send_id" : "example_send_id"
}

El ID de envío proporcionado puede utilizarse como parámetro para el endpoint /send/data_series para recuperar análisis específicos del envío.

Errores

El elemento de código de estado en la respuesta de un servidor es un número de 3 dígitos donde el primer dígito del código define la clase de respuesta.

  • La clase 2XX de código de estado (no fatal) indica que tu solicitud fue recibida, comprendida y aceptada correctamente.
  • La clase 4XX de código de estado (fatal) indica un error del cliente. Consulta la tabla de errores fatales para ver una lista completa de códigos de error 4XX y sus descripciones.
  • La clase 5XX de código de estado (fatal) indica un error del servidor. Existen varias causas posibles, por ejemplo, el servidor al que intentas acceder no puede ejecutar la solicitud, el servidor está en mantenimiento y no puede ejecutar la solicitud, o el servidor está experimentando altos niveles de tráfico. Cuando esto sucede, te recomendamos reintentar tu solicitud con retirada exponencial. En caso de un incidente o interrupción, Braze no puede reproducir ninguna llamada a la REST API que haya fallado durante la ventana del incidente. Debes reintentar todas las llamadas que hayan fallado durante la ventana del incidente.
    • Un error 502 es un fallo antes de que la solicitud llegue al servidor de destino.
    • Un error 503 significa que la solicitud llegó al servidor de destino, pero no podemos completarla porque no hay suficiente capacidad, hay un problema de red o algo similar.
    • Un error 504 indica que un servidor no recibió una respuesta de otro servidor upstream.

Errores fatales

Los siguientes códigos de estado y mensajes de error asociados se devuelven si tu solicitud encuentra un error fatal.

Código de error Descripción
5XX Internal Server Error Reintenta tu solicitud con retirada exponencial.
400 Bad Request Sintaxis incorrecta. Un JSON no válido devuelve HTTP 400. El campo error puede incluir un mensaje indicando que debes enviar application/json válido en el cuerpo de la solicitud, o Error while parsing request body. Please check your syntax. Consulta Error al analizar el cuerpo de la solicitud.
400 No Recipients No hay ID externos, ID de segmento ni tokens de notificaciones push en la solicitud.
400 Invalid Campaign ID No se encontró ninguna Campaign de API de mensajería para el ID de campaña proporcionado.
400 Message Variant Unspecified Proporcionas un ID de campaña pero no un ID de variante de mensaje.
400 Invalid Message Variant Proporcionaste un ID de campaña válido, pero el ID de variante de mensaje no coincide con ninguno de los mensajes de esa Campaign.
400 Mismatched Message Type Proporcionaste una variante de mensaje del tipo de mensaje incorrecto para al menos uno de tus mensajes.
400 Invalid Extra Push Payload Proporcionas la clave extra para apple_push o android_push pero no es un diccionario.
400 Max Input Length Exceeded Para /users/track, este error es causado por exceder el número máximo de objetos permitidos en una sola solicitud. El límite depende del modelo de límite de velocidad: para la mayoría de los clientes, cada solicitud admite hasta 75 objetos totales combinados entre attributes, events y purchases. Para clientes con límites de velocidad heredados, cada arreglo admite hasta 75 objetos de forma independiente. Para más información, consulta POST: Crear y actualizar usuarios.
400 The max number of external_ids and aliases per request was exceeded Causado por llamar a más de 50 ID externos.
400 The max number of ids per request was exceeded Causado por llamar a más de 50 ID externos.
400 No message to send No se especifica una carga útil para el mensaje.
400 Slideup Message Length Exceeded El mensaje de deslizamiento hacia arriba contiene más de 140 caracteres.
400 Apple Push Length Exceeded La carga útil JSON supera los 1912 bytes.
400 Android Push Length Exceeded La carga útil JSON supera los 4000 bytes.
400 Bad Request No se puede analizar el datetime de send_at.
400 Bad Request En tu solicitud, in_local_time es verdadero pero time ya ha pasado en la zona horaria de tu empresa.
401 Unauthorized Clave de API no válida. Las causas comunes incluyen:

- Encabezado de autorización faltante o mal formado. El valor del encabezado debe ser Bearer seguido de un espacio y luego tu clave de API: Authorization: Bearer YOUR-API-KEY. Los errores comunes incluyen omitir Bearer, omitir la clave después de Bearer o envolver el valor entre comillas.
- Endpoint REST incorrecto. Estás enviando la solicitud a la instancia incorrecta. Por ejemplo, si tu cuenta está en nuestra instancia de la UE (https://dashboard-01.braze.eu), la solicitud debe enviarse a https://rest.fra-01.braze.eu.
- Permisos insuficientes. Cada clave de API está vinculada a un espacio de trabajo y un conjunto de permisos específicos. Verifica los permisos de la clave en Configuración > Claves de API en el panel.
- Clave de API incorrecta. Las claves de API son específicas del espacio de trabajo. Una clave de un espacio de trabajo no puede usarse para autenticar solicitudes de un espacio de trabajo diferente.
403 Forbidden El plan de tarifas no lo admite, o la cuenta está inactivada.
403 Access Denied La clave de REST API que estás usando no tiene permisos suficientes. Las causas comunes incluyen:
  • La clave de API es anterior a la característica. Si la clave de API se creó antes de que se lanzara una característica (como grupos de suscripción o catálogos), la clave no hereda automáticamente esos permisos. Crea una nueva clave de API con los permisos necesarios en Configuración > Claves de API.
  • Falta el permiso específico del endpoint. Cada endpoint de API requiere un ámbito de permiso específico (por ejemplo, users.track o email.status). Verifica que los permisos de la clave coincidan con el endpoint que estás llamando.
  • Barra diagonal al final o error tipográfico en la URL. Por ejemplo, /users/track/ (con una barra diagonal al final) en lugar de /users/track puede producir errores inesperados.
404 Not Found URL no válida.
415 Unsupported Media Type Falta el encabezado de solicitud Content-Type o es incorrecto. En la página de Configuración, añade Content-Type con un valor de application/json.
429 Rate Limited Se superó el límite de velocidad.

Error al analizar el cuerpo de la solicitud

Braze devuelve HTTP 400 cuando el cuerpo de la solicitud no es JSON válido. Esto aplica a los endpoints REST que aceptan un cuerpo JSON, como POST, PUT y PATCH.

El campo error incluye un mensaje indicando que debes enviar application/json válido en el cuerpo de la solicitud. También podrías ver Error while parsing request body. Please check your syntax.

Las causas comunes incluyen comas finales, comentarios dentro del JSON, cadenas con comillas simples, una llave de apertura { adicional antes de la carga útil, o enviar una cadena concatenada en lugar de un objeto codificado en JSON.

Antes de reintentar:

  1. Valida la carga útil con un linter de JSON.
  2. Establece Content-Type: application/json y envía JSON codificado en UTF-8.
  3. Confirma que tu cliente HTTP codifique el objeto en JSON en lugar de concatenar cadenas sin procesar.

Para los límites de tamaño de carga útil y de objetos por solicitud de /users/track, consulta ¿Por qué obtengo 400 Bad Request con un error de sintaxis incorrecta o de análisis?.

New Stuff!