Skip to main content
Seam publishes a profile for every manufacturer it supports: your brand, your device models with their images and variants, what each model can do through each integration, and the apps that work with your devices through Seam. The Manufacturer API lets you read all of it, so you can build product pages, sync your catalog, or check how Seam describes your devices. It is the same data that powers Seam’s Ecosystem Components, and it reads only what Seam has published.

What You Can Retrieve

The base URL is https://ecosystem.seam.co/v1.

Try It

All published content is public, so you can try the API without a key by naming a manufacturer:
With your own manufacturer key, you can leave out manufacturer_slug, because the key implies your brand. From your servers, send a secret key as a bearer token:
See Keys and Authentication for the two kinds of key, how to get them, and what they unlock.

Requests

  • Every endpoint accepts GET with query parameters, or POST with the same parameters as a JSON body.
  • For list parameters, such as slugs, repeat the parameter or separate values with commas.
  • Successful responses include "ok": true.
  • The API allows cross-origin requests, so you can call it from a browser with an embed key.

Pagination

Device models are returned in pages, ordered by slug. Set limit (1–500) to choose the page size. When pagination.has_next_page is true, pass pagination.next_page_cursor as page_cursor to get the next page:

Localization

Capability reports, the text that explains how a capability works for a device, are available in English (en, the default) and French (fr). Set locale to choose one. Unknown locales fall back to English, and the response reports the locale it used.

Compression and Caching

  • Responses are compressed with Brotli or gzip when your client sends Accept-Encoding. A large manufacturer’s content is several megabytes uncompressed and about a tenth of that compressed, so always request compression. With curl, use --compressed.
  • Responses to anonymous and embed-key requests can be cached by shared caches such as CDNs for five minutes (Cache-Control: public, s-maxage=300, stale-while-revalidate=86400). They include an ETag, so you can send If-None-Match to get 304 Not Modified when nothing has changed.
  • Responses to secret-key requests are never cached (Cache-Control: no-store), because they can include data that is not public. Cache them on your own servers if you need to.

Rate Limits

The API limits how many requests you can make per minute:
  • Anonymous requests are limited per client IP address.
  • Embed-key requests are limited per key and per visitor IP address, so one visitor cannot use up your page’s budget.
  • Secret-key requests are limited per key.
The limits are well above typical use. If you exceed one, the API returns 429 with the error type rate_limited and a Retry-After header with the number of seconds to wait. The error’s data.limit_per_minute shows the limit that applied.

Errors

Errors return a non-2xx status and a JSON body:
Include the request_id when you contact Seam about an error.

Next Steps

If you have questions or want to correct how Seam describes your devices, email support@getseam.com.