Changelog/August 1, 2025
August 1, 2025

Map Your Data to Seam with Resource Keys

Changelog image for Map Your Data to Seam with Resource Keys

Map Your Data to Seam with Resource Keys

This week, we’re launching resource keys—fields that enable you to tag Seam resources with your own internal IDs. You can use them to link rooms, bookings, and customers in your system to the matching resources in Seam. You can also launch Connect Webviews with your customer IDs to track which connected devices and systems belong to each user.

Each resource includes a <resource>_key property in which you can store your own identifier. For example:

  • space_key for Spaces
  • user_identity_key for User Identities
  • access_grant_key for Access Grants
  • customer_key for Connect Webviews and Connected Accounts

Map a resource and then retrieve it

When you create a resource, add your custom resource key, for example, your room ID. Then, use that key to get the resource.

JavaScript
1// Create the space with the desired space_key.
2await seam.spaces.create({
3  name: "Valley Grove - Room 104",
4  acs_entrance_ids: [unit104Entrance.acs_entrance_id],
5  space_key: "room-104-id" // Your room ID
6})
7
8// Retrieve the space using this space_key.
9await seam.spaces.get({
10  space_key: "room-104-id"
11})

Associate Connected Accounts with your customers

When you create an instance of a Connect Webview, you can tag it with a unique customer_key. When your customer completes the authentication flow through this Connect Webview, Seam automatically copies the customer_key to the resulting Connected Account. You can then use the customer_key to retrieve the Connected Account consistently.

JavaScript
1// Create a Connect Webview for your customer, including the customer_key.
2await seam.connectWebviews.create({
3  accepted_providers: "",
4  customer_key: "customer-id" // Your unique identifier for the customer
5})
6
7// Once your customer has connected their devices or systems, 
8// you can get all Connected Accounts for this customer.
9const connected_accounts = await seam.connected_accounts.list({
10  customer_key: "customer-id"
11})
12
13let customerSystems = []
14for (const account of connectedAccounts) {
15  const systems = await seam.acs.systems.list({
16    connected_account_id: account.connected_account_id
17  });
18  customerSystems.push(...systems);
19}

Coming soon: Get resources by customer_key

Stay tuned! You’ll also be able to retrieve underlying resources associated with any Connected Account using a customer_key.

JavaScript
1await seam.acs.systems.list({
2	customer_key: "customer-id"
3})
4
5await seam.devices.list({
6	customer_key: "customer-id"
7})

Learn more

To get started using resource keys, see our docs.

2025.08.01 Changelog

New

  • Access Grant names: You can now specify a name when creating an Access Grant.
  • Find by ID in Seam Console: You can now find any resource by ID in Seam Console. In the upper-right corner of Seam Console, click Find by ID. Type or paste the UUID for which you want to search and press Enter.
  • Device simulations in Seam Console: We’ve added the ability to simulate disconnecting, connecting, and removing sandbox devices in Seam Console. On the Devices page—or on the Devices tab on the desired connected account page—click … and select the simulation that you want to perform.
  • Improved heating / cooling delta reporting: If a thermostat supports heat-cool mode, we now report the minimum and maximum heating and cooling set points, as well as the minimum heating-cooling delta.

Changed

  • Workspace invitation period: We’ve increased the timeout period for workspace invitations from one day to seven days.
  • More precise device images: In Seam Console and through the Seam API, we now display device images that are specific to each device model for August and Schlage devices. We plan to expand this feature to more providers soon.

Fixes

  • SmartThings lock events: We corrected an issue in which some SmartThings webhook events were not being delivered.
  • Battery level after replacement: We’ve made battery level reporting more consistent by detecting when we think a battery was replaced and then restart our battery level calculations starting from the replacement date.
By subscribing you agree to our Privacy Policy.
One API for All Devices
Global Infrastructure for Controlling the Physical World
Seam makes controlling IoT devices seamless and programmable. Our teams operate globally,
enabling businesses of all sizes.
Smart Locks
Access Systems
Knowledge
Lock Capabilities
Thermostats
Sensors
© 2026 Seam Labs, Inc.