> ## Documentation Index
> Fetch the complete documentation index at: https://www.seam.co/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Resolve an Embed Key

> Validates an embed key against the request's `Origin` and returns the key's public record and the manufacturer a manufacturer key scopes widgets to (`manufacturer_context`, null for other keys). For a partner key, it also returns what the partner's widgets must not show: the manufacturers, device types and providers the partner declared disabled or not supported through Seam and, given `capability`, the manufacturer and provider combinations excluded for that capability. Seam's device database widgets call this endpoint.

Seam's widgets call this endpoint for you. Call it yourself to check that an [embed key](/docs/device-manufacturer-guidance/manufacturer-api/keys#embed-keys) works from your site's origin.


## OpenAPI

````yaml device-manufacturer-guidance/manufacturer-api/openapi.json GET /embed/resolve
openapi: 3.1.0
info:
  title: Seam Ecosystem API
  version: 1.0.0
  description: >-
    Read what Seam publishes about the devices it supports: manufacturers,
    device models with their images, variants and capabilities, the providers
    that integrate them, and the partner apps that support them through Seam.


    Every endpoint accepts `GET` with query parameters, or `POST` with the same
    parameters as a JSON body. Successful responses include `"ok": true`.
    Published content is public, so you can call most endpoints without a key.
    Send an embed key from a browser, or a secret key from your servers, to
    identify yourself.
servers:
  - url: https://ecosystem.seam.co/v1
security: []
externalDocs:
  description: Manufacturer API guide
  url: https://www.seam.co/docs/device-manufacturer-guidance/manufacturer-api
