三套账号能不能收成一套 API 密钥:模型、数据接口和代码沙箱
模型走 OpenRouter,代码沙箱走 E2B,数据接口再单开一家。本文说明什么时候改成一套 SandBase API 密钥,以及什么时候这三家仍该分开。

做研究 Agent,往往还没写出有用结果,账号已经开了三个。模型走 OpenRouter 这类网关,帖子搜索再向数据供应商另办一套 API 密钥,清理脚本则丢进 E2B 这类代码沙箱。OpenRouter 和 E2B 不是二选一,它们本来就不是同一层。该问的是:模型服务、数据接口、代码沙箱能不能共用一套 API 密钥,以及什么时候不该并。
SandBase 针对的就是这件事。一套 API 密钥调用模型目录和数据接口,并打开兼容 E2B SDK 的代码沙箱。托管 Agent 走 OpenAI Agents API,但只覆盖文档写明的那些资源。自托管网关、GPU 沙箱,或者 E2B 价目表上的并发和时长,不会因为换了 SDK 地址就跟着过来。
先说结论
- OpenRouter 管模型,E2B 管代码沙箱,数据市场是第三张账单。把前两个拿来对打,漏掉的是你还得自己维护的衔接代码。
- 2026-11-07,一套 SandBase API 密钥可以调模型服务、数据接口和代码沙箱。沙箱暂时 $0。符合条件的数据接口,每个组织每天共享 100 次免费调用。Build 按次计费,没有订阅。
- 只要模型市场,留 OpenRouter。要 E2B Pro 或 Enterprise 的限额,留 E2B。这边的代码沙箱是接到某个提供方和模板上的网关。
- 下面的代码来自当时的文档。本文没有实际执行,也不写延迟、账单或成功率。
这三层分别是谁的活
工具型 Agent 上线前,依赖几乎总是这三层:
| 层 | 在循环里干什么 | 团队通常买什么 |
|---|---|---|
| 模型网关 | 一个 OpenAI 形态的客户端,很多模型 ID,一份额度 | OpenRouter,或自托管的 LiteLLM |
| 数据接口 | 搜帖子、查目录、读网页,带 schema 和单价 | 市场,或一堆厂商 API 密钥 |
| 代码沙箱 | 建工作区、跑命令、读文件、再关掉 | E2B,或其他 Agent 沙箱 |
2026-11-07 读到的 OpenRouter FAQ 把第一层说清楚了:统一的 LLM API,推理价格按供应商原价透传,账单收在一处。它没有把自己写成代码沙箱,也没有写成通用数据接口目录。E2B 的计费文档写的是第三层:沙箱在跑的时候按秒收 CPU 和内存。标题如果写成「OpenRouter 还是 E2B」,通常只说明一件事:两家都可能要买,数据接口还得另找。
只选网关,看 OpenRouter 替代方案怎么选(2026)。只选代码沙箱,看 2026 最好的 AI Agent Sandbox。这篇要补的是那两篇没展开的决定:这三层还要不要继续拆开。
三套账号会在哪翻车
第一天很少缺功能。先出问题的是衔接。
三套 API 密钥,三种故障。 OpenRouter 额度用完返回 402,CI 里放错了 E2B 的密钥返回 401,数据供应商报错又被 Agent 当成「没搜到」。三家都按自己的规则在工作。你的循环分不清是没钱了,还是这个话题真的没有帖子。
一张账单对不上一次运行。 同一天的公开价格:OpenRouter 购买额度收 5.5%(最低 $0.80),推理不加价,加密货币支付是 5%。E2B Hobby 月费 $0,一次性 $100 额度,20 个并发,单次连续运行 1 小时。Pro 是每月 $150 再加用量,100 个并发,连续运行 24 小时。定价页上,运行中的沙箱是每 vCPU 秒 $0.000014、每 GiB 秒 $0.0000045。数据厂商再来一张发票。单位不一样。本文没有测 token 数和沙箱秒数,所以不会合成一个「每月省多少」。
循环还是你在维护。 工具 schema、沙箱的创建和销毁、模型的 base URL,都在你的仓库里。容易放烂的是写死的 E2B 域名、另一个账号里的模板名,以及把数据请求重试了两次的逻辑。换 base URL 删不掉这段代码,只是不用再把三个账号对在一起。
一套 SandBase API 密钥实际能调什么
2026-11-07,首页、文档、定价页和沙箱文档对四块能力是对齐的。价格以各自页面为准,下面不收成一句广告。
模型服务。 首页和当天的 SKILL.md(版本 0.3.9)都写着「2,000+ models and APIs across 100+ platforms」。这是站点自己的说法,不是我们清点的。翻目录、看 schema 和单价不扣余额。卡片上的价格就是成交价,部分卡片有折扣,定价页写的上限是 35%。抽查的 Claude Sonnet 5.5 是每百万 token 输入 $1.70、输出 $8.50,相对 $2 / $10 的标价打了 15% 折,上下文 1M。下单前再看卡片,折扣会变。
数据接口,带每日免费额度。 符合条件的数据接口,每个组织每天共享 100 次,00:00 UTC 重置。超出按标价计费。模型调用不占这 100 次。首页举例是用同一套 API 密钥 POST /v1/api/twitter/web/search-timeline。字段和价格以 Twitter/X API 目录 为准。这里不放响应 JSON:这次没有真实调用,编一份比空着更糟。
代码沙箱,E2B SDK,同一套 API 密钥。 沙箱页 把它写成兼容 E2B 的网关:创建工作区、跑命令、取回文件、再停止。创建、运行、停止目前不扣余额。可能有公平使用上限,改价前会先公告。模型调用和数据接口照常计费。隔离、网络、暂停和恢复,取决于所选提供方和模板。工作目录不是安全边界。快速开始 针对 E2B SDK 2.51.0,要求同时设置 E2B_API_URL 和 E2B_DOMAIN。只设域名的话,2.51.0 会多拼一个 api. 主机。不要假设上游默认模板名 base 在你的组织里存在。先列出模板,选 buildStatus 为 ready 的。
SandBase 沙箱页:兼容 E2B,同一套 API 密钥,以及示意性的创建、运行、收集、停止。
托管 Agent,以及明确不支持的调用。 Build Agent 存的是带版本的配置:模型、说明、Skills、MCP 连接。Session 跑其中一个版本。OpenAI 兼容说明 写明:Agents、Sessions、事件、items、turns 和 Skills 遵循 OpenAI Agents API,官方 SDK 把 base_url 指到 https://api.sandbase.ai/v1 即可。内联 MCP 工具会返回 400。environment 必须是 openai_hosted。multi_agent、computer use、vaults 会被拒绝。MCP 连接和 Secrets 走 HTTP,不是 SDK 方法。首页说 SandBase 托管 OpenAgentCore 运行时。这是 Agent 服务,不是说 SandBase 训练了别人的模型。
另一条路是 在 AI 工具里使用,面向 Claude Code、Codex 和 Cursor。开源页 是 SDK、CLI 和示例。想在助手里发现工具,走这两处。循环在你自己的服务里,用下面的片段。
和「OpenRouter + E2B + 数据厂商」并排看
表里的价格是 2026-11-07 各家公开页面上的,会变。这不是排行。
| 需求 | OpenRouter + E2B + 数据厂商 | SandBase(2026-11-07 公开说法) |
|---|---|---|
| 模型 | OpenRouter 统一 LLM API,推理按供应商价,买额度收 5.5%(最低 $0.80) | 一套 API 密钥,卡片价,部分折扣最高 35%。Sonnet 5.5:$1.70 / $8.50 每百万 token |
| 数据接口 | 另办市场或厂商密钥。这里不替他们声称有每日免费额度 | 同一套 API 密钥。每组织每天 100 次符合条件的免费调用,00:00 UTC 重置。模型另计 |
| 跑代码 | E2B。Hobby 月费 $0、一次性 $100、20 并发、连续 1 小时。Pro 每月 $150 加按秒 CPU/内存。定价页:只有 CPU,没有 GPU 沙箱 | 兼容 E2B 的网关。沙箱暂时 $0,可能有公平使用上限,改价前公告。隔离看提供方和模板 |
| 托管 Agent | 自己写循环,或再买一个宿主 | 上文列出的 Agents API 资源。没有自托管 Session 环境 |
| 账单 | OpenRouter 额度、E2B 套餐加用量、数据厂商发票 | 一个余额。Build 按次、无订阅。Start 为 $0 并带试用额度。Scale 为定制 |
什么时候继续用 OpenRouter 或 E2B
只要模型市场,就留 OpenRouter。要 E2B 自己的限额,就留 E2B:Pro 的 100 并发和 24 小时连续运行写在 计费文档 上,SandBase 沙箱页没有照抄。E2B 定价页 写沙箱只有 CPU,Enterprise 用量有每月 $3,000 的最低承诺;计费文档把 Enterprise 写成定制,没有重复这个最低额。2026-11-07 两页都没有提供 GPU 沙箱。网关进程、供应商密钥和日志必须留在自己网络里,就继续用自托管 LiteLLM。托管 API 密钥是这次合并的理由,也是报文不能出网时不该合并的理由。
这些情况也先别迁,依据是沙箱快速开始和 Agents 兼容说明:组织的模板列表里没有你要的模板;你需要提供方不支持的暂停、网络策略或端口;你需要 self_hosted Session、内联 MCP、computer use、multi-agent、vaults、模板构建或快照。其中好几项会直接返回 400。装上 SDK 不等于提供方的能力都对齐。
文档里的第一次调用,不是压测
首页的示例是搜帖、在沙箱里去重、再让模型写简报,并标明输出是示意。这里也一样。2026-11-07 核对的是文档和目录,不是一次计时运行。
API 密钥放在服务端。先读数据接口的 schema。X 的例子用 SandBase API 密钥发 POST,业务数据只从 outputs[0].data 读,缺了就让这一步失败。别发明响应里没出现过的分页参数。E2B SDK 指到 SandBase,跑一条能核对的命令,在 finally 里关掉沙箱。创建超时仍可能留下实例。托管循环用 openai-python 3.13.0 或 3.24.0,或 openai-node 7.28.0。先打开事件流再发输入。Node 上要强制 HTTP/1.1,否则同一条 HTTP/2 连接上的流和 POST 可能互相卡住。
下面是这些页面当时公布的接法。
export E2B_API_URL="https://sandbox.sandbase.ai"
export E2B_DOMAIN="sandbox.sandbase.ai"
export E2B_DEBUG="false"
unset E2B_SANDBOX_URL
export E2B_API_KEY="$SANDBASE_API_KEY"按快速开始安装 e2b==2.51.0,列出模板,再导出 SANDBASE_TEMPLATE_ID。这段 Python 跟快速开始一致:两分钟寿命,显式销毁,不打印 SDK 对象。
import os
import sys
import uuid
from e2b import Sandbox
options = {"request_timeout": 30}
template = os.environ["SANDBASE_TEMPLATE_ID"]
run_id = str(uuid.uuid4())
sandbox = None
failed = False
print("Run ID:", run_id)
try:
sandbox = Sandbox.create(
template,
timeout=120,
metadata={"quickstartRunId": run_id},
**options,
)
result = sandbox.commands.run("printf hello-sandbase", timeout=15)
if result.exit_code != 0 or result.stdout != "hello-sandbase":
raise RuntimeError("Command verification failed")
print("Sandbox ID:", sandbox.sandbox_id)
except Exception:
print("Sandbox example failed; retain the run ID")
failed = True
finally:
if sandbox is not None:
try:
Sandbox.kill(sandbox.sandbox_id, **options)
except Exception:
print("Cleanup failed; delete the recorded Sandbox ID")
failed = True
sys.exit(1 if failed else 0)Agent 客户端用的是兼容说明里的写法。模型 ID 也是那一页上的 DeepSeek V4 Flash。创建 Agent 不会自动跑起来。还要开 Session,而且 SDK 要求 environment={"type": "openai_hosted"},尽管 SandBase 只在自己的托管云里运行。
SandBase 上的 DeepSeek V4 Flash 模型卡,也就是本文 Agents API 示例链接的那个模型。
import os
from openai import OpenAI
client = OpenAI(
api_key=os.environ["SANDBASE_API_KEY"],
base_url="https://api.sandbase.ai/v1",
)
agent = client.beta.agents.create(
model="deepseek/deepseek-v4-flash",
name="Research assistant",
instructions="Keep output brief.",
)
print(agent.id)首页给出的示意数据请求是:
curl --fail-with-body \
-X POST "https://api.sandbase.ai/v1/api/twitter/web/search-timeline" \
-H "Authorization: Bearer $SANDBASE_API_KEY" \
-H "Content-Type: application/json" \
-d '{"keyword": "AI agents", "search_type": "Top"}'上线当天再对一下 API 页上的 keyword 和 search_type。不想自己养这条循环,就把 set up 和 SKILL.md 的地址贴进 Claude Code、Codex 或 Cursor,并在浏览器里确认登录。那条路是给编码工具里发现接口用的,代替不了服务端的 API 密钥。
带真实调用记录的另一篇是 用 X、YouTube、Exa 和 Firecrawl 做个人研究助手。
Build 怎么计费
定价页 在 2026-11-07 分成三种:Start 为 $0,带试用额度;Build 按次计费,没有订阅;Scale 为定制。「没有订阅」只说 Build,不包括 Scale。
2026-11-08 的 SandBase 定价页:Start、Build、Scale。符合条件的数据接口每天 100 次免费调用,代码沙箱标为暂时免费。
当天每个方案都包括:部分模型最高 35% 折扣,卡片价即成交价;每个组织每天 100 次符合条件的数据接口免费调用,00:00 UTC 重置;浏览目录 $0;代码沙箱暂时 $0;失败的模型或数据接口调用不收费。Activities 里能看到状态和费用。一次 Agent 运行是把这些调用收进一条轨迹,不是另有单价的计量项。没有你自己的 token 和沙箱秒数,就不要用 OpenRouter 的 5.5% 和 E2B 的 $150 去减出一个「每月胜出金额」。
常见问题
怎样用一套 API 密钥同时拿到模型、数据接口和代码沙箱?
选一个用同一套 API 密钥提供这三层的平台。在 SandBase,这套密钥调目录,用指向 sandbox.sandbase.ai 的 E2B SDK 开代码沙箱,并在上面的兼容范围内创建 Agents API 的 Agent。Build 按次计费,没有订阅。跑之前先看卡片价。
它算 OpenRouter 的替代,还是 E2B 的替代?
两层都沾,再加上数据接口。只要模型市场,买 OpenRouter。只要带 E2B 限额的代码沙箱,买 E2B。烦的是三家一起养,再考虑并到一处。
和分开买网关、沙箱比,价格差在哪?
Build 没有订阅。2026-11-07 代码沙箱暂时 $0,符合条件的数据接口每个组织每天 100 次免费,失败调用不收费,浏览目录免费。OpenRouter 公开的费用在买额度,不在推理加价。E2B 是套餐加上按秒的 CPU 和内存。决定那一周再看 定价页 和对方页面,不要把本文的数字当成长期价目。
原来的 E2B 代码能留着吗?
快速开始覆盖的操作,而且程序已经从环境变量读地址、模板在 SandBase 上可见,通常可以。换成 SandBase API 密钥,改 E2B_API_URL 和 E2B_DOMAIN,删掉写死的主机,用列表代替对 base 的假设。控制面创建成功,不能证明每个提供方功能都可用。
一套 API 密钥能代替 Anthropic 或 OpenAI 账号吗?
目录里列出的模型,页面的说法是用 SandBase API 密钥调用,不必再去模型厂商单独注册。你走的仍是 SandBase 的托管路径。你拿不到那个厂商的控制台,也拿不到兼容表里标明不支持的 OpenAI 功能。
三套账号和三张发票已经比功能本身更烦,而且 SandBase 公布的范围够用,再考虑收成一套 API 密钥。2026-11-07 这意味着:卡片价的模型、每组织每天 100 次符合条件的数据接口、对着 sandbox.sandbase.ai 的 E2B SDK 2.51.0,以及一份写明拒绝项的 Agents API。只要模型市场,留 OpenRouter。要 Pro 或 Enterprise 限额,留 E2B。报文不能出网,留自托管网关。
从 SandBase 登录 创建 API 密钥,先跑通快速开始,再搬生产循环。上面的片段是文档,不是一次测出来的运行。