User and Rate Limits

Device Access projects are restricted by user, structure, and rate limits, depending on the environment and type of Commercial offering.

We want developers to create compelling user experiences, but we also want the Nest service and devices to always be available for the user. Integrations that make a large number of requests in a given period of time can impact service and device availability, so the SDM API applies rate limits. Rate limiting restricts the number of API calls for a given time period and prevents overutilization of resources.

Limits by environment

All projects begin in the   Sandbox   environment. The Sandbox is intended for evaluation of the SDM API and personal use, and limits are restricted accordingly. Environments with larger user bases, such as   Commercial Development  , have different limits.

Sandbox user limits

A developer account in the Sandbox is limited to 25 users across 5 structures across all projects. There is a limit of 3 projects per account.

Structures are limited to 5 users each, so the user limit will only be reached once all 5 structures are maxed out with 5 users each. The developer account (which owns the project) does not count towards the 5 user limit for a structure.

Conversely, if a project has 15 users over 5 structures, additional users can only be added to the existing 5 structures, as the structure limit has already been reached.

Sandbox rate limits

The Sandbox is rate limited at 3 different levels. Limits are set at queries per minute (QPM) unless otherwise noted.

API level

API calls are limited per project, per user. See the API Reference for more information on individual methods.

API Method Rate Limit
devices.executeCommand 10 QPM
devices.get 10 QPM
devices.list 5 QPM
structures.get 5 QPM
structures.list 5 QPM
structures.rooms.get 5 QPM
structures.rooms.list 5 QPM

Command level

Each trait command (devices.executeCommand) is limited to 5 QPM per project, per user, per device.

That means if a project has 2 users with 2 devices each (4 total devices), the same command can be called 5 times in a minute for each of those 4 devices.

However, if a project has 2 users with 3 devices each for 6 total devices, the same command could not be called 5 times in a minute for each of those 6 devices. This would result in 15 QPM for each user, when the devices.executeCommand API level rate limit for a project's user is 10 QPM.

Device instance level

Additionally, device instance level limits are implemented across projects and commands (devices.executeCommand) for device battery protection. These limits are applied at both the QPM and queries per hour (QPH) levels and do not apply to the get and list API methods.

For example, suppose Project A and Project B both have access to the same device, Device A (perhaps the user has authorized two different commercial integrations that use the same device). If Project A has sent 4 commands to Device A within a minute, then Project B can only send 1 command to Device A in that same minute before the device instance level rate limit is hit. At that point, commands from both Projects to Device A are throttled until the end of the minute that began with the first command to Device A.

If a device type is not listed below, it does not have device instance level rate limits.

Device Type Device Instance Rate Limit
THERMOSTAT 5 QPM or 100 QPH
CAMERA 30 QPM or 100 QPH
DOORBELL 30 QPM or 100 QPH

Errors

The following error code(s) may be returned in relation to this guide:

Error Message RPC Troubleshooting
Rate limited. RESOURCE_EXHAUSTED Each developer has a quota limiting how many calls they can make. If you make more calls than your quota, you will receive the Rate limited message. To fix this, resubmit the call once the quota has expired.

See the API Error Code Reference for the full list of API error codes.