II.
ModelTransportProtocol overview
Reference · livemodel-transport:gemini-generate-content
Gemini generateContent overview
Inspect the raw attributes, linked wiki pages, and inbound or outbound graph edges for model-transport:gemini-generate-content.
Attributes
displayName
Gemini generateContent
vendor
Google
specUrl
streamingFraming
sse
toolUseSchema
Tool calls appear as `functionCall` parts within `candidates[].content.parts`,
each with `name` and `args`. Tool results are returned as
`functionResponse` parts referencing the same `name`.
thinkingChannel
part
cacheControl
explicit
firstSpecVersion
v1
currentSpecVersion
v1
status
standard
requestBodyShape
POST /v1beta/models/{model}:generateContent
POST /v1beta/models/{model}:streamGenerateContent
JSON body (top-level fields):
- `contents` (required, array of `{role: "user"|"model", parts: Part[]}`)
- `systemInstruction` (optional, `{parts: Part[]}`)
- `tools` (optional, array — `{functionDeclarations: [...]}` and/or
built-ins like `googleSearch`, `codeExecution`)
- `toolConfig` (optional, `{functionCallingConfig: {mode, allowedFunctionNames?}}`)
- `safetySettings` (optional)
- `generationConfig` (optional, `{temperature, topP, topK, maxOutputTokens,
stopSequences, responseMimeType, responseSchema, thinkingConfig?}`)
- `cachedContent` (optional, string — name of a server-side cached content resource)
A `Part` is one of: `{text}`, `{inlineData: {mimeType, data}}`,
`{fileData: {mimeType, fileUri}}`, `{functionCall}`, `{functionResponse}`,
`{thought: true, ...}`.
responseBodyShape
Non-streaming response (HTTP 200 application/json):
{
"candidates": [
{ "content": { "role": "model", "parts": [ Part, ... ] },
"finishReason": "STOP"|"MAX_TOKENS"|"SAFETY"|"RECITATION"|"OTHER",
"safetyRatings": [...],
"index": 0 }
],
"promptFeedback"?: { "blockReason": ..., "safetyRatings": [...] },
"usageMetadata": {
"promptTokenCount": int,
"candidatesTokenCount": int,
"totalTokenCount": int,
"cachedContentTokenCount"?: int
}
}
streamingEventTypes
- GenerateContentResponse
toolCallWireFormat
A `functionCall` part on `candidates[].content.parts[]`:
{ "functionCall": { "name": "<tool_name>", "args": { ... } } }
Note: there is no per-call id field; correlation is by `name` and
position within the conversation.
toolResultWireFormat
A `functionResponse` part in a subsequent user-role content turn:
{ "functionResponse": { "name": "<tool_name>",
"response": { ... } } }
errorEnvelope
Non-2xx response, `application/json` (Google API error envelope):
{ "error": { "code": int,
"message": string,
"status": "INVALID_ARGUMENT"|"PERMISSION_DENIED"|"RESOURCE_EXHAUSTED"|"INTERNAL"|...,
"details": [ ... ] } }
cacheControlWireFormat
Server-side `cachedContent` resource model.
1. Client POSTs to `/v1beta/cachedContents` with `{model, contents,
systemInstruction?, tools?, ttl}` and receives `{name: "cachedContents/<id>"}`.
2. On subsequent generateContent requests, set top-level
`cachedContent: "cachedContents/<id>"` to reference it.
Cache hit accounting reported as `usageMetadata.cachedContentTokenCount`.
rateLimitSignaling
HTTP 429 `RESOURCE_EXHAUSTED` on quota exceedance. `retry-after` header
is returned with the recommended back-off (seconds). No documented
per-tenant remaining-budget headers on the response.
whether Vertex variant exposes additional quota headers.
reasoningWireFormat
Reasoning is carried as additional `parts` on the model candidate
annotated with `thought: true` (e.g. `{ "text": "...", "thought": true }`).
Behavior is gated by `generationConfig.thinkingConfig` (e.g.
`{includeThoughts: true, thinkingBudget?}`).
field names against current `/v1beta` spec — naming has shifted.
authHeaderFormat
AI Studio (`generativelanguage.googleapis.com`):
`x-goog-api-key: <GEMINI_API_KEY>` (or `?key=...` query param)
Vertex AI (`*-aiplatform.googleapis.com`):
`Authorization: Bearer <gcloud-oauth-token>`
versioningHeader
Path-versioned: `/v1`, `/v1beta`. No protocol-version header on the
request; new features land first under `/v1beta`.
Outgoing edges
realizes1
- layer:3-transport·LayerTransport
served_by1
- provider:google·ModelProviderProductGoogle
spoken_by3
- model:gemini-2-5-pro@current·ModelVersionGemini 2.5 Pro
- agent-core-impl:cursor.core@current·AgentCoreImplCursor Core (current)
- agent-core-impl:opencode.core@1.x·AgentCoreImplOpenCode Core (1.x)
Incoming edges
speaks13
- agent-core-impl:a5c.core@current·AgentCoreImpla5c Unified Core (current) — unified agent loop
- agent-core-impl:cursor.core@current·AgentCoreImplCursor Core (current)
- agent-core-impl:gemini-cli.core@current·AgentCoreImplGemini CLI Core (current)
- agent-core-impl:langgraph.core@current·AgentCoreImplLangGraph Graph Core (current)
- agent-core-impl:opencode.core@1.x·AgentCoreImplOpenCode Core (1.x)
- model:gemini-2-0-flash@current·ModelVersionGemini 2.0 Flash
- model:gemini-2-5-flash@current·ModelVersionGemini 2.5 Flash
- model:gemini-2-5-pro@current·ModelVersionGemini 2.5 Pro
- model:gemini-3-1-deep-think@current·ModelVersionGemini 3.1 Deep Think
- model:gemini-3-1-flash-lite@current·ModelVersionGemini 3.1 Flash Lite
- model:gemini-3-1-pro@current·ModelVersionGemini 3.1 Pro
- model:gemini-3-flash@current·ModelVersionGemini 3 Flash
- model:gemini-3-pro@current·ModelVersionGemini 3 Pro