35+ countries live across 4 regions

For your reviewers

Elsewhere

Get your coverage map

age_verification

age_verification tells you whether the subscriber behind a phone number is above an age threshold, based on the data the mobile network holds for the line. You get a yes or no against the threshold, never the subscriber's age or date of birth.

Use it where you need to know that a customer is an adult without asking them for an identity document, for example before giving access to age-restricted content or services.

Request

Send the number and age_verification in commands. No other input is needed.

{
  "number": "+447808226974",
  "commands": ["age_verification"]
}

The operator already holds the subscriber's registered data, so the phone number is all it needs: you do not send a date of birth or any other detail. You do not choose the threshold either. It is set by the source that answers, and the response tells you which threshold the answer refers to. Always read it together with the result.

age_verification is not available in every country. Where it is not available, see Billing.

Response

{
  "status": 0,
  "status_message": "Response from one supplier",
  "age_verification": {
    "verified": 1,
    "threshold": 18
  },
  "version": "..."
}
FieldTypeMeaning
verified integer The answer against threshold. See the table below.
threshold integer (years) The age the answer refers to, currently 18. It can change in the future, so always read it. -1 when verified is -1: there is no evaluation to refer to.

verified values

ValueMeaning
1The subscriber is at or above the threshold.
0The subscriber is below the threshold.
-1No data: the operator holds no data for this subscriber, so the age can neither be confirmed nor denied.

Treat -1 as "not verified", never as "under age". Only 0 says the subscriber is below the threshold.

Check threshold before acting on verified. A 1 against a threshold lower than the one your rules require is not enough.

When there is no age_verification block

If the source had no answer for the number, could not be reached, or the check is not enabled for that operator, the response has no age_verification block. The status is 4, and the status_message names age_verification among the commands that returned no data. If the number's country is not covered, the status is 2, or 4 when other commands were served.

Billing

A response with an age_verification block is charged, including when verified is -1: that is an answer from the operator. A response without the block is not charged.

API reference

Request

curl -X POST "https://api.connect.plumma.it/services/api" \
-H "Content-Type: application/json" \
-H "x-plumma-connect-api-key: YOUR_API_KEY_HERE" \
-H "x-plumma-connect-app-id: YOUR_APP_ID_HERE" \
-d '{
  "number": "+447425604497",
  "commands": [
    "age_verification"
  ]
}'

Response (above threshold)

{
  "number": "+447425604497",
  "status": 0,
  "status_message": "Response from one supplier - This response is for demo purpose only [cmd_enc=16777216] [{age_verification=SUPPLIER0 : Success}]",
  "age_verification": {
    "verified": 1,
    "threshold": 18
  },
  "version": "1.0.2-20260608095239"
}

Response (below threshold)

{
  "number": "+33612345678",
  "status": 0,
  "status_message": "Response from one supplier - This response is for demo purpose only [cmd_enc=16777216] [{age_verification=SUPPLIER0 : Success}]",
  "age_verification": {
    "verified": 0,
    "threshold": 18
  },
  "version": "1.0.2-20260608095239"
}

Response (no data)

{
  "number": "+34611222333",
  "status": 0,
  "status_message": "Response from one supplier - This response is for demo purpose only [cmd_enc=16777216] [{age_verification=SUPPLIER0 : OK}]",
  "age_verification": {
    "verified": -1
  },
  "version": "1.0.2-20260608095239"
}

Read this in the portal, with search and the reference beside it: Age Verification