1. 原生Gemini格式
Weimeta.ai API Docs
  • AI模型接口
    • 快速上手
    • 模型(Models)
      • 列出模型
        • 原生OpenAI格式
        • 原生Gemini格式
    • 聊天(Chat)
      • 原生OpenAI格式
        • ChatCompletions格式
        • Responses格式
      • 原生Gemini格式
        • 生成文本回复(支持流式)
          POST
        • Gemini媒体识别
          POST
      • 原生Claude格式
        POST
    • 图像(Images)
      • 原生OpenAI格式
        • 生成图像
        • 编辑图像
      • 通义千问格式
        • 生成图像
        • 编辑图像
      • Nano Banana
        • 原生Gemini格式
        • OpenAI聊天格式
    • 视频(Videos)
      • Sora格式
        • 创建视频
        • 获取视频任务状态
        • 获取视频内容
      • 可灵格式
        • Kling 文生视频
        • 获取 Kling 文生视频任务状态
        • Kling 图生视频
        • 获取 Kling 图生视频任务状态
      • 即梦格式
        • 即梦视频生成
      • seedance2.0 原生接口
        • 创建视频生成任务
        • 查询视频生成任务列表
        • 查询视频生成任务
        • 取消或删除视频生成任务
      • 创建视频生成任务
      • 获取视频生成任务状态
    • 嵌入(Embeddings)
      • 原生OpenAI格式
      • 原生Gemini格式
    • 补全(Completions)
      • 原生OpenAI格式
    • 音频(Audio)
      • 原生OpenAI格式
        • 音频转录
        • 音频翻译
        • 文本转语音
      • 原生Gemini格式
    • 实时语音(Realtime)
      • 原生OpenAI格式
    • 重排序(Rerank)
      • 文档重排序
    • 审查(Moderations)
      • 原生OpenAI格式
    • Volcengine Native Video Tasks
      • 创建视频生成任务
      • 查询视频生成任务列表
      • 查询视频生成任务
      • 取消或删除视频生成任务
    • 数据模型
      • Schemas
        • User
        • Log
        • Model
        • Token
        • PageInfo
        • Channel
        • Redemption
        • ApiResponse
        • ModelsResponse
        • Message
        • MessageContent
        • Tool
        • ToolCall
        • GeminiModelsResponse
        • ChatCompletionResponse
        • ChatCompletionRequest
        • ChatCompletionStreamResponse
        • CompletionRequest
        • CompletionResponse
        • ResponseFormat
        • ResponsesRequest
        • ResponsesResponse
        • ResponsesStreamResponse
        • ClaudeRequest
        • ClaudeMessage
        • ClaudeResponse
        • EmbeddingRequest
        • EmbeddingResponse
        • ImageGenerationRequest
        • ImageEditRequest
        • ImageResponse
        • AudioTranscriptionRequest
        • AudioTranslationRequest
        • AudioTranscriptionResponse
        • SpeechRequest
        • RerankRequest
        • RerankResponse
        • VideoRequest
        • ModerationRequest
        • VideoResponse
        • ModerationResponse
        • VideoTaskResponse
        • GeminiRequest
        • VideoTaskMetadata
        • VideoTaskError
        • GeminiResponse
        • OpenAIVideo
        • OpenAIVideoError
      • CreateVideoGenerationTaskRequest
      • GeminiChatRequest
      • GeminiImageRequest
      • ContentItem
      • GeminiContent
      • UrlObject
      • GeminiSystemInstruction
      • GeminiInputPart
      • DraftTask
      • GeminiPart
      • GeminiInlineData
      • CreateTaskResponse
      • GeminiTextPart
      • GeminiFileData
      • TaskListResponse
      • GeminiImageGenerationConfig
      • VideoTask
      • GeminiImageConfig
      • TaskContent
      • GeminiFunctionCall
      • GeminiThinkingConfig
      • Usage
      • GeminiFunctionResponse
      • GeminiSafetySetting
      • ToolUsage
      • GeminiGenerationConfig
      • GeminiImageResponse
      • TaskError
      • GeminiCandidate
      • ErrorResponse
      • GeminiOutputContent
      • GeminiFunctionTool
      • GeminiOutputPart
      • GeminiFunctionDeclaration
      • GeminiOutputInlineData
      • GeminiToolConfig
      • GeminiPromptFeedback
      • GeminiFunctionCallingConfig
      • GeminiChatResponse
      • GeminiUsageMetadata
      • GeminiModalityTokenCount
      • GatewayError
      • GeminiExecutableCode
      • GeminiCodeExecutionResult
      • GeminiSafetyRating
  1. 原生Gemini格式

