Feel free to reach techsupport@surepass.io for any technical support or guidance.
client_id that can be used to track the verification status asynchronously — either via polling or through a webhook callback, making it ideal for high-throughput and non-blocking verification flows.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 |
|---|---|---|---|
registration_number | String | Yes | The Udyam registration number of the entity (e.g., UDYAM-RJ-30-0011111) |
mobile_number | String | Yes | The 10-digit mobile number registered with the Udyam entity |
webhook_url | String | No | A valid HTTPS URL to receive asynchronous OTP delivery status callbacks |
otp_on_email | Boolean | No | Set to true to send OTP to the registered email instead of mobile. Defaults to false (OTP sent to mobile) |
{
"registration_number": "UDYAM-RJ-30-0011111",
"mobile_number": "1234567890",
"webhook_url": "https://webhook.com",
"otp_on_email": true
}| Parameter | Type | Description |
|---|---|---|
data | Object | Contains the result payload of the OTP dispatch request |
data.client_id | String | A unique identifier for this OTP request, used for tracking status or submitting the OTP in subsequent API calls |
data.status | String | The current status of the OTP request. Returns pending when the request has been accepted and is being processed asynchronously |
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": {
"client_id": "udyam_otp_async_bgKqddCbbfhmJGqouVIK",
"status": "pending"
},
"status_code": 200,
"success": true,
"message": "Success",
"message_code": "success"
}{
"data": null,
"status_code": 429,
"success": false,
"message": "OTP Rate Limit Exceeded. Please Try Again Later",
"message_code": "udyam_otp_rate_limited"
}webhook_url parameter, verify the authenticity of incoming webhook calls using signatures or secret tokens to prevent spoofing.otp_on_email) so they know where to look.webhook_url for status updates to reduce unnecessary API calls and provide faster user feedback.message_code values to user-friendly messages in your application to guide users effectively when errors occur.client_id returned by this API to complete the Udyam registration verification process.client_id for scenarios where webhook delivery is not configured.curl --location --request POST 'https://kyc-api.surepass.app/api/v1/udyam-otp/async/send-otp' \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data-raw '{
"registration_number": "UDYAM-RJ-30-0011111",
"mobile_number": "1234567890",
"webhook_url": "https://coral-nebula-46.webhook.cool",
"otp_on_email": true
}'{
"data": {
"client_id": "udyam_otp_async_bgKqddCbbfhmJGqouVIK",
"status": "pending"
},
"status_code": 200,
"success": true,
"message": "Success",
"message_code": "success"
}