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.