生成文本回复(支持流式)

POST
/v1beta/models/{model}:generateContent
使用 Gemini 原生 GenerateContent 请求格式生成文本回复。

前置阅读#

以下为 Google Gemini 官方资料。本文档描述的是服务平台实际开放的字段和调用方式;
如果官方资料与本文档存在差异,请以本文档及服务平台公告为准。
核心协议与输入:
GenerateContent API 完整字段参考
GenerateContent 文本生成与多轮对话
文件与多模态输入方式
Gemini API v1 与 v1beta 版本说明
输出控制与工具:
Gemini 思考能力与思考 Token
函数调用 Function Calling
JSON 结构化输出
安全设置与拦截反馈
用量与计费:
Token 统计与 usageMetadata
上下文缓存 Context Caching
Gemini 模型官方价格
Google 官方流式示例通常使用 streamGenerateContent。本服务使用同一个
generateContent Path,并通过查询参数 alt=sse 开启流式响应。

1. 接口说明#

单轮对话:在一个 user Content 中传入文本。
多轮对话:按顺序传入 user 和 model 历史消息,最后一条通常为新的 user 消息。
多模态理解:在同一个 parts 数组中组合 text、inlineData 或 fileData。
系统指令:通过 systemInstruction.parts[].text 设置角色、规则或输出要求。
结构化输出:设置 generationConfig.responseMimeType=application/json,并按需提供 Schema。
函数调用:在 tools[].functionDeclarations 声明函数,不要传入 Google Search 工具。
缓存引用:cachedContent 仅在对应缓存资源对所选上游渠道可见时可用。
非流式响应:模型结果位于 candidates[].content.parts[]。
流式响应:在同一个接口上增加查询参数 alt=sse,请求 Body 不变。

1.1 非流式与流式调用#

本服务通过同一个 generateContent Path 提供两种响应模式,不需要调用或配置
第二个 streamGenerateContent 接口:
调用方式请求地址响应 Content-Type客户端处理方式
非流式/v1beta/models/{model}:generateContentapplication/json等待生成完成后解析一个完整的 GeminiChatResponse。
流式/v1beta/models/{model}:generateContent?alt=ssetext/event-stream按 SSE 事件逐条读取并解析每个 data: 后面的 GeminiChatResponse JSON。
流式请求示例:
流式响应的每个事件格式如下:
data: {"candidates":[{"content":{"role":"model","parts":[{"text":"第一段文本"}]},"index":0}]}

data: {"candidates":[{"content":{"role":"model","parts":[{"text":"第二段文本"}]},"finishReason":"STOP","index":0}],"usageMetadata":{"promptTokenCount":12,"candidatesTokenCount":8,"totalTokenCount":20}}
客户端应当:
1.
按空行分隔 SSE 事件;
2.
去掉每条事件开头的 data: 后解析 JSON;
3.
按顺序读取 candidates[].content.parts[].text;
4.
以连接正常结束作为流结束依据,不要依赖 OpenAI 格式的 [DONE];
5.
使用最后一个包含完整 usageMetadata 的事件进行用量记录和账单核对。

2. 计费原理与计算口径#

一次文本对话可能同时包含普通文本/图片/视频输入、音频输入、缓存命中、
文本输出和思考 Token。不同类别可能使用不同单价,因此不能直接使用
totalTokenCount × 一个统一单价 计算费用。
流式与非流式使用相同计费规则。流式过程中不得把多个事件里的 Token 统计相加;
应使用最后一个包含完整 usageMetadata 的事件作为本次请求的最终用量。
接口只返回 usageMetadata 用量,不返回价格版本、币种或本次最终金额。
以下费率用于说明字段映射和计算方法;实际生效价格、模型名称、倍率、折扣和结算金额
以服务平台提供的报价及账单为准。

