---
title: "Event reference"
canonical_url: "https://tweetstream.io/docs/payloads-detections-ocr"
last_updated: 2026-09-24
---

# Event reference

Find an event family, then open its full payload and integration guide.

Canonical URL: https://tweetstream.io/docs/payloads-detections-ocr

## Tweet content

Use `tweet/content` as the first usable post, then branch on `author.platform`.

- [Open social content](https://tweetstream.io/docs/social-content): Compare Twitter, Truth Social, and Binance Square payloads.

### Route by platform

Read the post key from `(author.platform, tweetId)`. If `platform` is absent, use `twitter`.

### Read references

Keep referenced posts and their attachments under `ref`; each nested reference has its own `tweetId`.

## Enrichment metadata

Replace the metadata at `(platform, tweetId)` with each `tweet/meta` snapshot. Do not keep fields missing from the new snapshot.

- [Open tweet/meta](https://tweetstream.io/docs/tweet-updates-lifecycle#meta): Read detection, OCR, token, exchange, and market fields.

## Tweet updates

Patch only fields present in `tweet/update`; do not replace the whole post.

- [Open tweet/update](https://tweetstream.io/docs/tweet-updates-lifecycle#update): Apply text completion, references, media, polls, and articles.

### Match the post

Match every update with `(platform, tweetId)`.

### Replace reference snapshots

If an update contains `ref`, replace the stored reference with that snapshot.

### Complete optional fields

Treat present poll, article, and media values as complete replacements for those fields.

## Tweet lifecycle

Apply delete, pin, and unpin to the stored post without overwriting its content.

- [Open lifecycle events](https://tweetstream.io/docs/tweet-updates-lifecycle#lifecycle-events): Copy the exact delete, pin, and unpin payloads.

## Account events

Route profile, follow, unfollow, and affiliate changes under the `account` family.

- [Open account events](https://tweetstream.io/docs/profile-follow-affiliate): Copy every account event and its storage key.

### Route account operations

Branch on `op`; ignore unknown operations without closing the socket.

### Store affiliate relationships

Apply the action to `(organization.id, member.id)` and use `eventId` only for an exact replay.

### Replay stored changes

Use `type=PROFILE`, `FOLLOW`, or `AFFILIATE` with the History API.

## Callouts

Selected accounts emit structured `account/callout` events on the same WebSocket.

- [Open callout events](https://tweetstream.io/docs/callouts): Configure accounts and consume caller, token, price, and timestamp fields.

### Select accounts

Add a pump.fun username, Solana wallet, or profile URL in the Callouts tab.

### Route the event

Handle initial `account/callout` content and later `account/callout_update` enrichment. Read the caller and token address before optional fields.

### Use identifiers

Deduplicate by envelope `id`. Merge enrichment into `d.updateOf`, including nested fields, without another alert.

## Charity events

Enabled charity alerts emit live-only `charity/added` events.

- [Open charity events](https://tweetstream.io/docs/charity): Copy the full event and its optional location fields.

## News articles

Enabled publications emit `news/article`; stored articles use the separate News History API.

- [Open news events and history](https://tweetstream.io/docs/news): Select publications, consume articles, and continue with `nextCursor`.

### Select publications

Read and update the enabled publication set before filtering live events.

### Read live articles

Use the envelope `id` for idempotency and keep `source.id` with the article.

### Page through history

Pass `nextCursor` back unchanged until it is null.

## Event sequence

Use an idempotent local projection; the WebSocket envelope does not contain a sequence number.

### Receive content

Store the first usable content event.

### Replace enrichment

Replace each live metadata snapshot by post key.

### Apply lifecycle

Apply lifecycle operations to the same post.

## Control messages

Use `auth_pong` for connection state and `twitter_handles_result` for command outcomes.

- [Open control messages](https://tweetstream.io/docs/control): Copy auth and handle-management messages.

## Handle management channel

Follow or unfollow monitored Twitter handles over the handle-management WebSocket or REST API.

- [Read command results](https://tweetstream.io/docs/control#twitter-handles-result): Handle partial, idempotent, and failed rows.
- [Manage accounts with REST](https://tweetstream.io/docs/account-management): Add, remove, inspect, and configure monitored accounts.
