Ir para o conteúdo

Erros e respostas da API

Este artigo de referência aborda os vários erros e respostas do servidor que podem surgir ao usar a API da Braze e como solucioná-los.

Respostas do servidor

Se a carga útil do seu POST foi aceita pelos nossos servidores, mensagens bem-sucedidas recebem a seguinte resposta:

{
  "message" : "success"
}

Observe que “success” significa apenas que a carga útil da API RESTful foi formada corretamente e encaminhada para nossos serviços de notificação por push, e-mail ou outros serviços de envio de mensagens. Isso não significa que as mensagens foram de fato entregues, já que fatores adicionais podem impedir a entrega da mensagem (por exemplo, um dispositivo pode estar offline, o token por push pode ser rejeitado pelos servidores da Apple, ou você pode ter fornecido um ID de usuário desconhecido).

Por que minha solicitação retorna “success” quando nenhuma mensagem foi entregue?

Uma resposta message: success ou 2XX significa que a Braze aceitou e enfileirou a solicitação para os endpoints envolvidos — não que todos os destinatários receberam uma mensagem. Para envio de mensagens, a entrega ainda depende da elegibilidade do canal, tokens, erros do provedor e validação de conteúdo. Consulte a tabela de erros fatais para erros HTTP que bloqueiam envios, e as análises da sua Campaign ou Canvas para métricas de entrega downstream.

Para endpoints como /users/identify, que não enviam mensagens, uma resposta de sucesso significa apenas que a Braze aceitou a solicitação para processamento. Se nenhum usuário existir com o alias fornecido, ou se o alias pertencer a um perfil que já possui um external_id, a Braze ignora a identificação. A API ainda retorna a resposta inicial de sucesso; não há erro indicando que o alias não foi correspondido. Como alias_name é sensível a maiúsculas e minúsculas, uma diferença de capitalização produz esse mesmo resultado.

Se sua mensagem for bem-sucedida, mas tiver erros não fatais, você receberá a seguinte resposta:

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

No caso de sucesso, todas as mensagens que não foram afetadas por um erro no array errors ainda serão entregues. Se sua mensagem tiver um erro fatal, você receberá a seguinte resposta:

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

Respostas para IDs de envio rastreados

A análise de dados está sempre disponível para Campaigns. Além disso, a análise de dados está disponível para uma instância de envio específica de uma Campaign quando ela é enviada como broadcast. Quando o rastreamento está disponível para uma instância de envio específica de uma Campaign, você recebe a seguinte resposta:

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

O ID de envio fornecido pode ser usado como parâmetro para o endpoint /send/data_series para obter análise de dados específica do envio.

Erros

O elemento de código de status de uma resposta do servidor é um número de 3 dígitos em que o primeiro dígito do código define a classe da resposta.

  • A classe 2XX de código de status (não fatal) indica que sua solicitação foi recebida, compreendida e aceita com sucesso.
  • A classe 4XX de código de status (fatal) indica um erro do cliente. Consulte a tabela de erros fatais para ver a lista completa de códigos de erro 4XX e suas descrições.
  • A classe 5XX de código de status (fatal) indica um erro do servidor. Há várias causas possíveis — por exemplo, o servidor que você está tentando acessar não consegue executar a solicitação, o servidor está em manutenção e não consegue executar a solicitação, ou o servidor está enfrentando altos níveis de tráfego. Quando isso acontecer, recomendamos que você tente novamente a solicitação com backoff exponencial. No caso de um incidente ou interrupção, a Braze não consegue reproduzir nenhuma chamada de REST API que falhou durante a janela do incidente. Você deve tentar novamente todas as chamadas que falharam durante a janela do incidente.
    • Um erro 502 é uma falha antes de a solicitação chegar ao servidor de destino.
    • Um erro 503 significa que a solicitação chegou ao servidor de destino, mas não foi possível completá-la porque não há capacidade suficiente, há um problema de rede ou algo semelhante.
    • Um erro 504 indica que um servidor não recebeu uma resposta de outro servidor upstream.

Erros fatais

Os seguintes códigos de status e mensagens de erro associadas são retornados quando sua solicitação encontra um erro fatal.

