Webhooks API v2
Visão geral
Resumo dos recursos
Nível | Preço | Número de webhooks |
---|---|---|
Self-Serve Pro | US$ 5.000/mês | 1 |
Enterprise | Fale com vendas | 5+ |
Produtos que oferecem suporte a webhooks
Gerenciar webhooks
1. Desenvolva um App consumidor de webhook
- Crie um app web com uma URL HTTPS publicamente acessível que atuará como o endpoint do webhook para receber eventos.
- O path da URI fica a seu critério. Este exemplo seria válido: https://mydomain.com/service/listen
- Se você estiver recebendo webhooks de várias fontes, um padrão comum é: https://mydomain.com/webhook/twitter
- Observe que a URL especificada não pode incluir uma porta (https://mydomain.com:5000/NoWorkie).
- Um primeiro passo é escrever código que receba uma solicitação GET de X Challenge Response Check (CRC) e responda com um JSON devidamente formatado.
- Registre sua URL de webhook. Você fará uma solicitação POST para o endpoint /2/webhooks com a URL no corpo JSON. Ao fazer essa solicitação, a X enviará uma solicitação CRC para seu app web.
- Quando um webhook é registrado com sucesso, a resposta incluirá um webhook id. Esse webhook id será necessário posteriormente ao fazer solicitações para produtos que oferecem suporte a webhooks.
- A X enviará solicitações POST contendo eventos para a URL que você registrou. Esses eventos serão codificados em JSON. Veja aqui exemplos de payloads JSON de webhook.
Opcional: use o xurl para testes
xurl
no GitHub, configure sua autorização e, em seguida, execute:
- Ao registrar a URL do seu webhook, seu app web precisa usar o consumer secret do seu App para criptografar a verificação CRC.
- Todas as Mensagens diretas recebidas serão entregues via webhooks. Todas as Mensagens diretas enviadas via POST /2/dm_conversations/with/:participant_id/messages também serão entregues via webhooks. Isso permite que seu app web tenha ciência de Mensagens diretas enviadas por um cliente diferente.
- Se você tiver mais de um app web compartilhando a mesma URL de webhook e o mesmo usuário mapeado para cada app, o mesmo evento será enviado ao seu webhook várias vezes (uma por app web).
- Em alguns casos, seu webhook pode receber eventos duplicados. Seu app de webhook deve ser tolerante a isso e realizar deduplicação pelo id do evento.
-
Consulte o código de exemplo:
- Account Activity API Setup, um app web em Node que exibe eventos de webhook usando o nível Enterprise da Account Activity API.
2. Protegendo webhooks
- As verificações de desafio–resposta permitem que a X confirme a propriedade do app web que recebe eventos de webhook.
- O cabeçalho de assinatura em cada solicitação POST permite que você confirme que a X é a origem dos webhooks recebidos.
3. A API de Webhooks
https
, publicamente acessível, deve ser fornecida no corpo JSON.Vamos começar registrando uma nova URL de webhook para o contexto de aplicação informado. Autenticação: OAuth2 App only Bearer Token
- Bearer token
<BEARER_TOKEN>
por exemplo:AAAAAAAAAAAA0%2EUifi76ZC9Ub0wn...
- URL
<URL>
por exemplo:https://yourdomain.com/webhooks/twitter/
Motivo | Descrição |
---|---|
CrcValidationFailed | A URL de callback não respondeu corretamente à verificação de CRC (por exemplo, ocorreu timeout, resposta incorreta). |
UrlValidationFailed | A URL de callback fornecida não atende aos requisitos (por exemplo, não é https , formato inválido). |
DuplicateUrlFailed | Já existe um webhook registrado pela sua App para a URL de callback fornecida. |
WebhookLimitExceeded | Sua App atingiu o número máximo permitido de configurações de webhook. |
-
Bearer token
<BEARER_TOKEN>
por exemplo,AAAAAAAAAAAA0%2EUifi76ZC9Ub0wn...
-
URL
<URL>
por exemplo,https://yourdomain.com/webhooks/twitter/
webhook_id
específico. O id pode ser obtido na resposta de criação do POST /2/webhooks
ou na resposta de listagem do GET /2/webhooks
.
Autenticação:
OAuth2 App only Bearer Token
- Bearer token
<BEARER_TOKEN>
por exemplo:AAAAAAAAAAAA0%2EUifi76ZC9Ub0wn...
Parâmetro | Descrição |
---|---|
webhook_id | O id do webhook a ser excluído. |
Motivo | Descrição |
---|---|
WebhookIdInvalid | O webhook_id fornecido não foi encontrado ou não está associado à sua App. |
valid
.
Autenticação:
OAuth2 App only Bearer Token
- Bearer Token
<BEARER_TOKEN>
por exemplo,AAAAAAAAAAAA0%2EUifi76ZC9Ub0wn...
Parâmetro | Descrição |
---|---|
webhook_id | O id do webhook a ser validado. |
valid
na resposta reflete o status após a tentativa de verificação. Se a verificação CRC for bem-sucedida, o status do webhook será atualizado para válido. Você pode verificar o status atual usando GET /2/webhooks
.
Motivo | Descrição |
---|---|
WebhookIdInvalid | O webhook_id fornecido não foi encontrado ou não está associado ao seu App. |
CrcValidationFailed | A URL de retorno de chamada não respondeu corretamente à solicitação de verificação de CRC. |
4. A verificação CRC
- No registro inicial do webhook (
POST /2/webhooks
) - A cada hora pela X para validação
- Manualmente via
PUT /2/webhooks/:id
- Use crc_token como a mensagem
- Use o consumer secret do App como a chave
- Gere um hash HMAC SHA-256
- Codifique o resultado em Base64
Apps de exemplo
- Servidor de webhook simples
- Um único script em Python que mostra como responder à verificação de CRC e aceitar eventos POST.
- Painel de exemplo da Account Activity API
- Um app web desenvolvido com bun.sh que permite gerenciar webhooks, assinaturas e receber eventos em tempo real diretamente no app.