Gemini API 429 错误怎么解决:RESOURCE_EXHAUSTED 的原因与 400 / 403 / 503 排查表

Gemini API 报 429 RESOURCE_EXHAUSTED 是某项限额超了。本文按官方文档教你分清是每分钟还是每天的限额、去哪看用量、怎么写退避重试,并附 400、402、403、503 等错误的排查表。

NNathaniel bigo··原创首发·AI 辅助撰写
13 分钟读完
资料核对于 2026-10-10 · 依据官方文档与公开资料整理 其他 账号
本文根据 Gemini API 官方文档(API errors 的 Interactions 版与 generateContent 版、Troubleshooting guide、Rate limits、Billing)整理,资料核对于 2026-10-10。

适用于谁

  • 调用 Gemini API 时遇到 429、RESOURCE_EXHAUSTED、rate_limit_exceeded、quota_exceeded 的人;
  • 刚开始用、请求没发几个就被拒的人;
  • 批量跑任务,想写一个靠谱重试逻辑的开发者;
  • 遇到 400、403、503 等其他错误,想快速对照官方说明的人。

结论先说

  1. 429 的意思是超过了某一项限额,官方列的有每分钟请求数(RPM)、每分钟 token 数(TPM)、每天请求数(RPD),付费层还有按 10 分钟计的支出速率上限。
  2. 先分清是「每分钟」还是「每天」:每分钟类的等一会儿、降速重试就能恢复;每天的配额用完了,重试没用,只能等重置(太平洋时间午夜)或升档。
  3. 限额按项目计算,不按密钥。换一把同项目的密钥解决不了问题。
  4. 重试用指数退避加随机抖动,并限制次数。官方 Python SDK 默认已经会自动重试。
  5. 402 不是 429:402 表示预付费余额用完,官方明确说不要重试,先充值。

一、先看清返回的是哪种 429

Gemini API 现在有两套接口,错误的写法不一样:

新版 Interactions API:响应体里是 error.code(小写加下划线的字符串)和 error.message。

json
{
  "error": {
    "code": "rate_limit_exceeded",
    "message": "……"
  }
}

官方错误表里,429 对应三个错误码:

error.code官方说明官方建议
rate_limit_exceeded超过了每分钟或每秒的请求数 / token 数限制等待后用指数退避重试
quota_exceeded超过了每日配额等配额重置,或申请提高配额
too_many_requests短时间内请求过多等待后用指数退避重试

流式请求(stream: true)出错时不走 HTTP 状态码,而是在事件流里发一个 event_type 为 error 的事件,里面同样有 code 和 message。

旧版 generateContent API:响应体是 gRPC 风格,code 是数字状态码,status 是大写的状态名。

json
{
  "error": {
    "code": 429,
    "message": "……",
    "status": "RESOURCE_EXHAUSTED"
  }
}

官方对这一条的解释是:你超过了 API 的某一项速率限制(RPM、TPM、RPD、支出等)——请求发得太多、用的 token 太多,或者超过了账号档位对应的支出类限制。

二、按原因逐项排查

  1. 看自己的限额和用量。打开 AI Studio 的 Rate Limit 页面(aistudio.google.com/rate-limit),每个模型的 RPM、TPM、RPD 上限和近期峰值都在上面。三项是分别检查的,官方举例:RPM 上限 20 时,一分钟内第 21 个请求就会报错,即使 TPM 还很富余。
  2. 确认是不是每天的配额用完了。RPD 在太平洋时间午夜重置,在那之前重试没有意义。
  3. 检查是不是别的程序在用同一个项目。限额是项目级的,同项目下所有密钥、所有程序共用。
  4. 看用的是不是预览版或实验版模型。官方说明这类模型的限额更严。
  5. 免费层撞限额很正常。免费层的限额本来就低,各模型具体数字以 Rate Limit 页面为准。开通结算进入 Tier 1 后限额会提高,见本站《Gemini API 免费额度是多少:免费层级、RPM / TPM / RPD 速率限制与限额查询》。
  6. 付费层突然 429,想想是不是花得太快。官方对付费档位设有「支出速率上限」,在滚动的 10 分钟窗口内计算,超了同样返回 429 RESOURCE_EXHAUSTED。官方给的办法是:稍等再试;降低高成本请求的频率,比如缩小上下文、缩短输出;正常使用也经常撞到的话,申请提高限额。
  7. 减少 token 用量。TPM 按输入 token 计。删掉重复的上下文,长对话只保留必要的历史。
  8. 失败的请求也占配额。官方账单页写明,返回 400 或 500 的请求不收费,但仍计入配额。无间隔地连续重发只会更糟。
  9. 不急的任务改用 Batch API。官方说明批量请求有独立的速率限制,和普通调用分开计算(目前只有旧版 generateContent 支持 Batch)。
  10. 还是不够就申请提额。官方 Rate limits 页面底部有付费层的提额申请表单,不保证批准。

