Feel free to reach techsupport@surepass.io for any technical support or guidance.
client_id returned from the Send OTP call, your application can programmatically query the processing state and take appropriate action — such as prompting the user to enter the OTP once delivery is confirmed (otp_sent), waiting if the request is still in progress (pending), or triggering a resend flow if the dispatch failed (failed). This endpoint is particularly useful in scenarios where webhook-based callbacks are not configured or as a fallback to verify delivery status independently.pending through otp_sent or failed — giving your application precise control over the user verification flow.client_id from the original Send OTP response, making it straightforward to layer onto existing verification workflows.failed status enables your application to detect delivery issues early and proactively trigger resend logic or alternate communication channels, improving overall completion rates.failed status in automated underwriting pipelines and trigger a resend or escalation workflow to ensure the verification step is not silently skipped.Authorization header as Bearer TOKEN.https://sandbox.surepass.apphttps://kyc-api.surepass.app| Header | Required | Description |
|---|---|---|
Authorization | Yes | Bearer token for authentication. Format: Bearer <JWT_TOKEN> |
Content-Type | Yes | Must be set to application/json |
| Parameter | Type | Required | Description |
|---|---|---|---|
client_id | String | Yes | The unique client identifier returned by the Udyam OTP Async Send OTP API. Used to look up the delivery status of a specific OTP dispatch request. |
{
"client_id": "udyam_otp_async_bgKqddCbbfhmJGqouVIK"
}| Parameter | Type | Description |
|---|---|---|
data | Object | Contains the status result for the OTP dispatch request |
data.client_id | String | The unique client identifier corresponding to the original OTP request |
data.status | String | The current delivery status of the OTP. Allowed values: otp_sent (OTP successfully dispatched), pending (OTP dispatch still in progress), invalid_detail (Invalid Mobile Number Or Udyam Number), failed (OTP dispatch was unsuccessful) |
status_code | Integer | HTTP status code of the response (e.g., 200 for success) |
success | Boolean | Indicates whether the API call was successful (true) or not (false) |
message | String | A human-readable message describing the result (e.g., "Success") |
message_code | String | A machine-readable code corresponding to the message (e.g., "success") |
data.status Allowed Values| Status | Description | Recommended Action |
|---|---|---|
otp_sent | The OTP has been successfully dispatched to the user's mobile or email | Prompt the user to enter the OTP to proceed with verification |
invalid_detail | Invalid Mobile Number Or Udyam Number | Reinitiate the Flow With Correct Detail |
pending | The OTP dispatch request is still being processed asynchronously | Continue polling after a short interval; do not prompt the user yet |
failed | The OTP dispatch was unsuccessful | Surface an appropriate error to the user and offer a resend option |
{
"data": {
"client_id": "udyam_otp_async_bgKqddCbbfhmJGqouVIK",
"status": "otp_sent"
},
"status_code": 200,
"success": true,
"message": "Success",
"message_code": "success"
}{
"status_code": 401,
"success": false,
"message": "Authentication credentials were not provided or are invalid.",
"message_code": "unauthorized"
}client_id: Treat the client_id as a session-scoped identifier. Avoid exposing it in client-side logs, browser URLs, or local storage to prevent unauthorized status lookups.pending for an extended period.pending, enable the OTP input field only after otp_sent is confirmed, and display an actionable error message with a resend option when failed is received.pending after a defined number of attempts (e.g., 10 polls over 30 seconds), treat it as a soft failure and offer the user a resend option to avoid leaving them stuck indefinitely.failed status: When failed is detected, prompt the user to retry the Send OTP request rather than asking them to re-enter the OTP, since no OTP was successfully delivered.client_id required by this status endpoint.client_id to complete the Udyam registration verification process. Should only be called after this endpoint returns otp_sent.client_id and does not expose or transmit any personally identifiable information (PII) such as the mobile number or Udyam registration number. Ensure the client_id itself is stored and transmitted securely over HTTPS.otp_sent or failed states — as part of your KYC audit trail for regulatory review purposes.curl --location --request POST 'https://kyc-api.surepass.app/api/v1/udyam-otp/async/send-otp-status' \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data-raw '{
"client_id": "udyam_otp_async_bgKqddCbbfhmJGqouVIK"
}'{
"data": {
"client_id": "udyam_otp_async_bgKqddCbbfhmJGqouVIK",
"status": "pending"
},
"status_code": 200,
"success": true,
"message": "Success",
"message_code": "success"
}