2026 年免费 AI API:额度、接入示例与 token 预算
按账号限制选择免费 AI API
做原型时,可以先用 Groq 评估兼容 OpenAI 的文本 API,用 Gemini Developer API 评估支持的文本或多模态模型,或用 OpenRouter 比较明确免费的模型变体。三者都不提供无限免费推理。选择取决于请求量、token 用量和数据使用要求。
本文于 2026 年 10 月 23 日核查官方来源,检查了 OpenRouter 公开模型目录与示例语法,没有执行需要认证的推理,也没有测试性能或可用率。下列请求是供读者在核对账号后执行的步骤。
| 提供商 | 免费内容 | 账单条件 | 开发与生产边界 |
|---|---|---|---|
| Groq | Free Plan 内、受模型与组织额度限制的调用 | 保持 Free。升级 Developer 需要付款方式,并启用按量计费 | 适合评估集成。依赖它提供生产服务前,确认容量及生产要求 |
| Gemini Developer API | 部分模型与功能的免费输入、输出 token | Free Tier 项目不需要升级付费。关联账单会改变档位与付款条件 | 检查地区、模型额度和数据条款。部分功能没有免费档位 |
| OpenRouter | 适用账号限制内、明确免费的模型变体 | 基础免费访问无需购买额度。历史购买金额可能提高每日上限 | 适合模型评估。目录价格为零不保证实时容量 |
| Together AI | 当前没有免费试用 | 组织首次购买至少 15 美元,后续至少 5 美元 | 属于付费服务。未明确安排预算时,不要启用自动充值 |
上表依据 Groq 计费说明、Gemini 计费说明与价格页、OpenRouter 限制及 Together 额度说明。Together 当前文档区分首次和后续购买,旧资料中的 5 美元最低金额不能证明有免费试用。
分清免费额度、赠送余额和聊天订阅
可重复使用的 API 免费额度按提供商规则重置。促销赠金是有限余额,另有资格和到期条件。消费端聊天订阅覆盖其公布的聊天产品,只有条款明确包含 API 调用时,才能把它算作 API 预算。
旧教程可能把 Google Cloud 的 300 美元赠金称为免费 Gemini API 额度。当前 Gemini 计费文档明确,2026 年 3 月 2 日后开户获得的新 Welcome credits 不能支付 Gemini API 或 AI Studio 用量。Cloud 免费计划文档也排除了 AI Studio 中的 Gemini API。应采用这些具体规则,不能从通用的 300 美元宣传推断适用性。符合旧规则且尚未到期的历史赠金,也不等于长期重置的免费档位。
Gemini 价格页注明,免费档位内容可能用于改进 Google 产品,具体取决于相关条款。发送保密材料前先解决这一条件。免费额度也不能证明服务有可用率承诺。
先发现模型 ID,再发起请求
以下步骤使用 Bash 或 Zsh,以及 curl 和 jq。通过本地环境变量或服务器密钥管理器提供密钥,不要把密钥放进公开浏览器代码、截图、shell 跟踪输出或日志。示例不会打印密钥。启用 pipefail,让管道中命令失败时返回失败状态。
Groq
先列出密钥可访问的模型 ID,再把文本模型与 Free Plan 表、账号 Limits 页面交叉核对。模型文档说明了发现方法。模型出现在列表中,不等于已经确认其免费额度。
set -o pipefail
curl --fail-with-body --silent --show-error --max-time 30 \
'https://api.groq.com/openai/v1/models' \
-H "Authorization: Bearer ${GROQ_API_KEY:?Set GROQ_API_KEY}" |
jq -r '.data[].id'
将 GROQ_MODEL 设为选定 ID。这个小请求使用官方聊天端点。OpenAI 兼容说明还列出了不支持的参数。
jq -n --arg model "${GROQ_MODEL:?Set GROQ_MODEL}" \
'{model:$model,messages:[{role:"user",content:"Reply with OK."}],max_completion_tokens:64}' |
curl --fail-with-body --silent --show-error --max-time 30 \
'https://api.groq.com/openai/v1/chat/completions' \
-H "Authorization: Bearer ${GROQ_API_KEY:?Set GROQ_API_KEY}" \
-H 'Content-Type: application/json' --data-binary @-
OpenRouter
公开模型端点包含 ID、价格和支持的参数。下面只筛选文本输入与输出价格都为零的 :free 变体。使用前仍要检查完整价格对象及功能费用。
curl --fail-with-body --silent --show-error --max-time 30 \
'https://openrouter.ai/api/v1/models' |
jq -r '.data[] | select(.id | endswith(":free")) |
select((.pricing.prompt | tonumber) == 0 and
(.pricing.completion | tonumber) == 0) | .id'
将 OPENROUTER_MODEL 设为已经核对的 :free ID。示例调用聊天 API,没有添加收费插件或备用模型列表。
jq -n --arg model "${OPENROUTER_MODEL:?Set OPENROUTER_MODEL}" \
'{model:$model,messages:[{role:"user",content:"Reply with OK."}],max_tokens:64}' |
curl --fail-with-body --silent --show-error --max-time 30 \
'https://openrouter.ai/api/v1/chat/completions' \
-H "Authorization: Bearer ${OPENROUTER_API_KEY:?Set OPENROUTER_API_KEY}" \
-H 'Content-Type: application/json' --data-binary @-
OpenRouter 价格常见问题当前公布的免费模型上限为每分钟 20 次、每天 50 次;累计购买至少 10 美元额度后,每天可提高到 1000 次。更高的每日额度以购买为条件。负余额也可能阻断免费调用。先检查账号,不要自动购买额度。
运行较长任务前,用认证请求检查 GET https://openrouter.ai/api/v1/key,查看适用时的 free_model_daily_requests、剩余余额和有效预算。增加密钥不能绕过账号限制。
Gemini Developer API
通过模型 API查找支持 generateContent 的资源名。如果响应包含 nextPageToken,继续读取下一页。随后把准确模型与功能对应到免费价格表及项目当前额度。
model_page_args=()
if [ -n "${GEMINI_PAGE_TOKEN:-}" ]; then
model_page_args=(--data-urlencode "pageToken=$GEMINI_PAGE_TOKEN")
fi
curl --get --fail-with-body --silent --show-error --max-time 30 \
'https://generativelanguage.googleapis.com/v1beta/models' \
--data-urlencode 'pageSize=1000' "${model_page_args[@]}" \
-H "x-goog-api-key: ${GEMINI_API_KEY:?Set GEMINI_API_KEY}" |
jq '{models:[.models[] |
select((.supportedGenerationMethods // []) | index("generateContent")) | .name],
nextPageToken}'
输出保留了 nextPageToken。读取第一页时,不设置 GEMINI_PAGE_TOKEN。如果返回下一页 token,将其赋给 GEMINI_PAGE_TOKEN,再次执行本段即可读取下一页。--data-urlencode 会安全编码 pageToken 参数。没有下一页 token 时停止,重新开始列举前清除该变量。
将 GEMINI_MODEL 设为返回的完整资源名,保留 models/ 前缀。示例使用 API 密钥认证和原生 generateContent 端点。
curl --fail-with-body --silent --show-error --max-time 30 \
"https://generativelanguage.googleapis.com/v1beta/${GEMINI_MODEL:?Set GEMINI_MODEL}:generateContent" \
-H "x-goog-api-key: ${GEMINI_API_KEY:?Set GEMINI_API_KEY}" \
-H 'Content-Type: application/json' \
--data-binary '{"contents":[{"parts":[{"text":"Reply with OK."}]}],"generationConfig":{"maxOutputTokens":64}}'
64 token 上限用于控制示例输出。推理模型可能先消耗输出预算,尚未产生可见文字就达到上限。调高前先检查结束原因与用量。返回模型名或 HTTP 200,单独都不能证明得到了可用结果。
计算免费额度能否容纳业务量
按预期工作量计算,不要用提供商宣传的最大上下文窗口代替容量估算。以下是一个假设文本应用的预算表,不是实测流量,也不是任何提供商的配额。
| 假设或计算 | 结果 |
|---|---|
| 每天 60 名用户 × 每人 5 次操作 × 每次 2 次模型调用 | 每天 600 个请求 |
| 每次输入 800 token,输出 200 token | 每天输入 480000 token,输出 120000 token |
| 为重试及重复操作预留 20% | 每天 720 个请求、输入 576000 token、输出 144000 token |
| 未加预留前,峰值每分钟 30 次调用 | 每分钟输入 24000 token,输出 6000 token |
| 假设每次调用耗时 4 秒,且持续按上述速率运行 | 平均约 2 个在途请求 |
计入完整提示词、检索片段、工具 schema 和对话历史。Agent 循环中的每一步都可能增加请求。提供商有 token 计数接口时先用它估算,之后再用响应返回的真实用量替换估计。
逐项比较所有适用上限。Groq可能按组织限制每分钟、每日的请求和 token。其响应头中的每日请求计数,与每分钟 token 计数是不同指标。Gemini通常按项目统计输入 TPM、RPM 和 RPD,另有模型专属限制。每日请求数在太平洋时间午夜重置。OpenRouter 即使处理短提示词,也可能先耗尽请求次数。
这份假设工作量超过了 OpenRouter 基础免费访问公布的每日 50 次及每分钟 20 次。提高每日额度也不能解决分钟上限。应减少调用、排队,或选择另一家已经核对的额度。
并发是另一个需要单独控制的指标。平均两个在途请求,不代表可以同时发出三十个请求。把突发请求放进队列,保留余量,任一计数器耗尽就停止。共用项目或组织时,还要计入其他应用的用量。
如需估算付费备用预算,使用 月费用 = 输入 token / 1000000 × 输入单价 + 输出 token / 1000000 × 输出单价,另计工具、媒体和托管费用。做预算计算不等于授权自动启用付费。
处理额度错误,并在必要时停止
调整额度前,先检查响应正文与提供商用量页面。只有 HTTP 状态码,无法识别究竟是哪一层限制了请求。
| 响应 | 检查什么 | 处理方式 |
|---|---|---|
| 429 | 分钟上限、每日额度、上游容量,或付费档位的支出速率限制 | 临时限流按指示等待后再试。每日额度耗尽则停止到重置 |
| 402 | 余额、密钥上限、提供商计费元数据 | 余额耗尽时停止。OpenRouter 的 openrouter_in_flight_budget 在附带 Retry-After 时,是文档明确的临时例外 |
| 403 | 权限、地区资格、政策,或组织预算 | 修复明确指出的限制。重复请求不能修复权限或预算拦截 |
| 404 | 基础 URL、API 版本、准确模型 ID 和支持的方法 | 更新模型发现结果并纠正请求。不能静默换成付费模型 |
| 400 或 401 | 请求参数或密钥有效性 | 先纠正请求或凭据配置,再考虑重试 |
具体对照 Groq 错误文档、Gemini 故障排查和 OpenRouter 错误元数据。
对于临时错误,可以把总截止时间和最多两次重试设为应用策略。有 Retry-After 时先遵守它,没有时再采用带随机抖动的指数退避。如果要求的等待时间超过任务截止时间,就停止或排队,不要提前重试。检查 SDK 默认重试次数,避免它与自己的循环叠加放大请求。
只允许回退到已经审查过的免费模型 ID,并确认所需功能兼容。名单内没有可用容量时,明确返回临时失败或将任务排队。不要自动去掉 :free 改用付费版本,也不要自动开通充值或升级账号。
记录提供商、模型 ID、状态、token 用量、重试次数,以及响应提供的请求 ID。隐藏认证头,不记录用户的敏感提示词和回复。用于生产前,分别测试所需的结构化输出、工具调用、取消与失败处理。本文的文档核查没有证明这些实际运行结果。