2.1 常规上下文模型参考费率#

单价单位均为 USD/100 万 Token;缓存存储单位为 USD/100 万 Token·小时。
价格系列请求模型示例普通输入(文本/图片/视频)音频输入缓存命中(普通输入)缓存命中(音频)缓存存储文本/思考输出
Gemini 2.5 Flashgemini-2.5-flash0.301.000.0300.1001.002.50
Gemini 2.5 Flash-Litegemini-2.5-flash-lite0.100.300.0100.0301.000.40
Gemini 3 Flashgemini-3-flash-preview0.501.000.0500.1001.003.00
Gemini 3.1 Flash-Litegemini-3.1-flash-lite0.250.500.0250.0501.001.50
Gemini 3.5 Flashgemini-3.5-flash1.501.500.1500.1501.009.00

2.2 长上下文阶梯模型参考费率#

阶梯判断使用本次输入上下文长度:
LEN = promptTokenCount + toolUsePromptTokenCount
价格系列请求模型示例LEN输入缓存命中缓存存储文本/思考输出
Gemini 2.5 Progemini-2.5-pro≤ 200,0001.250.1254.5010.00
Gemini 2.5 Progemini-2.5-pro> 200,0002.500.2504.5015.00
Gemini 3.1 Progemini-3.1-pro-preview≤ 200,0002.000.2004.5012.00
Gemini 3.1 Progemini-3.1-pro-preview> 200,0004.000.4004.5018.00

2.3 用量字段与互斥计费桶#

P_TOTAL = promptTokenCount + toolUsePromptTokenCount
P_AUDIO = promptTokensDetails[AUDIO] + toolUsePromptTokensDetails[AUDIO]
P_OTHER = max(P_TOTAL - P_AUDIO, 0)

C_TOTAL = cachedContentTokenCount
C_AUDIO = cacheTokensDetails[AUDIO]
C_OTHER = max(C_TOTAL - C_AUDIO, 0)

U_AUDIO = max(P_AUDIO - C_AUDIO, 0)
U_OTHER = max(P_OTHER - C_OTHER, 0)

O_TEXT = candidatesTokenCount
O_THOUGHT = thoughtsTokenCount
promptTokenCount 已经包含缓存命中 Token,P_AUDIO 也已经包含缓存音频 Token。
因此缓存桶必须先从普通输入桶中扣除,不能重复相加。
常规上下文模型的单次请求费用:
普通输入费用
  = U_OTHER × 普通输入单价 ÷ 1,000,000
  + U_AUDIO × 音频输入单价 ÷ 1,000,000

缓存命中费用
  = C_OTHER × 普通缓存单价 ÷ 1,000,000
  + C_AUDIO × 音频缓存单价 ÷ 1,000,000

文本/思考输出费用
  = (O_TEXT + O_THOUGHT) × 输出单价 ÷ 1,000,000

请求总费用
  = 普通输入费用 + 缓存命中费用 + 文本/思考输出费用
长上下文阶梯模型先使用 LEN 选择整次请求的价格档位,再计算:
U = max(P_TOTAL - C_TOTAL, 0)
C = C_TOTAL
O = candidatesTokenCount + thoughtsTokenCount

请求总费用
  = (U × 当前档位输入单价
     + C × 当前档位缓存单价
     + O × 当前档位输出单价)
    ÷ 1,000,000
缓存存储费不是单次 generateContent 响应费用。若客户另外创建了缓存资源,
存储费用通常按“缓存 Token × 存储小时数”计算:
缓存存储费用
  = 缓存资源 Token × 缓存存储单价 × 存储小时数 ÷ 1,000,000
本接口响应无法单独确定缓存资源存储了多少小时,因此缓存存储费应从缓存资源记录或平台账单核对。

3. Gemini 响应字段逐项说明#

3.1 响应顶层字段#

