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

# Predict the outcome of a verification

> Predict the outcome of a verification based on Prelude’s anti-fraud system.



## OpenAPI

````yaml post /v2/watch/predict
openapi: 3.1.0
info:
  title: Prelude API
  version: 2.0.0
  description: The Prelude API allows you to send messages to your users.
  contact:
    email: support@prelude.so
servers:
  - url: https://api.prelude.dev
    description: Production server
security:
  - apiToken: []
tags:
  - name: Notify
    description: Send transactional and marketing messages with compliance enforcement.
  - name: Transactional
    description: Send transactional messages (deprecated - use Notify API instead).
  - name: Verify
    description: Verify phone numbers.
  - name: Watch
    description: Evaluate email addresses and phone numbers for trustworthiness.
  - name: Lookup
    description: >-
      Retrieve detailed information about a phone number including carrier data,
      line type, and portability status.
paths:
  /v2/watch/predict:
    post:
      tags:
        - Watch
      summary: Predict outcome
      description: >-
        Predict the outcome of a verification based on Prelude’s anti-fraud
        system.
      operationId: predictOutcome
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PredictWatchRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PredictWatchResponse'
        '400':
          description: KO
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
components:
  schemas:
    PredictWatchRequest:
      type: object
      properties:
        target:
          $ref: '#/components/schemas/Target'
          description: The prediction target. Only supports phone numbers for now.
        signals:
          $ref: '#/components/schemas/Signals'
        dispatch_id:
          type: string
          description: The identifier of the dispatch that came from the front-end SDK.
          examples:
            - 123e4567-e89b-12d3-a456-426614174000
          minLength: 36
          maxLength: 36
        metadata:
          type: object
          description: The metadata for this prediction.
          properties:
            correlation_id:
              type: string
              description: >-
                A user-defined identifier to correlate this prediction with. It
                is returned in the response and any webhook events that refer to
                this prediction.
              maxLength: 80
      required:
        - target
    PredictWatchResponse:
      type: object
      properties:
        id:
          type: string
          examples:
            - prd_01jc0t6fwwfgfsq1md24mhyztj
          description: The prediction identifier.
        prediction:
          type: string
          enum:
            - legitimate
            - suspicious
          description: The prediction outcome.
        risk_factors:
          type: array
          items:
            type: string
            enum:
              - behavioral_pattern
              - device_attribute
              - fraud_database
              - location_discrepancy
              - network_fingerprint
              - poor_conversion_history
              - prefix_concentration
              - suspected_request_tampering
              - suspicious_ip_address
              - temporary_phone_number
          description: >
            The risk factors that contributed to the suspicious prediction. Only
            present when prediction is "suspicious" and the anti-fraud system
            detected specific risk signals.
             * `behavioral_pattern` - The phone number past behavior during verification flows exhibits suspicious patterns.
             * `device_attribute` - The device exhibits characteristics associated with suspicious activity patterns.
             * `fraud_database` - The phone number has been flagged as suspicious in one or more of our fraud databases.
             * `location_discrepancy` - The phone number prefix and IP address discrepancy indicates potential fraud.
             * `network_fingerprint` - The network connection exhibits characteristics associated with suspicious activity patterns.
             * `poor_conversion_history` - The phone number has a history of poorly converting to a verified phone number.
             * `prefix_concentration` - The phone number is part of a range known to be associated with suspicious activity patterns.
             * `suspected_request_tampering` - The SDK signature is invalid and the request is considered to be tampered with.
             * `suspicious_ip_address` - The IP address is deemed to be associated with suspicious activity patterns.
             * `temporary_phone_number` - The phone number is known to be a temporary or disposable number.
          examples:
            - - suspicious_ip_address
              - fraud_database
        request_id:
          type: string
          examples:
            - 3d19215e-2991-4a05-a41a-527314e6ff6a
          description: >-
            A string that identifies this specific request. Report it back to us
            to help us diagnose your issues.
      required:
        - id
        - prediction
        - request_id
    Error:
      type: object
      properties:
        code:
          type: string
          description: The error code.
          examples:
            - invalid_phone_number
        message:
          type: string
          examples:
            - >-
              The provided phone number is invalid. Provide a valid E.164 phone
              number.
          description: A human-readable message describing the error.
        type:
          type: string
          examples:
            - bad_request
          description: The error type.
        request_id:
          type: string
          examples:
            - 3d19215e-2991-4a05-a41a-527314e6ff6a
          description: >-
            A string that identifies this specific request. Report it back to us
            to help us diagnose your issues.
      required:
        - code
        - message
        - type
    Target:
      type: object
      description: The operation target. Either a phone number or an email address.
      properties:
        type:
          type: string
          enum:
            - phone_number
            - email_address
          description: The type of the target. Either "phone_number" or "email_address".
        value:
          type: string
          examples:
            - '+30123456789'
            - mail@example.com
          description: An E.164 formatted phone number or an email address.
      required:
        - type
        - value
    Signals:
      type: object
      description: >-
        The signals used for anti-fraud. For more details, refer to
        [Signals](/verify/v2/documentation/prevent-fraud#signals).
      properties:
        ip:
          type: string
          format: ipv4
          description: >-
            The public IP v4 or v6 address of the end-user's device. You should
            collect this from your backend. If your backend is behind a proxy,
            use the `X-Forwarded-For`, `Forwarded`, `True-Client-IP`,
            `CF-Connecting-IP` or an equivalent header to get the actual public
            IP of the end-user's device.
          examples:
            - 203.0.113.123
        device_id:
          type: string
          description: >-
            A unique ID for the user's device. You should ensure that each user
            device has a unique `device_id` value. Ideally, for Android, this
            corresponds to the `ANDROID_ID` and for iOS, this corresponds to the
            `identifierForVendor`.
          examples:
            - 8F0B8FDD-C2CB-4387-B20A-56E9B2E5A0D2
        device_platform:
          type: string
          enum:
            - android
            - ios
            - ipados
            - tvos
            - web
          description: The type of the user's device.
          examples:
            - ios
        device_model:
          type: string
          description: The model of the user's device.
          examples:
            - iPhone17,2
        os_version:
          type: string
          description: The version of the user's device operating system.
          examples:
            - 18.0.1
        app_version:
          type: string
          description: The version of your application.
          examples:
            - 1.2.34
        user_agent:
          type: string
          description: >-
            The user agent of the user's device. If the individual fields
            (os_version, device_platform, device_model) are provided, we will
            prioritize those values instead of parsing them from the user agent
            string.
          examples:
            - >-
              Mozilla/5.0 (iPhone; CPU iPhone OS 14_4 like Mac OS X)
              AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0.3
              Mobile/15E148 Safari/604.1
        ja4_fingerprint:
          type: string
          description: >-
            The JA4 fingerprint observed for the end-user's connection. Prelude
            will infer it automatically when you use our Frontend SDKs (which
            use Prelude's edge network), but you can also forward the value if
            you terminate TLS yourself.
          examples:
            - t13d1516h2_8daaf6152771_e5627efa2ab1
        is_trusted_user:
          type: boolean
          description: >-
            This signal should indicate a higher level of trust, explicitly
            stating that the user is genuine. Contact us to discuss your use
            case. For more details, refer to
            [Signals](/verify/v2/documentation/prevent-fraud#signals).
          examples:
            - false
  securitySchemes:
    apiToken:
      type: http
      scheme: bearer

````