Clerk Email Addresses API

A user can be associated with one or more email addresses, which allows them to be contacted via email.

Operations 10

POST /email_addresses Create an Email Address #
GET /email_addresses/{email_address_id} Retrieve an Email Address #
DELETE /email_addresses/{email_address_id} Delete an Email Address #
PATCH /email_addresses/{email_address_id} Update an Email Address #
GET /v1/me/email_addresses Get Email Addresses #
POST /v1/me/email_addresses Create Email Address #
POST /v1/me/email_addresses/{email_id}/attempt_verification Attempt Email Address Verification #
POST /v1/me/email_addresses/{email_id}/prepare_verification Prepare Email Address Verification #
GET /v1/me/email_addresses/{email_id} Get Email Address #
DELETE /v1/me/email_addresses/{email_id} Delete Email Address #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/clerk-com-email-addresses-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

clerk-com-email-addresses-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Clerk Com Email Addresses API
  termsOfService: https://clerk.com/terms
  x-logo:
    url: https://clerk.com/_next/image?url=%2Fimages%2Fclerk-logo.svg&w=96&q=75
    altText: Clerk docs
    href: https://clerk.com/docs
  version: '1.0'
  description: 'Operations tagged Email Addresses across 2 of this provider''s published API definitions: clerk-backend-api-openapi.yml, clerk-frontend-api-openapi.yml. Each path carries the servers of the definition it was published in.'
servers:
- url: https://api.clerk.com/v1
- url: https://{domain}.clerk.accounts.dev
  variables:
    domain:
      default: example-destined-camel-13
      description: Your Development Instance Frontend API Domain.
tags:
- name: Email Addresses
  description: A user can be associated with one or more email addresses, which allows them to be contacted via email.
  externalDocs:
    url: https://clerk.com/docs/references/javascript/types/email-address