paths:
  /embed/resolve:
    get:
      tags:
        - compatibility
        - embed-keys
      summary: Resolve an embed key
      description: >-
        Validates an embed key against the request's `Origin` and returns the
        key's public record and the manufacturer a manufacturer key scopes
        widgets to (`manufacturer_context`, null for other keys). For a partner
        key, it also returns what the partner's widgets must not show: the
        manufacturers, device types and providers the partner declared disabled
        or not supported through Seam and, given `capability`, the manufacturer
        and provider combinations excluded for that capability. Seam's device
        database widgets call this endpoint.
      parameters:
        - name: capability
          in: query
          required: false
          schema:
            default: ''
            description: >-
              DeviceDB capability the widget is rendering (capability_name);
              adds capability_exclusions.
            type: string
            pattern: ^[a-z0-9_]*$
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $schema: https://json-schema.org/draft/2020-12/schema
                type: object
                properties:
                  embed_key:
                    type: object
                    properties:
                      embed_key_id:
                        type: string
                        format: uuid
                        pattern: >-
                          ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
                        description: Ecosystem UUID of the key.
                      display_name:
                        type: string
                        description: Display name.
                      owner_kind:
                        type: string
                        enum:
                          - partner
                          - manufacturer
                          - seam
                        description: 'Who owns the key: `partner`, `manufacturer` or `seam`.'
                      partner_id:
                        anyOf:
                          - type: string
                            format: uuid
                            pattern: >-
                              ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
                          - type: 'null'
                        description: The owning partner's UUID; null for other owners.
                      manufacturer_slug:
                        description: The owning manufacturer's slug; null for other owners.
                        type:
                          - string
                          - 'null'
                      allowed_origins:
                        type: array
                        items:
                          type: string
                        description: >-
                          Origins allowed to use the key, as globs; localhost is
                          always allowed.
                      config:
                        type: object
                        propertyNames:
                          type: string
                        additionalProperties: {}
                        description: Widget configuration stored with the key.
                      revoked_at:
                        anyOf:
                          - type: string
                            format: date-time
                            pattern: >-
                              ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z))$
                          - type: 'null'
                        description: >-
                          When the key was revoked (ISO 8601); null while
                          active.
                      created_at:
                        type: string
                        format: date-time
                        pattern: >-
                          ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z))$
                        description: Creation time (ISO 8601).
                    required:
                      - embed_key_id
                      - display_name
                      - owner_kind
                      - partner_id
                      - manufacturer_slug
                      - allowed_origins
                      - config
                      - revoked_at
                      - created_at
                    additionalProperties: false
                    description: The key's public record, without the key value.
                  manufacturer_context:
                    anyOf:
                      - type: object
                        properties:
                          manufacturer_slug:
                            type: string
                            description: The manufacturer widgets default their filter to.
                        required:
                          - manufacturer_slug
                        additionalProperties: false
                      - type: 'null'
                    description: >-
                      Set for manufacturer-owned keys; null for partner and Seam
                      keys.
                  exclusions:
                    type: object
                    properties:
                      excluded_manufacturers:
                        type: array
                        items:
                          type: string
                        description: >-
                          DeviceDB manufacturer slugs declared disabled or not
                          via Seam.
                      excluded_device_types:
                        type: array
                        items:
                          type: string
                        description: >-
                          DeviceDB device_type slugs (device categories)
                          declared disabled.
                      unsupported_providers:
                        type: array
                        items:
                          type: string
                        description: >-
                          DeviceDB provider slugs declared disabled or not via
                          Seam.
                      capability:
                        type: string
                        description: >-
                          The capability the exclusions below were resolved for;
                          empty when none was requested.
                      capability_exclusions:
                        type: array
                        items:
                          type: object
                          properties:
                            device_category:
                              type: string
                              description: Device category, e.g. `smartlock`.
                            manufacturer_slug:
                              type: string
                              description: Empty means every manufacturer in the category.
                            provider_slug:
                              type: string
                              description: Empty means every provider in the category.
                          required:
                            - device_category
                            - manufacturer_slug
                            - provider_slug
                          additionalProperties: false
                        description: >-
                          Combinations the partner must not show for that
                          capability because of a capability-level declaration
                          (e.g. mobile keys disabled on Salto KS).
                    required:
                      - excluded_manufacturers
                      - excluded_device_types
                      - unsupported_providers
                      - capability
                      - capability_exclusions
                    additionalProperties: false
                    description: >-
                      What a partner key's widgets must not show; empty for
                      other keys.
                  ok:
                    type: boolean
                    const: true
                    description: Always `true` on success.
                required:
                  - embed_key
                  - manufacturer_context
                  - exclusions
                  - ok
                additionalProperties: false
        '400':
          description: Invalid parameters
          content:
            application/json:
              schema:
                $schema: https://json-schema.org/draft/2020-12/schema
                type: object
                properties:
                  ok:
                    type: boolean
                    const: false
                    description: Always `false` on error.
                  error:
                    type: object
                    properties:
                      type:
                        type: string
                        description: Machine-readable error type.
                      message:
                        type: string
                        description: Human-readable error message.
                      request_id:
                        type: string
                        description: Request ID to include when you contact Seam.
                      data:
                        description: >-
                          Details for some error types, such as validation
                          issues.
                        type: object
                        propertyNames:
                          type: string
                        additionalProperties: {}
                    required:
                      - type
                      - message
                      - request_id
                    additionalProperties: false
                required:
                  - ok
                  - error
                additionalProperties: false
        '401':
          description: The key is unknown, revoked or unsupported
          content:
            application/json:
              schema:
                $schema: https://json-schema.org/draft/2020-12/schema
                type: object
                properties:
                  ok:
                    type: boolean
                    const: false
                    description: Always `false` on error.
                  error:
                    type: object
                    properties:
                      type:
                        type: string
                        description: Machine-readable error type.
                      message:
                        type: string
                        description: Human-readable error message.
                      request_id:
                        type: string
                        description: Request ID to include when you contact Seam.
                      data:
                        description: >-
                          Details for some error types, such as validation
                          issues.
                        type: object
                        propertyNames:
                          type: string
                        additionalProperties: {}
                    required:
                      - type
                      - message
                      - request_id
                    additionalProperties: false
                required:
                  - ok
                  - error
                additionalProperties: false
        '403':
          description: >-
            The key does not allow this request, such as an origin that is not
            allowed
          content:
            application/json:
              schema:
                $schema: https://json-schema.org/draft/2020-12/schema
                type: object
                properties:
                  ok:
                    type: boolean
                    const: false
                    description: Always `false` on error.
                  error:
                    type: object
                    properties:
                      type:
                        type: string
                        description: Machine-readable error type.
                      message:
                        type: string
                        description: Human-readable error message.
                      request_id:
                        type: string
                        description: Request ID to include when you contact Seam.
                      data:
                        description: >-
                          Details for some error types, such as validation
                          issues.
                        type: object
                        propertyNames:
                          type: string
                        additionalProperties: {}
                    required:
                      - type
                      - message
                      - request_id
                    additionalProperties: false
                required:
                  - ok
                  - error
                additionalProperties: false
        '429':
          description: Rate limited
          content:
            application/json:
              schema:
                $schema: https://json-schema.org/draft/2020-12/schema
                type: object
                properties:
                  ok:
                    type: boolean
                    const: false
                    description: Always `false` on error.
                  error:
                    type: object
                    properties:
                      type:
                        type: string
                        description: Machine-readable error type.
                      message:
                        type: string
                        description: Human-readable error message.
                      request_id:
                        type: string
                        description: Request ID to include when you contact Seam.
                      data:
                        description: >-
                          Details for some error types, such as validation
                          issues.
                        type: object
                        propertyNames:
                          type: string
                        additionalProperties: {}
                    required:
                      - type
                      - message
                      - request_id
                    additionalProperties: false
                required:
                  - ok
                  - error
                additionalProperties: false
          headers:
            Retry-After:
              description: Seconds to wait before retrying.
              schema:
                type: integer
      security:
        - embed_key: []
        - embed_key_param: []
components:
  securitySchemes:
    embed_key:
      type: apiKey
      in: header
      name: X-Embed-Key
      description: >-
        An embed key (`eco_live_…`) for browser requests; the request's `Origin`
        must match one of the key's allowed origins. Optional on most endpoints,
        but `embed/resolve` always needs one, and so does `compatibility` from a
        browser on a site other than seam.co. A manufacturer embed key implies
        its manufacturer.
    embed_key_param:
      type: apiKey
      in: query
      name: embed_key
      description: >-
        An embed key sent as the `embed_key` query parameter instead of the
        `X-Embed-Key` header.

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.