三、怎么重试才对

官方排错页的重试建议:

  • 指数退避:第一次重试前等一小段时间(例如 1 秒),之后按 2 秒、4 秒、8 秒递增;
  • 加抖动(jitter):在等待时间上加一点随机量,避免所有客户端同时重试;
  • 只重试暂时性错误:429、408 和 5xx 可以重试;400、402、403 这类客户端错误不要重试,它们说明密钥无效、预付余额耗尽或请求写错了;
  • 设最大重试次数,防止死循环。

官方 SDK 已经内置了这套逻辑:排错页说明 Python SDK 默认会对超时、网络问题、429 和 5xx 自动重试最多 4 次,初始等待约 1 秒,最长 60 秒。所以用 SDK 时通常不用自己再包一层;如果自己再写重试,注意总请求次数会相乘。

直接调 REST 接口时,可以参考下面的写法(示例用 httpx,安装 google-genai 时会一并装上):

python
import os
import random
import time

import httpx

URL = "https://generativelanguage.googleapis.com/v1beta/interactions"
HEADERS = {
    "x-goog-api-key": os.environ["GEMINI_API_KEY"],
    "Content-Type": "application/json",
}
RETRYABLE = {408, 429, 500, 502, 503, 504}   # 官方:只重试暂时性错误


def create_with_backoff(payload, max_attempts=5, base_delay=1.0, max_delay=60.0):
    for attempt in range(1, max_attempts + 1):
        resp = httpx.post(URL, headers=HEADERS, json=payload, timeout=120)
        if resp.status_code == 200:
            return resp.json()

        try:
            err = resp.json().get("error", {})
        except ValueError:
            err = {}
        code = err.get("code")

        give_up = (
            resp.status_code not in RETRYABLE   # 400 / 402 / 403 等:重试没用
            or code == "quota_exceeded"          # 每日配额用完:等重置或提额
            or attempt == max_attempts
        )
        if give_up:
            raise RuntimeError(f"{resp.status_code} {code}: {err.get('message')}")

        delay = min(max_delay, base_delay * 2 ** (attempt - 1))
        time.sleep(delay + random.uniform(0, 1))   # 加随机抖动


result = create_with_backoff({
    "model": "gemini-3.8-flash",
    "input": "用一句话介绍你自己",
})
print(result["steps"][-1]["content"][0]["text"])

四、其他常见错误码对照表

下表合并了官方两版错误表。左边是旧版 generateContent 的状态名,右边是新版 Interactions API 的错误码。