paths:
  /email_addresses:
    post:
      operationId: CreateEmailAddress
      x-speakeasy-group: emailAddresses
      x-speakeasy-name-override: create
      tags:
      - Email Addresses
      summary: Create an Email Address
      description: Create a new email address
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                user_id:
                  type: string
                  description: The ID representing the user
                email_address:
                  type: string
                  description: The new email address. Must adhere to the RFC 5322 specification for email address format.
                verified:
                  type:
                  - boolean
                  - 'null'
                  description: When created, the email address will be marked as verified.
                primary:
                  type:
                  - boolean
                  - 'null'
                  description: 'Create this email address as the primary email address for the user.

                    Default: false, unless it is the first email address.'
              required:
              - user_id
              - email_address
      responses:
        '200':
          $ref: '#/components/responses/EmailAddress'
        '400':
          $ref: '#/components/responses/ClerkErrors'
        '401':
          $ref: '#/components/responses/AuthenticationInvalid'
        '403':
          $ref: '#/components/responses/AuthorizationInvalid'
        '404':
          $ref: '#/components/responses/ResourceNotFound'
        '409':
          $ref: '#/components/responses/Conflict'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
      security:
      - bearerAuth: []
    servers:
    - url: https://api.clerk.com/v1
  /email_addresses/{email_address_id}:
    get:
      operationId: GetEmailAddress
      x-speakeasy-group: emailAddresses
      x-speakeasy-name-override: get
      x-speakeasy-usage-example: true
      tags:
      - Email Addresses
      summary: Retrieve an Email Address
      description: Returns the details of an email address.
      parameters:
      - name: email_address_id
        in: path
        description: The ID of the email address to retrieve
        required: true
        schema:
          type: string
      responses:
        '200':
          $ref: '#/components/responses/EmailAddress'
        '400':
          $ref: '#/components/responses/ClerkErrors'
        '401':
          $ref: '#/components/responses/AuthenticationInvalid'
        '403':
          $ref: '#/components/responses/AuthorizationInvalid'
        '404':
          $ref: '#/components/responses/ResourceNotFound'
      security:
      - bearerAuth: []
    delete:
      operationId: DeleteEmailAddress
      x-speakeasy-group: emailAddresses
      x-speakeasy-name-override: delete
      tags:
      - Email Addresses
      summary: Delete an Email Address
      description: Delete the email address with the given ID
      parameters:
      - name: email_address_id
        in: path
        description: The ID of the email address to delete
        required: true
        schema:
          type: string
      responses:
        '200':
          $ref: '#/components/responses/DeletedObject'
        '400':
          $ref: '#/components/responses/ClerkErrors'
        '401':
          $ref: '#/components/responses/AuthenticationInvalid'
        '403':
          $ref: '#/components/responses/AuthorizationInvalid'
        '404':
          $ref: '#/components/responses/ResourceNotFound'
        '409':
          $ref: '#/components/responses/Conflict'
      security:
      - bearerAuth: []
    patch:
      operationId: UpdateEmailAddress
      x-speakeasy-group: emailAddresses
      x-speakeasy-name-override: update
      tags:
      - Email Addresses
      summary: Update an Email Address
      description: Updates an email address.
      parameters:
      - name: email_address_id
        in: path
        description: The ID of the email address to update
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                verified:
                  type:
                  - boolean
                  - 'null'
                  description: The email address will be marked as verified.
                primary:
                  type:
                  - boolean
                  - 'null'
                  description: Set this email address as the primary email address for the user.
      responses:
        '200':
          $ref: '#/components/responses/EmailAddress'
        '400':
          $ref: '#/components/responses/ClerkErrors'
        '401':
          $ref: '#/components/responses/AuthenticationInvalid'
        '403':
          $ref: '#/components/responses/AuthorizationInvalid'
        '404':
          $ref: '#/components/responses/ResourceNotFound'
        '409':
          $ref: '#/components/responses/Conflict'
      security:
      - bearerAuth: []
    servers:
    - url: https://api.clerk.com/v1
  /v1/me/email_addresses:
    get:
      operationId: getEmailAddresses
      summary: Get Email Addresses
      description: Retrieve all the email addresses associated with the current user.
      tags:
      - Email Addresses
      parameters:
      - in: query
        name: _clerk_session_id
        schema:
          type: string
        description: The session_id associated with the requesting user.
      responses:
        '200':
          $ref: '#/components/responses/Server.UserEmailAddresses'
        '401':
          $ref: '#/components/responses/ClerkErrors'
        '403':
          $ref: '#/components/responses/ClerkErrors'
        '404':
          $ref: '#/components/responses/ClerkErrors'
      security:
      - {}
      - DevBrowser: []
      - ProductionBrowser: []
      - ProductionNativeApp: []
        ProductionNativeFlag: []
    post:
      summary: Create Email Address
      description: Add an email address to the current user. The address then needs to be verified using the `prepare_verification` and `attempt_verification` endpoints.
      operationId: createEmailAddresses
      tags:
      - Email Addresses
      parameters:
      - in: query
        name: _clerk_session_id
        schema:
          type: string
        description: The session_id associated with the requesting user.
      requestBody:
        content:
          application/x-www-form-urlencoded:
            schema:
              type: object
              properties:
                email_address:
                  type: string
                  description: The email address to be added to the user.
              required:
              - email_address
      responses:
        '200':
          $ref: '#/components/responses/Client.ClientWrappedEmailAddress'
        '400':
          $ref: '#/components/responses/ClerkErrors'
        '401':
          $ref: '#/components/responses/ClerkErrors'
        '403':
          $ref: '#/components/responses/ClerkErrors'
        '404':
          $ref: '#/components/responses/ClerkErrors'
        '422':
          $ref: '#/components/responses/ClerkErrors'
      security:
      - {}
      - DevBrowser: []
      - ProductionBrowser: []
      - ProductionNativeApp: []
        ProductionNativeFlag: []
    servers:
    - url: https://{domain}.clerk.accounts.dev
      variables:
        domain:
          default: example-destined-camel-13
          description: Your Development Instance Frontend API Domain.
  /v1/me/email_addresses/{email_id}/attempt_verification:
    post:
      operationId: verifyEmailAddress
      description: Attempt to verify an email address that was previously created.
      summary: Attempt Email Address Verification
      tags:
      - Email Addresses
      parameters:
      - in: path
        required: true
        name: email_id
        schema:
          type: string
        description: The email_id.
      - in: query
        name: _clerk_session_id
        schema:
          type: string
        description: The session_id associated with the requesting user.
      requestBody:
        content:
          application/x-www-form-urlencoded:
            schema:
              type: object
              properties:
                code:
                  type: string
                  description: The code that was previously sent to the email address.
              required:
              - code
      responses:
        '200':
          $ref: '#/components/responses/Client.ClientWrappedEmailAddress'
        '400':
          $ref: '#/components/responses/ClerkErrors'
        '401':
          $ref: '#/components/responses/ClerkErrors'
        '403':
          $ref: '#/components/responses/ClerkErrors'
        '404':
          $ref: '#/components/responses/ClerkErrors'
        '422':
          $ref: '#/components/responses/ClerkErrors'
      security:
      - {}
      - DevBrowser: []
      - ProductionBrowser: []
      - ProductionNativeApp: []
        ProductionNativeFlag: []
    servers:
    - url: https://{domain}.clerk.accounts.dev
      variables:
        domain:
          default: example-destined-camel-13
          description: Your Development Instance Frontend API Domain.
  /v1/me/email_addresses/{email_id}/prepare_verification:
    post:
      description: 'Depending on the given strategy, the API will prepare the verification for the email address.

        In particular, * for `email_code`, the API will send a verification email to the address containing a code. * for `email_link`, the API will send a verification email to the address containing a link to the verification attempt endpoint. * for `enterprise_sso`, the API will send an external redirect URL to the browser containing a link to the SSO verification endpoint.'
      summary: Prepare Email Address Verification
      tags:
      - Email Addresses
      operationId: sendVerificationEmail
      parameters:
      - in: path
        name: email_id
        required: true
        schema:
          type: string
        description: The email_id.
      - in: query
        name: _clerk_session_id
        schema:
          type: string
        description: The session_id associated with the requesting user.
      requestBody:
        content:
          application/x-www-form-urlencoded:
            schema:
              type: object
              properties:
                strategy:
                  type: string
                  description: The strategy to be prepared for email verification.
                  enum:
                  - email_code
                  - email_link
                  - enterprise_sso
                redirect_url:
                  type:
                  - string
                  - 'null'
                  description: Used with the `email_link` strategy.
                action_complete_redirect_url:
                  type:
                  - string
                  - 'null'
                  description: Used with `oauth_[provider]` and `saml` strategies.
              required:
              - strategy
      responses:
        '200':
          $ref: '#/components/responses/Client.ClientWrappedEmailAddress'
        '401':
          $ref: '#/components/responses/ClerkErrors'
        '403':
          $ref: '#/components/responses/ClerkErrors'
        '404':
          $ref: '#/components/responses/ClerkErrors'
        '422':
          $ref: '#/components/responses/ClerkErrors'
      security:
      - {}
      - DevBrowser: []
      - ProductionBrowser: []
      - ProductionNativeApp: []
        ProductionNativeFlag: []
    servers:
    - url: https://{domain}.clerk.accounts.dev
      variables:
        domain:
          default: example-destined-camel-13
          description: Your Development Instance Frontend API Domain.
  /v1/me/email_addresses/{email_id}:
    get:
      summary: Get Email Address
      description: Retrieve an email address by ID.
      tags:
      - Email Addresses
      operationId: getEmailAddress
      parameters:
      - in: path
        name: email_id
        required: true
        schema:
          type: string
        description: The email_id.
      - in: query
        name: _clerk_session_id
        schema:
          type: string
        description: The session_id associated with the requesting user.
      responses:
        '200':
          $ref: '#/components/responses/Client.ClientWrappedEmailAddress'
        '401':
          $ref: '#/components/responses/ClerkErrors'
        '403':
          $ref: '#/components/responses/ClerkErrors'
        '404':
          $ref: '#/components/responses/ClerkErrors'
      security:
      - {}
      - DevBrowser: []
      - ProductionBrowser: []
      - ProductionNativeApp: []
        ProductionNativeFlag: []
    delete:
      summary: Delete Email Address
      description: Delete an email address by ID.
      tags:
      - Email Addresses
      operationId: DeleteEmailAddress
      parameters:
      - in: path
        name: email_id
        required: true
        schema:
          type: string
        description: The email_id.
      - in: query
        name: _clerk_session_id
        schema:
          type: string
        description: The session_id associated with the requesting user.
      responses:
        '200':
          $ref: '#/components/responses/Client.ClientWrappedDeletedObject'
        '400':
          $ref: '#/components/responses/ClerkErrors'
        '401':
          $ref: '#/components/responses/ClerkErrors'
        '403':
          $ref: '#/components/responses/ClerkErrors'
        '404':
          $ref: '#/components/responses/ClerkErrors'
      security:
      - {}
      - DevBrowser: []
      - ProductionBrowser: []
      - ProductionNativeApp: []
        ProductionNativeFlag: []
    servers:
    - url: https://{domain}.clerk.accounts.dev
      variables:
        domain:
          default: example-destined-camel-13
          description: Your Development Instance Frontend API Domain.
