---
title: "FOMO 观点与代币认证"
canonical_url: "https://tweetstream.io/zh-cn/docs/fomo"
last_updated: 2026-09-24
---

# FOMO 观点与代币认证

在 FOMO 标签页监控用户和代币，通过现有 WebSocket 接收观点和观察到的代币认证。

Canonical URL: https://tweetstream.io/zh-cn/docs/fomo

## 选择用户和代币

- Minimum 包含 10 个 FOMO 用户和 10 个 FOMO 代币；Pro、Scale 和 Ultra Speed 包含 100 个用户和 100 个代币。这两项额度各自独立，也不占用 X 监控额度。
- 监控用户可接收其发布的观点。监控代币可接收任何作者对该代币的观点，以及首次观察到的认证。
- 在控制台的 FOMO 标签页管理两个列表。FOMO 事件仅实时发送，History 不提供回放。

## 通过 REST 管理列表

使用 Bearer API 密钥认证请求 `/api/callouts`。管理时将 `platform` 设为 `fomo_user` 或 `fomo_coin`；两者的事件都使用 `d.platform: fomo`。

- `GET /api/callouts`
- `PUT /api/callouts`
- `DELETE /api/callouts`

- `GET` 返回 `callers`、`pending` 和分平台的 `limits`。请读取 `limits` 获取当前额度；没有有效且符合条件的套餐时，各项均为 `0`。旧的顶层 `limit` 始终为 `10`。
- `PUT` 接受 `{ platform, input, label? }`。用户可用 FOMO 用户名或个人主页 URL。代币请用 FOMO 代币 URL 或 `network:address`；单独的合约地址必须能确定唯一网络。响应包含 `caller`；修改后重新获取列表。
- `DELETE` 接受 `{ platform, callerId }` 移除监控项，或 `{ platform, intentId }` 取消待处理项。使用 `GET` 返回的标识符；成功时返回 `removed: true`。

## account/thesis

读取 `d.author`、`d.thesis` 和 `d.coin`。`d.platform` 为 `fomo`。持仓和代币元数据在可用时提供。使用 `thesis.id` 标识观点，使用 `(coin.networkId, coin.address)` 标识代币。

### FOMO 事件类型

```typescript
type FomoCoin = {
  address: string;
  networkId: number;
  name?: string;
  symbol?: string;
  image?: string;
  metadataObservedAt?: number;
  priceUsd?: string;
  marketCapUsd?: string;
  liquidityUsd?: string;
  volume24hUsd?: string;
  change24hPercent?: string;
};
type FomoThesisEvent = {
  platform: 'fomo';
  coin: FomoCoin;
  author: {
    id: string;
    username: string;
    verified: boolean;
    displayName?: string;
    avatar?: string;
    twitter?: string;
  };
  thesis: {
    id: string;
    text: string;
    createdAt: number;
    likes: number;
    replies: number;
    tradeId?: string;
    parentId?: string;
    segments?: Array<{ text: string; link?: string }>;
  };
  position?: {
    tokenAmount?: string;
    usdValue?: string;
    unrealizedPnlUsd?: string;
    realizedPnlUsd?: string;
    unrealizedPnlPercent?: string;
    realizedPnlPercent?: string;
    closedAt?: number;
  };
  observedAt?: number;
  receivedAt?: number;
};
type FomoTokenVerifiedEvent = {
  platform: 'fomo';
  coin: FomoCoin;
  observedAt: number;
  receivedAt?: number;
};
```

### 观点事件

```json
{
  "v": 1,
  "t": "account",
  "op": "thesis",
  "id": "fomo:thesis:thesis-1",
  "ts": 1772000001060,
  "d": {
    "platform": "fomo",
    "coin": {
      "address": "So11111111111111111111111111111111111111112",
      "networkId": 1399811149,
      "name": "Example Token",
      "symbol": "EXM",
      "image": "https://cdn.example/token.png",
      "metadataObservedAt": 1772000000900,
      "priceUsd": "0.00000123456789012345",
      "marketCapUsd": "123456.7890123456789"
    },
    "author": {
      "id": "user-1",
      "username": "SignalDesk",
      "displayName": "Signal Desk",
      "avatar": "https://cdn.example/avatar.png",
      "twitter": "signaldesk",
      "verified": true
    },
    "thesis": {
      "id": "thesis-1",
      "text": "Watching liquidity",
      "createdAt": 1772000001000,
      "likes": 2,
      "replies": 1,
      "tradeId": "trade-1",
      "segments": [
        {
          "text": "Watching liquidity",
          "link": "https://example.com/thesis"
        }
      ]
    },
    "position": {
      "tokenAmount": "549351.552212985712345",
      "usdValue": "12.34567890123456789",
      "realizedPnlUsd": "0"
    },
    "receivedAt": 1772000001050
  }
}
```

## account/token_verified

此事件仅包含代币信息，表示 TweetStream 首次观察到被监控代币的认证，不包含作者、观点或持仓。`observedAt` 是观察时间，不是认证发生的时间。认证不代表安全保证或投资建议。

### 观察到代币认证

```json
{
  "v": 1,
  "t": "account",
  "op": "token_verified",
  "id": "fomo:verified:1399811149:coin:1772000001000",
  "ts": 1772000001060,
  "d": {
    "platform": "fomo",
    "coin": {
      "address": "So11111111111111111111111111111111111111112",
      "networkId": 1399811149,
      "symbol": "EXM"
    },
    "observedAt": 1772000001000,
    "receivedAt": 1772000001050
  }
}
```

## 读取时间戳和市场数值

- 时间戳使用 Unix 毫秒。`thesis.createdAt` 是观点创建时间；可选的 `receivedAt` 是 TweetStream 接收时间；信封 `ts` 是准备发送的时间。
- 代币市场数值和持仓金额使用十进制字符串。代币市场数值附带 `metadataObservedAt`，表示该次观察的数据，不保证是当前报价。
- 按信封 `id` 幂等处理完全相同的重放。可选字段缺失表示不可用，不代表零。公布的 X 延迟数据不适用于 FOMO。
