Provero Logo

Mobile Type & Tenure API

Contract type and network tenure. Provero checks the mobile number's contract type (Pay As You Go, Pay Monthly or Business) and whether the subscriber was connected to their current network on the date you specify. This is a network-subscription check, not an identity or KYC check.

Initial release. Mobile Type & Tenure is currently a restricted, test-only release: live responses are available for subscribers on O2/Telefonica and Vodafone networks, and are not yet covered for EE or Three. Explore the simulated Playground first.
Send a mobile number to return the contract type and whether the subscriber was connected to the current network today (UTC). Supply tenure_date to check a different date. status: success means the request completed, not that tenure was confirmed. Live requests require a Provero API key and Mobile Type & Tenure access; the Playground always returns simulated responses and never uses credits.

Endpoint

POST
https://api.provero.io/api/validate/mobile-type-tenure

Headers

Authorization:
Content-Type: application/json
Accept: application/json


Request Body

Field Type Required Description
mobile_number string Yes Mobile number in E.164 international format, including the leading +, for example +447700900123.
tenure_date string No Optional date to check network tenure against, in YYYY-MM-DD format. Omit it to use today (UTC).
Request Payload Example (JSON)
{
    "mobile_number": "+447700900123"
}

Request Examples

Choose language Bash (cURL) 5 examples
curl -X POST https://api.provero.io/api/validate/mobile-type-tenure \
  -H "Authorization: Bearer REPLACE_WITH_API_TOKEN" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json" \
  -d '{"mobile_number":"+447700900123","tenure_date":"2026-03-01"}'

Response Examples

Choose response example Success - Pay Monthly Subscriber, Tenure Confirmed 16 examples
{
    "status": "success",
    "verification_id": "mtn_123456",
    "mobile_number": "+447700900123",
    "tenure_date": "2026-03-01",
    "tenure_result": true,
    "contract_type": "PAYM",
    "mcc_mnc": "23415"
}

Response Body

Success structure

Field Name Type Example Always Present
status string success Yes
verification_id string mtn_123456 Yes
mobile_number string +447700900123 Yes
tenure_date string 2026-03-01 Yes
tenure_result boolean 1 Yes
contract_type string PAYM Yes
mcc_mnc string 23415 Yes

Error structure

Field Name Type Example Always Present Description
status string error Yes Indicates that the request could not be completed.
error object {"code":"insufficient_balance","message":"Your balance is insufficient to complete this request."} Yes Contains a stable error.code for integration logic and a human-readable error.message. Request validation failures (HTTP 422) instead use the standard Laravel validation envelope with message and errors fields.

Understanding the response

tenure_result is the primary outcome. A value of false means the subscriber was not connected to the current network on tenure_date; it must not be interpreted as a network failure, an invalid number, or a negative credit decision on its own.

contract_type returns PAYG, PAYM or Business.

Unsupported networks and data unavailability are reported as error responses (for example network_not_supported or tenure_data_unavailable), never as tenure_result: false. If you receive an error, do not interpret it as a negative tenure result.

Request examples

Change only tenure_date to check the subscriber's connection on a different date through the same endpoint.

Tenure confirmed

{
    "mobile_number": "+447700900123",
    "tenure_date": "2026-03-01"
}

Tenure not confirmed

{
    "mobile_number": "+447700900126",
    "tenure_date": "2026-08-01"
}

Errors and recommended actions

Error responses use the same envelope across Mobile Type & Tenure failures, except request validation failures (HTTP 422), which use the standard Laravel validation envelope with message and errors fields. The HTTP status identifies the failure class and error.code is the stable value to branch on in your integration; do not branch on the human-readable message. Automatically retry only request_timed_out (408), rate_limit_exceeded (429) and service_temporarily_unavailable (503), using bounded backoff. Do not retry other responses unchanged, and never treat an error as tenure_result: false.

HTTP statusCodeRecommended action
422 validation error (standard envelope) Correct the flagged field and resend. Do not treat a 422 as a tenure result.
401 invalid_api_key Supply a valid API token.
402 insufficient_balance Add credit before sending another request.
403 mobile_type_tenure_access_not_enabled Sign in to Provero and request Mobile Type & Tenure access from the Playground.
403 provider_configuration_error Contact Provero support with the verification ID. Do not retry until the configuration issue has been resolved.
429 rate_limit_exceeded Wait and retry using backoff.
408 request_timed_out Retry with backoff.
422 network_not_supported The current network is not enabled for this early release. Do not interpret this as a negative tenure result.
422 tenure_data_unavailable The network could not provide tenure data. Do not interpret this as a negative tenure result.
502 provider_malformed_response Contact Provero support with the verification ID. Do not interpret this as a tenure result.
503 service_temporarily_unavailable Retry later using exponential backoff. Do not interpret this as a negative tenure result.

Ready to go live?

Mobile Type & Tenure is an initial release and is restricted to testing: live responses are currently available for O2/Telefonica and Vodafone subscribers, and EE and Three are not yet covered. Live checks require a Provero API key and Mobile Type & Tenure enabled on your account. Explore the simulated Playground first.