字段类型说明
candidatesarray候选回复列表。通常读取索引 0,但客户端应允许多个候选。
promptFeedbackobject整个输入提示的安全反馈。输入被拦截时可能没有 candidates。
usageMetadataobject本次请求的 Token 用量,是费用预估和账单核对的核心对象。
modelVersionstring上游实际执行请求的模型版本,建议与请求模型一起保存。
responseIdstring上游响应 ID,用于请求定位和账单核对。

3.2 candidates[] 字段#

字段类型说明
candidates[].indexinteger候选序号,通常从 0 开始。
candidates[].contentobject当前候选的输出内容。
candidates[].finishReasonstring结束原因。STOP 通常表示正常完成;MAX_TOKENS 表示达到输出限制;SAFETY 表示内容被安全策略终止。
candidates[].finishMessagestring对结束原因的可读补充说明,可能缺失。
candidates[].safetyRatingsarray当前候选的安全分类和风险概率。

3.3 content 和 parts[] 字段#

字段类型说明
content.rolestring输出角色,通常为 model。
content.partsarray输出片段列表,可能包含文本、思考摘要或函数调用。
parts[].textstring普通文本回复;当 thought=true 时表示可返回的思考摘要。
parts[].thoughtboolean当前 Part 是否为思考内容。
parts[].thoughtSignaturestring多轮对话或函数调用时可能需要原样回传的不透明签名。
parts[].functionCall.namestring模型希望调用的函数名称。
parts[].functionCall.argsobject模型生成的函数参数。
parts[].inlineDataobject模型返回的内联媒体;纯文本模型通常不会返回。
parts[].executableCodeobject可选的模型生成代码。
parts[].codeExecutionResultobject可选的代码执行结果。

3.4 promptFeedback 和安全字段#

字段类型说明
promptFeedback.blockReasonstring输入被拦截的原因,例如 SAFETY、BLOCKLIST 或 PROHIBITED_CONTENT。
promptFeedback.safetyRatingsarray输入提示的安全评估列表。
safetyRatings[].categorystring被评估的安全类别。
safetyRatings[].probabilitystring风险概率,例如 NEGLIGIBLE、LOW、MEDIUM、HIGH。
safetyRatings[].blockedboolean是否因为该安全类别而被拦截。

3.5 usageMetadata 字段#

字段类型计费含义
promptTokenCountinteger输入提示总 Token,包含文本、图片、视频、音频和缓存命中用量。
toolUsePromptTokenCountinteger工具相关提示 Token,应加入输入总量。
cachedContentTokenCountinteger缓存命中总 Token,是输入总量的子集。
candidatesTokenCountinteger候选输出 Token,不包含 thoughtsTokenCount。
thoughtsTokenCountinteger思考 Token,按文本/思考输出单价计费。
totalTokenCountinteger总 Token 核验字段,不能直接乘以单一价格计算精确金额。
promptTokensDetailsarray输入提示按 TEXT、IMAGE、VIDEO、AUDIO 等模态拆分。
toolUsePromptTokensDetailsarray工具提示按模态拆分。
cacheTokensDetailsarray缓存命中按模态拆分,是输入 Token 的子集。
candidatesTokensDetailsarray候选输出按模态拆分;文本对话通常为 TEXT。
serviceTierstring上游实际服务层级,可能缺失;最终计费仍以平台有效价格为准。
*TokensDetails[].modalitystringToken 模态,例如 TEXT、IMAGE、VIDEO、AUDIO。
*TokensDetails[].tokenCountinteger对应模态的 Token 数量。
客户侧建议保存请求模型、modelVersion、responseId、完整 usageMetadata、
使用的价格版本、匹配的上下文档位和计算金额,便于后续核对。

4. 典型场景与计费示例#

以下金额仅用于展示如何从 Gemini Response JSON 读取字段并计算费用。

场景一:gemini-2.5-flash,音频输入并命中缓存#

