文档
监控账号 API 与实时提醒管理指南
监控账号决定实时 feed 和 History API 能返回什么。你可以在 dashboard 添加,也可以从自己的后端操作。
添加和移除账号
accounts 字段接受一个 handle 或 handle 数组。可以包含或省略开头的 @;handle 匹配不区分大小写。标准 API key 会更新标准监控账号列表;有效的 Ultra API key 会更新 Ultra 选择并执行其已付费账号上限。
添加账号typescript
const response = await fetch("https://api.tweetstream.io/api/add-account", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.TWEETSTREAM_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
accounts: ["marketdesk", "realDonaldTrump"],
}),
});
console.log(await response.json());移除账号typescript
const response = await fetch("https://api.tweetstream.io/api/remove-account", {
method: "DELETE",
headers: {
Authorization: `Bearer ${process.env.TWEETSTREAM_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
accounts: "marketdesk",
}),
});
console.log(await response.json());结果json
{
"action": "follow",
"requestId": "8b4f9c9c-9e7b-4a0c-9c7d-2d4d6f0a9a25",
"error": null,
"results": [
{
"input": "marketdesk",
"state": "added"
},
{
"input": "realDonaldTrump",
"state": "added"
}
],
"summary": {
"failed": 0,
"succeeded": 2,
"total": 2
}
}读取当前用量
`/api/me` 接受标准或 Ultra API key,并返回基础套餐用量以及附加的 Ultra Speed 详情。该端点是私有且 no-store 的。
| 字段 | 类型 | 说明 |
|---|---|---|
| credentialScope | standard 或 ultra_speed | 本次 Bearer key 的权限范围 |
| plan | BASIC、ELITE 或 ENTERPRISE | 运行时套餐枚举 |
| trackedAccounts | object | 数量、限制和规范化 handles |
| websocket | object | 当前活跃连接数和套餐限制 |
| stripe | object | 订阅状态和账期字段;标识符应视为私有 |
| ultraSpeed | object 或 null | Ultra 状态、账期、限制、独立 WebSocket 用量和取消时间 |
请求typescript
const response = await fetch("https://api.tweetstream.io/api/me", {
headers: {
Authorization: `Bearer ${process.env.TWEETSTREAM_API_KEY}`,
},
});
console.log(await response.json());响应json
{
"credentialScope": "standard",
"plan": "ELITE",
"trackedAccounts": {
"count": 2,
"limit": 250,
"handles": ["marketdesk", "realDonaldTrump"]
},
"websocket": {
"count": 1,
"limit": 10
},
"stripe": {
"subscriptionStatus": "ACTIVE",
"customerId": "[redacted]",
"hasCustomer": true,
"subscriptionId": "[redacted]",
"currentPeriodStart": "2026-06-30T00:00:00.000Z",
"currentPeriodEnd": "2026-07-30T00:00:00.000Z",
"canceledAt": null
},
"ultraSpeed": {
"active": true,
"status": "ACTIVE",
"billingCycle": "MONTHLY",
"paymentRail": "STRIPE_CARD",
"accountLimit": 25,
"websocket": {
"count": 1,
"limit": 5
},
"currentPeriodEnd": "2026-07-30T00:00:00.000Z",
"cancelAtPeriodEnd": false,
"canceledAt": null
}
}Handle 结果状态
| 状态 | 出现时机 | 推荐处理 |
|---|---|---|
| added | Handle 已加入监控列表 | 视为成功 |
| already_following | Handle 已经在监控中 | 作为逐行幂等结果处理 |
| removed | Handle 已移除 | 视为成功 |
| not_following | Handle 原本没有被监控 | 作为逐行幂等结果处理 |
| invalid_input, duplicate, not_found, failed | 输入或同步问题 | 展示逐行 message,仅在合适时重试 |
REST 状态码
Add 和 remove 端点返回逐行结果。HTTP 状态反映批处理整体结果,每一行 result 表示对应 handle 发生了什么。
| 状态 | 出现时机 | 说明 |
|---|---|---|
| 200 | 没有任何行失败,包括幂等成功结果 | summary.failed 为 0;already_following 和 not_following 都属于成功结果 |
| 207 | 部分行成功,部分行失败 | 重试前读取 results 和 summary |
| 400 | 请求 body 无效,或每一行都因非临时原因失败 | 重试前先修正请求或逐行错误 |
| 503 | 每一行都因临时原因失败 | 使用退避策略重试整批请求 |
套餐限制
- Minimum:试用后 50 个监控账号和 3 个 WebSocket 连接。
- Trial:3 天内 5 个监控账号和 1 个 WebSocket 连接。
- Pro:250 个监控账号和 10 个 WebSocket 连接。
- Scale:可在定价页自助配置更高的监控账号和 WebSocket 限制。
- 历史回放在 Pro 和 Scale 可用。