HTTPgenerateContent 状态Interactions 错误码含义官方建议
400INVALID_ARGUMENTinvalid_request、parameter_unknown请求体格式错误、参数无效或有不认识的参数对照 API 参考检查拼写和必填字段;别在旧版本端点上用新功能
400FAILED_PRECONDITIONfailed_precondition前置条件不满足。典型的是「你所在的国家或地区不提供免费层,请开通结算」检查项目的结算状态
401—authentication密钥缺失、无效或已过期检查 API 密钥
402RESOURCE_EXHAUSTEDpayment_required预付费余额用完,该结算账号下所有密钥都停用充值或开启自动充值;不要重试
403PERMISSION_DENIEDpermission_denied密钥没有所需权限确认用对了密钥、密钥有访问权限
404NOT_FOUNDnot_found、model_not_found资源不存在,或模型名不存在核对模型 ID;检查请求里引用的文件是否还在
429RESOURCE_EXHAUSTED见第一节超过速率限制或配额见第二、三节
499CANCELLEDcancelled客户端在完成前取消或断开检查客户端超时设置和网络
500INTERNALapi_error服务器内部错误。旧版表格举的例子是输入上下文过长重试;缩短上下文或临时换一个模型;看状态页
503UNAVAILABLEservice_unavailable服务暂时过载或不可用等待后退避重试;临时换模型;看状态页
504DEADLINE_EXCEEDEDdeadline_exceeded没能在期限内处理完,常见于提示或上下文太大调大客户端的超时时间,或去掉客户端超时改用服务器默认值

几条补充:

  • 状态页:官方的 Gemini API 状态页在 aistudio.google.com/status。500、503 持续出现时先看这里有没有故障公告;仍无法解决,官方建议用 AI Studio 里的「发送反馈(Send feedback)」按钮上报。
  • 400 的两个新原因:从 Gemini 3.6 Flash、3.5 Flash-Lite 起,请求以模型角色的内容结尾(即「预填回复开头」)会返回 400;temperature、top_p、top_k 目前被忽略,官方预告未来的模型代际里再传也会返回 400。
  • 密钥无效的状态码两套接口不同:新版错误表里是 401 authentication;旧版 generateContent 的官方示例里,无效密钥返回的是 400 INVALID_ARGUMENT,提示「API key not valid. Please pass a valid API key.」。
  • 密钥被封:报「Your API key was reported as leaked. Please use another API key.」说明这把密钥被检测到泄露并封禁,需要新建密钥,见本站《Gemini API Key 怎么获取:在 AI Studio 创建密钥、设置环境变量与安全限制》。
  • 403 Access Restricted(AI Studio 网页里):官方排错页说明这表示使用方式不符合服务条款,常见原因之一是所在地区不在可用地区列表内。请遵守所在地法律和服务条款。
  • 内容被拦截不是 HTTP 错误:因安全、引用(recitation)等原因被拦时,Interactions API 会给出 safety、recitation、prohibited_content 这类「生成被阻止」代码,需要修改输入后再试。

常见问题

Q:我才发了几个请求就 429?

先确认是哪一项超了。免费层的限额本来就低(具体数字看 Rate Limit 页面),循环里连发请求很容易触发每分钟的限制;另外看项目下是否还有别的程序在跑,以及用的是不是限额更严的预览版模型。

Q:余额充足为什么还是 429?

速率限制和余额是两回事。付费层还有按 10 分钟计的支出速率上限,以及档位对应的每月账单上限,详见本站《Gemini API 怎么收费:按 token 计费、预付费充值(Prepay)与支出上限设置》。

Q:换一把密钥行不行?

同一个项目下的密钥共用限额,换了也没用。

Q:开通付费后多久生效?

官方说明从免费层到 Tier 1 通常立即生效,之后的升档一般在 10 分钟内。

Q:延迟很高、token 用得特别多,是出错了吗?

通常不是。官方排错页解释,Gemini 3 系列默认开启思考,会产生额外的推理 token 并拉长响应时间。对速度或成本敏感时,把思考等级调低。

参考资料

  • API errors(Interactions API 版,官方):https://ai.google.dev/gemini-api/docs/api-errors
  • API errors(generateContent 版,官方):https://ai.google.dev/gemini-api/docs/generate-content/api-errors
  • Troubleshooting guide(官方):https://ai.google.dev/gemini-api/docs/troubleshooting
  • Rate limits(官方):https://ai.google.dev/gemini-api/docs/rate-limits
  • Billing(官方):https://ai.google.dev/gemini-api/docs/billing
  • Troubleshoot Google AI Studio(官方):https://ai.google.dev/gemini-api/docs/troubleshoot-ai-studio
  • Available regions for Google AI Studio and Gemini API(官方):https://ai.google.dev/gemini-api/docs/available-regions
  • What's new in Gemini 3.6 Flash and 3.5 Flash-Lite(官方):https://ai.google.dev/gemini-api/docs/whats-new-gemini-3.6

