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

# Send Workflow OTP

> Sends a one-time code by email or SMS for a verification that is in progress.
Use it during the EMAIL_CHECK and PHONE_CHECK verification processes.

### Notes
- The verification must belong to this workflow and still be in progress
- Email codes are free
- Each SMS is paid from the organization's credits when it's sent - the first code and every
  resend, with no limit. If the credits can't pay, no SMS is sent and the response is `{"sent": false}`: don't ask
  for a code, submit the phone number without one. See [Billing and usage](/billing).




## OpenAPI

````yaml /api-reference/openapi.yml post /workflows/{workflowId}/otp
openapi: 3.0.0
info:
  title: Urtentic API
  version: '1.0'
  description: >
    # Introduction

    The Urtentic API provides comprehensive identity verification and workflow
    management capabilities. 

    It enables organizations to create customized verification workflows,
    perform identity checks, 

    and manage verification processes with features including liveness
    detection, 

    location intelligence, and document verification.


    ## Authentication

    All authenticated endpoints require two headers:

    - `Authorization: Bearer {API_KEY}` - Your API key

    - `X-CLIENT-ID: {CLIENT_ID}` - Your client ID


    API credentials can be generated from your Urtentic Dashboard under
    Integrations.


    ## Webhook Notifications

    Configure webhook URLs in your Urtentic Dashboard to receive real-time
    notifications

    about verification status changes. Webhooks include the verification ID and
    current status,

    allowing your system to react to verification completions or failures.


    ## Key Features

    - User and organization management

    - Customizable verification workflows

    - Multiple verification processes (Liveness, Location, Document, Watchlist
    Check, Email)

    - Analytics and reporting

    - Webhook notifications for verification results
  contact:
    name: Urtentic Support Team
    email: support@urtentic.com
    url: https://urtentic.com/support
  termsOfService: https://urtentic.com/terms
  license:
    name: Urtentic License
    url: https://urtentic.com/license
servers:
  - url: https://api.urtentic.com/api/v1
    description: Urtentic API
security: []
tags:
  - name: Identity
    description: >
      Management of verified identity data, including retrieval and validation
      of identity information.


      Endpoints in this category allow you to:

      - Retrieve verified identity details

      - Check identity verification status

      - Update identity information

      - Link identities across verification sessions
  - name: Processes
    description: >
      Configuration and management of individual verification process types that
      can be used in workflows.


      The Urtentic platform supports these verification processes:

      - **Document Verification**: OCR and authenticity checks for identity
      documents

      - **Liveness Detection**: Confirms a person is physically present and not
      using photos/videos

      - **Location Intelligence**: Verifies geographic location and environments

      - **Email Verification**: Validates email ownership through OTP

      - **Watchlist Check**: Screens identities against compliance databases
  - name: Verification
    description: >
      Core verification operations including starting verifications, submitting
      verification data, and retrieving results.


      Key operations include:

      - Starting new verification sessions

      - Submitting identity data for verification

      - Retrieving verification results

      - Validating inputs before submission

      - Tracking verification status
  - name: Workflow
    description: >
      Creation and management of verification workflows, combining multiple
      verification processes into customized sequences.


      Workflows allow you to:

      - Define multi-step verification sequences

      - Configure country-specific document requirements

      - Set custom verification rules and thresholds

      - Create specialized flows for different use cases

      - Manage verification process order and dependencies
paths:
  /workflows/{workflowId}/otp:
    parameters:
      - schema:
          type: string
          format: uuid
        name: workflowId
        in: path
        required: true
        description: Unique identifier of the workflow
        example: 40f85c69-b27a-46e8-9115-691401acb5df
    post:
      tags:
        - Workflow
      summary: Send Workflow OTP
      description: >
        Sends a one-time code by email or SMS for a verification that is in
        progress.

        Use it during the EMAIL_CHECK and PHONE_CHECK verification processes.


        ### Notes

        - The verification must belong to this workflow and still be in progress

        - Email codes are free

        - Each SMS is paid from the organization's credits when it's sent - the
        first code and every
          resend, with no limit. If the credits can't pay, no SMS is sent and the response is `{"sent": false}`: don't ask
          for a code, submit the phone number without one. See [Billing and usage](/billing).
      operationId: post-workflows-workflowId-otp
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                key:
                  type: string
                  description: >
                    Where to send the code: an email address for `EMAIL`, or a
                    phone number in

                    E.164 format for `PHONE`.
                  example: '+2348012345678'
                channel:
                  type: string
                  enum:
                    - EMAIL
                    - PHONE
                  default: EMAIL
                  description: How to send the code. Defaults to `EMAIL`.
                verificationId:
                  type: string
                  format: uuid
                  description: The verification the code is for.
                  example: 85c94e71-6e3f-4a19-b15c-781d8a876542
              required:
                - key
                - verificationId
            examples:
              phone:
                value:
                  key: '+2348012345678'
                  channel: PHONE
                  verificationId: 85c94e71-6e3f-4a19-b15c-781d8a876542
              email:
                value:
                  key: user@example.com
                  channel: EMAIL
                  verificationId: 85c94e71-6e3f-4a19-b15c-781d8a876542
      responses:
        '200':
          description: Whether a code was sent
          content:
            application/json:
              schema:
                type: object
                properties:
                  sent:
                    type: boolean
                    description: >
                      `false` when an SMS was skipped because the organization's
                      credits couldn't

                      pay for it. Always `true` for email.
              examples:
                sent:
                  value:
                    sent: true
                skipped_for_balance:
                  value:
                    sent: false
        '400':
          description: >-
            `verificationId` is missing (`VERIFICATION_ID_REQUIRED`), or the
            verification has already finished (`VERIFICATION_NOT_IN_PROGRESS`)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                missing_verification:
                  value:
                    code: VERIFICATION_ID_REQUIRED
                    message: verification.id.required
        '404':
          description: >-
            No verification with that ID in this organization and workflow
            (`VERIFICATION_NOT_FOUND`)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - apiKeyAuth: []
components:
  schemas:
    Error:
      type: object
      description: >
        Error body returned by the API. Branch on `code`, which is stable.
        `message` is either a

        readable sentence or a message key such as `verification.not.found`.
      properties:
        code:
          type: string
          example: VERIFICATION_NOT_FOUND
        message:
          type: string
          example: verification.not.found
        errors:
          type: array
          description: Per-field messages for validation errors. Empty otherwise.
          items:
            type: string

````

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