Mobile Verification
3 endpoints · Core API
This API offers seamless authentication of mobile numbers without the need for OTP verification, ensuring swift and hassle-free validation. This process verifies mobile numbers instantly, enhancing user experience and reducing friction in the onboarding process.
Benefits include: -
1. Enhanced User Experience: Simplifies the verification process for users.
2. Time Efficiency: Saves time by eliminating the OTP verification step.
3. Increased Conversion Rates: Reduces dropout rates during registration.
4. Improved Security: Ensures reliable verification without compromising security.
What you can do
This API verifies the current status and connection type (Prepaid/Postpaid) of a mobile number, ensuring accurate authentication of mobile connections for various operational purposes.
Mobile Verification with OTP
Step 1 of 2. Request body: mobile (required) is a 10-digit Indian mobile number without country code, starting with 6, 7, 8 or 9. consent and consent_text are required; request_id is optional and is your own reference.
Use the request_id returned in data with the OTP in POST /api/v1/MobileVerification/details.
Headers
- X-API-KEYstringrequiredYour secret API key for the environment you are calling (Stage and Live use different keys).
- X-API-APP-IDstringrequiredThe App ID issued together with the key.
- Content-Typestringrequiredapplication/json
Body parameters
application/json- consentstringrequiredRequired. The end user's consent to this verification. Send `Y`.minLength 1default Y
- consent_textstringrequiredRequired. The consent statement shown to the end user. Send the default text from the sample.minLength 1default I hear by declare my consent agreeme…
- request_idstringoptionalOptional. Your own id to correlate this call in your logs. A unique id is generated if you leave it out.nullable
- mobilestringrequiredRequired. 10-digit Indian mobile number without country code, starting with 6, 7, 8 or 9. An OTP is sent to this number.length 10pattern ^[6-9]\d{9}$default 9876543210
Sample request body
Responses
200OK
- successbooleanoptionalNo description.
- statusCodeinteger (int32)optionalNo description.default 200
- messagestringoptionalNo description.nullabledefault XXXXX
- dataobjectoptionalResponse model returned after initiating the mobile OTP verification.
2 fields
- messagestringoptionalGets or sets the status message of the OTP request.nullable
- request_idstringoptionalGets or sets the unique request identifier used for subsequent OTP validation.nullable
- messagesarray<string>optionalNo description.nullable
- request_idstringoptionalNo description.nullable
- isBillablebooleanoptionalWhether this request was charged: true if it was, false if not. Errors always show false. Flows that finish later (ITR Fetch, SHCIL eStamp, DigiLocker, eSign) show false here, because the charge is made when the result is ready. eSign charges each signer when they complete signing. DigiLocker deducts the credit when the link is created and refunds it automatically if the link expires before the user completes it.
400Bad Request
- dataobjectoptionalNo description.
- messagesarray<string>optionalNo description.nullable
- request_idstringoptionalNo description.nullable
- successbooleanoptionalNo description.default false
- messagestringoptionalNo description.nullabledefault XXXXX
- isBillablebooleanoptionalNo description.
- statusCodeinteger (int32)optionalNo description.default 400
401Unauthorized
- dataobjectoptionalNo description.
- messagesarray<string>optionalNo description.nullable
- request_idstringoptionalNo description.nullable
- successbooleanoptionalNo description.default false
- messagestringoptionalNo description.nullabledefault XXXXX
- isBillablebooleanoptionalNo description.
- statusCodeinteger (int32)optionalNo description.default 401
500Internal Server Error
- dataobjectoptionalNo description.
- messagesarray<string>optionalNo description.nullable
- request_idstringoptionalNo description.nullable
- successbooleanoptionalNo description.default false
- messagestringoptionalNo description.nullabledefault XXXXX
- isBillablebooleanoptionalNo description.
- statusCodeinteger (int32)optionalNo description.default 500
Code samplescurl · Node.js · Python
Mobile Verification (OTP less)
Request body: mobile_number (required, note the underscore) is a 10-digit Indian mobile number without country code, starting with 6, 7, 8 or 9. consent and consent_text are required; request_id is optional.
Headers
- X-API-KEYstringrequiredYour secret API key for the environment you are calling (Stage and Live use different keys).
- X-API-APP-IDstringrequiredThe App ID issued together with the key.
- Content-Typestringrequiredapplication/json
Body parameters
application/json- consentstringrequiredRequired. The end user's consent to this verification. Send `Y`.minLength 1default Y
- consent_textstringrequiredRequired. The consent statement shown to the end user. Send the default text from the sample.minLength 1default I hear by declare my consent agreeme…
- request_idstringoptionalOptional. Your own id to correlate this call in your logs. A unique id is generated if you leave it out.nullable
- mobile_numberstringrequiredRequired. 10-digit Indian mobile number without country code, starting with 6, 7, 8 or 9.length 10pattern ^[6-9]\d{9}$default 9876543210
Sample request body
Responses
200OK
- successbooleanoptionalNo description.
- statusCodeinteger (int32)optionalNo description.default 200
- messagestringoptionalNo description.nullabledefault XXXXX
- dataobjectoptionalResponse model for the OTP-less Mobile Lookup.
12 fields
- is_number_validbooleanoptionalGets or sets whether the number is a valid, allocated mobile number.
- subscriber_statusstringoptionalGets or sets the subscriber status reported by the operator (for example "CONNECTED").nullable
- connection_typestringoptionalGets or sets the connection type — "prepaid" or "postpaid".nullable
- is_roamingbooleanoptionalGets or sets whether the number is currently roaming.
- subscriber_namestringoptionalGets or sets the name the connection is registered against.nullable
- alternate_numberstringoptionalGets or sets the alternate contact number on record, when the operator publishes one.nullable
- connection_status_codestringoptionalGets or sets the connection status code (for example "DELIVERED").nullable
- connection_status_error_code_idstringoptionalGets or sets the operator error code explaining a non-delivered connection status. Empty when the lookup succeeded normally.nullable
- msisdnobjectoptionalRepresents the normalised mobile number and the network codes that identify its operator.
6 fields
- msisdnstringoptionalGets or sets the number in international format (for example "+919971817172").nullable
- typestringoptionalGets or sets the line type (for example "MOBILE").nullable
- mccstringoptionalGets or sets the Mobile Country Code ("404" for India).nullable
- mncstringoptionalGets or sets the Mobile Network Code identifying the operator within the country.nullable
- mcc_mncstringoptionalGets or sets the concatenated MCC+MNC operator identifier.nullable
- country_codestringoptionalGets or sets the ISO country code of the number.nullable
- current_service_providerobjectoptionalRepresents a telecom operator and the circle it serves the number from.
8 fields
- network_namestringoptionalGets or sets the operator name (for example "Airtel").nullable
- network_regionstringoptionalGets or sets the telecom circle / region (for example "Delhi").nullable
- network_prefixstringoptionalGets or sets the numbering-series prefix allocated to this operator.nullable
- mccstringoptionalGets or sets the Mobile Country Code.nullable
- mncstringoptionalGets or sets the Mobile Network Code.nullable
- country_codestringoptionalGets or sets the ISO country code.nullable
- country_namestringoptionalGets or sets the country name.nullable
- country_prefixstringoptionalGets or sets the international dialling prefix (for example "+91").nullable
- original_service_providerobjectoptionalRepresents a telecom operator and the circle it serves the number from.
8 fields
- network_namestringoptionalGets or sets the operator name (for example "Airtel").nullable
- network_regionstringoptionalGets or sets the telecom circle / region (for example "Delhi").nullable
- network_prefixstringoptionalGets or sets the numbering-series prefix allocated to this operator.nullable
- mccstringoptionalGets or sets the Mobile Country Code.nullable
- mncstringoptionalGets or sets the Mobile Network Code.nullable
- country_codestringoptionalGets or sets the ISO country code.nullable
- country_namestringoptionalGets or sets the country name.nullable
- country_prefixstringoptionalGets or sets the international dialling prefix (for example "+91").nullable
- roaming_service_providerobjectoptionalRepresents a telecom operator and the circle it serves the number from.
8 fields
- network_namestringoptionalGets or sets the operator name (for example "Airtel").nullable
- network_regionstringoptionalGets or sets the telecom circle / region (for example "Delhi").nullable
- network_prefixstringoptionalGets or sets the numbering-series prefix allocated to this operator.nullable
- mccstringoptionalGets or sets the Mobile Country Code.nullable
- mncstringoptionalGets or sets the Mobile Network Code.nullable
- country_codestringoptionalGets or sets the ISO country code.nullable
- country_namestringoptionalGets or sets the country name.nullable
- country_prefixstringoptionalGets or sets the international dialling prefix (for example "+91").nullable
- messagesarray<string>optionalNo description.nullable
- request_idstringoptionalNo description.nullable
- isBillablebooleanoptionalWhether this request was charged: true if it was, false if not. Errors always show false. Flows that finish later (ITR Fetch, SHCIL eStamp, DigiLocker, eSign) show false here, because the charge is made when the result is ready. eSign charges each signer when they complete signing. DigiLocker deducts the credit when the link is created and refunds it automatically if the link expires before the user completes it.
400Bad Request
- dataobjectoptionalNo description.
- messagesarray<string>optionalNo description.nullable
- request_idstringoptionalNo description.nullable
- successbooleanoptionalNo description.default false
- messagestringoptionalNo description.nullabledefault XXXXX
- isBillablebooleanoptionalNo description.
- statusCodeinteger (int32)optionalNo description.default 400
401Unauthorized
- dataobjectoptionalNo description.
- messagesarray<string>optionalNo description.nullable
- request_idstringoptionalNo description.nullable
- successbooleanoptionalNo description.default false
- messagestringoptionalNo description.nullabledefault XXXXX
- isBillablebooleanoptionalNo description.
- statusCodeinteger (int32)optionalNo description.default 401
500Internal Server Error
- dataobjectoptionalNo description.
- messagesarray<string>optionalNo description.nullable
- request_idstringoptionalNo description.nullable
- successbooleanoptionalNo description.default false
- messagestringoptionalNo description.nullabledefault XXXXX
- isBillablebooleanoptionalNo description.
- statusCodeinteger (int32)optionalNo description.default 500
Code samplescurl · Node.js · Python
Mobile Verification with details
Step 2 of 2. Request body: otp (required) is the OTP received on the mobile number (digits only, up to 6) and request_id (required) is the request_id returned in data by POST /api/v1/MobileVerification/otp. This request does not take consent fields.
Headers
- X-API-KEYstringrequiredYour secret API key for the environment you are calling (Stage and Live use different keys).
- X-API-APP-IDstringrequiredThe App ID issued together with the key.
- Content-Typestringrequiredapplication/json
Body parameters
application/json- otpstringrequiredRequired. OTP received on the mobile number. Digits only, 1 to 6 characters.minLength 1pattern ^\d{1,6}$default 106000
- request_idstringrequiredRequired. The `request_id` returned inside `data` by the OTP request. Do not reuse the `request_id` you sent with the OTP request.minLength 1
Sample request body
Responses
200OK
- successbooleanoptionalNo description.
- statusCodeinteger (int32)optionalNo description.default 200
- messagestringoptionalNo description.nullabledefault XXXXX
- dataobjectoptionalResponse model containing comprehensive mobile verification details.
3 fields
- sim_detailsobjectoptionalRepresents detailed SIM information including activation and activity details.
5 fields
- last_activity_dateanyoptionalGets or sets the last activity date on the SIM.nullable
- providerstringoptionalGets or sets the mobile service provider name.nullable
- otp_validatedbooleanoptionalGets or sets whether the OTP was successfully validated.
- typestringoptionalGets or sets the SIM type (e.g., prepaid, postpaid).nullable
- activation_datestringoptionalGets or sets the SIM activation date.nullable
- identityobjectoptionalRepresents the identity details of the mobile number owner.
3 fields
- namestringoptionalGets or sets the full name of the person.nullable
- genderstringoptionalGets or sets the gender of the person.nullable
- date_of_birthstringoptionalGets or sets the date of birth of the person.nullable
- contactobjectoptionalRepresents the contact details of the mobile number owner.
4 fields
- addressstringoptionalGets or sets the address of the contact.nullable
- email_idanyoptionalGets or sets the email address of the contact.nullable
- alt_contactstringoptionalGets or sets the alternate contact number.nullable
- work_emailstringoptionalGets or sets the work email address.nullable
- messagesarray<string>optionalNo description.nullable
- request_idstringoptionalNo description.nullable
- isBillablebooleanoptionalWhether this request was charged: true if it was, false if not. Errors always show false. Flows that finish later (ITR Fetch, SHCIL eStamp, DigiLocker, eSign) show false here, because the charge is made when the result is ready. eSign charges each signer when they complete signing. DigiLocker deducts the credit when the link is created and refunds it automatically if the link expires before the user completes it.
400Bad Request
- dataobjectoptionalNo description.
- messagesarray<string>optionalNo description.nullable
- request_idstringoptionalNo description.nullable
- successbooleanoptionalNo description.default false
- messagestringoptionalNo description.nullabledefault XXXXX
- isBillablebooleanoptionalNo description.
- statusCodeinteger (int32)optionalNo description.default 400
401Unauthorized
- dataobjectoptionalNo description.
- messagesarray<string>optionalNo description.nullable
- request_idstringoptionalNo description.nullable
- successbooleanoptionalNo description.default false
- messagestringoptionalNo description.nullabledefault XXXXX
- isBillablebooleanoptionalNo description.
- statusCodeinteger (int32)optionalNo description.default 401
500Internal Server Error
- dataobjectoptionalNo description.
- messagesarray<string>optionalNo description.nullable
- request_idstringoptionalNo description.nullable
- successbooleanoptionalNo description.default false
- messagestringoptionalNo description.nullabledefault XXXXX
- isBillablebooleanoptionalNo description.
- statusCodeinteger (int32)optionalNo description.default 500