SunchatPlus
StatusEm breveSuporteAcessar plataforma
Comece aquiGuia da plataformaAPI PúblicaAjudaNovidades
    • Visão geral da API
    • Autenticação e autorização
    • Primeira chamada
    • Recursos da API
    • Paginação, filtros e ordenação
    • Erros
    • Enumerações
    • Limites e boas práticas
    • Servidor MCP
    • Plugins
    • getListar anotações do negócio
    • postCriar anotação no negócio
    • getObter anotação do negócio
    • putSubstituir anotação do negócio
    • deleteExcluir anotação do negócio
    • getObter cálculo de imposto
    • putSubstituir cálculo de imposto
    • getListar cálculos de impostos
    • postCriar cálculo de imposto
    • getListar campos personalizados
    • postCriar campo personalizado
    • getObter campo personalizado
    • putSubstituir campo personalizado
    • deleteExcluir campo personalizado
    • getListar canais
    • getObter canal
    • getListar departamentos
    • postCriar departamento
    • getObter departamento
    • putSubstituir departamento
    • deleteExcluir departamento
    • getListar etiquetas
    • postCriar etiqueta
    • getObter etiqueta
    • putSubstituir etiqueta
    • deleteExcluir etiqueta
    • getObter grade de produto
    • putSubstituir grade de produto
    • postCriar grade de produto
    • postCriar variação e opção da grade
    • getListar grupos de produto
    • postCriar grupo de produto
    • getListar listas de contato
    • postCriar lista de contato
    • getObter lista de contato
    • putSubstituir lista de contato
    • deleteExcluir lista de contato
    • postEnviar mensagem de texto
    • postEnviar mensagem por template
    • postEnviar mensagem com mídia
    • postEnviar mensagem de áudio
    • getListar motivos de venda
    • postCriar motivo de venda
    • getObter motivo de venda
    • putSubstituir motivo de venda
    • deleteExcluir motivo de venda
    • getObter operação
    • putSubstituir operação
    • getListar operações
    • postCriar operação
    • getListar origens do negócio
    • postCriar origem do negócio
    • getObter origem do negócio
    • putSubstituir origem do negócio
    • deleteExcluir origem do negócio
    • postCriar solicitação de pagamento
    • getObter pessoa
    • putSubstituir pessoa
    • getListar pessoas
    • postCriar pessoa
    • putSubstituir endereço da pessoa
    • postCriar endereço da pessoa
    • getObter produto
    • putSubstituir produto
    • patchAtualizar produto parcialmente
    • getListar produtos
    • postCriar produto
    • getListar reuniões
    • postCriar reunião
    • getObter reunião
    • putAtualizar reunião
    • deleteExcluir reunião
    • postCancelar reunião
    • getObter script
    • putSubstituir script
    • deleteExcluir script
    • getListar scripts
    • postCriar script
    • getObter tabela de preço
    • putSubstituir tabela de preço
    • getListar tabelas de preço
    • postCriar tabela de preço
    • patchInativar tabelas de preço em lote
    • getObter ticket
    • getListar tickets
    • getObter ticket pelo código
    • postIncluir interação no ticket
    • patchAtualizar ticket parcialmente
    • putAlterar campo personalizado do ticket
    • getListar tipos de atividade
    • postCriar tipo de atividade
    • getObter tipo de atividade
    • putSubstituir tipo de atividade
    • deleteExcluir tipo de atividade
    • getListar vendas

Erros

Os códigos de resposta da API pública, o formato do corpo de erro e como tratar cada caso.

AnteriorPaginação, filtros e ordenaçãoPróximo Enumerações
SunchatPlus

© 2026 SunchatPlus. Todos os direitos reservados.

Os erros da API pública seguem o RFC 7807, servido como application/problem+json. É um objeto JSON com os mesmos campos, qualquer que seja o problema. Isso permite um único tratador de erro no seu código, em vez de um if por endpoint.

Formato do corpo

{
  "type": "/errors/not-found",
  "title": "Recurso não encontrado",
  "status": 404,
  "detail": "Produto com id '8f14e45f-ea6d-4a1c-9c1f-3b7d2a5e9c04' não encontrado",
  "instance": "/v1/produto/8f14e45f-ea6d-4a1c-9c1f-3b7d2a5e9c04"
}
CampoO que é
typeIdentificador estável da categoria do erro. É por ele que você deve ramificar no código, não pelo texto
titleNome curto da categoria, em português
statusO mesmo código HTTP da resposta
detailDescrição do caso concreto. Serve para log e diagnóstico, e o texto pode mudar
instanceO caminho da requisição que falhou