Nathaniel 的更多内容

  1. 01

    promptfoo 使用教程:对比提示词和模型、写断言自动评测(安装与配置)

    promptfoo 是什么、怎么使用?按官方 README 和入门文档讲清它的用途、三种安装方式、用示例项目起步、promptfooconfig.yaml 里提示词、模型和测试用例三部分怎么写、常用断言类型的含义、eval 与 view 两条命令,以及把它放进日常改提示词流程的方法。

    ChatGPT其他 AI 工具0
  2. 02

    Kimi API怎么用:API Key获取、Python调用、K3价格与429报错处理

    Kimi API Key 在哪里获取、怎么用 Python 调用 K3、价格怎么算、429 和 401 报错怎么办?本文按 Kimi API 开放平台官方文档讲清注册认证、创建 Key、base_url 与模型名、计费规则和常见错误排查。

    Kimi0
  3. 03

    Cursor Agent 模式怎么用:Agent、Plan、Ask 三种模式,检查点回滚与消息排队

    Cursor Agent 模式是什么、和 Plan / Ask 模式怎么选?按官方文档讲清 Agent 能调用哪些工具、Shift+Tab 切换模式、Plan 模式先出方案再动手、用检查点撤销改动、任务进行中排队或插话,以及 /goal 长目标。

    Cursor0
  4. 04

    Gemini 聊天记录怎么导出:导出到文档 / 表格、生成 PDF 与用 Takeout 批量导出完整对话

    Gemini 没有「一键导出全部对话」的按钮,但有三条官方路径:单条回答导出到 Google 文档、Gmail、表格;让 Gemini 直接生成 PDF、Word、Markdown 文件;用 Google Takeout 批量下载全部活动记录。本文给出每种方法的步骤和限制。

    Gemini0
  5. 05

    ChatGPT 生成图片中文乱码、文字错误怎么办:7 个按顺序试的办法

    让 ChatGPT 做海报、封面、信息图,中文总是缺笔画、错字、乱码?本文按 OpenAI 官方图像提示指南,给出从写法、字数、局部修改、质量档位到后期排版的 7 个办法,以及什么时候干脆别让 AI 写字。

    ChatGPT0
  6. 06

    OpenCode Skills 使用指南:技能目录、命名规则、权限配置与不加载排查

    OpenCode 的 Skills 放在哪个目录、怎么控制哪些技能能用?按 OpenCode 官方文档讲清六个扫描位置、name 的正则规则、skill 工具的工作方式、在 opencode.json 里用 allow / deny / ask 配置权限、按智能体覆盖,以及技能不出现时的五项检查。

    其他 AI 工具0

