Get rid of the guns, get rid of the Oil, get rid of the meat, but Transgender Mutilization of your Children and Open Borders are OK. This is what TalaFREAKO stands for, and this is where he is going to help take Texas if he wins — which he won’t. Ken Paxton is the Greatest Attorney General in Texas History. He deserves to be your Senator! President DONALD J. TRUMP
开发者参考
API 与Webhook
将 Truth Social 警报集成到交易机器人、控制台和自动化管道中。Webhook和 REST 访问需要商业版或以上计划。
入门指南
程序化访问与 Telegram 和电子邮件警报不同:您无需阅读通知,而是将结构化事件直接接入您的系统。
- 1 升级到商业版或企业版 — API 和 Webhook从商业版起包含。
- 2 打开 TruthTerminal,在开发者中心部分生成 API 令牌。
- 3 在 TruthTerminal 中设置您的 Webhook URL,或直接使用令牌发送 REST 请求。
Telegram 和电子邮件警报在每个计划中仍然可用,与此无关 — 本节仅涵盖 API 与 Webhook。
概览
TruthPush 通过两种集成路径提供丰富的帖子事件(情绪、带符号的得分、交易代码和关键词):
- 当受监控的个人资料发布内容时,Webhook (Webhooks) 会实时将 JSON 推送到您的 URL(商业版及以上)。
- 当您需要回填或恢复错过的事件时,REST 历史数据追溯可使用游标分页轮询按时间顺序排列的帖子(商业版及以上)。
- 升级到商业版后,在 TruthTerminal 中生成您的 API 令牌并配置您的Webhook URL。
Telegram 和电子邮件警报使用单独的频道;本参考仅涵盖程序化访问。
身份验证
REST 请求使用 Bearer 令牌。相同的密钥会对Webhook负载进行签名。
- 升级到商业版或企业版。
- 打开 TruthTerminal → 开发者中心 (Developer Hub) → 生成 API 密钥。
- 在每个 REST 请求中发送 Authorization: Bearer YOUR_API_TOKEN。
curl "https://truthpush.com/api/v1/posts/catch-up?handle=realDonaldTrump&limit=20" \
-H "Authorization: Bearer YOUR_API_TOKEN"
请像对待密码一样对待您的 API 令牌。重新生成会立即使之前的令牌和Webhook签名失效。
Webhook
在 TruthTerminal 中生成 API 令牌后配置您的 Webhook URL。每个符合条件的帖子都会触发一个带有 JSON 正文和 TruthPush 签名标头的 HTTP POST 请求。必须先有 API 令牌 — 投递始终带签名。
请求标头
POST https://your-server.com/hooks/truthpush
Content-Type: application/json
X-TruthPush-Signature: t=<unix>,v1=<hmac_sha256_hex>
X-TruthPush-Event-Id: <post_id>
v1 = HMAC_SHA256(api_token, "<t>." + raw_body)
验证签名(Python)
接收方参考实现 — 检查重放窗口并在恒定时间内比较签名。
import hmac
import hashlib
import time
TOLERANCE_SECONDS = 300 # reject requests older than 5 minutes
def verify_signature(payload: bytes, secret: str, header: str) -> bool:
parts = dict(p.split("=", 1) for p in header.split(","))
timestamp, signature = int(parts["t"]), parts["v1"]
if abs(time.time() - timestamp) > TOLERANCE_SECONDS:
return False # possible replay attack
signed_payload = f"{timestamp}.".encode() + payload
expected = hmac.new(secret.encode(), signed_payload, hashlib.sha256).hexdigest()
return hmac.compare_digest(expected, signature)
# Flask example
# signature_header = request.headers["X-TruthPush-Signature"]
# if not verify_signature(request.get_data(), API_TOKEN, signature_header):
# abort(401)
信号过滤器
在 TruthTerminal 中设置最低绝对 signed_score(0 = 所有事件,0.7 = 仅强信号)以减少交易管道中的噪音。
投递速度
每个符合条件的帖子只会触发一次 Webhook 投递——包含原始帖子内容和分析完成后的情绪判断,会在 AI 情绪分析完成后立即发送(通常在几秒钟内)。投递使用独立队列,绝不会因为向其他用户发送 Telegram 或邮件通知而延迟。
重试
临时失败(网络错误、5xx、408、429)会在 60 秒、然后 5 分钟、再然后 15 分钟自动重试(最多三次)。永久的客户端错误(其他 4xx)不会重试 — 请修复端点并等待下一事件,或使用 REST catch-up。
REST API
GET /api/v1/posts/catch-up
使用游标分页按时间升序返回句柄的帖子。响应会被短暂缓存(约7秒),并支持 ETag / If-None-Match 以实现高效轮询。
查询参数
- handle — 不带 @ 的 Truth Social 用户名(必填)。使用 all(或未指定有效句柄)可获取完整关注列表。不在关注列表中的句柄返回空列表 — 绝不会扩展到其他资料。
- since — 用于第一次请求的 ISO 8601 锚点 (可选)
- cursor — 来自 meta.next_cursor 的不透明值 (可选)
- limit — 1–200,默认 100
分页示例
首次请求无需游标。每个响应都包含 meta.next_cursor — 将其作为 cursor 参数传入,直到返回 null。
# 1) First request — no cursor yet
curl "https://truthpush.com/api/v1/posts/catch-up?handle=realDonaldTrump&limit=100" \
-H "Authorization: Bearer YOUR_API_TOKEN"
# Response (truncated):
# { "posts": [ … 100 items … ],
# "meta": { "next_cursor": "eyJpZCI6MTIzNDU2fQ==" } }
# 2) Follow-up request — pass the cursor from meta.next_cursor
curl "https://truthpush.com/api/v1/posts/catch-up?handle=realDonaldTrump&cursor=eyJpZCI6MTIzNDU2fQ%3D%3D&limit=100" \
-H "Authorization: Bearer YOUR_API_TOKEN"
# meta.next_cursor is null once you've reached the latest post
事件对象
Webhook 与 REST 共享相同的丰富字段(sentiment、signed_score、score、tickers、keywords、reasoning、media)。信封结构不同:Webhook 使用 event_id、target、post_id 和 url;REST catch-up 使用 id 和 user_handle(以及展示元数据)。Webhook 中 event_id 等于 post_id — 供您在系统端做幂等去重。
{
"event_id": "1234567890",
"target": "realdonaldtrump",
"post_id": "1234567890",
"content": "Post text…",
"url": "https://truthsocial.com/@realdonaldtrump/posts/1234567890",
"media": [],
"sentiment": "bullish",
"signed_score": 0.89,
"score": 0.89,
"tickers": ["$DJT"],
"keywords": ["tariffs", "trade"],
"reasoning": "Direct market impact via trade policy.",
"ai_analysis": { … }
}
- event_id
- 稳定的事件 ID — 用于幂等处理
- target
- 受监控的 Truth Social 句柄
- sentiment
- 看涨 | 看跌 | 中性
- signed_score
- 从 −1 到 +1 的方向性得分
- tickers
- 提取的交易代码(例如 DJT)— 并非交易信号产品
- keywords
- 从帖子内容中检测到的关键词
- ai_analysis
- 旧版嵌套对象 — 数据相同,为向后兼容而保留
速率限制
限制适用于每个 API 令牌。超出限制将返回 HTTP 429 和 Retry-After。
- 商业版:60 次请求/分钟 · 10,000 次/天
- 企业版:300 次请求/分钟 · 500,000 次/天
- 响应包含 X-RateLimit-* 标头。
计划与访问权限
观察者或专业版不提供 API 和Webhook功能。TruthTerminal 实时动态从专业版开始提供;程序化访问从商业版开始。
错误
常见 API 响应:
- 401 — 缺少或无效的 Bearer 令牌
- 403 — 计划不包含 API 访问权限
- 429 — 超过速率限制;请遵守 Retry-After
- 400 — 游标无效或在归档窗口出现 upgrade_required_*