Nos corpos de erro os campos são em camelCase (type, status, detail), diferente das respostas de sucesso, que usam PascalCase. É consequência do RFC, e um detalhe fácil de esquecer ao escrever o tratador.

Códigos de resposta

Sucesso

CódigoQuando acontece
200 OKLeitura, atualização ou ação concluída, com o registro no corpo
201 CreatedCriação concluída, com o registro criado no corpo
204 No ContentExclusão concluída. Corpo vazio

Erro

CódigotypeSignificadoO que fazer
401Credenciais ausentes ou inválidasConferir os cabeçalhos. Não repetir sem corrigir
403forbiddenAutenticado, mas a operação não é permitida naquele registroNão repetir
404not-foundO registro não existe ou pertence a outra contaNão repetir
409conflictA operação conflita com o estado atualReler o registro antes de decidir
422validationO corpo ou os parâmetros são inválidosCorrigir os campos apontados em errors
429Concorrência acima do limiteRepetir com espera crescente
500internal-errorFalha no servidorRepetir uma vez. Se persistir, abrir suporte com o traceId

O type completo é o valor da tabela precedido de /errors/.

O 401 não tem corpo

Falha de autenticação é a única exceção ao formato. Ela devolve 401 com corpo vazio e o cabeçalho WWW-Authenticate: X-Chave-Api realm="SunchatPlus". Não há JSON explicando o motivo, o que é deliberado, para não revelar se uma conta existe.

Trate o 401 pelo código de status e siga o checklist de autenticação.

O 404 também significa "de outra conta"

Cada chave alcança só os dados da própria conta. Se você usar um ID válido de outra conta, a resposta é 404, e não 403. Do ponto de vista da sua chave, o registro não existe. O que foi excluído também responde 404.

O 422 diz qual campo está errado

O 422 traz um campo extra, errors, com o nome do campo problemático e a lista de mensagens:

{
  "type": "/errors/validation",
  "title": "Falha de validação",
  "status": 422,
  "detail": "Falha de validação",
  "instance": "/v1/contatodechat",
  "errors": {
    "Telefone": ["Telefone é obrigatório"],
    "Email": ["Email não é um endereço válido"]
  }
}

Um campo pode ter mais de uma mensagem, e vários campos podem falhar na mesma requisição. Repetir a chamada sem mudar o corpo dá exatamente o mesmo 422.

O 409 é conflito de estado, não de dados

O 409 aparece quando o registro existe mas está em um estado que não aceita a operação. Exemplos reais da API:

  • cancelar uma ação agendada já executada ou já cancelada
  • alterar uma ação agendada que não está mais em Agendada
  • criar um produto com um CodigoPrincipal que já existe na conta
  • excluir um registro que ainda está em uso por outro

O detail diz qual é o caso. Como o estado pode mudar entre a sua leitura e a sua escrita, o tratamento certo é reler o registro e decidir de novo, em vez de repetir a mesma chamada.

Estratégia de repetição

CódigoRepetir?
401, 403, 404, 409, 422Não. Repetir dá o mesmo resultado. Corrija a requisição
429, 500, 502, 503, 504Sim, com espera exponencial e um teto de tentativas

Ao repetir, respeite duas regras.

Use espera exponencial com variação aleatória, algo como 1s, 2s, 4s, 8s, mais alguns milissegundos de ruído. Repetição imediata em laço piora o 429.

E cuidado com repetição de escrita. POST não é idempotente. Se a criação deu certo e a resposta se perdeu no caminho, repetir cria um registro duplicado. Em envio de mensagem, preencha MessageId com um identificador seu para reconhecer a duplicata. Nos demais casos, releia antes de recriar.

Erros de servidor e suporte

O 500 inclui um campo traceId:

{
  "type": "/errors/internal-error",
  "title": "Erro interno",
  "status": 500,
  "detail": "Erro interno do servidor",
  "instance": "/v1/pipelines",
  "traceId": "00-8f14e45fea6d4a1c9c1f3b7d2a5e9c04-3b7d2a5e9c04a1c9-01"
}

Registre esse valor no seu log. Ele localiza a requisição exata nos rastros do servidor, e é a primeira coisa que o suporte vai pedir.

Edit with