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

# Set or clear verification on a contact's phone or email entry

> Toggles verification metadata on a single entry in a contact's `phoneNumber[]` or `email[]` array. Pass `verifiedAt` as an ISO timestamp to mark the entry verified (also stamps `verifiedBy` from the caller and the supplied `verificationSource`); pass `verifiedAt: null` (or omit it) to clear all three. Phone values are normalized via the same E.164 helper the rest of the API uses; email values are lower-cased. Scoped to the caller's organization unless SUPERADMIN. Emits a `contact_updated` socket event and writes a manual-event audit entry (`CONTACT_METHOD_VERIFIED` / `CONTACT_METHOD_UNVERIFIED`).



## OpenAPI

````yaml /api-reference/openapi.yaml patch /api/contacts/{id}/verify-contact-methods
openapi: 3.0.3
info:
  title: Tether Relay and Tether API
  version: 1.0.0
  description: >-
    Route-derived OpenAPI contract generated from tether-relay backend sources.
    Regenerate with scripts/sync-openapi-from-backend.mjs.
servers:
  - url: https://your-instance.example.com
    description: Production
  - url: http://localhost:2212
    description: Local API service
security: []
tags:
  - name: AI
  - name: Applications
  - name: Approval
  - name: Auth
  - name: Automations
  - name: Calls
  - name: Campaigns
  - name: Contact Analytics
  - name: Contact Metrics
  - name: Contact Notes
  - name: Contacts
  - name: Conversation Monitor
  - name: Conversations
  - name: Departments
  - name: Email
  - name: Escalation Dashboard
  - name: Event Logs
  - name: Google Sheets
  - name: Marketplace
  - name: Messages
  - name: Notification Sounds
  - name: Notifications
  - name: Org Snapshots
  - name: Organizations
  - name: Outreach
  - name: Outreach Metrics
  - name: Outreach Sources
  - name: Pipelines
  - name: Processes
  - name: Prompts
  - name: Reminders
  - name: Sms
  - name: Templates
  - name: Traces
  - name: Training
  - name: Upload
  - name: User Snapshots
  - name: Users
  - name: Vertical
  - name: Webchats
  - name: Webhook
paths:
  /api/contacts/{id}/verify-contact-methods:
    patch:
      tags:
        - Contacts
      summary: Set or clear verification on a contact's phone or email entry
      description: >-
        Toggles verification metadata on a single entry in a contact's
        `phoneNumber[]` or `email[]` array. Pass `verifiedAt` as an ISO
        timestamp to mark the entry verified (also stamps `verifiedBy` from the
        caller and the supplied `verificationSource`); pass `verifiedAt: null`
        (or omit it) to clear all three. Phone values are normalized via the
        same E.164 helper the rest of the API uses; email values are
        lower-cased. Scoped to the caller's organization unless SUPERADMIN.
        Emits a `contact_updated` socket event and writes a manual-event audit
        entry (`CONTACT_METHOD_VERIFIED` / `CONTACT_METHOD_UNVERIFIED`).
      operationId: patch_contact_verify_contact_methods
      parameters:
        - in: path
          name: id
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SetContactMethodVerificationRequest'
      responses:
        '200':
          description: Verification metadata updated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SetContactMethodVerificationResponse'
        '400':
          description: >-
            Invalid id/type/value/verifiedAt/verificationSource, or missing
            organizationId for non-SUPERADMIN
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LegacyErrorResponse'
        '404':
          description: Contact not found, or no matching phone/email entry on the contact
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LegacyErrorResponse'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LegacyErrorResponse'
      security:
        - bearerAuth: []
components:
  schemas:
    SetContactMethodVerificationRequest:
      type: object
      description: >-
        Toggle verification on a single phone or email entry. `value` must match
        an existing entry on the contact (phones are normalized to E.164; emails
        are lower-cased). Pass `verifiedAt` to mark verified; pass `null` (or
        omit) to clear.
      properties:
        type:
          type: string
          enum:
            - phone
            - email
        value:
          type: string
          description: Phone (any format — normalized server-side) or email address.
        verifiedAt:
          description: >-
            ISO 8601 timestamp to set, or `null` to clear all verification
            fields on this entry.
          type: string
          format: date-time
          nullable: true
        verificationSource:
          type: string
          description: >-
            Free-form label of where the verification came from (e.g. `webchat`,
            `admin-manual`). Only stored when `verifiedAt` is set.
      required:
        - type
        - value
      additionalProperties: true
      example:
        type: phone
        value: '+14165550100'
        verifiedAt: '2026-05-20T15:04:01.135Z'
        verificationSource: admin-manual
    SetContactMethodVerificationResponse:
      type: object
      description: Returned after a successful verify/unverify on a phone or email entry.
      properties:
        message:
          type: string
          description: >-
            One of `Phone number verified`, `Phone number verification cleared`,
            `Email verified`, `Email verification cleared`.
        data:
          type: object
          properties:
            contact:
              type: object
              additionalProperties: true
              description: Full updated Contact document.
          required:
            - contact
          additionalProperties: true
      required:
        - message
        - data
      additionalProperties: true
      example:
        message: Phone number verified
        data:
          contact:
            _id: 64b2c3d4e5f60012345678aa
            firstName: Alex
            lastName: Morgan
            phoneNumber:
              - value: '+14165550100'
                isPrimary: true
                verifiedAt: '2026-05-20T15:04:01.135Z'
                verifiedBy: 64a1b2c3d4e5f60012345679
                verificationSource: admin-manual
    LegacyErrorResponse:
      type: object
      properties:
        error:
          type: string
        message:
          type: string
        data: {}
      additionalProperties: true
      example:
        error: Attachment not found
        message: Attachment not found
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT

````