Get OTP/ Verify WhatsApp Analytics

Prev Next

This request returns aggregated OTP verification statistics within a date range. The otp sub-product must be enabled for the partner. Unlike other endpoints, this response includes verified, unverified, and unverifiedDetails fields specific to OTP outcome tracking. Response is flat, no summary/details wrapper.

Endpoint and Headers

POST https://whatsapp.useinsider.com /v1/statistics/verify

Headers

Header

Sample Value

Description

x-ins-auth-key

INS.**********************

This key is required to authorize your request. Refer to Generate a WhatsApp Campaign Analytics API Key to generate your token.

Body parameters

Column

Description

Data Type

Required

start_time

Start of the date range as a 10-digit Unix timestamp.

Integer

Yes

end_time

End of the date range as a 10-digit Unix timestamp. The maximum supported range is 1 year.

Integer

Yes

accounts

Sender phone numbers to include.

Array

No

Sample Request

 curl --location 'https://whatsapp.useinsider.com/v1/statistics/verify' \    
    --header 'Content-Type: application/json' \    
    --header 'x-ins-auth-key: INS.**************************************' \    
    --data '{    
      "start_time": 1740787200,    
      "end_time": 1743379200    
    }'   

Sample Responses

 {    
      "sent": 8000,    
      "delivered": 7800,    
      "open": 0,    
      "click": 0,    
      "conversion": 0,    
      "revenue": 0,    
      "drop": 150,    
      "targeted": 8150,    
      "unsubscribe": 0,    
      "undelivered": 200,    
      "verified": 7200,    
      "unverified": 600,    
      "chart": {    
        "dates": ["2025-03-01", "2025-03-02"],    
        "datesAsTimestamp": [1740787200, 1740873600],    
        "sent": [4000, 4000],    
        "delivered": [3900, 3900],    
        "open": [0, 0],    
        "click": [0, 0],    
        "conversion": [0, 0],    
        "verified": [3600, 3600],    
        "responses": [0, 0],    
        "clickFromResponses": [0, 0],    
        "conversionFromResponses": [0, 0]    
      },    
      "dropDetails": { "...": "same keys as /transactional dropDetails" },    
      "undeliveredDetails": { "...": "same keys as /transactional undeliveredDetails" },    
      "unverifiedDetails": {    
        "attemptFailures": 400,    
        "timeoutFailures": 200    
      }    
    } 

200 OK

This status indicates that the request has been completed successfully.

    {    
      "data": {    
        "statistics": {    
          "verified": 65,    
          "unverified": 11    
        }    
      }    
    }   

Error Responses

400 Failed to parse request (3001)

   {    
      "message": "failed to parse request",    
      "errorCode": "3001",    
      "errors": "json: cannot unmarshal ..."    
    }  

400 Validation Failed (3002)

   {    
      "message": "validation failed",    
      "errorCode": "3002",    
      "errors": "date range cannot exceed 1 year"    
    }  

401 Authentication Required (1001)

    {    
      "message": "authentication required",    
      "errorCode": "1001"    
    } 

401 Unauthorized

    {    
      "message": "unauthorized",    
      "error": {    
        "message": "unauthorized"    
      }    
    }  

403 IP Restricted (1088)

   {    
      "message": "ip-restricted",    
      "error": {    
        "message": "ip-restricted",    
        "code": 1088    
      }    
    }  

403 WhatsApp Product Is Not Active (3007)

    {    
      "message": "WhatsApp product is not active",    
      "errorCode": "3007"    
    }  

403 Verify (OTP) Messaging Is Not Active (3006)

This status indicates that the verify/OTP sub-product is not enabled for your account.

    {    
      "message": "verify (OTP) messaging is not active",    
      "errorCode": "3006"    
    }  

422 Unprocessable Entity

This status is forwarded when downstream validation fails.

    {    
      "message": "The given data was invalid.",    
      "errors": {    
        "time.start": [    
          "The time.start must be at least 1514764800."    
        ]    
      }    
    }  

429 Rate Limited (2021)

   {    
      "message": "rate limited",    
      "error": {    
        "message": "rate limited",    
        "code": 2021    
      }    
    } 

Limitations

  • All functions must be executed with an HTTPS POST request.

  • The X-INS-AUTH-KEY should be provided as the authorization key on the request header. If the key is incorrect, the operation will not be executed, and an authorization error will be returned in the response.

  • This API provides data for a 1-year range.

  • You can send 100 requests per second with the same API Key.

The default limit shown here is a standard baseline. If your use case requires higher capacity, feel free to reach out to the Insider One team — we can adjust it to fit your needs.