API 文档

EveryInfra API 与 MCP 开发文档

EveryInfra 提供数据采集、联网搜索、验证码识别,以及充值用户免费使用的 AI 接口(兼容 OpenAI)。MCP 是调用这些能力的协议入口。所有接口用同一把 API Key 和同一个钱包。

快速开始

我们提供什么

核心 API ①按平台与采集方式分档

统一数据 API

用同一个请求结构获取社交内容、点评口碑、电商评论与全网搜索数据。舆情监控、竞品研究、评论分析、RAG 数据源和 Agent 联网取数。

POST /api/v1/social
  • 90 个平台、413 项能力,换平台只改 platform 一个字段
  • 返回结构化 JSON,字段名统一,可直接入库
  • 多数能力一次请求给满,按页的能力每页算一次;请求失败不扣钱

能力目录 GET /api/v1/social/catalog;异步结果 GET /api/v1/jobs/{job_id}

核心 API ②充值用户免费

AI 接口

兼容 OpenAI 的 AI 接口,充值过的账户免费使用,默认模型 gemini-3.6-flash。清洗、去重、分类、提取字段、写摘要和翻译你采集到的数据。

POST /api/v1/chat/completions
  • 把 base_url 换成我们的,原来的 OpenAI SDK 一行不用改
  • 调用免费,不扣余额;每分钟次数按累计充值分档(50 / 500 / 5,000 次)
  • 支持流式输出;模型清单以 GET /api/v1/models 为准

模型目录 GET /api/v1/models(不用 Key);对话 POST /api/v1/chat/completions

专项 API$0.14 / 千次–$4.58 / 千次

验证码识别 EverySolve

提交站点参数,拿回可直接使用的通过凭证——token、cookie、坐标或识别文本。注册与登录自动化、采集流程里被 Turnstile / reCAPTCHA / hCaptcha 挡住的那一步。

POST /api/v1/captcha
  • 52 种验证码类型,覆盖 token、坐标、文本等 9 种返回形态
  • 仅成功计费;失败不产生最终扣款,若已预扣则余额自动恢复
  • 同一接口提交不同验证码类型,按类型返回可用结果

能力目录 GET /api/v1/captcha/types 免费、不鉴权,实时标注每类当前可用性

专项 API$0.69 / 千次 起

全网搜索 EverySearch

一个接口拿全网搜索结果与网页正文——关键词、语义、论坛、学术、多来源交叉核对。Agent 联网取数、RAG 语料、竞品与舆情调研、需要带引用的事实核查。

POST /api/v1/search
  • 17 个检索工具,换一个 tool 就换一种检索机制,请求结构不变
  • 深度检索连网页正文一起返回,不用再自己去抓一遍页面
  • 交叉核验返回来源与一致性层级,便于复核

能力目录 GET /api/v1/search/tools;三档定价见 /pricing

专项 API$0.56 / 千封

邮件发送

用我们的发信域发验证码与通知邮件,不用自己养域名、配 SPF/DKIM、暖 IP。注册验证码、订单与状态通知、批量触达,以及不想为送达率维护发信基础设施的团队。

POST /api/v1/email/send
  • 单封与批量两个端点,同一把 Key、同一个钱包结算
  • 发信域与 DNS 记录由我们维护,你不用碰 SPF/DKIM/DMARC
  • 投递事件可回调,送达与失败都能对上号

能力目录 GET /api/v1/email/catalog;用量 GET /api/v1/email/usage

专项 API下单时报价

IP 代理

按需下单住宅出口,拿到即用的代理凭证——支持指定地区与会话保持。被地区封锁挡住的采集、需要稳定出口的自动化流程、多账号隔离。

POST /api/v1/proxy/order
  • 按订单下单,不用按月买套餐、也不用为闲置带宽付费
  • 可指定地区;需要同一出口时用 sticky_minutes 保持会话,不额外收费
  • 凭证即时返回,订单状态可随时查

能力目录 GET /api/v1/proxy/catalog;订单状态 GET /api/v1/proxy/order/{order_id}

专项 API按服务与国家浮动

接码

按服务与国家取一个可收短信的号码,验证码到达后自动提取。注册与登录自动化里需要手机验证码的那一步,以及需要长期号码的租用场景。