示例响应:
{
  "candidates": [
    {
      "content": {
        "role": "model",
        "parts": [
          {
            "text": "会议主要讨论了产品发布计划、风险事项和后续负责人。"
          }
        ]
      },
      "finishReason": "STOP",
      "index": 0,
      "safetyRatings": []
    }
  ],
  "usageMetadata": {
    "promptTokenCount": 100000,
    "toolUsePromptTokenCount": 0,
    "cachedContentTokenCount": 30000,
    "candidatesTokenCount": 1000,
    "thoughtsTokenCount": 500,
    "totalTokenCount": 101500,
    "promptTokensDetails": [
      {
        "modality": "TEXT",
        "tokenCount": 60000
      },
      {
        "modality": "AUDIO",
        "tokenCount": 40000
      }
    ],
    "cacheTokensDetails": [
      {
        "modality": "TEXT",
        "tokenCount": 20000
      },
      {
        "modality": "AUDIO",
        "tokenCount": 10000
      }
    ],
    "candidatesTokensDetails": [
      {
        "modality": "TEXT",
        "tokenCount": 1000
      }
    ]
  },
  "modelVersion": "gemini-2.5-flash",
  "responseId": "response-chat-example-001"
}
字段解释:
普通输入总量为 60,000 Token,其中普通缓存命中为 20,000。
音频输入总量为 40,000 Token,其中音频缓存命中为 10,000。
因此普通非缓存输入为 40,000,音频非缓存输入为 30,000。
文本输出为 1,000 Token,思考输出为 500 Token。
普通非缓存输入费用
  = 40,000 × USD 0.30 ÷ 1,000,000
  = USD 0.01200

音频非缓存输入费用
  = 30,000 × USD 1.00 ÷ 1,000,000
  = USD 0.03000

普通缓存命中费用
  = 20,000 × USD 0.030 ÷ 1,000,000
  = USD 0.00060

音频缓存命中费用
  = 10,000 × USD 0.100 ÷ 1,000,000
  = USD 0.00100

文本/思考输出费用
  = (1,000 + 500) × USD 2.50 ÷ 1,000,000
  = USD 0.00375

请求总费用
  = USD 0.01200 + USD 0.03000 + USD 0.00060
    + USD 0.00100 + USD 0.00375
  = USD 0.04735

场景二:gemini-2.5-pro,输入超过 20 万 Token#

示例响应:
{
  "candidates": [
    {
      "content": {
        "role": "model",
        "parts": [
          {
            "text": "以下是对长文档的风险分析、结论和建议。"
          }
        ]
      },
      "finishReason": "STOP",
      "index": 0,
      "safetyRatings": []
    }
  ],
  "usageMetadata": {
    "promptTokenCount": 250000,
    "toolUsePromptTokenCount": 0,
    "cachedContentTokenCount": 50000,
    "candidatesTokenCount": 4000,
    "thoughtsTokenCount": 1000,
    "totalTokenCount": 255000,
    "promptTokensDetails": [
      {
        "modality": "TEXT",
        "tokenCount": 250000
      }
    ],
    "cacheTokensDetails": [
      {
        "modality": "TEXT",
        "tokenCount": 50000
      }
    ],
    "candidatesTokensDetails": [
      {
        "modality": "TEXT",
        "tokenCount": 4000
      }
    ]
  },
  "modelVersion": "gemini-2.5-pro",
  "responseId": "response-chat-example-002"
}
字段解释:
LEN=250000,超过 200,000,因此整次请求使用长上下文档位。
输入总量为 250,000,其中缓存命中 50,000,非缓存输入为 200,000。
输出总量为 4000 + 1000 = 5000 Token。
非缓存输入费用
  = 200,000 × USD 2.50 ÷ 1,000,000
  = USD 0.50000

缓存命中费用
  = 50,000 × USD 0.250 ÷ 1,000,000
  = USD 0.01250

文本/思考输出费用
  = (4,000 + 1,000) × USD 15.00 ÷ 1,000,000
  = USD 0.07500

请求总费用
  = USD 0.50000 + USD 0.01250 + USD 0.07500
  = USD 0.58750

场景三:gemini-3.1-pro-preview,输入不超过 20 万 Token#

