The Nest Developer program provides all the tools you need to design, develop, market, and launch your Works with Nest product.
The Nest API offers subscription-based access to data shared by Nest devices. With the Nest API, your Works with Nest product can interact with and react to this user data.
The purpose of the Nest API is to integrate third-party products with Nest products in the home (structure). A Works with Nest integration:
- Uses OAuth 2.0 to receive permission from the end user to gather information from the end user's Nest devices.
- Uses the Nest API to gather information from Nest devices.
- Uses that information to enhance the features available in your (non-Nest) device or app.
Works with Nest links
||https://home.nest.com||Manage devices as an end user|
|Developer portal||https://console.developers.nest.com||Manage Works with Nest integrations|
|Access token endpoint||https://api.home.nest.com/oauth2/access_token||Use for authorization|
|Works with Nest API endpoint||https://developer-api.nest.com||Make API calls|
|Nest Home Simulator||https://chrome.google.com/webstore/detail/nest-home-simulator/jmcapoebgeaabepohkchkldlfhchkega||Test with simulated structures and devices|
Quick Start Codelab
Discover how quick and easy it is to get started with the Nest API. Before digging too deep into the documentation, try out our Quick Start Codelab, which guides you through the entire integration workflow. In this Codelab you'll learn how to:
- Create a Works with Nest product (a client of the Nest API)
- Simulate Nest devices with the Nest Home Simulator
- Authorize the Works with Nest client using OAuth 2.0
- Read and write data in the Nest API using REST
Use this information to guide you through the complete Works with Nest development process.
- Learn about the Nest API
- Scope your Works with Nest product's use cases
- Brainstorm use cases
- Sketch out the UX flow
- Design and build your Works with Nest product
- Read our Developer Program Terms of Service
- Sign up for the Nest Developer program
- Familiarize yourself with our tools and resources
- Understand the product requirements
- Decide if you'll use REST and/or a real time connection
- Consider design decisions about your product and comply with the Nest design policies
- Register your product with the Nest Developer program
- Test your Works with Nest product
- Submit for product and marketing review
- Check that your product meets these guidelines, and then submit your product for review to launch Nest product review
- Check that your marketing assets and PR materials comply with the Nest design policies, and then send your planned Marketing assets & PR materials to us at firstname.lastname@example.org
- Launch your product with Works with Nest brand assets
A Works with Nest product integration follows this basic process:
- The developer creates and configures a Works with Nest product
- A user integrates this product with one or more Nest devices
- The product requests authorization via OAuth 2.0 to access the user's Nest data in the form of discrete permission levels
- User accepts authorization and grants permission to the product in the form of an access token
- The product uses this access token to access the user's data in the Nest service via the Nest API using a REST, REST Streaming, or Multiplex connection.
- The product reacts, or makes changes, to Nest structure or device states via the Nest API
Integrations can easily be tested against multiple virtual Nest structures and devices using the Nest Home Simulator.
The entire integration workflow is covered in our Works with Nest API Quick Start Codelab.
How it works
Data is stored in the Nest service as a shared JSON document. When a subscribed data value changes, the data values in the Nest service are updated to reflect the new state. Your product can then update a display or trigger an action, based on the new state of the subscribed data.
You can subscribe to individual data values or to parent data objects in the hierarchy. Learn more about subscriptions and how to access data locations by URL
The Nest service can be accessed by a few different methods:
|REST||Ad-hoc one-off calls, proof-of-concept labs, troubleshooting, apps that poll approximately every minute, refresh button implementations|
|REST streaming||Single clients connecting directly to Nest services.
Can also be used for cloud-to-cloud integrations if you don't want to use multiplex REST streaming.
|Multiplex REST streaming||Cloud-to-cloud integrations|
|Firebase SDK||Bidirectional client connections|
Sample use case
Let's say you want to create a Works with Nest product for the Nest Learning Thermostat that monitors two values: current temperature and target temperature. To watch for changes in both of these data attributes, you would subscribe to the thermostat object in a structure, and then:
- Your customer adjusts the temperature on their Nest Thermostat
- The target temperature value is updated in the Nest service
- Your product is notified of the target temperature change via the Nest API
- displays the new target temperature
- updates the current temperature as it is updated in the Nest service
Our developer guides are split into the following categories to aid in the development process:
|APIs||How the Nest service works, including in-depth guides for each major category of API functionality|
|Authorization||Provide users with a way to authorize access to their data in the Nest service|
|REST||Access the Nest service with REST|
|Real-time||Access the Nest service with a real-time connection|
|Account management||Manage your developer account and Works with Nest products|
|Design||What you should incorporate into your Works with Nest product design|
|Review||How we review Works with Nest products for a wider audience|
|Branding||Materials you can use for marketing and branding purposes|
Learn more about what's required in the design and development of successful Works with Nest products.
- Permission-based data and access control
- Web-based or PIN-based user authorization models
- Security protocol, based on OAuth2
- Technical requirements for your developer team
- Guidelines and compliance advice to successfully launch your Works with Nest product
Shared device data and access control
Your customers see an explanation of these permissions when they grant your product access to their Nest device data.
Permission to access data is always explicitly granted by the user. Users can revoke access at any time.
User authorization gives your customers a secure means to give you access to their Nest device data.
We offer both web-based and PIN-based authorization. PIN-based authorization is generally used for devices with no web UI and that have a numeric keypad interface.
We use OAuth 2.0 for authorization. OAuth is a means to securely create a trust agreement between a resource owner (a Nest user), a Works with Nest product (a product or service developed by a Nest developer), and a resource server (Nest's API servers).
Technical requirements for developers
You should have knowledge of the following:
- Frameworks/Platforms, such as: iOS, Android, Node.js, Django, Flask
- OAuth 2.0 for data authorization
Supported web browsers
You can access the Nest Developer Portal from these web browsers: Chrome, Firefox, IE, or Safari. If you get unexpected results, check for an update to the latest version of your preferred browser.
Guidelines and compliance
When you register for the Nest Developer program we'll ask you to agree to our Developer Program Terms of Service.
When you're ready to launch your product, you'll submit your Works with Nest product for review. Our review guidelines are available to ensure that your product provides a great user experience and uses the Nest brand assets properly.
We'll also conduct a Marketing review to check that you're promoting your Works with Nest product in compliance with our policies.
After you pass product and marketing review, you can launch your product as an official Works with Nest partner.