POST /api/v1/sms/number
  • 按「服务 × 国家」选号,目录里直接标出各组合的零售价
  • 一次性取号与长期租用两种模式,取不到号不扣钱
  • 验证码自动提取,不用自己解析短信正文

能力目录 GET /api/v1/sms/catalog;租用目录 GET /api/v1/sms/rental/catalog

协议入口

MCP 远程服务器

POST /mcp按调用的底层 API 计费

让 Claude、ChatGPT、Cursor 等客户端直接调用数据、搜索和验证码 API。不想手写 HTTP 的 AI Agent、桌面客户端、IDE 和自动化工作流。

  • 23 个工具覆盖能力发现、数据抓取、异步任务查询、搜索、验证码识别、AI 接口,以及账户余额、用量、调用记录、账单、Key、工单、充值链接和(给 Key 打开写权限后)管理 Key、改设置、开工单,AI 自己判断该调哪个
  • Claude 和 Cursor 有一键部署链接,ChatGPT 粘一次地址就行
  • 和上面两个 API 共用同一把 Key、同一个钱包
辅助发现接口: GET /api/v1/social/catalog 查看全部数据能力,GET /api/v1/models 查看模型列表,GET /api/v1/jobs/{job_id} 轮询异步数据任务。它们不是第三、第四类付费 API。

怎么选择入口

你的目标选择入口得到什么
搜索帖子、评论、用户、商品或网页统一数据 APIPOST /api/v1/social结构化 JSON 数据
清洗、分类、抽取或总结采集到的数据AI 接口POST /api/v1/chat/completions按你定的格式返回(充值用户免费)
查资料、抓正文、爬站点、交叉验证事实搜索 APIPOST /api/v1/search带来源的结构化结果
过掉挡在目标站前面的验证码或挑战页验证码识别 APIPOST /api/v1/captchatoken / Cookie / 坐标(按类型)
让支持 MCP 的 AI 客户端自己选工具MCPPOST /mcp先发现工具与参数;目录查询不代表付费权限

快速开始

加微信领 $1 额度码(≈720 次数据调用),注册后在控制台「余额与充值」兑换,进入赠送余额,兑换后 24 小时内有效,到期没用完的部分自动失效;普通注册不自动赠送额度。拿到 API Key 后,先选择你要调用的入口;下面以统一数据 API 为例:

quickstart.sh
curl -X POST https://api.everyinfra.com/api/v1/social \
  -H "Authorization: Bearer 你的 API Key" \
  -H "Content-Type: application/json" \
  -d '{"platform":"xiaohongshu","action":"search",
       "params":{"keyword":"露营","limit":20}}'
response.json
{
  "platform": "xiaohongshu",
  "action": "search",
  "count": 20,
  "results": [ { "id": "...", "title": "...", "like_count": 3280 } ],
  "billing": { "charged": true, "charged_usd": 0.005556, "balance_after_usd": 12.340122 }
}

鉴权

每个请求带上 Authorization 头,值为 Bearer <你的 API Key>。API Key 在 控制台 创建,完整 Key 仅在创建时显示一次。Base URL:https://api.everyinfra.com。

用同一把 Key 调 GET /api/v1/account 可以查余额(付费、赠送与合计)、本月折扣档、每分钟次数上限和近 24 小时用量。金额都是美元;这个接口只读、不计费,也不占每分钟次数。

account.sh
curl https://api.everyinfra.com/api/v1/account \
  -H "Authorization: Bearer 你的 API Key"

要读全账户范围的记录(每日用量、调用记录、账单、钱包流水),同一把 Key 可以调控制台接口,例如 GET /portal/api/requests/{request_id};它们需要 Key 有账户读取权限,不扣费,每账户每分钟 60 次,完整列表见 OpenAPI 的 Account 一节。

不想轮询的话,在控制台「设置 → Webhook」填一个 HTTPS 地址:余额降到你设的阈值、或异步任务结束时,我们发一个带签名的 POST。签名在 X-EveryInfra-Signature 请求头里,是用签名密钥对「时间戳、英文句点、原始请求体」算的 HMAC-SHA256;时间戳相差超过 5 分钟的请求请直接拒绝,并按事件 ID 去重(失败会退避重试,最多 7 次)。

要让 AI 也能改账户,在「API Keys → 权限限制」里给它打开写权限:管理 Key、修改设置、开工单和回复,三项都默认关闭、只能由你登录控制台勾选。经 Key 新建 Key 每天最多 20 把、开工单每天最多 10 张;查看或轮换完整 Key、改权限和 IP 白名单、重新启用 Key、付款,永远只能在控制台做。完整接口见 OpenAPI 的 Account 一节,例如 POST /portal/api/keys/{key_id}/disable。

balance.total_usd 是付费余额加赠送余额的合计,扣费时先用赠送余额;bonus_expiring 列出还没到期的限时赠送额度;discount 是本月充值折扣档和距下一档还差多少(经服务商开通的账户价格由服务商套餐决定,这里为 null);rate_limit.requests_per_minute 是账户名下所有 Key 合计的每分钟次数上限(AI 接口另有分档);usage_24h 是近 24 小时的调用数和实际花费,可能有约 1 分钟延迟。

统一数据 API

一个端点通吃全部数据能力。请求体三要素:platform(平台标识,如 xiaohongshu / google_maps_reviews / amazon)、action(动作,如 search / user_posts / reviews / comments)、params(动作参数,如 keyword / url / limit)。换平台只换 platform 字段,响应结构统一。

支持的平台与能力

90 平台 / 413 能力,三大域:社交内容(小红书、抖音、Instagram、X、TikTok、YouTube、微博、知乎、公众号、B站、Reddit 等)、点评口碑(谷歌地图、TripAdvisor、Yelp、Trustpilot、Glassdoor、App Store、Google Play 等,按 URL/域名取评论)、电商(Amazon、速卖通、eBay、Etsy、Temu 等)+ 全网搜索。完整清单看 GET /api/v1/social/catalog(免费,不计费;含每个能力的必填/可选参数、单次条数上限和单价)。还覆盖招聘、设计社区与房产等任务,具体支持范围以能力目录为准。

异步任务

异步动作包括 Facebook 主页/帖子/评论、Instagram 用户帖子/发现和 LinkedIn 评论。提交后立即返回 job_id,用 GET /api/v1/jobs/{job_id} 轮询,完成后取结果。只在提交时计费一次,轮询免费。

任何数据能力都可以在请求体加 "mode": "async" 改走异步。一次要跑几十上百个请求时请用异步:同步调用要在 85 秒内返回,超过就按超时失败(不计费);异步提交后立即拿到 job_id,任务在后台跑完再取结果,不受这个时限限制。

一个端点 POST /api/v1/search,17 个工具,请求体用 tool 选:网页 / 语义 / 深度检索 / 学术与专利 / 新闻 / 商品 / 地点 / 图像与视频 / 反向图搜 / 论坛 / 正文抓取 / 整站爬取 / 站点结构 / 相似页面 / 联想词 / 交叉验证 / 长任务抓取。工具目录 GET /api/v1/search/tools 不鉴权、免费,带每个工具的参数与单价。

三档基础标价:标准 $0.69 / 千次 / 深度 $1.39 / 千次 / 交叉验证 $2.78 / 千次。选择前请查看工具目录列出的参数、返回格式与当前价格;实扣金额在调用响应中核对。

search.sh
curl -X POST https://api.everyinfra.com/api/v1/search \
  -H "Authorization: Bearer 你的 API Key" \
  -H "Content-Type: application/json" \
  -d '{"tool":"web","query":"EU AI Act 合规要求","num":10}'

验证码识别 API(EverySolve)

一个端点 POST /api/v1/captcha,52 种类型,$0.14 / 千次–$4.58 / 千次。请求体第一个字段永远是 type,其余参数逐类型不同。能力目录 GET /api/v1/captcha/types 不鉴权、免费,带每种类型的必填/可选参数、解的形状和单价 —— 而且带 available 字段如实反映此刻能不能卖,别把它缓存起来当静态数据用。

仅成功计费;失败不产生最终扣款:未取得有效解、执行失败或超时,若已预扣则余额自动恢复。

captcha.sh
curl -X POST https://api.everyinfra.com/api/v1/captcha \
  -H "Authorization: Bearer 你的 API Key" \
  -H "Content-Type: application/json" \
  -d '{"type":"turnstile",
       "website_url":"https://example.com/login",
       "website_key":"0x4AAAAAAA..."}'
captcha_response.json
{
  "type": "turnstile",
  "solution": { "token": "0.aBcD..." },
  "token": "0.aBcD...",          // 标量解额外给一个顶层字段,省一层取值
  "billing": { "charged": true, "charged_usd": 0.000278, "balance_after_usd": 12.345122 }
}

⚠ 解的形状有 9 种,接入前先确认你这一类是哪种。 这是这条 API 最容易写错的地方:不同验证码交付的东西根本不是一类东西,有的是一个字符串填回表单,有的是一组坐标要你自己去点。solution 里的字段名以目录返回的 solution.keys 为准。

解的形状长什么样典型类型怎么用
boxes[{ "x_min": 10, "x_max": 40, "y_min": 5, "y_max": 30 }]框选题按矩形范围拖框,不是点一个点
cookie"name=值; Path=/"Cloudflare 挑战页 / Imperva / Akamai作为 Cookie 带上后续请求
fields{ "ticket": "…", "randstr": "…" }腾讯天御 / 网易易盾多个字段一起回填,缺一个都不行
indices[0, 2, 6]reCAPTCHA 九宫格按编号点格子:0 起,从左上角按行数
number42旋转题 / 滑块按这个数值驱动你自己的浏览器
points[{ "x": 36, "y": 26 }]点选题按坐标依次点击(数值是像素)
text"3f8a"图形识别 / 文字题 / 音频把识别出的文字填回输入框
token"0.aBcD…"Turnstile / reCAPTCHA / hCaptcha填回目标站表单的对应字段
tokens["ct_aBc…", "ct_dEf…"]反欺诈请求令牌(Castle)在后续请求上逐个用掉,用完再来取

前四种是单个标量,响应会额外给一个顶层 token 字段,省掉一层取值;后三种不是标量,没有顶层 token,只能从 solution 里取。坐标和矩形的数值一律是数字、键名一律 snake_case。

有几类要你自带代理(目录里 proxy 在必填里的那些):它们交付的是 Cookie 而不是 token,而 Cookie 绑定求解时的出口 IP —— 用我们的出口解出来,你拿去用是无效的。所以代理必须是你后续请求要用的那个出口。

AI 接口(充值用户免费)

AI 接口兼容 OpenAI 的 chat/completions:充值过任意金额的账户免费调用,不扣余额,用来清洗、去重、分类、抽取和总结你在万有引擎采集的数据,输出格式由你在提示词里定。

用 OpenAI SDK 时把 base_url 设成 https://api.everyinfra.com/api/v1,api_key 填 EveryInfra 的 API Key(和其他接口同一把,放在 Authorization: Bearer 请求头里;网址里带 ?key= 会被拒绝)。对话接口是 POST /api/v1/chat/completions,请求和返回格式与 OpenAI 一致。

ai_quickstart.py
from openai import OpenAI

client = OpenAI(
    base_url="https://api.everyinfra.com/api/v1",
    api_key="你的 API Key",
)
r = client.chat.completions.create(
    model="gemini-3.6-flash",
    messages=[{
        "role": "user",
        "content": "只返回 JSON:给这条评论标注 sentiment、topic 和 intent",
    }],
)
print(r.choices[0].message.content)

模型有两个:默认的 gemini-3.6-flash,和更轻量的 gemini-flash-lite。GET /api/v1/models 返回同样的清单,这个接口不用 Key。model 写错会返回 422,并提示可能的正确名称。

按累计充值分档限速,账户内所有 Key 合计:

累计充值每分钟次数同时在跑
充值过,不足 $100505
满 $10050050
满 $5005,000500

试用额度和额度码不算充值;没充值过的账户调用返回 403 ai_topup_required。分档是上限,不是承诺的吞吐。

支持流式:请求里加 stream: true,按 SSE 逐段返回,以 data: [DONE] 结束;需要用量时加 stream_options.include_usage。

messages 合计最多 45,000 字符,超过返回 422 input_too_large,请切块后分多次请求。多轮对话由每次请求带上完整历史实现;不要依赖图片、PDF、音频或视频输入。

403 ai_topup_required账户还没充值过;充值任意金额后就能调用
429 rate_limited每分钟次数用完(per_minute_limit)或同时在跑超过上限(concurrency_limit),按 Retry-After 等待后重试
503 ai_busy全站繁忙,按 Retry-After 稍后重试
403 ai_disabled这个账号的 AI 接口已被暂停
422 unknown_modelmodel 不存在,message 会给出可能的正确名称

AI 接口用来整理你在万有引擎采集的数据。如果用在别的地方,或者调用明显异常,我们可能会暂停这个账号的 AI 接口;账号本身、其他接口和余额都不受影响。

批量与并发

批量处理时用有界并发池,并发数不要超过你这一档的「同时在跑」上限;遇到 429 按 Retry-After 等待,遇到 503 做带抖动的指数退避。每条任务保留自己的业务 ID,便于重试和对账;先让模型只返回固定 JSON,再在客户端校验失败的条目。

batch_labeling.py
from concurrent.futures import ThreadPoolExecutor
from openai import OpenAI

client = OpenAI(base_url="https://api.everyinfra.com/api/v1", api_key="你的 API Key")
comments = ["物流很快,包装也很好", "功能一般,价格偏高"]

def label(text: str):
    return client.chat.completions.create(
        model="gemini-3.6-flash",
        messages=[{"role": "user", "content": f"只返回 JSON,字段为 sentiment/topic/intent:{text}"}],
    ).choices[0].message.content

# 并发数不要超过你这一档的「同时在跑」上限
with ThreadPoolExecutor(max_workers=5) as pool:
    results = list(pool.map(label, comments))

MCP 接入

支持 MCP 的客户端可通过 POST https://api.everyinfra.com/mcp(Streamable HTTP)发现并调用 EveryInfra 工具,无需在本地运行服务器。先读取 tools/list 和每个工具的 inputSchema,再选择参数;插件安装成功、Skill 可见或目录有商品,都不等于当前 Key 已有付费权限或商品有库存。

通过 everyinfra_list_capabilities 发现数据能力,使用 everyinfra_call_api(异步提交的任务用 everyinfra_get_job 免费取结果)和 everyinfra_search 调用数据与搜索产品。验证码先用免费的 everyinfra_list_captcha_types 核对 type、必填参数、解的形状和实时可用性,再调用 everyinfra_solve_captcha;目录查询不计费。实际工具与参数以 tools/list 为准。AI 对话用 everyinfra_chat(充值用户免费,非流式)。查余额、本月折扣档和每分钟次数用免费的 everyinfra_account(无参数,返回内容与 GET /api/v1/account 相同)。

更细的账户记录用这几个免费工具读:everyinfra_usage、everyinfra_requests、everyinfra_billing、everyinfra_keys、everyinfra_tickets,分别是每日用量、调用记录(按 request_id 查单次调用的最终扣费结算)、账单与钱包流水、Key 列表和人工客服工单。它们要求这把 Key 有对应的账户读取权限:不限产品线的 Key 默认能读用量、调用记录和账单;限了产品线的 Key,以及工单读取,要在控制台「API Keys → 权限限制」里打开。要充值时用 everyinfra_topup_link 拿控制台充值页链接,由账户主人自己付款,工具本身不会建单或扣款。

账户主人在控制台给 Key 打开写权限之后,AI 还可以用这几个工具改账户:everyinfra_key_create、everyinfra_key_update、everyinfra_key_disable、everyinfra_key_delete、everyinfra_settings_update、everyinfra_webhook_set、everyinfra_webhook_test、everyinfra_ticket_create、everyinfra_ticket_reply(分别是新建、修改、停用、删除 Key,改设置,设置和测试 Webhook,开工单和回复)。写权限默认关闭,只能由人登录控制台勾选;经 Key 新建的 Key 不会比发起的那把更宽,也永远不带写权限;人建的 Key 只能停用。AI 做的每一项修改都会出现在通知中心。

通过客户端的密钥配置注入 Authorization: Bearer <API Key>,不要把真实 Key 放进对话、代码仓、截图或 URL。旧连接器的查询参数鉴权仍兼容,但 URL 容易进入历史与日志,不用于新接入。客户端是否支持远程 MCP、自定义鉴权或插件需分别核对;直接连接 MCP 不等于安装插件,也不等于官方市场已上架。

