Cloud API Only: Google Nest cameras do not support RTSP, ONVIF, or any local streaming protocol. All video access goes through Google's Smart Device Management (SDM) API, which requires a Google Cloud project with billing enabled. There is a one-time $5 USD registration fee for SDM API access.
Supported Models
All Google Nest cameras and doorbells that support the SDM API are compatible with AgenticEye. Legacy "Works with Nest" cameras may require migration to a Google account first.
Prerequisites
- A Google Cloud Platform account with billing enabled
- A Google Nest account with cameras set up in the Google Home app
- The SDM API access fee paid ($5 USD one-time via the Device Access Console)
- OAuth 2.0 client credentials configured in Google Cloud Console
- A publicly accessible redirect URI for the OAuth flow (or use localhost for testing)
- AgenticEye server with internet access for API calls and WebRTC stream relay
Step-by-Step Integration
Create a Google Cloud Project
Go to the Google Cloud Console and create a new project (or use an existing one). Enable billing for the project — this is required for the SDM API.
# 1. Go to https://console.cloud.google.com
# 2. Create a new project: "AgenticEye Nest Integration"
# 3. Enable billing for the project
# 4. Note your Project ID — you'll need it later
# Enable the Smart Device Management API:
# APIs & Services > Library > Search "Smart Device Management"
# Click "Enable"
Register for Device Access
Visit the Google Device Access Console to register and create a Device Access project. This is separate from your Google Cloud project.
# 1. Go to https://console.nest.google.com/device-access
# 2. Pay the $5 USD registration fee
# 3. Create a new Device Access project
# 4. Set the OAuth client ID from your Google Cloud project
# 5. Note the Device Access Project ID:
# Format: enterprises/[project-id]
# Example: enterprises/a1b2c3d4-e5f6-7890-abcd-ef1234567890
Configure OAuth 2.0 Credentials
Create OAuth 2.0 credentials in your Google Cloud project for authenticating with the SDM API.
# In Google Cloud Console:
# APIs & Services > Credentials > Create Credentials > OAuth Client ID
# Application type: Web application
# Name: AgenticEye
# Authorized redirect URIs:
# https://your-agenticeye-server.com/auth/google/callback
# http://localhost:3000/auth/callback (for testing)
# Save the Client ID and Client Secret
Authorize AgenticEye to Access Your Nest Account
Complete the OAuth flow to grant AgenticEye permission to access your Nest cameras. This links your Google/Nest account to your AgenticEye instance.
# Construct the authorization URL:
https://nestservices.google.com/partnerconnections/[project-id]/auth
?redirect_uri=https://your-server.com/auth/google/callback
&access_type=offline
&prompt=consent
&client_id=[your-oauth-client-id]
&response_type=code
&scope=https://www.googleapis.com/auth/sdm.service
# After authorization, exchange the code for tokens:
curl -X POST https://oauth2.googleapis.com/token \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "client_id=[your-client-id]" \
-d "client_secret=[your-client-secret]" \
-d "code=[authorization-code]" \
-d "grant_type=authorization_code" \
-d "redirect_uri=https://your-server.com/auth/google/callback"
List Cameras via SDM API
Use the SDM API to discover all Nest cameras linked to your account.
# List all devices (cameras, doorbells, thermostats, etc.)
curl -X GET \
"https://smartdevicemanagement.googleapis.com/v1/enterprises/[project-id]/devices" \
-H "Authorization: Bearer [access-token]" \
-H "Content-Type: application/json"
# Example response (camera device):
{
"devices": [
{
"name": "enterprises/[project-id]/devices/AVPHw...",
"type": "sdm.devices.types.CAMERA",
"traits": {
"sdm.devices.traits.Info": {
"customName": "Front Door"
},
"sdm.devices.traits.CameraLiveStream": {
"maxVideoResolution": {
"width": 1920,
"height": 1080
},
"videoCodecs": ["H264"],
"audioCodecs": ["AAC"],
"supportedProtocols": ["WEB_RTC"]
}
}
}
]
}
Generate a Camera Live Stream
Request a live stream from a specific camera. The SDM API returns a WebRTC stream that AgenticEye proxies into a format usable by AI agents.
# Generate a WebRTC live stream
curl -X POST \
"https://smartdevicemanagement.googleapis.com/v1/enterprises/[project-id]/devices/[device-id]:executeCommand" \
-H "Authorization: Bearer [access-token]" \
-H "Content-Type: application/json" \
-d '{
"command": "sdm.devices.commands.CameraLiveStream.GenerateWebRtcStream",
"params": {
"offerSdp": "[WebRTC-SDP-offer-from-AgenticEye]"
}
}'
# Response includes the answer SDP for WebRTC negotiation:
{
"results": {
"answerSdp": "[WebRTC-SDP-answer]",
"expiresAt": "2026-03-12T12:00:00Z",
"mediaSessionId": "abc123..."
}
}
# Streams expire and must be renewed before the
# expiresAt timestamp using ExtendWebRtcStream
Configure in AgenticEye
Add your Google Nest configuration to AgenticEye. The platform handles WebRTC negotiation, stream renewal, and proxying automatically.
cameras:
- name: "Front Door - Nest Cam"
brand: google
model: "Nest Cam Indoor"
protocol: google_sdm
google_sdm:
project_id: "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
device_id: "AVPHwEuBfnPOnTqzVFT..."
client_id: "${GOOGLE_CLIENT_ID}"
client_secret: "${GOOGLE_CLIENT_SECRET}"
refresh_token: "${GOOGLE_REFRESH_TOKEN}"
# WebRTC stream auto-renewal
stream_renewal: true
renewal_buffer: 60 # Renew 60s before expiry
agents:
- type: security
sensitivity: high
- type: occupancy
count_mode: true
# Or auto-discover all Nest cameras:
google_sdm:
project_id: "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
client_id: "${GOOGLE_CLIENT_ID}"
client_secret: "${GOOGLE_CLIENT_SECRET}"
refresh_token: "${GOOGLE_REFRESH_TOKEN}"
auto_discover: true
default_agents:
- type: security
sensitivity: medium
Protocol Reference
# SDM API Base URL
https://smartdevicemanagement.googleapis.com/v1
# List all devices
GET /enterprises/[project-id]/devices
# Get single device
GET /enterprises/[project-id]/devices/[device-id]
# Generate WebRTC stream
POST /enterprises/[project-id]/devices/[device-id]:executeCommand
Command: sdm.devices.commands.CameraLiveStream.GenerateWebRtcStream
# Extend active stream
POST /enterprises/[project-id]/devices/[device-id]:executeCommand
Command: sdm.devices.commands.CameraLiveStream.ExtendWebRtcStream
# Stop stream
POST /enterprises/[project-id]/devices/[device-id]:executeCommand
Command: sdm.devices.commands.CameraLiveStream.StopWebRtcStream
# OAuth Token Endpoint
POST https://oauth2.googleapis.com/token
# Device Access Console
https://console.nest.google.com/device-access
Troubleshooting
Google Cloud billing required
The SDM API requires an active Google Cloud project with billing enabled. While the API itself has a free tier, Google requires a billing account to be linked. You will not be charged unless you exceed the free tier quotas (which is unlikely for camera integration). Additionally, the one-time $5 Device Access registration fee must be paid.
SDM API quota limits
The SDM API enforces rate limits: 10 queries per minute per device for live stream commands. AgenticEye manages stream renewal automatically, but if you encounter quota errors (HTTP 429), increase the renewal_buffer value to reduce renewal frequency. For multi-camera setups, stagger stream initialization.
WebRTC stream complexity
Nest cameras use WebRTC for live streaming, which requires ICE negotiation, STUN/TURN servers, and SDP exchange. AgenticEye handles this complexity internally via its WebRTC-to-RTSP proxy module. Ensure your server has UDP ports 10000-20000 open for ICE candidates and can reach Google's STUN servers.
OAuth token expired
Access tokens expire after 1 hour. AgenticEye automatically refreshes tokens using the stored refresh token. If you see authentication errors, verify your refresh_token is still valid. Refresh tokens can become invalid if you revoke access, change your Google password, or if the token is unused for 6 months.
Camera not appearing in device list
Ensure your Nest camera is set up in the Google Home app (not the legacy Nest app). Legacy Nest accounts must be migrated to Google accounts. During the OAuth authorization flow, make sure to select the specific cameras you want to share with AgenticEye — the user must explicitly grant access to each device.
Stream quality or latency issues
WebRTC streams through Google's cloud introduce inherent latency (typically 1-3 seconds). This is a limitation of the cloud-only architecture. For time-critical applications, consider supplementing Nest cameras with RTSP-capable cameras. Ensure your server has sufficient bandwidth — each 1080p stream requires approximately 2-4 Mbps.
Need help with your Google Nest integration?
The SDM API setup can be complex. Our integration team can walk you through the Google Cloud configuration and get your Nest cameras connected to AgenticEye.
Contact Our Integration Team