Account Activity API v2
A Account Activity API v2 agora está disponível no Pro!
Visão geral
Essa API é comumente usada para criar aplicativos que precisam reagir instantaneamente às ações do usuário ou manter um estado atualizado com base na atividade do usuário. Você receberá todas as atividades relacionadas abaixo para cada assinatura de usuário no seu registro de webhook:
Tipos de atividade
- Posts (pelo usuário)
- Exclusões de Post (pelo usuário)
- @menções (do usuário)
- Respostas (para ou do usuário)
- Reposts (pelo usuário ou do usuário)
- Posts com citação (pelo usuário ou do usuário)
- Reposts de Posts com citação (pelo usuário ou do usuário)
- Likes (pelo usuário ou do usuário)
- Seguir (pelo usuário ou do usuário)
- Deixar de seguir (pelo usuário ou do usuário)
- Bloqueios (pelo usuário ou do usuário)
- Desbloqueios (pelo usuário ou do usuário)
- Silenciamentos (pelo usuário ou do usuário)
- Dessilenciamentos (pelo usuário ou do usuário)
- Mensagens diretas enviadas (pelo usuário)
- Mensagens diretas recebidas (pelo usuário)
- Indicadores de digitação (para o usuário)
- Confirmações de leitura (para o usuário)
- Revogações de assinatura (pelo usuário)
Resumo de recursos
Nível | Preço | Número de assinaturas exclusivas | Número de webhooks |
---|---|---|---|
Pro | US$ 5.000/mês | 3 | 1 |
Enterprise | Fale com vendas | 5000+ | 5+ |
Gerenciar assinaturas
1. Crie um X App
- Ative “Read, Write, and Access direct messages” na guia de permissões da página do seu App.
- Na guia “Keys and Access Tokens”, anote o Consumer Key (API Key), Consumer Token (API Secret) e o Bearer Token do seu App.
- Gere o Access Token e o Access Token Secret do seu App. Eles são necessários para assinar contas de usuário.
- Consulte Obtaining Access Tokens se não estiver familiarizado com X Sign-in e contextos de usuário.
- Anote o id numérico do seu App na página “Apps” no portal do desenvolvedor. Isso é necessário ao solicitar acesso à Account Activity API.
2. Obter acesso à Account Activity API
3. Registrar um webhook
- Certifique-se de que seu webhook esteja configurado para lidar com solicitações POST com payloads de eventos codificados em JSON.
- Obtenha o webhook_id da resposta de registro do webhook, pois ele é necessário para gerenciar assinaturas.
4. Validar a configuração
- Inscreva uma conta de usuário no seu webhook (consulte “Adicionar uma inscrição” abaixo).
- Marque como favorito um Post publicado por uma das contas da X às quais sua App está inscrita.
- Você deverá receber um payload de favorite_events por meio de uma requisição POST para a URL do seu webhook.
- Observação: Pode levar até 10 segundos para que os eventos comecem a ser entregues após adicionar uma inscrição.
Notas importantes
- Autenticação: Ao inscrever usuários, use a consumer key, consumer secret, access token e access token secret da conta do usuário.
- Mensagens diretas: Todas as Mensagens diretas recebidas e enviadas (enviadas via POST /2/dm_conversations/with/:participant_id/messages) são entregues via webhooks para manter seu App ciente de toda a atividade de DM.
- Duplicação de eventos:
- Se dois usuários inscritos estiverem na mesma conversa de DM, seu webhook receberá eventos duplicados (um por usuário). Use o campo for_user_id para diferenciá-los.
- Se vários Apps compartilharem a mesma URL de webhook e o mesmo usuário, os eventos serão enviados várias vezes (uma por App).
- Seu App deve desduplicar eventos usando o event ID para lidar com duplicatas ocasionais.
- Exemplo de código: Consulte o Account Activity API Setup para um aplicativo web que exibe eventos de webhook.
Gerenciando usuários inscritos (API v2)
Description: Inscreve o usuário autenticado para receber eventos por meio do webhook especificado.
Authentication: OAuthUser (fluxo OAuth de 3 etapas necessário, representando o usuário sendo inscrito).
- Consumer Key: por exemplo, xvz1evFS…
- Access Token: por exemplo, 370773112-GmHxMAgYyLbN…
Parameter | Description |
---|---|
webhook_id | O id do webhook ao qual a assinatura será associada. |
bash
- Sucesso (200 OK):
- JSON
- Falha (400 Bad Request):
Motivo | Descrição |
---|---|
WebhookIdInvalid | O webhook_id fornecido não foi encontrado ou não está associado à App. |
DuplicateSubscriptionFailed | Já existe uma assinatura para este usuário para o webhook_id especificado. |
SubscriptionLimitExceeded | O aplicativo atingiu o limite de assinaturas em todos os webhooks. |
Endpoint: GET /2/account_activity/webhooks/:webhook_id/subscriptions/all
Description: Verifica se o usuário autenticado está com assinatura no webhook especificado.
Authentication: OAuthUser (fluxo OAuth de 3 etapas necessário).
Path Parameters:
Parameter | Description |
---|---|
webhook_id | O id do webhook a ser verificado. |
bash
- Sucesso (200 OK):
- JSON
- Falha (400 Bad Request):
Motivo | Descrição |
---|---|
WebhookIdInvalid | O webhook_id fornecido não foi encontrado ou não está associado à App. |
Endpoint: DELETE /2/account_activity/webhooks/:webhook_id/subscriptions/:user_id/all
Description: Desativa a assinatura de um usuário específico, interrompendo a entrega de eventos ao webhook.
Authentication: OAuth2 App only Bearer Token.
- Bearer Token: por exemplo, AAAAAAAAAAAA0%2EUifi76ZC9Ub0wn…
Parameter | Description |
---|---|
webhook_id | O id do webhook que contém a assinatura. |
user_id | O id numérico do usuário a ser removido da assinatura. |
bash
- Êxito (200 OK):
- json
- Falha (400 Bad Request):
Motivo | Descrição |
---|---|
SubscriptionNotFound | Não há assinatura para o user_id especificado no webhook_id fornecido. |
WebhookIdInvalid | O webhook_id fornecido não foi encontrado ou não está associado à App. |
Description: Retorna uma lista de todos os IDs de usuários atualmente inscritos no webhook especificado.
Authentication: OAuth2 App only Bearer Token.
Path Parameters:
Parameter | Description |
---|---|
webhook_id | O id do webhook para o qual listar as assinaturas. |
bash
- Sucesso (200 OK):
- JSON
- Falha (400 Bad Request):
Motivo | Descrição |
---|---|
WebhookIdInvalid | O webhook_id fornecido não foi encontrado ou não está associado à App. |
Endpoint: GET /2/account_activity/subscriptions/count
Descrição: Retorna a contagem total de assinaturas ativas e o limite provisionado para a App autenticadora.
Autenticação: OAuth2 App only Bearer Token.
Requisição:
bash
- Sucesso (200 OK):
- JSON
Parameter | Description |
---|---|
webhook_id | O id do webhook para iniciar o replay |
Parameter | Description |
---|---|
from_date | O timestamp UTC mais antigo (inicial) a partir do qual os eventos serão fornecidos; deve estar no formato ‘yyyymmddhhmm’. O timestamp tem granularidade de minuto e é inclusivo (ou seja, 12:00 inclui o minuto 00). Os horários válidos devem estar dentro das últimas 24 horas, em UTC, e não mais recentes do que 31 minutos antes do momento atual. Recomenda-se que from_date e to_date estejam dentro de ~2 horas. |
to_date | O timestamp UTC mais recente (final) até o qual os eventos serão fornecidos; deve estar no formato ‘yyyymmddhhmm’. O timestamp tem granularidade de minuto e é exclusivo (ou seja, 12:30 não inclui o 30º minuto da hora). Os horários válidos devem estar dentro das últimas 24 horas, em UTC, e não mais do que 10 minutos antes do momento atual. |
Motivo | Descrição |
---|---|
QueryParamInvalid | from_date é anterior a 24 horas em relação ao horário atual. |
QueryParamInvalid | from_date é mais recente que to_date. |
QueryParamInvalid | from_date está no futuro. |
QueryParamInvalid | to_date está no futuro. |
QueryParamInvalid | from_date ou to_date não está no formato correto. |
CrcValidationFailed | Resposta incorreta recebida do URL do webhook durante a validação de CRC. |
ReplayConflictError | Já há um job de repetição em andamento para o webhook especificado. |
WebhookIdInvalid | O webhook_id fornecido é inválido ou não está associado à App. |
Mensagens de conclusão de job
Estrutura do objeto de dados de atividade da conta
Objeto | Detalhes |
---|---|
for_user_id | Identifica a assinatura de usuário à qual o evento está relacionado. |
is_blocked_by | (Condicional) Exibido apenas para eventos de menção a Post se o usuário que menciona estiver bloqueado pelo usuário inscrito. |
source | O usuário que realiza a atividade (por exemplo, o usuário que segue, bloqueia ou silencia). |
target | O usuário ao qual a atividade se aplica (por exemplo, o usuário seguido, bloqueado ou silenciado). |
Atividades disponíveis
Tipo de mensagem | Detalhes |
---|---|
tweet_create_events | Status de Post para Posts, Retweets, respostas, @menções, Tweets com citação ou Retweet de Tweets com citação. |
favorite_events | Evento de like com usuário e destino. |
follow_events | Evento de seguir com usuário e destino. |
unfollow_events | Evento de deixar de seguir com usuário e destino. |
block_events | Evento de bloqueio com usuário e destino. |
unblock_events | Evento de desbloqueio com usuário e destino. |
mute_events | Evento de silenciamento com usuário e destino. |
unmute_events | Evento de reativação de som com usuário e destino. |
user_event | Evento de revogação quando um usuário remove a autorização do App (assinatura excluída automaticamente). |
direct_message_events | Status de DM para mensagens enviadas ou recebidas. |
direct_message_indicate_typing_events | Evento de digitação em DM com usuário e destino. |
direct_message_mark_read_events | Evento de leitura em DM com usuário e destino. |
tweet_delete_events | Aviso de Posts excluídos para fins de conformidade. |
spaces_events | Atualmente não suportado. Em breve. |
Exemplos de payload
tweet_create_events (Posts, Retweets, Respostas, QuoteTweets)
tweet_create_events (@menções)
favorite_events
follow_events
eventos_de_unfollow
block_events
unblock_events
mute_events
unmute_events
user_event
direct_message_events
eventos_de_indicacao_de_digitacao_de_mensagem_direta
eventos_de_mensagem_direta_marcadas_como_lidas
tweet_delete_events
Suporte a Posts Longform
- full_text: o texto completo do post, incluindo todos os caracteres além do limite de 280 caracteres.
- entities: quaisquer entidades (por exemplo, hashtags, URLs, menções de usuários, símbolos) que apareçam no texto completo, incluindo aquelas após o 280º caractere.
- display_text_range: a faixa de caracteres a exibir, considerando o texto completo.
Account Activity API Migração do Enterprise legado para a v2
Perguntas frequentes
- Velocidade: Entrega dados na velocidade do X.
- Simplicidade: Fornece todos os eventos de conta por meio de uma única conexão de webhook, incluindo Posts, @menções, respostas, reposts, Quote Tweets, likes, DMs, follows, blocks e mutes.
- Escala: Oferece suporte a todas as atividades para contas gerenciadas, sem limites de requisições ou tetos de eventos (camada Enterprise).
Índice de referência da Account Activity API
Finalidade | Endpoint v2 |
---|---|
Inscreve um App nos eventos de uma conta | POST /2/account_activity/webhooks/:webhook_id/subscriptions/all |
Retorna a contagem das assinaturas ativas no momento | GET /2/account_activity/subscriptions/count |
Verifica se um webhook está inscrito em uma conta | GET /2/account_activity/webhooks/:webhook_id/subscriptions/all |
Retorna a lista das assinaturas ativas no momento | GET /2/account_activity/webhooks/:webhook_id/subscriptions/all/list |
Desativa uma assinatura usando OAuth somente do App | DELETE /2/account_activity/webhooks/:webhook_id/subscriptions/:user_id/all |
Cria um job de replay | POST /2/account_activity/replay/webhooks/:webhook_id/subscriptions/all |