示例响应:
{
  "candidates": [
    {
      "content": {
        "role": "model",
        "parts": [
          {
            "text": "这是基于材料生成的结构化决策建议。"
          }
        ]
      },
      "finishReason": "STOP",
      "index": 0,
      "safetyRatings": []
    }
  ],
  "usageMetadata": {
    "promptTokenCount": 100000,
    "toolUsePromptTokenCount": 0,
    "cachedContentTokenCount": 20000,
    "candidatesTokenCount": 2000,
    "thoughtsTokenCount": 1000,
    "totalTokenCount": 103000,
    "promptTokensDetails": [
      {
        "modality": "TEXT",
        "tokenCount": 100000
      }
    ],
    "cacheTokensDetails": [
      {
        "modality": "TEXT",
        "tokenCount": 20000
      }
    ],
    "candidatesTokensDetails": [
      {
        "modality": "TEXT",
        "tokenCount": 2000
      }
    ]
  },
  "modelVersion": "gemini-3.1-pro-preview",
  "responseId": "response-chat-example-003"
}
字段解释:
LEN=100000,不超过 200,000,因此使用标准上下文档位。
输入总量为 100,000,其中缓存命中 20,000,非缓存输入为 80,000。
输出总量为 2000 + 1000 = 3000 Token。
非缓存输入费用
  = 80,000 × USD 2.00 ÷ 1,000,000
  = USD 0.16000

缓存命中费用
  = 20,000 × USD 0.200 ÷ 1,000,000
  = USD 0.00400

文本/思考输出费用
  = (2,000 + 1,000) × USD 12.00 ÷ 1,000,000
  = USD 0.03600

请求总费用
  = USD 0.16000 + USD 0.00400 + USD 0.03600
  = USD 0.20000

请求参数

Authorization
Bearer Token
在 Header 添加参数
Authorization
,其值为在 Bearer 之后拼接 Token
示例:
Authorization: Bearer ********************
or
API Key
在 header 添加参数
x-goog-api-key
示例:
x-goog-api-key: ********************
or
API Key
在 query 添加参数
key
示例:
key: ********************
or
Path 参数

Query 参数

Body 参数application/json必填

示例
{
    "contents": [
        {
            "role": "user",
            "parts": [
                {
                    "text": "用三句话解释什么是向量数据库。"
                }
            ]
        }
    ],
    "generationConfig": {
        "maxOutputTokens": 1024,
        "temperature": 0.7
    }
}

请求示例代码

Shell
JavaScript
Java
Swift
Go
PHP
Python
HTTP
C
C#
Objective-C
Ruby
OCaml
Dart
R
请求示例请求示例
Shell
JavaScript
Java
Swift
cURL
curl --location '/v1beta/models/gemini-2.5-flash:generateContent?alt=sse' \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
    "contents": [
        {
            "role": "user",
            "parts": [
                {
                    "text": "用三句话解释什么是向量数据库。"
                }
            ]
        }
    ],
    "generationConfig": {
        "maxOutputTokens": 1024,
        "temperature": 0.7
    }
}'

返回响应

🟢200成功
application/json
请求成功。未传 alt 时返回一个完整 JSON;传入 alt=sse 时返回 SSE 事件流。
响应可能包含文本、思考摘要、函数调用、用量信息或安全反馈。
Body

示例
{
    "candidates": [
        {
            "content": {
                "role": "model",
                "parts": [
                    {
                        "text": "北京是中国的首都。"
                    }
                ]
            },
            "finishReason": "STOP",
            "index": 0,
            "safetyRatings": []
        }
    ],
    "usageMetadata": {
        "promptTokenCount": 12,
        "toolUsePromptTokenCount": 0,
        "cachedContentTokenCount": 0,
        "candidatesTokenCount": 8,
        "thoughtsTokenCount": 0,
        "totalTokenCount": 20,
        "promptTokensDetails": [
            {
                "modality": "TEXT",
                "tokenCount": 12
            }
        ],
        "candidatesTokensDetails": [
            {
                "modality": "TEXT",
                "tokenCount": 8
            }
        ]
    },
    "modelVersion": "gemini-2.5-flash",
    "responseId": "response-example-id"
}
🟠400BadRequest
🟠401Unauthorized
🟠403Forbidden
🟠413RequestTooLarge
🟠429RateLimited
🔴500GatewayFailure
🔴502GatewayFailure
🔴503GatewayFailure
修改于 2026-07-23 03:44:14
上一页
Responses格式
下一页
Gemini媒体识别
Built with