Skip to main content
Ecosystem Components are two Seam Components that show data from the Seam Ecosystem on your own website: the apps that work with Seam, and the device models that Seam supports. Use them on a manufacturer’s product page to list the apps a lock works with, or on an app’s integrations page to list the devices its customers can connect.

Compatible Apps

<seam-compatible-apps> lists the apps that work with a device category, manufacturer, provider, or capability through Seam.

Supported Devices

<seam-supported-devices> lists device models with capability checks, provider requirements, compatible accessories, search, and filters.
Unlike the other Seam Components, Ecosystem Components do not need a publishable key, a client session token, or a Seam workspace. They read public data only, and they authenticate with an embed key. Both components ship in @seamapi/react 5.1.0 and later. Try them with sample data in the interactive component library.

Before You Begin

To embed the components, you need an embed key. Embed keys start with eco_live_. Create one yourself in Seam Console: go to Organization settings > Partner profile > Keys, then select Create embed key and enter the origins you embed on. Console also shows a ready-to-paste snippet for your key. You can edit the origins later without changing the key. Your Console organization must be linked to the app (partner) or device manufacturer it represents. If it isn’t linked yet, email support@getseam.com. Manufacturer keys are available once Seam has confirmed that your organization represents the manufacturer.
Enter full origins, including the scheme and any non-default port, not bare hostnames. Seam matches them against the browser’s Origin header, so example.com matches nothing while https://example.com matches. Include every environment you embed on:
Wildcards are supported, so https://*.preview.example.com covers your preview subdomains. Seam adds http://localhost and http://127.0.0.1 on any port to every key, so the components also work on your development server.

How the Embed Key Works

An embed key is not a Seam API key and carries no account access. It identifies your embed, and it only works on the origins registered for it.
  • A request from a registered origin succeeds.
  • A request from any other origin fails with 403 origin_not_allowed.
  • Matching is on the whole origin, scheme included. https://example.com and http://example.com are different origins, and so are https://example.com and https://www.example.com.
Because of this, the key is safe to include in your page’s HTML, where anyone can read it. Someone who copies it cannot use it on their own site. What the key does also depends on who it belongs to:
  • Manufacturer key: Supported Devices defaults to your brand’s devices, so you can drop it on a product page without any other attributes.
  • App (partner) key: Supported Devices hides the manufacturers, device types, and providers you have told Seam you do not support.
To add or remove origins later, select Edit on the key in Console’s Keys screen. The key itself doesn’t change, so your pages keep working without an update. The new origins take effect within a minute, and the components stop loading on any origin you remove. Manufacturers can also read the same data from their own servers with a secret key. See the Manufacturer API and Keys and Authentication.

Add the Components to Your Site

Load ecosystem.js from the Seam CDN, then place the elements anywhere on the page.
ecosystem.js contains only the two Ecosystem Components, without the Seam API client, so it stays small (about 66 kB gzipped). If your page already loads elements.js for other Seam Components, it defines these elements too, so you do not need both.Pin an explicit version in production so a new release cannot change your page unexpectedly. To upgrade, change the version in the URL. See the releases for available versions.Boolean attributes work with or without a value: hide-search and hide-search="true" are equivalent, and hide-search="false" turns the option off.

Shared Attributes

Both components accept these attributes in addition to their own. In React, use the camel-cased prop name on EcosystemProvider (or SeamProvider), except for className, which goes on the component itself.

Dark Mode

Set theme on each component:
  • light (default) always renders the light theme.
  • dark always renders the dark theme.
  • auto follows the visitor’s operating system or browser color scheme (prefers-color-scheme).
If your site has its own theme toggle, set theme to light or dark from it instead of using auto. The components use a light-on-dark logo variant in the dark theme when one is available.

Styles and Fonts

By default, each component adds two stylesheets to the page’s <head>: the Seam Components CSS from https://react.seam.co and the Source Sans Pro font from Google Fonts. The components fall back to your system sans-serif font if the font does not load. To host the CSS yourself, set disable-css-injection and either import it with your bundler or link to it, matching the version you load:
The components render in your page’s DOM, not in a shadow root, and their class names start with seam-. Use class-name to add your own class to a component’s container. The seam- class names themselves are not a stable API and may change between releases.

Content Security Policy

If your site sets a Content Security Policy (CSP), allow the following sources: For example, with the default settings:

Troubleshooting

When a request fails, the component shows a message in place of the list. The Seam Ecosystem API returns an error type that you can see in your browser’s network tab.
The API returned 401 embed_key_required. The component has no embed-key, and the page is not on a Seam-owned domain. Add embed-key to the element, or embedKey to the provider in React.
The API returned 401 invalid_embed_key. Check for a truncated or misquoted value, and confirm you are using an eco_live_ embed key rather than a Seam publishable key or API key. If the key was revoked, create a new one in Console.
The API returned 403 origin_not_allowed. The origin serving the page is not registered for your key. Check the scheme, the www. prefix, and the port. To add an origin, select Edit on the key in Console and add it. The key doesn’t change.
Confirm that the script tag includes type="module" and that the CDN URL loads. Custom elements upgrade once their definition loads, so a blocked or misspelled script URL leaves the element on the page with nothing inside it. If your site sets a CSP, check the browser console for blocked requests and see Content Security Policy.
The stylesheet from https://react.seam.co did not load. Allow it in your CSP’s style-src, or set disable-css-injection and load the CSS yourself.
The components show live data from the Seam Ecosystem. To report a missing app or device, or incorrect details, email support@getseam.com.

Next Steps

If you have questions or want to report an issue, email support@getseam.com.