components:
  responses:
    ResourceNotFound:
      description: Resource not found
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ClerkErrors'
    DeletedObject:
      description: Deleted Object
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/DeletedObject'
    UnprocessableEntity:
      description: Invalid request parameters
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ClerkErrors'
    AuthenticationInvalid:
      description: Authentication invalid
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ClerkErrors'
    EmailAddress:
      description: Success
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/EmailAddress'
    ClerkErrors:
      description: Request was not successful
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ClerkErrors'
    AuthorizationInvalid:
      description: Authorization invalid
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ClerkErrors'
    Conflict:
      description: Conflict
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ClerkErrors'
    Client.ClientWrappedDeletedObject:
      description: Returns a deleted generic object.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Client.ClientWrappedDeletedObject'
    Client.ClientWrappedEmailAddress:
      description: Returns the response for Session wrapped Email object.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Client.ClientWrappedEmailAddress'
    Server.UserEmailAddresses:
      description: Returns UserEmailAddresses array.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Server.UserEmailAddresses'
  schemas:
    DeletedObject:
      type: object
      additionalProperties: false
      properties:
        object:
          type: string
        id:
          type: string
        slug:
          type: string
        deleted:
          type: boolean
        external_id:
          type: string
      required:
      - object
      - deleted
    EmailAddress:
      type: object
      additionalProperties: false
      properties:
        id:
          type: string
        object:
          type: string
          x-speakeasy-unknown-values: allow
          description: 'String representing the object''s type. Objects of the same type share the same value.

            '
          enum:
          - email_address
        email_address:
          type: string
        reserved:
          type: boolean
        verification:
          type:
          - object
          - 'null'
          oneOf:
          - $ref: '#/components/schemas/verification_otp'
          - $ref: '#/components/schemas/verification_admin'
          - $ref: '#/components/schemas/verification_from_oauth'
          - $ref: '#/components/schemas/verification_ticket'
          - $ref: '#/components/schemas/verification_saml'
          - $ref: '#/components/schemas/verification_email_link'
          discriminator:
            propertyName: object
            mapping:
              verification_otp: '#/components/schemas/verification_otp'
              verification_admin: '#/components/schemas/verification_admin'
              verification_from_oauth: '#/components/schemas/verification_from_oauth'
              verification_ticket: '#/components/schemas/verification_ticket'
              verification_saml: '#/components/schemas/verification_saml'
              verification_email_link: '#/components/schemas/verification_email_link'
        linked_to:
          type: array
          items:
            $ref: '#/components/schemas/IdentificationLink'
        matches_sso_connection:
          description: 'Indicates whether this email address domain matches an active enterprise connection.

            '
          type: boolean
        created_at:
          type: integer
          format: int64
          description: 'Unix timestamp of creation

            '
        updated_at:
          type: integer
          format: int64
          description: 'Unix timestamp of creation

            '
      required:
      - object
      - email_address
      - verification
      - linked_to
      - reserved
      - created_at
      - updated_at
    IdentificationLink:
      type: object
      additionalProperties: false
      properties:
        type:
          type: string
          pattern: ^oauth_[a-z]+$
        id:
          type: string
      required:
      - type
      - id
    verification_email_link:
      x-speakeasy-name-override: EmailLink
      type: object
      additionalProperties: false
      properties:
        object:
          type: string
          enum:
          - verification_email_link
        status:
          type: string
          enum:
          - unverified
          - verified
          - failed
          - expired
        strategy:
          type: string
          enum:
          - email_link
        attempts:
          type:
          - integer
          - 'null'
        expire_at:
          type:
          - integer
          - 'null'
        verified_at_client:
          type:
          - string
          - 'null'
      required:
      - status
      - strategy
      - attempts
      - expire_at
    ClerkErrors:
      type: object
      properties:
        errors:
          type: array
          items:
            $ref: '#/components/schemas/ClerkError'
        meta:
          type: object
        clerk_trace_id:
          type: string
      required:
      - errors
    verification_ticket:
      x-speakeasy-name-override: Ticket
      type: object
      additionalProperties: false
      properties:
        object:
          type: string
          enum:
          - verification_ticket
        status:
          type: string
          enum:
          - unverified
          - verified
          - expired
        strategy:
          x-speakeasy-unknown-values: allow
          type: string
          enum:
          - ticket
        attempts:
          type:
          - integer
          - 'null'
        expire_at:
          type:
          - integer
          - 'null'
        verified_at_client:
          type:
          - string
          - 'null'
      required:
      - status
      - strategy
      - attempts
      - expire_at
    verification_from_oauth:
      x-speakeasy-name-override: FromOAuth
      type: object
      additionalProperties: false
      properties:
        object:
          type: string
          enum:
          - verification_from_oauth
        status:
          type: string
          enum:
          - unverified
          - verified
        strategy:
          type: string
          pattern: ^from_oauth_(?:(?:token_)|(?:custom_))?[a-z]+$
        error:
          type:
          - object
          - 'null'
          oneOf:
          - $ref: '#/components/schemas/ClerkError'
        expire_at:
          type:
          - integer
          - 'null'
        attempts:
          type:
          - integer
          - 'null'
        verified_at_client:
          type:
          - string
          - 'null'
      required:
      - status
      - strategy
      - attempts
      - expire_at
    verification_saml:
      x-speakeasy-name-override: SAML
      type: object
      additionalProperties: false
      properties:
        object:
          type: string
          enum:
          - verification_saml
        status:
          type: string
          enum:
          - unverified
          - verified
          - failed
          - expired
          - transferable
        strategy:
          type: string
          enum:
          - saml
        external_verification_redirect_url:
          type:
          - string
          - 'null'
        error:
          type:
          - object
          - 'null'
          oneOf:
          - $ref: '#/components/schemas/ClerkError'
        expire_at:
          type:
          - integer
          - 'null'
        attempts:
          type:
          - integer
          - 'null'
        verified_at_client:
          type:
          - string
          - 'null'
      required:
      - status
      - strategy
      - attempts
    verification_otp:
      x-speakeasy-name-override: OTP
      type: object
      additionalProperties: false
      properties:
        object:
          type: string
          enum:
          - verification_otp
        status:
          type: string
          enum:
          - unverified
          - verified
          - failed
          - expired
        strategy:
          x-speakeasy-unknown-values: allow
          type: string
          enum:
          - phone_code
          - email_code
          - reset_password_email_code
        attempts:
          type:
          - integer
          - 'null'
        expire_at:
          type:
          - integer
          - 'null'
        verified_at_client:
          type:
          - string
          - 'null'
      required:
      - status
      - strategy
      - attempts
      - expire_at
    ClerkError:
      type: object
      properties:
        message:
          type: string
        long_message:
          type: string
        code:
          type: string
        meta:
          type: object
      required:
      - message
      - long_message
      - code
    verification_admin:
      x-speakeasy-name-override: Admin
      type: object
      additionalProperties: false
      properties:
        object:
          type: string
          enum:
          - verification_admin
        status:
          type: string
          enum:
          - verified
        strategy:
          x-speakeasy-unknown-values: allow
          type: string
          enum:
          - admin
        attempts:
          type:
          - integer
          - 'null'
        expire_at:
          type:
          - integer
          - 'null'
        verified_at_client:
          type:
          - string
          - 'null'
      required:
      - status
      - strategy
      - attempts
      - expire_at
    Stubs.Verification.SAML:
      type: object
      properties:
        object:
          type: string
          enum:
          - verification_saml
        status:
          type: string
          enum:
          - unverified
          - verified
          - failed
          - expired
          - transferable
        strategy:
          type: string
          enum:
          - saml
        external_verification_redirect_url:
          type:
          - string
          - 'null'
        error:
          allOf:
          - $ref: '#/components/schemas/ClerkError'
          - type:
            - object
            - 'null'
        expire_at:
          type:
          - integer
          - 'null'
        attempts:
          type:
          - integer
          - 'null'
      required:
      - status
      - strategy
    Stubs.Verification.Link:
      type: object
      properties:
        object:
          type: string
          enum:
          - verification_email_link
        status:
          type: string
          enum:
          - unverified
          - verified
          - failed
          - expired
          - transferable
        strategy:
          type: string
          enum:
          - email_link
        attempts:
          type:
          - integer
          - 'null'
        expire_at:
          type: integer
        verified_at_client:
          type: string
      required:
      - status
      - strategy
      - expire_at
    Client.Passkey:
      type: object
      additionalProperties: false
      properties:
        id:
          type: string
        object:
          type: string
          description: 'String representing the object''s type. Objects of the same type share the same value.

            '
          enum:
          - passkey
        name:
          type: string
        last_used_at:
          type:
          - integer
          - 'null'
          format: int64
          description: 'Unix timestamp of when the passkey was last used.

            '
        verification:
          type:
          - object
          - 'null'
          oneOf:
          - $ref: '#/components/schemas/Stubs.Verification.Passkey'
        created_at:
          type: integer
          format: int64
          description: 'Unix timestamp of creation

            '
        updated_at:
          type: integer
          format: int64
          description: 'Unix timestamp of update

            '
      required:
      - id
      - object
      - name
      - verification
    Stubs.SignInFactor:
      type: object
      additionalProperties: false
      properties:
        strategy:
          type: string
          enum:
          - ticket
          - password
          - email_code
          - email_link
          - phone_code
          - web3_metamask_signature
          - web3_base_signature
          - web3_coinbase_wallet_signature
          - web3_okx_wallet_signature
          - web3_solana_signature
          - totp
          - backup_code
          - oauth_apple
          - oauth_google
          - oauth_facebook
          - oauth_hubspot
          - oauth_github
          - oauth_mock
          - oauth_custom_mock
          - oauth_token_mock
          - saml
          - enterprise_sso
          - reset_password_email_code
          - reset_password_phone_code
          - passkey
          - google_one_tap
        safe_identifier:
          type: string
        enterprise_connection_id:
          type: string
        enterprise_connection_name:
          type: string
        email_address_id:
          type: string
        phone_number_id:
          type: string
        web3_wallet_id:
          type: string
        passkey_id:
          type: string
        primary:
          type:
          - boolean
          - 'null'
        external_verification_redirect_url:
          type:
          - string
          - 'null'
        default:
          type: boolean
      required:
      - strategy
    Stubs.Verification.BackupCode:
      type: object
      additionalProperties: false
      properties:
        object:
          type: string
          enum:
          - verification_backup_code
        status:
          type: string
          enum:
          - unverified
          - verified
        strategy:
          type: string
          enum:
          - backup_code
        attempts:
          type:
          - integer
          - 'null'
        expire_at:
          type:
          - integer
          - 'null'
      required:
      - status
      - strategy
    Stubs.Verification.FromOauth:
      type: object
      properties:
        object:
          type: string
          enum:
          - verification_from_oauth
        status:
          type: string
          enum:
          - verified
          - unverified
        strategy:
          type: string
          enum:
          - from_oauth_apple
          - from_oauth_google
          - from_oauth_mock
          - from_oauth_custom_mock
        attempts:
          type:
          - integer
          - 'null'
        expire_at:
          type:
          - integer
          - 'null'
      required:
      - status
      - strategy
    Token:
      type: object
      additionalProperties: false
      properties:
        object:
          type: string
          description: 'String representing the object''s type. Objects of the same type share the same value.

            '
          enum:
          - token
        jwt:
          type: string
          description: 'String representing the encoded JWT value.

            '
      required:
      - object
      - jwt
    Stubs.Verification.Admin:
      type: object
      additionalProperties: false
      properties:
        object:
          type: string
          enum:
          - verification_admin
        status:
          type: string
          enum:
          - verified
          - unverified
          - failed
          - expired
        strategy:
          type: string
          enum:
          - admin
        attempts:
          type:
          - integer
          - 'null'
        expire_at:
          type:
          - integer
          - 'null'
      required:
      - status
      - strategy
    Client.EmailAddress:
      type: object
      additionalProperties: false
      properties:
        id:
          type: string
        object:
          type: string
          description: 'String representing the object''s type. Objects of the same type share the same value.

            '
          enum:
          - email_address
        email_address:
          type: string
        reserved:
          type: boolean
        verification:
          type:
          - object
          - 'null'
          oneOf:
          - $ref: '#/components/schemas/Stubs.Verification.OTP'
          - $ref: '#/components/schemas/Stubs.Verification.Invitation'
          - $ref: '#/components/schemas/Stubs.Verification.Link'
          - $ref: '#/components/schemas/Stubs.Verification.Ticket'
          - $ref: '#/components/schemas/Stubs.Verification.Admin'
          - $ref: '#/components/schemas/Stubs.Verification.FromOauth'
          - $ref: '#/components/schemas/S

# --- truncated at 32 KB (75 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/clerk-com/refs/heads/main/openapi/clerk-com-email-addresses-api-openapi.yml