← Central de ajuda

Mandar erros do seu sistema pra fila de chamados (API de Bugs)

Atualizado em

A API de Bugs recebe um erro do seu sistema e abre um chamado com ele. Você manda a mensagem do erro, o stack trace e um pouco de contexto; o supme cria o chamado no canal "API de Bugs", com o stack já formatado. Erros iguais que chegam na mesma hora entram no mesmo chamado, então um loop de falha não vira mil chamados.

Gerar a chave

  1. Vá em Configuração > API.

  2. Clique em "Nova chave", dê um nome (por exemplo, "Produção") e salve.

  3. Copie a chave que aparece. Ela só aparece uma vez: depois o supme guarda só o começo dela, e não dá pra recuperar o resto. Se perder, gere outra.

Guarde a chave numa variável de ambiente (por exemplo, SUPME_API_KEY). Não escreva ela no código nem suba pro repositório. É um segredo, e quem tiver ela pode abrir chamados no seu espaço.

O endpoint
POST https://supme.io/api/integrations/bugs, com headers X-API-Key e Content-Type: application/json.

Campos do corpo

  • error_message (obrigatório): mensagem do erro. Vira o assunto do chamado (primeiros 80 caracteres).

  • stack_trace: o stack em texto. Aparece num bloco de código no chamado.

  • environment: objeto livre com dados do ambiente (versão, ambiente, host).

  • user_context: objeto livre com quem estava usando (id do usuário, rota, plano).

  • occurred_at: quando aconteceu (ISO 8601). Sem isso, vale a hora da chamada.

Exemplo de corpo:

{

"error_message": "TypeError: cannot read property x of undefined",

"stack_trace": "at handler (/app/src/index.js:42:11)",

"environment": { "env": "production", "release": "1.4.2" },

"user_context": { "user_id": "abc123" }

}

Resposta: { "ticket_id": "5f0b...", "ticket_number": 42, "deduped": false }deduped: true quer dizer que o erro caiu num chamado que já existia.

Ligar no seu error handler

O lugar de chamar a API é o tratador de erros global do seu sistema, não cada try/catch. Assim todo erro não tratado é reportado sem você lembrar. Exemplo em Node:

async function reportBug(err, extra = {}) {

try {

await fetch("https://supme.io/api/integrations/bugs", {

method: "POST",

headers: {

"X-API-Key": process.env.SUPME_API_KEY,

"Content-Type": "application/json",

},

body: JSON.stringify({

error_message: err.message,

stack_trace: err.stack,

environment: { env: process.env.NODE_ENV, release: process.env.RELEASE },

user_context: extra,

}),

});

} catch (_) {

// o reporter nunca pode derrubar o app

}

}

process.on("uncaughtException", (e) => reportBug(e));

process.on("unhandledRejection", (e) => reportBug(e));

O card "Quick start" da tela de API tem exemplos prontos pra Node, Python, PHP, Java e Go.

O que o supme faz com o erro

Esconde segredos: antes de gravar, troca por [REDACTED] os valores de campos que parecem segredo (passwordtokensecretauthorizationapi_key), inclusive em objetos aninhados. No stack, apaga Bearer ... e sk-.... Pode mandar o contexto inteiro sem limpar antes.

Agrupa erro repetido: mesmo erro (mesma mensagem e primeira linha do stack) dentro de uma hora, com o chamado ainda aberto, não abre outro — registra mais uma ocorrência no mesmo. Se o chamado já foi resolvido/fechado, uma ocorrência nova abre um chamado novo.

Limita o volume: cada chave aceita 60 chamadas por minuto. Acima, resposta 429. Se o volume for maior, junte ou espace as chamadas no seu lado.

Erros comuns

  • 401 invalid_api_key: chave errada, inativa, ou fora do formato sup_<prefixo>_<segredo>.

  • 402 feature_not_available: seu plano não inclui a API de Bugs (Configuração > Assinatura).

  • 429 too_many_requests: passou de 60 chamadas por minuto naquela chave.