Pare de fazer polling: nós avisamos você.

Cadastre um endpoint HTTPS e o Rank Prompt envia um POST no momento em que um relatório ou uma execução agendada termina no ChatGPT, Perplexity, Google AI Mode, Claude, Gemini e Grok. Assinado, com retentativa e replay, para que seus painéis, warehouse e alertas reajam em segundos, não conforme um cron.

  • Payloads assinados com HMAC
  • Retentativas automáticas
  • Sem polling
Entrega recebida
POST /webhooks/rankprompt HTTP/1.1
Host: api.yourbrand.com
X-RP-Event: report.completed
X-RP-Event-Id: evt_9b2c7e1f…
X-RP-Signature: t=1751198400,v1=5f1e9c8a2b…
Content-Type: application/json

{
  "id": "evt_9b2c7e1f…",
  "type": "report.completed",
  "api_version": "v1",
  "data": { "report_id": "f4c1…", "brand_id": "a1b2…", "status": "completed" }
}

Como funciona

Um envio, não um polling

Você cadastra um endpoint uma vez e escolhe os momentos que importam. Assim que um relatório ou uma execução agendada termina, avisamos seus sistemas, e seguimos tentando até eles receberem.

Aponte para o Slack, para a carga do seu warehouse ou para os dashboards dos seus clientes, e eles se atualizam sozinhos assim que chegam novas respostas de IA. Você cria, rotaciona, inspeciona e reenvia em Developers > Webhooks, ou pela API, então eles podem viver no código junto com o resto do seu stack.

  • quando Assim que o trabalho termina
  • prova Assinado, você sabe que veio da gente
  • se você cair Tentamos de novo e depois avisamos por email
  • configuração O dashboard, ou uma chamada de API por endpoint
Eventos

Seis momentos para reagir

Só avisamos quando o trabalho termina: os relatórios que você roda e os agendados, os artigos que você publica e, no Agency Plus, os leads que o seu widget traz. Sem avisos de progresso fazendo barulho.

Um relatório ficou pronto

Atualize o dashboard do cliente, publique a nova nota de visibilidade no Slack ou carregue as respostas no seu warehouse.

Um relatório falhou

Alerte a equipe antes que o cliente perceba, e rode de novo sem ninguém conferir na mão.

Uma execução agendada terminou

Envie os números da semana para cada interessado assim que existem, sem precisar disparar nada.

Uma execução agendada falhou

Saiba por que parou e corrija antes do próximo relatório.

Um artigo entra no ar, muda ou sai

article.published, article.updated e article.unpublished, configurados no dashboard: reconstrua um site estático, avise um editor ou poste o link no Slack ou no Discord.

Chega um lead pelo seu widget

No Agency Plus, lead.created, lead.report_ready, lead.report_failed e lead.claimed chegam ao seu CRM no momento em que acontecem. Configure no dashboard.

Guia rápido

No ar em dois passos

Cadastre um endpoint e depois verifique a assinatura em cada requisição. Essa é toda a integração.

Cadastre um endpoint

Criar um webhook
curl -X POST https://api.rankprompt.com/v1/brands/$BRAND_ID/webhooks \
  -H "Authorization: Bearer $RANKPROMPT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://api.yourbrand.com/webhooks/rankprompt",
    "events": ["report.completed", "schedule.run.completed"],
    "description": "Production listener"
  }'

O secret de assinatura volta exatamente uma vez, guarde-o agora. Precisa de uma chave primeiro? Gere uma na página de Desenvolvedores.

Verifique a assinatura

verify.ts
import crypto from "node:crypto";

// Verify the X-RP-Signature header against the RAW request body.
export function isFromRankPrompt(rawBody, header, secret) {
  const parts = Object.fromEntries(header.split(",").map((p) => p.split("=")));
  const signed = parts.t + "." + rawBody;
  const expected = crypto.createHmac("sha256", secret).update(signed).digest("hex");

  // Constant-time compare against v1 (also accept v0 during a secret rotation).
  const match = crypto.timingSafeEqual(Buffer.from(expected), Buffer.from(parts.v1));

  // Reject replays: require a recent timestamp (within 5 minutes).
  const fresh = Math.abs(Date.now() / 1000 - Number(parts.t)) < 300;
  return match && fresh;
}

Sempre assine sobre o corpo bruto da requisição, antes de qualquer parsing de JSON, e compare em tempo constante. Durante uma rotação de segredo, verifique também a assinatura v0.

