SocialToAI免费开始控制台

批量任务

[批量链接数据](/tools/batch-stats/) 把最多 2,000 条帖子或主页链接作为一个批量任务来读。链接只提交一次,任务在后台每次读 50 条,你凭句柄读取每一行。每一行按它所在平台的一次调用扣费;失效的链接和没跑到的行不扣。批量任务在购买积分后可用。

POSThttps://api.socialtoai.com/v1/tools/batch_stats

输入和各平台的积分见文档里的批量链接数据,这一页讲的是任务本身。

提交批量

  • 先带 confirm: false 拿报价:这个任务最多扣多少,报价免费。批量在后台运行,所以不带 confirm: true 的请求也只返回报价。
  • 再带 confirm: true 发一次,返回 HTTP 202 和一个 handle,这时还没扣费。带同一个 Idempotency-Key 再发同样的批量,返回的是同一个句柄。
  • 需要买过积分的账户,以及打开了“发起批量”权限的 Key,否则返回 HTTP 403。只要有一条链接认不出平台,整个请求就以 invalid_params 拒绝,什么都不跑。
cURL
curl https://api.socialtoai.com/v1/tools/batch_stats \  -H "Authorization: Bearer $SOCIALTOAI_KEY" \  -H "Idempotency-Key: $(uuidgen)" \  -H "Content-Type: application/json" \  -d '{    "urls": ["https://x.com/NASA"],    "confirm": true  }'
202 Accepted2020 积分
{  "request_id": "req_00000000-0000-4000-8000-000000000003",  "schema_version": "v1",  "status": "running",  "handle": "res_00000000000040008000000000000003",  "retry_after_seconds": 5,  "billing": {    "cost_credits": 0,    "balance_credits": 100,    "today_spend_credits": 0,    "daily_limit_credits": null,    "daily_remaining_credits": null,    "display": "本次 0 积分,余额 100 积分(约 $0.33)"  }}

读取结果

用句柄读 GET /v1/results/{handle},读多少次都免费。运行中返回 HTTP 202,带着目前已有的行和 retry_after_seconds;结束后返回 HTTP 200。加 ?format=csv 导出成表格。任务结束后结果保存 24 小时。

cURL
curl https://api.socialtoai.com/v1/results/res_00000000000040008000000000000003 \  -H "Authorization: Bearer $SOCIALTOAI_KEY"
字段类型说明
request_idstring发起这个任务的请求编号。
schema_version"v1"返回格式的版本。
tool"batch_stats"任务运行的工具。
status"running" | "done" | "stopped" | "cancelled" | "expired" | "refused"先是 running,结束后是下面的终态之一。
stop_reasonstring | null提前结束的原因:too_many_failed_rows、deadline,或某一波被拒绝时的错误代码。
handlestring读取这个任务用的句柄。
retry_after_secondsinteger运行中:多少秒后再读。(可能不出现)
progress.rowsinteger提交的链接数。
progress.rows_doneinteger已经跑完的行数。
progress.wavesinteger任务切成的波数。
progress.waves_doneinteger已经跑完的波数。
charge.quote_creditsinteger报价:这个任务最多扣多少积分。
charge.charged_creditsinteger已跑的行到目前扣了多少积分。
main_number.idstring任务的主要数字:engagement_total。
main_number.valuenumber有效链接的互动合计。
result.okinteger成功返回的行。
result.deadinteger失效的链接:已删除、私密或不存在。
result.failedinteger没有拿到结果的行。
result.unrecognizedinteger从链接里读不出是哪条帖子或哪个账号的行。
result.not_runinteger任务没跑到的行。
result.dead_linksstring[]失效的链接本身。
rowsarray每条链接一行,顺序同提交时,见下表。
expires_atstring | null结果可读到什么时候;运行中为 null。

每一行:

字段类型说明
rowinteger它在 urls 里的位置,从 0 开始。
urlstring提交时的链接。
platformstring链接所在的平台。
kind"post" | "account" | nullpost 或 account;链接看不出时为 null。
status"ok" | "dead" | "failed" | "unrecognized" | "not_run"这一行的结果。只有 ok 扣费。
creditsinteger这一行扣的积分。
itemobject | any | null帖子或账号现在的样子,按返回格式。
extraarray有的平台要再调一次才能拿到帖子的数字,那次调用的条目放在这里。

任务怎么结束

任务按每 50 行切成一波,一波接一波地跑。不论怎么结束,跑过的行照扣,其余的不扣。

status含义
running还在一波一波地跑。读取返回 HTTP 202,带着目前已有的行。
done每一行都跑完了。
stopped已跑的行里失败超过 30%,不再开新的一波:stop_reason 是 too_many_failed_rows。
cancelled你在控制台取消了它。
expired6 小时用完了:stop_reason 是 deadline。
refused某一波没能开始,比如余额用完了:stop_reason 是对应的错误代码。

扣多少

  • 每一行是它所在平台的一次调用,按这个平台帖子链接或主页链接的价格扣。拿到结果的行照扣,数字是 0 也一样。
  • 失效的链接、读不出的链接和没跑到的行不扣。charge.charged_credits 不会超过报价。
  • 批量不能暂停,可以在控制台的任务页取消,Key 发起的也一样:不再开新的一波,正在跑的那一波跑完并结算,没跑的行不扣。取消后不能撤回。
  • 任务结束时,会向你的 Webhook 发一条 batch.finished。

通过 MCP

你的 AI 用 research 工具运行它(tool 设为 batch_stats),再带着句柄调一次同一个工具来读结果。工具列表 里有它拿到的描述。

最近更新: