API 文档
EveryInfra API 与 MCP 开发文档
EveryInfra 提供数据采集、联网搜索、验证码识别,以及充值用户免费使用的 AI 接口(兼容 OpenAI)。MCP 是调用这些能力的协议入口。所有接口用同一把 API Key 和同一个钱包。
我们提供什么
统一数据 API
用同一个请求结构获取社交内容、点评口碑、电商评论与全网搜索数据。舆情监控、竞品研究、评论分析、RAG 数据源和 Agent 联网取数。
POST /api/v1/social- 90 个平台、413 项能力,换平台只改 platform 一个字段
- 返回结构化 JSON,字段名统一,可直接入库
- 多数能力一次请求给满,按页的能力每页算一次;请求失败不扣钱
能力目录 GET /api/v1/social/catalog;异步结果 GET /api/v1/jobs/{job_id}
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
验证码识别 EverySolve
提交站点参数,拿回可直接使用的通过凭证——token、cookie、坐标或识别文本。注册与登录自动化、采集流程里被 Turnstile / reCAPTCHA / hCaptcha 挡住的那一步。
POST /api/v1/captcha- 52 种验证码类型,覆盖 token、坐标、文本等 9 种返回形态
- 仅成功计费;失败不产生最终扣款,若已预扣则余额自动恢复
- 同一接口提交不同验证码类型,按类型返回可用结果
能力目录 GET /api/v1/captcha/types 免费、不鉴权,实时标注每类当前可用性
全网搜索 EverySearch
一个接口拿全网搜索结果与网页正文——关键词、语义、论坛、学术、多来源交叉核对。Agent 联网取数、RAG 语料、竞品与舆情调研、需要带引用的事实核查。
POST /api/v1/search- 17 个检索工具,换一个 tool 就换一种检索机制,请求结构不变
- 深度检索连网页正文一起返回,不用再自己去抓一遍页面
- 交叉核验返回来源与一致性层级,便于复核
能力目录 GET /api/v1/search/tools;三档定价见 /pricing
邮件发送
用我们的发信域发验证码与通知邮件,不用自己养域名、配 SPF/DKIM、暖 IP。注册验证码、订单与状态通知、批量触达,以及不想为送达率维护发信基础设施的团队。
POST /api/v1/email/send- 单封与批量两个端点,同一把 Key、同一个钱包结算
- 发信域与 DNS 记录由我们维护,你不用碰 SPF/DKIM/DMARC
- 投递事件可回调,送达与失败都能对上号
能力目录 GET /api/v1/email/catalog;用量 GET /api/v1/email/usage
IP 代理
按需下单住宅出口,拿到即用的代理凭证——支持指定地区与会话保持。被地区封锁挡住的采集、需要稳定出口的自动化流程、多账号隔离。
POST /api/v1/proxy/order- 按订单下单,不用按月买套餐、也不用为闲置带宽付费
- 可指定地区;需要同一出口时用 sticky_minutes 保持会话,不额外收费
- 凭证即时返回,订单状态可随时查
能力目录 GET /api/v1/proxy/catalog;订单状态 GET /api/v1/proxy/order/{order_id}
接码
按服务与国家取一个可收短信的号码,验证码到达后自动提取。注册与登录自动化里需要手机验证码的那一步,以及需要长期号码的租用场景。
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。怎么选择入口
| 你的目标 | 选择 | 入口 | 得到什么 |
|---|---|---|---|
| 搜索帖子、评论、用户、商品或网页 | 统一数据 API | POST /api/v1/social | 结构化 JSON 数据 |
| 清洗、分类、抽取或总结采集到的数据 | AI 接口 | POST /api/v1/chat/completions | 按你定的格式返回(充值用户免费) |
| 查资料、抓正文、爬站点、交叉验证事实 | 搜索 API | POST /api/v1/search | 带来源的结构化结果 |
| 过掉挡在目标站前面的验证码或挑战页 | 验证码识别 API | POST /api/v1/captcha | token / Cookie / 坐标(按类型) |
| 让支持 MCP 的 AI 客户端自己选工具 | MCP | POST /mcp | 先发现工具与参数;目录查询不代表付费权限 |
快速开始
加微信领 $1 额度码(≈720 次数据调用),注册后在控制台「余额与充值」兑换,进入赠送余额,兑换后 24 小时内有效,到期没用完的部分自动失效;普通注册不自动赠送额度。拿到 API Key 后,先选择你要调用的入口;下面以统一数据 API 为例:
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}}'
{ "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 小时用量。金额都是美元;这个接口只读、不计费,也不占每分钟次数。
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,任务在后台跑完再取结果,不受这个时限限制。
搜索 API(EverySearch)
一个端点 POST /api/v1/search,17 个工具,请求体用 tool 选:网页 / 语义 / 深度检索 / 学术与专利 / 新闻 / 商品 / 地点 / 图像与视频 / 反向图搜 / 论坛 / 正文抓取 / 整站爬取 / 站点结构 / 相似页面 / 联想词 / 交叉验证 / 长任务抓取。工具目录 GET /api/v1/search/tools 不鉴权、免费,带每个工具的参数与单价。
三档基础标价:标准 $0.69 / 千次 / 深度 $1.39 / 千次 / 交叉验证 $2.78 / 千次。选择前请查看工具目录列出的参数、返回格式与当前价格;实扣金额在调用响应中核对。
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 字段如实反映此刻能不能卖,别把它缓存起来当静态数据用。
仅成功计费;失败不产生最终扣款:未取得有效解、执行失败或超时,若已预扣则余额自动恢复。
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..."}'
{ "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 起,从左上角按行数 |
| number | 42 | 旋转题 / 滑块 | 按这个数值驱动你自己的浏览器 |
| 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 一致。
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 合计:
| 累计充值 | 每分钟次数 | 同时在跑 |
|---|---|---|
| 充值过,不足 $100 | 50 | 5 |
| 满 $100 | 500 | 50 |
| 满 $500 | 5,000 | 500 |
试用额度和额度码不算充值;没充值过的账户调用返回 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_model | model 不存在,message 会给出可能的正确名称 |
AI 接口用来整理你在万有引擎采集的数据。如果用在别的地方,或者调用明显异常,我们可能会暂停这个账号的 AI 接口;账号本身、其他接口和余额都不受影响。
批量与并发
批量处理时用有界并发池,并发数不要超过你这一档的「同时在跑」上限;遇到 429 按 Retry-After 等待,遇到 503 做带抖动的指数退避。每条任务保留自己的业务 ID,便于重试和对账;先让模型只返回固定 JSON,再在客户端校验失败的条目。
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 unauthorized | Key 缺失或无效 |
| 402 quota_exhausted | 钱包余额不足;可用 GET /api/v1/account 查当前余额,充值后重试 |
| 403 account_disabled | 账号被停用,联系我们或你的服务商 |
| 400 unknown_capability | platform / action 不存在,查 catalog |
| 422 missing_param | 必填参数缺失,message 会指出是哪个 |
| 429 rate_limited | 触发限速,稍后重试 |
| 503 upstream_error | 服务暂不可用(不计费),按响应建议重试 |
| 503 timeout | 同步调用超过 85s 上限(不计费),message 会给出具体建议:调小 limit 或改用异步能力 |
| 422 input_too_large | AI 接口 messages 合计超过 45,000 字符,拆成多次请求 |
计费
一个钱包跨服务扣费:数据/搜索按平台分4档 $0.56 / 千次–$5.56 / 千次(对标档 $0.56 / 千次 / 标准档 $1.39 / 千次 / 深度档 $2.78 / 千次 / 高难档 $5.56 / 千次);AI 接口对充值用户免费;失败或空响应不计费,充值余额长期有效。
直客适用月度充值折扣:按北京时间自然月累计当月已到账的充值面额(不含通道手续费),达档后从下一次调用起按该档计费,每月 1 日重新累计;各档门槛以控制台「账户方案」显示为准。充值订单只有在 EveryInfra 内部状态显示余额已到账(credited)后才计入当月充值累计;赠送额度、额度码与调额不计入。请查看控制台当前账户状态,实际扣费以调用返回的 billing 为准,不在客户端自行换算、乘折扣或叠加优惠。公开计费单位与标准价格见定价页。
每次付费调用的响应里都带 billing 字段,写明本次实际扣了多少与计价依据,不用回查账单就能对账:
"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 列表,没采到的那几个不收钱。