Wyze · Authentication Profile

Wyze Authentication

Authentication

Wyze secures its APIs with apiKey, http, oauth2, and openIdConnect across 5 declared security schemes, as derived from its OpenAPI definitions. OAuth 2.0 is offered via the authorizationCode, refreshToken, and jwt-bearer flow(s).

CompanySmart HomeInternet of ThingsHome SecurityCamerasConsumer ElectronicsHome AutomationVideoSensorsCommerce
Methods: apiKey, http, oauth2, openIdConnect Schemes: 5 OAuth flows: authorizationCode, refreshToken, jwt-bearer API key in: header

Security Schemes

WyzeApiKeyPair apiKey
· in: header ()
WyzeAccessToken http
scheme: bearer
WyzeRefreshToken http
scheme: bearer
WyzeCustomerAccountOIDC openIdConnect
· flows: authorizationCode, refreshToken, urn:ietf:params:oauth:grant-type:jwt-bearer
WyzeUCPAgentProfile apiKey
· in: request ()

Source

Authentication Profile

wyze-authentication.yml Raw ↑
generated: '2026-08-02'
method: searched
source: >-
  https://support.wyze.com/hc/en-us/articles/16129834216731-Creating-an-API-Key and
  https://www.wyze.com/.well-known/openid-configuration, plus live probes of
  auth-prod.api.wyze.com and api.wyzecam.com
docs: https://support.wyze.com/hc/en-us/articles/16129834216731-Creating-an-API-Key
notes: >-
  Wyze publishes no OpenAPI, so nothing here is derived from a spec - every scheme below
  is taken from Wyze's own published documentation or from a live, unauthenticated probe.
  Two entirely separate authentication models exist: (1) the device/cloud API, which uses
  a personal API Key + Key ID pair exchanged for bearer tokens; and (2) the Shopify-backed
  storefront customer account, which is a standards-compliant OIDC/OAuth 2.0 authorization
  code + PKCE surface with a published discovery document.
summary:
  types: [apiKey, http, oauth2, openIdConnect]
  api_key_in: [header]
  oauth2_flows: [authorizationCode, refreshToken, jwt-bearer]
  mfa: >-
    Wyze mandates 2-factor authentication for all customer accounts (per
    https://www.wyze.com/pages/security-trust); the login response carries mfa_options,
    mfa_details, sms_session_id and email_session_id fields.

schemes:
- name: WyzeApiKeyPair
  type: apiKey
  in: header
  parameter_names: [Keyid, Apikey]
  api: wyze:developer-api
  endpoint: https://auth-prod.api.wyze.com/api/user/login
  description: >-
    A personal API Key and API Key ID generated from the Wyze Developer API Console at
    https://developer-api-console.wyze.com/#/apikey/view. Both are sent as HTTP headers
    (Keyid, Apikey) on the login request along with a JSON body carrying the account
    email and a triple-MD5 hashed password. The credential is per-user, not per-app.
  constraints:
    keys_per_user: 1
    key_lifetime: 1 year from creation
    rotation: >-
      to rotate, delete the existing key in the console and create a new one; Wyze emails
      the account when a key is generated
    rate_limited: >-
      Wyze documents that the login endpoint is rate limited and instructs callers not to
      repeatedly call it to obtain tokens; no numeric limit is published

- name: WyzeAccessToken
  type: http
  scheme: bearer
  api: wyze:developer-api
  description: >-
    The access token returned by the login exchange (prefix observed in Wyze's published
    example as "lvtx."). Used against the api.wyzecam.com application endpoints.
  token_lifetime: 2 days

- name: WyzeRefreshToken
  type: http
  scheme: bearer
  api: wyze:developer-api
  endpoint: https://api.wyzecam.com/app/user/refresh_token
  description: >-
    The refresh token returned by the login exchange, POSTed to
    /app/user/refresh_token with the documented app_ver / app_version / phone_id / sc /
    sv constants ("wyze_developer_api") plus a ts timestamp, to mint a new access token
    and refresh token pair.
  token_lifetime: 30 days

- name: WyzeCustomerAccountOIDC
  type: openIdConnect
  openIdConnectUrl: https://www.wyze.com/.well-known/openid-configuration
  api: wyze:customer-account-mcp
  source: well-known/wyze-openid-configuration.json
  issuer: https://shopify.com/authentication/58004504738
  description: >-
    Shopify customer-accounts OIDC, served from Wyze's own hosts. Backs the storefront
    login and the customer account MCP server.
  endpoints:
    authorization: https://account.wyze.com/authentication/oauth/authorize
    token: https://account.wyze.com/authentication/oauth/token
    end_session: https://account.wyze.com/authentication/logout
    jwks: https://account.wyze.com/authentication/.well-known/jwks.json
  flows:
  - flow: authorizationCode
    pkce: [S256]
  - flow: refreshToken
  - flow: 'urn:ietf:params:oauth:grant-type:jwt-bearer'
  token_endpoint_auth_methods: [client_secret_basic]
  id_token_signing_alg: [RS256]
  response_types: [code]
  scopes: scopes/wyze-scopes.yml

- name: WyzeUCPAgentProfile
  type: apiKey
  in: request
  api: wyze:ucp
  description: >-
    The Universal Commerce Protocol MCP endpoint at /api/ucp/mcp requires the calling
    agent to present a resolvable agent profile URI; anonymous JSON-RPC tools/list is
    rejected with error -32001 invalid_profile_url / "Missing profile uri". The exact
    header/parameter name is not published by Wyze and was not guessed.
  observed_status: 422

unauthenticated_surfaces:
- surface: https://www.wyze.com/api/mcp
  note: storefront MCP server; tools/list and catalog/cart tools answer with no credentials
- surface: https://www.wyze.com/.well-known/ucp
  note: UCP merchant discovery document, public
- surface: https://www.wyze.com/llms.txt
  note: agent instructions, public