Confiabilidade

Feito para entregar, e para verificar

Retentativas, autodesativação, idempotência e rotação assinada, para que um endpoint instável nunca faça você perder um evento e um segredo vazado nunca custe downtime.

Retentativas automáticas

Entregas com falha tentam de novo com backoff de 30s → 2m → 10m → 1h → 6h → 24h: até sete tentativas antes de a entrega ser descartada.

Autodesativação + alerta

Após 20 falhas consecutivas desativamos o endpoint e avisamos por e-mail o dono da marca. Reative com um PATCH assim que corrigir.

Entrega pelo menos uma vez

A entrega é pelo menos uma vez após o sucesso. Deduplique com X-RP-Event-Id e mantenha seus handlers idempotentes. A ordem por endpoint é preservada.

Rotação sem downtime

Rotacione o segredo de assinatura quando quiser. O segredo antigo continua assinando como v0 por 24h, então você atualiza seu verificador sem nenhum intervalo.

Log de entregas e replay

Inspecione tentativas recentes (status, código de resposta, erro) e reenvie qualquer entrega passada direto pela API.

Somente HTTPS público

Endpoints precisam ser URLs públicas https://. Alvos privados, loopback e não roteáveis são rejeitados (proteção SSRF).

Plano

Os webhooks estão incluídos em todo plano Starter ou superior, ou em um plano de API independente. É o mesmo entitlement da API pública /v1 e do servidor MCP.

Ver planos

Gerencie endpoints com o escopo write:webhooks; inspecione entregas com read:webhooks.

Perguntas frequentes

Perguntas sobre webhooks

Tudo que os times perguntam antes de configurar um endpoint. Nos escreva se sua pergunta não está aqui.

Ainda tem dúvidas? Fale com nossa equipe

Qual a diferença entre webhooks e fazer polling na API?

Você para de fazer polling do status de relatório a partir de um worker. O Rank Prompt envia um POST para seu endpoint no momento em que um relatório ou execução agendada chega a um estado terminal, então seu stack reage em segundos em vez de conforme um cron.

A quais eventos posso me inscrever?

Quatro: report.completed, report.failed, schedule.run.completed e schedule.run.failed. Você pode rodar até 5 endpoints ativos por marca, cada um inscrito em qualquer subconjunto de eventos.

Como verifico se uma requisição realmente veio do Rank Prompt?

Toda requisição carrega um header X-RP-Signature no formato t=<timestamp>,v1=<hmac>. Recalcule um HMAC-SHA256 de "{timestamp}.{corpo bruto}" com seu segredo de assinatura e compare com v1 em tempo constante. Rejeite timestamps antigos para prevenir replays.

O que tem no payload?

Um envelope JSON pequeno: id (evt_…), type, api_version, created_at e um bloco data. O bloco data carrega os ids (report_id, brand_id, …); busque o recurso completo em /v1 quando precisar do detalhe.

O que acontece se meu endpoint estiver fora do ar?

Tentamos de novo com backoff exponencial (30s, 2m, 10m, 1h, 6h, 24h) por até sete tentativas. Após 20 entregas falhadas consecutivas o endpoint se autodesativa e avisamos por e-mail o dono da marca. Corrija e reative com um PATCH.

Como faço a rotação do segredo de assinatura?

Envie um POST para a rota de secret-rotations do endpoint. O novo segredo é retornado uma vez e o antigo continua assinando entregas como v0 por uma sobreposição de 24 horas, então você atualiza seu verificador sem downtime.

O mesmo evento pode ser entregue duas vezes?

Sim. A entrega é pelo menos uma vez após o sucesso, então projete pensando nisso: deduplique pelo id do evento (X-RP-Event-Id) e torne seu handler idempotente. Entregas para um mesmo endpoint preservam a ordem.

De qual plano eu preciso?

Os webhooks estão incluídos em todo plano Starter ou superior, ou em um plano de API independente. Diferente da API /v1 e do servidor MCP, que qualquer plano pode usar, os webhooks começam no Starter.

Primeiro seu relatório de visibilidade em IA grátis · teste de 7 dias em qualquer plano

Conecte o Rank Prompt ao seu stack

Comece um teste grátis, cadastre um endpoint e deixe os eventos de relatório e agendamento fluírem direto para seus painéis, warehouse e alertas.