同模型

  1. 01

    Gemini API Node.js / JavaScript 调用教程:@google/genai 安装、流式输出与函数调用

    用官方 @google/genai SDK 在 Node.js 里调 Gemini API:安装配置、第一个请求、流式输出、多轮对话、传图片和函数调用的完整循环,并说明为什么密钥不能写进浏览器前端。

    Gemini0
  2. 02

    Google AI Studio 系统指令怎么写:System instructions 与运行设置(思考等级、温度、联网搜索)

    系统指令决定模型的身份和输出规则。本文按官方文档讲清 AI Studio 里系统指令在哪填、怎么写、怎么保存复用,以及思考等级、温度(新模型已弃用)、联网搜索等工具的作用与限制。

    Gemini0
  3. 03

    Gemini 结构化输出(Structured Output)怎么用:JSON Schema、Pydantic 与 Zod 示例

    想让 Gemini API 稳定返回可解析的 JSON,就用结构化输出。本文给出 Pydantic 和 Zod 的官方写法、枚举与可空字段、流式、和工具组合、支持的 Schema 范围与限制,以及新旧接口的参数差别。

    Gemini0
  4. 04

    Gemini API 接口地址(Base URL)是什么:原生端点与 OpenAI 兼容调用写法

    Gemini API 域名是 generativelanguage.googleapis.com。本文列出原生与 OpenAI 兼容端点的地址和鉴权方式、v1 与 v1beta 的区别,和用 OpenAI SDK 调 Gemini 的写法。

    Gemini0
  5. 05

    Gemini 怎么看额度:用量限制在哪查、多久重置、额度变少怎么办

    Gemini 的额度不是按条数算的,而是按计算量:每 5 小时刷新、另有每周上限。本文讲在哪里查看用量、各档会员的额度倍数、哪些操作最费额度、额度用完后会怎样,以及官方认可的省额度方法。

    Gemini0
  6. 06

    Gemini Canvas 怎么用:写文档、生成网页和小应用、导出与分享全流程

    Gemini Canvas 是对话旁边的一块可编辑工作区:在里面写文档、做幻灯片、生成能直接运行的网页和小应用。本文按官方帮助中心讲入口、文档的局部修改与格式工具、应用的预览 / 代码 / 控制台、把文档变成测验 / 信息图 / 网页,以及导出和分享的方法与限制。

    Gemini0

同产品的其他教程

  1. 01

    提示词链(Prompt Chaining)怎么用:把复杂任务拆成几步,前一步的输出交给后一步

    提示词链是什么、什么时候该把大提示词拆开?本文按 Anthropic 和 Google 官方文档讲清拆指令、串成链、分块聚合三种拆法,最常用的「起草 → 审查 → 修改」链,以及哪些情况不必拆。

    ClaudeGemini0
  2. 02

    Nano Banana 提示词怎么写:官方提示词指南要点与 7 个生成模板

    Nano Banana(Gemini 生图)的提示词怎么写效果最好?本文把 Google 官方提示词指南提炼成 6 条原则和写实照片、贴纸、带文字设计、商品图、留白背景、漫画分镜、搜索增强 7 个可复制模板,并给出改图句式。

    Gemini0
  3. 03

    NotebookLM PPT 可编辑吗:演示文稿的生成、修改、下载 PPTX 与信息图

    NotebookLM(现名 Gemini Notebook)生成的 PPT 能改吗、怎么下载?本文按官方帮助讲清演示文稿的两种格式、用「修改(Revise)」逐页改稿、删页和调整顺序、下载 PDF 或 PPTX,以及信息图的风格和下载。

    Gemini0
  4. 04

    Gemini 音乐生成怎么用:用 Lyria 写歌作曲、歌曲长度、下载 MP3 与水印说明

    Gemini 里可以直接用 Lyria 模型生成带人声和歌词的完整歌曲。本文按官方帮助中心讲入口、使用条件、短曲与完整曲目的长度、人声 / 纯音乐与曲风选项、提示词五要素、下载 MP3 / MP4 和分享、SynthID 水印,以及次数限制该怎么看。

    Gemini0
  5. 05

    Veo 3.1 提示词怎么写:主体、动作、镜头、声音与对白的官方写法

    Veo 3.1 和 Gemini Omni 的视频提示词怎么写才稳?本文按 Google 官方视频提示指南和最佳实践,拆解提示词的 7 个组成部分,讲清音效与对白写法、负面提示、图生视频和多镜头角色一致的技巧,附可复制模板。

    Gemini0
  6. 06

    NotebookLM 怎么用:改名 Gemini Notebook 后的入口、三栏界面与基本流程

    NotebookLM 是什么、怎么用?2026 年 7 月它已改名 Gemini Notebook。本文按官方帮助中心讲清改名后哪些变了、使用条件、「来源 → 对话 → Studio」三步流程,以及回答不出来时的官方原因。

    Gemini0

0 条评论

登录 后参与评论

还没有评论,来抢沙发~