Código de erro Descrição
5XX Internal Server Error Tente novamente a solicitação com backoff exponencial.
400 Bad Request Sintaxe incorreta. JSON inválido retorna HTTP 400. O campo error pode incluir uma mensagem informando que você deve enviar application/json válido no corpo da solicitação, ou Error while parsing request body. Please check your syntax. Consulte Erro ao analisar o corpo da solicitação.
400 No Recipients Não há IDs externos, IDs de Segment nem tokens por push na solicitação.
400 Invalid Campaign ID Nenhuma Campaign de API de envio de mensagens foi encontrada para o ID de Campaign informado.
400 Message Variant Unspecified Você informou um ID de Campaign, mas não informou um ID de variante de mensagem.
400 Invalid Message Variant Você informou um ID de Campaign válido, mas o ID de variante de mensagem não corresponde a nenhuma das mensagens dessa Campaign.
400 Mismatched Message Type Você informou uma variante de mensagem com o tipo de mensagem errado para pelo menos uma de suas mensagens.
400 Invalid Extra Push Payload Você informou a chave extra para apple_push ou android_push, mas ela não é um dicionário.
400 Max Input Length Exceeded Para /users/track, esse erro é causado ao exceder o número máximo de objetos permitidos em uma única solicitação. O limite depende do modelo de limite de frequência: para a maioria dos clientes, cada solicitação suporta até 75 objetos no total, combinados entre attributes, events e purchases. Para clientes em limites de frequência legados, cada array suporta até 75 objetos de forma independente. Para saber mais, consulte POST: Criar e atualizar usuários.
400 The max number of external_ids and aliases per request was exceeded Causado ao chamar mais de 50 IDs externos.
400 The max number of ids per request was exceeded Causado ao chamar mais de 50 IDs externos.
400 No message to send Nenhuma carga útil foi especificada para a mensagem.
400 Slideup Message Length Exceeded A mensagem slideup contém mais de 140 caracteres.
400 Apple Push Length Exceeded A carga útil JSON tem mais de 1.912 bytes.
400 Android Push Length Exceeded A carga útil JSON tem mais de 4.000 bytes.
400 Bad Request Não foi possível analisar o datetime de send_at.
400 Bad Request Na sua solicitação, in_local_time é verdadeiro, mas time já passou no fuso horário da sua empresa.
401 Unauthorized Chave de API inválida. Causas comuns incluem:

- Cabeçalho Authorization ausente ou malformado. O valor do cabeçalho deve ser Bearer seguido de um espaço e sua chave de API: Authorization: Bearer YOUR-API-KEY. Erros comuns incluem omitir Bearer, omitir a chave após Bearer ou colocar o valor entre aspas.
- Endpoint REST incorreto. Você está enviando a solicitação para a instância incorreta. Por exemplo, se sua conta está na instância EU (https://dashboard-01.braze.eu), a solicitação deve ser enviada para https://rest.fra-01.braze.eu.
- Permissões insuficientes. Cada chave de API tem escopo para um espaço de trabalho e conjunto de permissões específicos. Verifique as permissões da chave em Configurações > Chaves de API no dashboard.
- Chave de API incorreta. As chaves de API são específicas do espaço de trabalho. Uma chave de um espaço de trabalho não pode ser usada para autenticar solicitações de outro espaço de trabalho.
403 Forbidden O plano de tarifação não oferece suporte, ou a conta está inativada.
403 Access Denied A chave da API REST que você está usando não tem permissões suficientes. Causas comuns incluem:
  • A chave de API é anterior ao recurso. Se a chave de API foi criada antes do lançamento de um recurso (como grupos de inscrições ou catálogos), a chave não herda automaticamente essas permissões. Crie uma nova chave de API com as permissões necessárias em Configurações > Chaves de API.
  • Permissão específica do endpoint ausente. Cada endpoint de API requer um escopo de permissão específico (por exemplo, users.track ou email.status). Verifique se as permissões da chave correspondem ao endpoint que você está chamando.
  • Barra final ou erro de digitação na URL. Por exemplo, /users/track/ (com uma barra final) em vez de /users/track pode gerar erros inesperados.
404 Not Found URL inválida.
415 Unsupported Media Type O cabeçalho da solicitação Content-Type está ausente ou incorreto. Na página de Configurações, adicione Content-Type com o valor application/json.
429 Rate Limited Limite de frequência excedido.

Erro ao analisar o corpo da solicitação

A Braze retorna HTTP 400 quando o corpo da solicitação não é um JSON válido. Isso se aplica a endpoints REST que aceitam um corpo JSON, como POST, PUT e PATCH.

O campo error inclui uma mensagem informando que você deve enviar application/json válido no corpo da solicitação. Você também pode ver Error while parsing request body. Please check your syntax.

Causas comuns incluem vírgulas finais, comentários dentro do JSON, strings com aspas simples, uma chave { extra antes da carga útil ou o envio de uma string concatenada em vez de um objeto codificado em JSON.

Antes de tentar novamente:

  1. Valide a carga útil com um linter de JSON.
  2. Defina Content-Type: application/json e envie JSON codificado em UTF-8.
  3. Confirme que seu cliente HTTP codifica o objeto em JSON em vez de concatenar strings brutas.

Para limites de tamanho de carga útil e objetos por solicitação do /users/track, consulte Por que recebo 400 Bad Request com um erro de sintaxe ou análise?.

New Stuff!