Gemini 兼容接口
REST 前缀 https://modelportal.ai/v1beta,鉴权用 x-goog-api-key: YOUR_API_KEY、查询参数 key=YOUR_API_KEY 或 Authorization: Bearer YOUR_API_KEY,带了几处时必须相同。请求与响应格式与 Gemini API 一致。路径里的 {模型} 是模型 ID,斜杠可以直接写,也可以写成 %2F。
POST /v1beta/models/{模型}:generateContent
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
contents |
array | 是 | 对话内容,parts 支持 text、inlineData、fileData、functionCall、functionResponse |
systemInstruction |
object | 否 | 系统提示 |
generationConfig |
object | 否 | temperature、topP、topK、maxOutputTokens、candidateCount、responseMimeType、responseSchema、thinkingConfig 等;不填 maxOutputTokens 时平台按模型上限和可用余额补一个值 |
tools、toolConfig |
— | 否 | 函数调用 |
{
"candidates": [{"content": {"role": "model", "parts": [{"text": "你好!"}]}, "finishReason": "STOP"}],
"usageMetadata": {"promptTokenCount": 9, "candidatesTokenCount": 4, "totalTokenCount": 13, "cost": 0.000013},
"provider": "PROVIDER_ID",
"attempts": [{"provider": "PROVIDER_ID", "endpoint": "ENDPOINT_ID", "status": 200, "cost": 0.000013}],
"modelVersion": "MODEL_ID"
}
usageMetadata 是计费用量:promptTokenCount 含缓存读写,candidatesTokenCount 不含推理,thoughtsTokenCount、cachedContentTokenCount 单列。usageMetadata.cost 是这次的扣费(USD),provider、attempts 是承接的供应商和每次尝试;流式时这三项写在带 usageMetadata 的最后一段里。响应头见接口概览。
POST /v1beta/models/{模型}:streamGenerateContent
请求体同 generateContent。带 ?alt=sse 时以 SSE 返回;不带时返回 JSON 数组。
POST /v1beta/models/{模型}:countTokens
计算输入 token 数,不计费。请求体可以是 contents,也可以是 generateContentRequest。
POST /v1beta/models/{模型}:embedContent 与 :batchEmbedContents
生成向量,模型要具备向量能力。batchEmbedContents 里每条的 model 必须为空或与路径里的模型相同。
GET /v1beta/models
列出这把密钥能调用的模型,以及每个模型支持的方法和 token 上限。
错误
错误体为 {"error": {"code", "message", "status"}},code 是 HTTP 状态码,status 只由它决定:
| HTTP | status |
|---|---|
| 400、422 | INVALID_ARGUMENT |
| 401 | UNAUTHENTICATED |
| 402、429 | RESOURCE_EXHAUSTED |
| 403 | PERMISSION_DENIED |
| 404、410 | NOT_FOUND |
| 502、503 | UNAVAILABLE |
422 时 error.excluded 列出排除原因。各状态对应的平台错误码见常见错误。