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

# Request operator email verification

> First step of the sign-up: e-mails a six-digit code to `operatorEmail`,
valid for 10 minutes. **Unauthenticated.** `POST /v1/operators` then takes
it as `emailVerificationCode`. Asking again replaces the previous code;
one request per address per minute.

Disposable and undeliverable domains are refused here. An e-mail that
already has an account gets the **same 202** and simply receives no code —
this route never reveals whether an account exists. The send happens in the
background; if it fails, the address may ask again right away. Invited
sign-ups skip this step.



## OpenAPI

````yaml /api/services-api.yaml post /v1/operators/email-verification
openapi: 3.0.3
info:
  description: >-
    Talqui is an omnichannel customer service platform that unifies
    conversations from WhatsApp, Instagram, Telegram, and many other channels
    into a single attendant panel, alongside a broader ecosystem of plugins and
    integrations. This API gives developers programmatic access to Talqui's
    services layer, exposing the operations needed to read and manage tenants,
    conversations, plugins, and related resources that power that platform.


    Authentication is available on behalf of an Operator (the default for this
    API), a Plugin Connection, or a Plugin — see the [Talqui authentication
    guide](https://docs.talqui.chat/guides/introduction/authentication/) for how
    each token is obtained and when to use it.


    Need help or have questions not covered here? Reach out to
    support@talqui.com.
  license:
    name: ISC
    url: https://opensource.org/license/isc-license-txt
  title: Talqui - Services API
  version: 0.84.1
servers:
  - description: Production
    url: https://services-api.talqui.chat
security: []
tags:
  - name: Tenants
  - name: Settings
  - name: Analytics/Reports
  - name: Analytics
  - name: Campaigns
  - name: Campaigns/Models
  - name: Contacts
  - name: Contacts/Imports
  - name: Handoff links
  - name: Inboxes
  - name: Messages
  - name: Notifications
  - name: Sessions
  - name: Operators/Shortcuts
  - name: Operators
  - name: Plugins
  - name: Setup
paths:
  /v1/operators/email-verification:
    post:
      tags:
        - Operators
      summary: Request operator email verification
      description: >-
        First step of the sign-up: e-mails a six-digit code to `operatorEmail`,

        valid for 10 minutes. **Unauthenticated.** `POST /v1/operators` then
        takes

        it as `emailVerificationCode`. Asking again replaces the previous code;

        one request per address per minute.


        Disposable and undeliverable domains are refused here. An e-mail that

        already has an account gets the **same 202** and simply receives no code
        —

        this route never reveals whether an account exists. The send happens in
        the

        background; if it fails, the address may ask again right away. Invited

        sign-ups skip this step.
      operationId: RequestOperatorEmailVerificationController
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              properties:
                operatorEmail:
                  description: Address the code is sent to — the one the account will use.
                  format: email
                  pattern: >-
                    ^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$
                  type: string
                operatorFirstname:
                  description: Given name, used to greet the person in the e-mail.
                  minLength: 1
                  type: string
              required:
                - operatorEmail
                - operatorFirstname
              type: object
        required: true
      responses:
        '202':
          content:
            application/json:
              schema:
                additionalProperties: false
                properties:
                  data:
                    additionalProperties: false
                    properties:
                      expiresInSeconds:
                        description: How long the code stays valid.
                        type: number
                      resendAfterSeconds:
                        description: >-
                          How long until another code can be requested for this
                          address.
                        type: number
                    required:
                      - expiresInSeconds
                      - resendAfterSeconds
                    type: object
                required:
                  - data
                type: object
          description: Response for status 202.
        '400':
          content:
            application/json:
              schema:
                properties:
                  errors:
                    items:
                      $ref: '#/components/schemas/RequestValidationError'
                    maxItems: 1
                    minItems: 1
                    type: array
                required:
                  - errors
                type: object
          description: >-
            RequestValidationError (error_code 1002): request body fails schema
            validation.
        '422':
          content:
            application/json:
              schema:
                properties:
                  errors:
                    items:
                      oneOf:
                        - $ref: '#/components/schemas/OperatorEmailDisposableError'
                        - $ref: '#/components/schemas/OperatorEmailUndeliverableError'
                    maxItems: 1
                    minItems: 1
                    type: array
                required:
                  - errors
                type: object
          description: >-
            OperatorEmailDisposableError (error_code 1847): the e-mail is from a
            disposable provider. | OperatorEmailUndeliverableError (error_code
            1848): the e-mail domain does not exist or receives no mail.
        '429':
          content:
            application/json:
              schema:
                properties:
                  errors:
                    items:
                      $ref: '#/components/schemas/TooManyRequestsError'
                    maxItems: 1
                    minItems: 1
                    type: array
                required:
                  - errors
                type: object
          description: >-
            TooManyRequestsError (error_code 1071): a code was sent to this
            address less than a minute ago, or the IP/e-mail limits were hit.
        '500':
          content:
            application/json:
              schema:
                properties:
                  errors:
                    items:
                      $ref: '#/components/schemas/UnknownError'
                    maxItems: 1
                    minItems: 1
                    type: array
                required:
                  - errors
                type: object
          description: >-
            UnknownError (error_code 5999): Unexpected internal error not
            otherwise documented for this endpoint.
        '503':
          content:
            application/json:
              schema:
                properties:
                  errors:
                    items:
                      $ref: '#/components/schemas/EmailVerificationUnavailableError'
                    maxItems: 1
                    minItems: 1
                    type: array
                required:
                  - errors
                type: object
          description: >-
            EmailVerificationUnavailableError (error_code 5016): the code could
            not be stored.
components:
  schemas:
    RequestValidationError:
      additionalProperties: false
      properties:
        error:
          enum:
            - RequestValidationError
          type: string
        error_code:
          enum:
            - 1002
          type: number
        fields:
          items:
            additionalProperties: false
            properties:
              allowed:
                type: string
              field:
                type: string
              received:
                type: string
            required:
              - field
              - received
              - allowed
            type: object
          type: array
        message:
          example: Invalid request data.
          type: string
        statusCode:
          enum:
            - 400
          type: number
      required:
        - statusCode
        - error
        - error_code
        - message
        - fields
      type: object
    OperatorEmailDisposableError:
      additionalProperties: false
      properties:
        error:
          enum:
            - OperatorEmailDisposableError
          type: string
        error_code:
          enum:
            - 1847
          type: number
        message:
          example: Disposable e-mail addresses are not accepted.
          type: string
        statusCode:
          enum:
            - 422
          type: number
      required:
        - statusCode
        - error
        - error_code
        - message
      type: object
    OperatorEmailUndeliverableError:
      additionalProperties: false
      properties:
        error:
          enum:
            - OperatorEmailUndeliverableError
          type: string
        error_code:
          enum:
            - 1848
          type: number
        message:
          example: This e-mail domain cannot receive messages.
          type: string
        statusCode:
          enum:
            - 422
          type: number
      required:
        - statusCode
        - error
        - error_code
        - message
      type: object
    TooManyRequestsError:
      additionalProperties: false
      properties:
        error:
          enum:
            - TooManyRequestsError
          type: string
        error_code:
          enum:
            - 1071
          type: number
        message:
          example: Too many requests. Try again later.
          type: string
        statusCode:
          enum:
            - 429
          type: number
      required:
        - statusCode
        - error
        - error_code
        - message
      type: object
    UnknownError:
      additionalProperties: false
      properties:
        error:
          enum:
            - UnknownError
          type: string
        error_code:
          enum:
            - 5999
          type: number
        message:
          example: For some unknown reason your request has not succeeded.
          type: string
        statusCode:
          enum:
            - 500
          type: number
      required:
        - statusCode
        - error
        - error_code
        - message
      type: object
    EmailVerificationUnavailableError:
      additionalProperties: false
      properties:
        error:
          enum:
            - EmailVerificationUnavailableError
          type: string
        error_code:
          enum:
            - 5016
          type: number
        message:
          example: E-mail verification is temporarily unavailable. Try again.
          type: string
        statusCode:
          enum:
            - 503
          type: number
      required:
        - statusCode
        - error
        - error_code
        - message
      type: object

````

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