Gemini Robotics ER 2 vs Streaming: migrate before ER 1.6 shuts down
Quick answer
Google released two Gemini Robotics ER 2 preview endpoints on July 30, 2026:
-
gemini-robotics-er-2-previewfor request-based embodied reasoning, structured outputs, code execution, tool orchestration, video-progress analysis, and batch work. -
gemini-robotics-er-2-streaming-previewfor a persistent Live API session that receives continuous sensor input and returns low-latency function calls.
Google will shut down gemini-robotics-er-1.6-preview on August 31, 2026. A standard migration can start with a model-ID replacement, but moving to Streaming is an architecture change: it requires a stateful WebSocket session, a receive loop, blocking robot tools, and reconnect handling.
Do not make the model your physical safety controller. Keep deterministic limits, emergency stops, collision avoidance, authorization, and human approval outside the model. Google's model card says the Robotics Models should not be used for safety-critical work where failure could cause injury or property damage.
model proposes an action
-> policy validates arguments and authority
-> independent safety controller checks the physical state
-> robot executes one bounded action
-> observed result returns to the model
Who this is for
This guide is for robotics developers, embodied-AI teams, and agent builders already using ER 1.6 or evaluating ER 2 through Google AI Studio and the Gemini API. It is also useful if you need to decide between offline video analysis, request-based orchestration, and a live robot-control loop.
This is not a guide to the consumer Gemini app, the separate Gemini Robotics 2 vision-language-action model, or Gemini Robotics On-Device 2. ER 2 is the reasoning and orchestration layer exposed through the Gemini API; your robot API or action model still performs the physical action.
For general Gemini workload routing, see the Gemini 3.6 Flash vs 3.5 Flash-Lite migration guide. For evidence-bound agent completion, reuse the Goal evidence verification checklist.
Choose the endpoint by control loop
Both ER 2 endpoints accept text, image, video, and audio input and return text. Both list a 131,072-token input limit and 65,536-token output limit. Their execution contracts are different.
| Requirement | ER 2 standard | ER 2 Streaming |
|---|---|---|
| Model ID | gemini-robotics-er-2-preview |
gemini-robotics-er-2-streaming-preview |
| API shape | Interactions API request/response | Stateful Live API WebSocket |
| Best fit | Spatial reasoning, uploaded video, planning, progress analysis, batch evaluation | Continuous observation, reactive agents, multi-robot coordination |
| Function calling | Supported | Supported; physical actions must be BLOCKING
|
| Structured output | Supported | Not supported |
| Code execution / computer use | Supported | Not supported |
| File Search / URL context | Supported | Not supported |
| Context caching | Supported | Not supported |
| Batch API | Supported | Not supported |
| Live API | Not supported | Supported |
Use the standard endpoint when a task can be framed as one bounded observation and one bounded plan. Use Streaming only when the application genuinely needs a persistent feedback loop. Do not choose Streaming merely because “real time” sounds newer; it removes several standard-endpoint capabilities and adds session failure modes.
Account for the price change
Google lists the same standard token prices for both ER 2 endpoints:
| Model / mode | Paid input per 1M tokens | Paid output per 1M tokens | Batch |
|---|---|---|---|
| ER 1.6 standard | $1 text/image/video; $2 audio | $5 | $0.50 / $1 audio in, $2.50 out |
| ER 2 standard | $2 for text/image/video/audio | $10 | $1 in, $5 out |
| ER 2 Streaming | $2 for text/image/video/audio | $10 | Not available |
For text, image, or video workloads, ER 2 standard is a 2x per-token increase over ER 1.6 standard. Audio input remains $2 per million tokens, while output doubles. ER 2 standard batch restores a 50% discount; Streaming has no batch lane.
Measure cost per accepted robot task, not per API request:
accepted_task_cost =
(input_tokens * input_rate + output_tokens * output_rate) / 1_000_000
+ retries
+ failed-action recovery
+ sensor and robot runtime
A cheaper token path that causes repeated grasps or ambiguous tool calls is not cheaper operationally.
Migrate ER 1.6 in two lanes
Lane A: standard endpoint replacement
Freeze a representative fixture set before changing the model. Include clear and ambiguous images, short and long videos, one multi-step plan, one tool call, and one refusal or out-of-policy instruction. Then replace only the model ID:
from google import genai
client = genai.Client()
response = client.interactions.create(
model="gemini-robotics-er-2-preview",
input=[
{"type": "image", "uri": "", "mime_type": "image/jpeg"},
{"type": "text", "text": "Locate the marked container and return normalized [y, x] coordinates."},
],
generation_config={"thinking_level": "medium"},
)
print(response.output_text)
Compare spatial accuracy, task-success detection, tool arguments, latency, token use, and accepted-task cost against ER 1.6. Google's docs recommend medium thinking as a latency/performance balance; treat that as a starting point, not a universal optimum.
Lane B: Streaming architecture
Streaming uses a persistent session. The documented sensor contract is raw 16-bit little-endian PCM audio at 16 kHz, JPEG images at no more than one frame per second, and text. Video frames alone do not trigger a reasoning turn; send a text or audio prompt when the model should inspect the scene.
Declare every physical action with "behavior": "BLOCKING". The receive loop must execute one tool call, return its observed result, and let the model decide the next step. Add a timeout, cancellation path, reconnect policy, and a maximum action count. A network retry must never silently repeat a completed motor action.
Put a deterministic action gate in front of the robot
The model can plan; it cannot establish that an action is physically safe. Validate each tool call through four independent gates:
- Authority: Is this user and session allowed to invoke the named tool?
- Schema: Are position, speed, force, workspace, payload, and timeout within hard limits?
- State: Do current sensors, interlocks, and collision checks permit the action now?
- Confirmation: Does the action cross a human-approval boundary, such as entering a shared area or handling a fragile object?
Use deterministic robot firmware or a certified controller for emergency stops and motion limits. The model should receive a structured rejection such as outside_safe_workspace, not a bypass around the gate. The approval and confidence checklist offers a reusable pattern for keeping suggestions separate from authorized actions.
Eight migration acceptance tests
| Test | Pass condition |
|---|---|
| ER 1.6 fixture replay | ER 2 meets the pre-declared accuracy and accepted-task threshold without hidden prompt changes |
| Endpoint capability probe | Standard-only features never route to Streaming, and Live sessions never route to standard |
| Blocking action order | The next physical tool call is not issued before the prior tool response arrives |
| Lost connection after actuation | Reconnect reconciles an action ID and physical state; it does not repeat the motion |
| Out-of-range arguments | The deterministic gate rejects the call before the robot SDK receives it |
| Stale or ambiguous frame | The system asks for another observation or stops; it does not guess a physical target |
| Cost and latency envelope | Tokens, first-action latency, total task time, retries, and accepted-task cost stay within limits |
| Privacy and shutdown drill | Identifiable-person data follows notice/consent rules, and the service can fall back or stop before August 31 |
Also verify API-key restrictions. Google says unrestricted API keys are rejected for Robotics ER requests with 403 Forbidden; use a restricted server-side key and never ship it in robot firmware or a client app.
Copyable rollout record
gemini_robotics_er2_rollout:
checked_at: "2026-08-01T18:00:00+08:00"
old_model: "gemini-robotics-er-1.6-preview"
target_model: "gemini-robotics-er-2-preview | gemini-robotics-er-2-streaming-preview"
route: "request | streaming"
sdk_version: ""
fixture_count: 12
accepted_tasks: 0
p95_first_action_ms: 0
p95_total_task_ms: 0
mean_input_tokens: 0
mean_output_tokens: 0
accepted_task_cost_usd: 0
controls:
deterministic_motion_limits: true
emergency_stop_tested: true
duplicate_action_reconciliation: true
human_approval_boundary: ""
privacy_notice_and_consent: true
rollout: "hold | canary | enabled"
Common mistakes
Treating ER 2 as the motor controller. ER 2 returns text and tool calls. A separate robot API, VLA, and safety layer execute and constrain movement.
Changing the model ID and API architecture together. First prove the standard ER 2 replacement on frozen fixtures. Evaluate Streaming as a separate lane.
Using non-blocking physical tools. The robotics Live API supports only blocking function calls for physical actions. Parallel motor commands require an explicit deterministic coordinator outside the model.
Ignoring duplicate actions on reconnect. A delivered tool call, a completed physical action, and a lost response can otherwise produce a dangerous replay.
Collecting people on camera without a data boundary. Google's Robotics documentation requires notice and consent when identifiable people may be captured and recommends minimizing personal data, including face blurring where practical.
Calling a preview model production-safe. Preview availability and an impressive demo do not replace your hardware validation, risk analysis, or legal and safety review.
FAQ
When does Gemini Robotics ER 1.6 shut down?
Google's deprecation table lists August 31, 2026, with gemini-robotics-er-2-preview as the recommended replacement.
Is the Streaming endpoint always better?
No. It adds a Live API feedback loop but does not support Batch, caching, code execution, File Search, structured outputs, or URL context. Choose it only for continuous sensor-driven tasks.
Can I use non-blocking function calls for robot movement?
No. Google's robotics streaming guide says physical actions must use blocking behavior, and only blocking function calls are supported in the robotics Live API.
Does ER 2 directly control a robot?
Not by itself. It produces reasoning output and tool calls. Your robot functions, action model, motion controller, and safety system carry out and constrain the physical work.
Can ER 2 be used in safety-critical environments?
Google's model card says users should not use the Robotics Models for safety-critical work where malfunction could foreseeably cause death, injury, or property damage. Treat that as a hard product boundary, not a disclaimer to route around.
Top comments (0)