开始

免费试用 — 无需注册/密钥

直接跑下面这条命令, 立即拿到 @elonmusk 的实时资料。付费前先看真实返回格式。

curl
curl "https://socialapi.tech/v1/demo/user/info"
快速试用

点任意一个直接跳到该接口并展开测试面板,参数已填好真实示例值,登录后自动带上你的密钥。

基址
https://socialapi.tech
认证
-H"X-API-Key:your_key_here"
示例
curl
curl "https://socialapi.tech/v1/search/advanced?query=bitcoin" \
  -H "X-API-Key: KEY"

接口参考

40 个读取接口,按用途分为 5 组。点进任一组查看完整参数、响应结构与可直接运行的测试面板。

WS/v1/stream/ws

实时流 (WebSocket)

订阅任意 X 账户, 通过一条 WebSocket 长连接实时接收它们的推文——推给你自己的服务器或软件。一次抓取, 多人分摊, 按账户/小时计费。

连接地址
wss://socialapi.tech/v1/stream/ws?api_key=YOUR_API_KEY

认证: api_key 走查询参数 (浏览器 WS 不能带 header)。密钥即身份, 请保密。

订阅哪些账户: 只推你已订阅账户的推文。用 POST /v1/stream/subscriptions 加账户, 加/删几秒内自动生效, 无需重连。

消息格式
// 1. on connect — handshake with your current subscriptions
{ "type": "connected", "subscribed": ["elonmusk", "vitalikbuterin"] }

// 2. a live post (NO "type" field; identified by tweet_id)
{ "kol": "elonmusk", "tweet_id": "1929...", "user": "elonmusk",
  "display_name": "Elon Musk", "content": "...", "url": "https://x.com/...",
  "like_count": 1203, "retweet_count": 88, "reply_count": 42,
  "view_count": 90512, "is_retweet": false, "is_reply": false }

// 3. backpressure notice (stream too fast; N messages dropped — you stay connected)
{ "type": "lagged", "dropped": 17 }

★区分: 有 type 字段 = 控制帧 (connected/lagged); 无 type 但有 tweet_id = 推文。服务端每 30s 发 WebSocket Ping 保活, 客户端自动回 Pong 即可 (多数库默认处理)。

接入示例
Node.js
import WebSocket from "ws";   // npm i ws

function connect() {
  const ws = new WebSocket("wss://socialapi.tech/v1/stream/ws?api_key=YOUR_API_KEY");

  ws.on("open", () => console.log("connected"));
  ws.on("message", (raw) => {
    const msg = JSON.parse(raw.toString());
    if (msg.type === "connected") return;      // handshake
    if (msg.type === "lagged") return;         // server dropped N on backpressure
    // else: a live post from an account you subscribed to
    console.log("@" + msg.user, "→", msg.content);
  });
  ws.on("error", (e) => console.error("ws error:", e.message));
  // auto-reconnect on drop
  ws.on("close", () => setTimeout(connect, 1000));
}

connect();
Python
import json, websocket   # pip install websocket-client

def on_message(ws, raw):
    msg = json.loads(raw)
    if msg.get("type"):                       # connected / lagged control frames
        return
    print("@" + msg["user"], "→", msg["content"])

ws = websocket.WebSocketApp(
    "wss://socialapi.tech/v1/stream/ws?api_key=YOUR_API_KEY",
    on_message=on_message,
)
ws.run_forever(ping_interval=30, reconnect=5)  # keep-alive + auto-reconnect
Shell
# websocat (github.com/vi/websocat) — quick test from the shell
websocat "wss://socialapi.tech/v1/stream/ws?api_key=YOUR_API_KEY"
生产建议: ①断线自动重连(网络抖动/服务重启在所难免) ②处理 lagged 帧(可选补拉) ③单连接可订阅多账户, 无需每账户一条连接。
GET/v1/usage · /v1/deposit/balance

账户 · 余额与用量

随时查你的 credits 余额与用量。这些端点自鉴权 (X-API-Key), 本身不计费。

GET /v1/usage — 用量汇总
{ "status": "success", "data": {
  "balance_credits": "998002",
  "today":  { "calls": 42,  "credits_spent": "812"   },
  "month":  { "calls": 903, "credits_spent": "17240" }
} }
GET /v1/deposit/balance — 仅余额
{ "status": "success", "data": { "user_id": 4, "credits": "998002" } }

★每次调用都带余额响应头

x-credits-used: 19 x-credits-remaining: 998002

无需单独查询——每个计费请求的响应头都实时告诉你本次消耗与剩余额度 (对标 Stripe / OpenAI)。

计费与 Credits

按次付费, 只对成功请求 (200) 扣费。1 USD = 100,000 credits。充值即得 credits, 无月租、无套餐、不过期。

每端点单价 (credits / 次)
user/info · user/about · tweet/info19单点查询
user/last_tweets · media · highlights · tweet/replies · thread · trends · explore25列表 / 时间线
followers · followings · retweeters · list/*31分页列表
search/advanced · search/user44搜索 (最贵)
batch/user_info50批量 (≤100)
user/whois63复合尽调

例: 单点查询 15 credits ≈ $0.00015/次;列表类前 30 条 80 credits, 之后每条 12 credits —— 按**实际返回**算, limit 填大不会多扣。缓存命中按同价计 (你拿同一份数据)。

实时流计费

$0.08 / 账户 / 天 (= 333 credits/账户/小时, 按小时从 credits 扣)

扁平价, 想订几个订几个。实时流只推推文本身; 想要作者完整画像(粉丝/简介/位置)请查 /v1/user/info。

  • ·订阅的那一刻立即扣除第一个小时的费用。
  • ·之后每个账户按各自的整点小时独立计费, 每小时 333 credits, 不重复不遗漏。
  • ·余额不足时该账户订阅自动暂停 (停推流+停计费), 充值后重新订阅即恢复。
  • ·随时可取消, 只对已开始的整点小时计费。
  • ·订阅不存在/拼错的账户会被直接拒绝 (不入库、不扣费)。