Pular para o conteúdo

API v1 · Guia

Erros

Formato do erro, status HTTP e a tabela de códigos que a API do Rumo CRM devolve.

Todo endpoint erra do mesmo jeito: status HTTP honesto e o mesmo corpo. Trate pelo code, que é estável. A message é para gente ler e pode mudar de texto. Um ?limt=10 com erro de digitação, por exemplo, responde 400:

JSON
{
  "error": {
    "type": "invalid_request_error",
    "code": "unknown_parameter",
    "message": "Parâmetro desconhecido: limt.",
    "param": "limt",
    "requestId": "req_7f3c2a9be1d04c6f8a5e2b7c9d1e0f34"
  }
}

Todo erro responde { "error": { "type", "code", "message", "param", "requestId" } }. type é a família do erro e code o motivo exato, estável para o seu código tratar. message é texto para gente ler e pode mudar. param aparece quando o erro é de um parâmetro específico.

StatustypecodeQuando
400invalid_request_errorinvalid_parameterParâmetro com valor inválido (veja param).
400invalid_request_errorunknown_parameterParâmetro que a operação não aceita (erro de digitação, por exemplo).
400invalid_request_errorinvalid_cursorcursor alterado ou de outra lista.
400invalid_request_errorinvalid_jsonCorpo do pedido que não é um JSON válido.
400invalid_request_errorcompany_not_foundcompanyId que não é uma empresa ativa da sua conta.
400invalid_request_errorowner_not_foundownerId que não é um usuário ativo da sua empresa.
400invalid_request_errorcontact_not_foundcontactId que não é um contato que você vê.
400invalid_request_errorpipeline_not_foundpipelineId que não é um funil da sua conta.
400invalid_request_errorpipeline_inactiveFunil desativado: negócio novo não nasce nele.
400invalid_request_errorstage_not_foundstageId que não é uma etapa da sua conta.
400invalid_request_errorstage_not_in_pipelineA etapa enviada não pertence ao funil enviado.
400invalid_request_errorstage_is_finalEtapa de ganho ou perda onde a operação não aceita etapa final (para fechar, use /win ou /lose).
400invalid_request_errorstage_change_not_allowedEtapa ou resultado do negócio enviados no PATCH. Use /move, /win ou /lose.
400invalid_request_errorlost_reason_not_foundlostReasonId que não é um motivo de perda da conta válido para o funil do negócio.
400invalid_request_errorproduct_not_foundproductId que não é um produto do catálogo da conta.
400invalid_request_errorunknown_custom_fieldCampo personalizado (slug) que não existe (veja param).
400invalid_request_errorinvalid_custom_field_valueValor fora do tipo do campo personalizado (veja param).
400invalid_request_errorinvalid_idempotency_keyIdempotency-Key vazia, com mais de 255 caracteres ou fora do ASCII visível.
401authentication_errormissing_api_tokenPedido sem o cabeçalho Authorization.
401authentication_errorinvalid_bearer_tokenCabeçalho Authorization fora do formato Bearer <token>.
401authentication_errorinvalid_api_tokenToken inexistente, expirado, revogado ou de usuário sem acesso à empresa.
402permission_errorsubscription_inactiveA assinatura da empresa não está ativa.
403permission_errorinsufficient_api_token_scopeO token não tem o escopo exigido pela operação.
403permission_errorpermission_deniedO seu papel não permite a operação.
404not_found_errorresource_not_foundO registro não existe, é de outra empresa ou está fora do seu papel.
409conflict_erroridempotency_key_reusedIdempotency-Key já usada com outro pedido.
409conflict_erroridempotency_key_in_progressPedido com a mesma Idempotency-Key ainda em andamento.
409conflict_errorphone_already_in_useO telefone já pertence a outro contato da empresa.
409conflict_errorcnpj_already_in_useOutra empresa da conta já usa este CNPJ.
409conflict_errorchannel_disconnectedEnvio por um canal desligado ou que precisa ser reconectado.
422invalid_request_errormissing_required_custom_fieldsFalta valor em campo personalizado obrigatório (veja param e message).
422invalid_request_errorpipeline_without_won_stageO funil do negócio não tem etapa de ganho.
422invalid_request_errorpipeline_without_lost_stageO funil do negócio não tem etapa de perda.
422invalid_request_error(vários)O pedido é válido, mas a mensagem não pode ser enviada nesta conversa agora: janela de 24 horas, template, descadastro, grupo. Veja a tabela de "Enviar mensagem na conversa".
429rate_limit_errorrate_limitedLimite de pedidos por minuto atingido. Espere Retry-After segundos.
500api_errorinternal_errorFalha nossa. Tente de novo e, se continuar, informe o Request-Id.
503api_errorapi_tokens_disabledAcesso por token suspenso temporariamente.
503api_errorqueue_unavailableA fila de envio de mensagens está fora do ar. Nada foi enviado; tente de novo.
503api_errortemplate_check_unavailableNão deu para consultar os templates do WhatsApp agora. Nada foi enviado; tente de novo.
503api_erroridempotency_unavailableNão foi possível garantir a idempotência numa operação que exige isso (envio de mensagem). Nada foi executado; tente de novo.

Toda resposta, de sucesso ou de erro, traz o cabeçalho Request-Id. Informe esse valor ao suporte para localizarmos o pedido.

Quando repetir o pedido

RespostaRepetir?
429 rate_limitedSim, depois de Retry-After segundos.
409 idempotency_key_in_progressSim, quando o primeiro pedido terminar, com a mesma Idempotency-Key.
500, 503 e queda de conexãoSim, com espera crescente (1 s, 2 s, 4 s…) e, em escrita, a mesma Idempotency-Key.
Outros 4xxNão. O mesmo pedido terá a mesma resposta: corrija o que o code e o param apontam.
PróximoIdempotência