APIMart API Key 怎么配置?从创建到首次调用
简答:APIMart API Key 的配置可以按“创建并保存 Key→确认账户对应的 Base URL→设置环境变量→用最小文本请求验证”完成。本文核对到的公开文档示例使用 https://api.apimart.ai/v1,但不同域名之间的归属关系未从公开资料完全确认,不能把它当成所有账户的唯一地址。
定义:APIMart API Key 是用于访问其 API 网关的凭证,通常通过 Authorization: Bearer <你的Key> 请求头发送,并与具体 Base URL、模型 ID 和账户权限共同决定请求是否成功。
先看结论:不要直接复制一个域名就开始调用
本文是一篇站外整理的接入指南,本站不是 APIMart 官方站。APIMart API Key 配置最容易出错的地方,不是把密钥粘贴到变量里,而是把不同域名、不同客户端变量名和最终请求路径混在一起。
本文核对到的公开示例日期为 2026-10-28。APIMart 的公开文档页面给出了 https://api.apimart.ai/v1 作为 Gemini CLI、Python、JavaScript 和 cURL 示例中的 Base URL;但 apimart.cyou、apimart.ai、docs.apimart.ai 与其他文档域名之间的关系,未能仅凭本次公开资料完全确认。因此,实际接入时应优先使用当前账户页面或对应模型文档明确给出的地址,不要交叉使用不同域名下的 Key、价格和配置。
| 配置项 | 本文核对到的公开示例 | 使用边界 |
|---|---|---|
| API Key | 在控制台创建或获取;公开文档示例以 sk- 开头 | 不要假设所有账户或密钥格式永远相同,实际以账户页面显示为准 |
| Base URL | https://api.apimart.ai/v1 | 这是公开文档中的示例地址,不代表已确认适用于所有域名和账户 |
| 聊天请求路径 | /chat/completions | 如果 SDK 会自动拼接路径,Base URL 不要重复填写版本或资源路径 |
| 认证方式 | Authorization: Bearer <API_KEY> | Key 不要写进命令历史、代码仓库、聊天记录或截图 |
以上 Base URL、变量示例和请求路径来自 APIMart 公开的 Gemini CLI 接入文档;首页则说明其采用 OpenAI 兼容接口,但没有在本次核验中统一解释所有域名的关系,可参考 APIMart 公开首页。
第一步:创建、复制并保护 API Key
- 登录你实际使用的 APIMart 控制台,找到 API Key、API Keys、密钥管理或类似名称的区域。公开资料能确认“创建密钥”这一流程,但不能保证当前控制台菜单名称完全一致。
- 创建后立即复制并安全保存。很多平台只在创建完成时完整展示一次,之后可能只能看到脱敏值;如果没有保存原始 Key,通常需要重新创建,而不是从脱敏值恢复。
- 不要把完整 Key 放入本文代码、终端参数、公开 issue、聊天窗口、截图或 Git 仓库。本文所有示例都使用环境变量读取,不会输出真实密钥。
- 如果怀疑泄露,先在控制台撤销或作废旧 Key,再生成新的 Key,并同步更新本机环境、部署平台和 CI/CD 变量。
公开的 Agent Tools 页面明确提醒:Key 应通过隐藏输入或环境变量设置,不应写入命令、聊天或截图;该页面还说明模拟的模型列表演示不会发送请求,也不会消耗额度。可查看 APIMart Agent Tools 配置页 了解这一安全提示和验证边界。
注意认证类型:API Key、OAuth 登录、订阅账号和网关 Token 不是同一个东西。本文只讨论 API Key 通过 Bearer 请求头调用 API 的场景;不要把网页登录密码或订阅登录信息填入 API Key 变量。
第二步:按操作系统配置环境变量
Windows PowerShell:临时配置
临时变量只在当前 PowerShell 会话中生效,适合先验证变量是否能被程序读取。不要在文章、脚本或日志中写真实 Key:
$env:APIMART_API_KEY = "你的真实Key"
$env:APIMART_BASE_URL = "https://api.apimart.ai/v1"
# 只检查是否非空,不打印密钥
if ([string]::IsNullOrWhiteSpace($env:APIMART_API_KEY)) { throw "API Key 未设置" }
if ([string]::IsNullOrWhiteSpace($env:APIMART_BASE_URL)) { throw "Base URL 未设置" }
Write-Output "变量已设置,Key 未打印"
如果某个工具规定变量名必须是 GEMINI_API_KEY、GEMINI_BASE_URL 或其他名称,应以该工具文档为准。APIMart 的 Gemini CLI 公开示例使用的就是 GEMINI_API_KEY 和 GEMINI_BASE_URL,而不是所有 SDK 都自动读取的通用变量。
macOS/Linux:Bash 或 zsh 临时配置
export APIMART_API_KEY='你的真实Key'
export APIMART_BASE_URL='https://api.apimart.ai/v1'
# 只检查变量是否非空
[ -n "$APIMART_API_KEY" ] && echo "API Key 已设置,未打印"
[ -n "$APIMART_BASE_URL" ] && echo "Base URL 已设置"
如果需要隐藏输入,Bash 可以使用下面的写法。它只是避免输入时回显,不代表 Key 在进程内始终处于加密状态:
read -r -s -p "APIMart API Key: " APIMART_API_KEY
echo
export APIMART_API_KEY
export APIMART_BASE_URL='https://api.apimart.ai/v1'
如果是 zsh,也可以把变量写入 ~/.zshrc,然后执行 source ~/.zshrc;但长期保存明文变量前,应评估本机权限、备份和同步工具的风险。
.env 文件:适合项目本地开发
# .env,仅示例,不要提交真实文件
APIMART_API_KEY=你的真实Key
APIMART_BASE_URL=https://api.apimart.ai/v1
同时把 .env 加入 .gitignore:
.env
.env.*
!.env.example
建议提交一个不含真实值的 .env.example,只保留变量名。不要直接使用会把整行配置暴露到进程参数或日志的加载方式;不同框架读取 .env 的方法不同,应按项目依赖的 dotenv 工具文档处理。
第三步:区分 Base URL、最终路径和客户端变量名
这是 APIMart API Key 配置中最关键的核对步骤。客户端填写的 Base URL 通常是“接口根地址”,而最终请求还会拼接资源路径。例如公开文档中的 cURL 示例把根地址与聊天资源组合成:
https://api.apimart.ai/v1/chat/completions如果某个 SDK 的参数名是 base_url 或 baseURL,通常填写根地址;如果工具要求完整 Endpoint,则可能需要填写最终路径。不要把 /v1 重复拼接成 /v1/v1,也不要把已经含有 /chat/completions 的完整地址再交给会自动补路径的 SDK。
| 接入位置 | 应填写什么 | 先核对什么 |
|---|---|---|
| OpenAI 兼容 SDK | 通常是根 Base URL,例如 https://api.apimart.ai/v1 | SDK 是否自动添加 /chat/completions |
| 手写 cURL | 最终请求地址,例如 .../v1/chat/completions | 是否需要保留 /v1,以及模型是否可用 |
| Gemini CLI | 按其文档使用 GEMINI_BASE_URL | 当前 CLI 版本是否仍读取该变量名 |
| MCP 或 Agent 工具 | 使用对应工具页面给出的远程地址和变量名 | 不要将普通 API Endpoint 当作 MCP 地址 |
本文只把 https://api.apimart.ai/v1 作为已检索到的公开示例,不把它表述为所有用户的唯一推荐地址。若当前账户页面、模型文档或控制台显示不同地址,应以当前页面为准,并记录核对日期。
第四步:用最小请求验证 API Key
低成本验证应先分两层:第一层只检查变量,不发送网络请求;第二层才发送一个短文本聊天请求。当前检索到的公开资料没有提供一个已核实、适用于所有账户的免费模型列表或账户余额查询 Endpoint,因此不能擅自把 /models 或账户状态接口写成通用验证方案。
公开文档提供了 cURL 聊天请求示例。它可能产生文本调用费用,执行前应先确认当前账户的计费规则、余额和模型状态;不要为了验证 Key 直接调用图像或视频模型。
curl "$APIMART_BASE_URL/chat/completions" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $APIMART_API_KEY" \
-d '{
"model": "以当前文档或账户可用模型为准",
"messages": [
{"role": "user", "content": "只回复:ok"}
],
"max_tokens": 10
}'
这里的模型 ID 不能随意照抄旧文章。公开 Gemini 文档曾示例 gemini-2.0-flash-exp、gpt-4o 等模型,但模型可用性、版本和账户权限可能变化;首次调用前应在当前模型文档或账户返回结果中核对。该公开文档中的完整 cURL 结构可参考 Gemini CLI 接入页面。
成功判定:收到结构化 JSON,且响应中有正常的 choices 或对应文本输出;不要只把 HTTP 200 当作业务成功,还要检查响应体是否包含错误信息。
不想发送请求时:只做环境变量非空检查,或使用 Agent Tools 页面中的模拟 list_models 演示。该演示页面明确写明是模拟流程,不发送请求、不消耗额度,但它不能证明普通 API Key 已经能调用聊天接口。
Python、Node.js 与 cURL 的配置写法
Python:优先让代码主动读取变量
不同版本的 OpenAI 兼容 SDK 参数可能变化。下面展示的是“代码主动读取环境变量”的配置思路;安装包版本、初始化类名和调用方法应以你当前 SDK 文档为准。
import os
api_key = os.environ.get("APIMART_API_KEY")
base_url = os.environ.get("APIMART_BASE_URL")
if not api_key or not base_url:
raise RuntimeError("请先设置 APIMART_API_KEY 和 APIMART_BASE_URL")
# 下面的 client 初始化方式会随 SDK 版本变化,请按已安装版本核对
from openai import OpenAI
client = OpenAI(api_key=api_key, base_url=base_url)
response = client.chat.completions.create(
model="以当前账户可用模型为准",
messages=[{"role": "user", "content": "只回复:ok"}],
max_tokens=10,
)
print(response.choices[0].message.content)
Node.js:不要把 Key 写死在源代码
import OpenAI from "openai";
const apiKey = process.env.APIMART_API_KEY;
const baseURL = process.env.APIMART_BASE_URL;
if (!apiKey || !baseURL) {
throw new Error("请先设置 APIMART_API_KEY 和 APIMART_BASE_URL");
}
const client = new OpenAI({ apiKey, baseURL });
const result = await client.chat.completions.create({
model: "以当前账户可用模型为准",
messages: [{ role: "user", content: "只回复:ok" }],
max_tokens: 10,
});
console.log(result.choices?.[0]?.message?.content ?? "未返回文本");
APIMart 公开文档给出了 JavaScript/TypeScript 的 OpenAI 兼容写法,但示例中的 SDK 参数和模型版本可能随工具更新变化;如果初始化报参数错误,先查看本地安装的 openai 版本,再核对该版本的官方 API。
cURL:最容易看清最终请求
curl "$APIMART_BASE_URL/chat/completions" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $APIMART_API_KEY" \
-d '{"model":"以当前可用模型为准","messages":[{"role":"user","content":"只回复:ok"}],"max_tokens":10}'
401、403、429 和超时:按顺序排查
| 现象 | 先检查 | 边界说明 |
|---|---|---|
| 401 Unauthorized | Key 是否为空、是否复制了脱敏值、Bearer 后是否多了引号或空格、Base URL 是否指向正确接口 | 这些是常见可能原因,不代表 APIMart 对每个 401 都采用相同错误定义 |
| 403 Forbidden | 模型权限、账户状态、接口类型和当前 Key 是否允许访问 | 公开资料未确认统一的 403 判定规则,应查看返回体和账户提示 |
| 429 Too Many Requests | 短时间请求是否过多、并发是否过高、是否触发限速或配额限制 | 可降低并发并使用有限次数的指数退避,不要无限重试 |
| 余额或计费错误 | 账户余额、模型计费方式、请求是否调用了图像或视频能力 | 具体价格和状态以当前账户页面与模型文档为准 |
| 连接超时 | 域名解析、网络连通性、代理或防火墙、客户端超时设置 | 先用短超时和少量重试验证,不要把超时误判为 Key 无效 |
- 先打印非敏感信息:请求方法、脱敏后的主机名、路径和模型 ID,不打印 Key。
- 确认 Base URL 是否已经包含
/v1,并检查 SDK 是否又自动拼接了一次。 - 确认模型 ID 来自当前公开文档或当前账户可用列表,不要只依赖旧教程。
- 把同一请求改成短文本、低输出长度,再判断是认证问题还是模型、配额问题。
- 如果仍失败,保留 HTTP 状态码、错误字段和核对日期,向对应平台支持渠道咨询;不要上传完整密钥。
常见问题 FAQ
APIMart API Key 在哪里创建?
公开模型页面和 Agent Tools 页面都指向“控制台创建或获取 API Key”,但本次资料没有确认当前控制台固定使用哪一个菜单名称。进入你正在使用的账户控制台后,寻找 API Key、API Keys、密钥管理或类似入口;如果页面只显示脱敏值,通常需要重新创建新的 Key。
API Key 需要手动加 Bearer 前缀吗?
在手写 HTTP 请求中,公开 cURL 示例使用 Authorization: Bearer sk-...。也就是说,请求头需要包含 Bearer、一个空格和 Key。若 SDK 已经通过 api_key 参数自动生成认证头,不要再把 Bearer 拼进参数值,否则可能形成重复前缀。
Base URL 应该填 apimart.ai 还是 apimart.cyou?
本次核对到的公开 Gemini 文档示例使用 https://api.apimart.ai/v1。但不同站点域名之间的归属和适用范围未从公开资料完全确认,不能据此断言所有账户都应使用同一个地址。应以当前账户页面、当前模型文档或工具专属配置说明为准,不要将不同域名的 Key、文档和价格信息混用。
只设置 OPENAI_API_KEY 就够了吗?
不一定。代码如果主动读取 OPENAI_API_KEY,当然可以使用它;但某个 CLI 或 SDK 是否自动读取该变量,取决于工具实现。APIMart 公开的 Gemini CLI 示例使用 GEMINI_API_KEY 和 GEMINI_BASE_URL,因此应区分“代码主动读取的变量”和“工具自动读取的变量”。
怎么验证 Key 又尽量避免产生图像或视频费用?
先只做变量非空检查,不发送请求;如果需要验证真实 API,再确认当前计费规则后使用短文本、低输出限制的聊天请求。不要调用图像或视频模型做连通性测试。当前公开资料没有提供已核实、适用于所有账户的免费模型列表接口,因此不能把某个未确认的查询地址当成通用方案。
Key 泄露后只修改环境变量可以吗?
不建议。环境变量更新只会影响后续请求,已经泄露的旧 Key 仍可能被使用。应先在控制台撤销或作废旧 Key,再创建新 Key,并同步修改本机、服务器、CI/CD 和本地 .env 文件。
常见问题
APIMart API Key 在哪里创建?
进入当前使用的账户控制台,寻找 API Key、API Keys、密钥管理或类似入口。公开资料确认了创建密钥流程,但未确认当前菜单名称固定不变。
APIMart API Key 的 Bearer 怎么写?
手写请求时使用 Authorization: Bearer <你的Key>。如果 SDK 已自动处理认证,就不要把 Bearer 再写进 api_key 参数。
Base URL 应该填哪个?
本次核对到的公开文档示例为 https://api.apimart.ai/v1,但不同域名关系未完全确认,实际应以当前账户或对应文档给出的地址为准。
怎么验证 Key 又避免调用图像或视频?
先做环境变量非空检查;需要验证真实 API 时,先确认计费,再用短文本和低输出限制的聊天请求。不要用图像或视频模型测试。
相关阅读
- APIMart API 401 排查:Key、Bearer 与 Base URL
- OpenAI 兼容 API 的配置与模型核验
- APIMart docs 域名、端点与首次调用怎么看
- APIMart API 429 的限流、配额与重试排查
- APIMart MCP 与普通 API 配置的区别
参考资料
- 在 Gemini CLI 中使用 APIMart:环境变量、Base URL、Python、JavaScript 与 cURL 示例(docs.apimart.ai)
- APIMart Agent Tools:API Key 安全设置与不消耗额度的模拟演示
- APIMart 公开首页:OpenAI 兼容接口与统一 API 说明