HTTP 200 不等于工具调用成功:先检查 JSON-RPC error,再检查 result.isError 与业务状态。文本模型的首个文本块是回答,不要假定所有文本块都是 JSON;若返回额外的账单 JSON,读取其中的 billing。同一结果同时出现在 structuredContent 和 JSON 文本时只消费一份;没有账单信息不能推断为免费。

EveryMail、EveryNumber、EveryProxy 的资源 MCP 尚未默认开放,现有接入继续走 REST。即使目标服务显式开放资源工具,也必须先核对 schema,再对发送对象、采购数量或租期、美元预算取得具体确认。查短信验证码或取代理凭据可能扣费,不能当作免费状态查询;超时或结果不明时保留原幂等键、Key 和参数,核查已有订单,不自动换键、重发或转 REST 再执行。

首页接入示例与控制台「MCP 接入」页帮助配置连接;最新能力说明见 llms.txt 和 OpenAPI。连接、鉴权、实际调用和对外发布分别验收,不用其中一步替代其余步骤。

错误码

下表说明数据、搜索、AI 接口与验证码 REST 调用的常见错误。MCP 还需检查工具结果;邮件、号码和代理的外部动作不适用“报错就直接重试”,应先核订单状态与账单。

401 unauthorizedKey 缺失或无效
402 quota_exhausted钱包余额不足;可用 GET /api/v1/account 查当前余额,充值后重试
403 account_disabled账号被停用,联系我们或你的服务商
400 unknown_capabilityplatform / action 不存在,查 catalog
422 missing_param必填参数缺失,message 会指出是哪个
429 rate_limited触发限速,稍后重试
503 upstream_error服务暂不可用(不计费),按响应建议重试
503 timeout同步调用超过 85s 上限(不计费),message 会给出具体建议:调小 limit 或改用异步能力
422 input_too_largeAI 接口 messages 合计超过 45,000 字符,拆成多次请求

计费

一个钱包跨服务扣费:数据/搜索按平台分4档 $0.56 / 千次–$5.56 / 千次(对标档 $0.56 / 千次 / 标准档 $1.39 / 千次 / 深度档 $2.78 / 千次 / 高难档 $5.56 / 千次);AI 接口对充值用户免费;失败或空响应不计费,充值余额长期有效。

直客适用月度充值折扣:按北京时间自然月累计当月已到账的充值面额(不含通道手续费),达档后从下一次调用起按该档计费,每月 1 日重新累计;各档门槛以控制台「账户方案」显示为准。充值订单只有在 EveryInfra 内部状态显示余额已到账(credited)后才计入当月充值累计;赠送额度、额度码与调额不计入。请查看控制台当前账户状态,实际扣费以调用返回的 billing 为准,不在客户端自行换算、乘折扣或叠加优惠。公开计费单位与标准价格见定价页。

每次付费调用的响应里都带 billing 字段,写明本次实际扣了多少与计价依据,不用回查账单就能对账:

billing.json
"billing": {
  "charged": true,                // 本次是否真的扣费(空结果/失败为 false)
  "charged_usd": 0.005556,        // 本次实扣(美元);没扣为 0,结果未知为 null
  "balance_after_usd": 12.340122, // 本次结算后的钱包余额(美元);读不到时为 null
  "discount_rate": 0.9,           // 生效折扣(无折扣时不出现)
  "units": 20,                    // 扇出能力按目标数计费时出现
  // 以下为兼容保留的旧字段,对账与展示请用上面的美元字段
  "credits": 400,
  "cny": 0.04,
  "list_price_credits": 400,      // 该能力的标价(未折、未乘目标数)
  "tier_credits": 400             // 平台档单价
}

charged_usd 是本次实扣的美元金额(没扣费为 0,结果还不确定时为 null);balance_after_usd 是本次结算后的钱包余额(读不到时为 null),跑批量时直接读它就能盯住余额。调用失败、预扣已退回时,错误体里的 billing 也带这个字段。需要完整的余额、折扣档和每分钟次数时调 GET /api/v1/account。

扇出能力(一次传多个 URL)按实际成功的目标数计费:部分目标没采到时响应带 partial: true 与 missed 列表,没采到的那几个不收钱。