--- title: "Age Estimation | Veriff.com" slug: "age-estimation" description: "Verify minimum age requirements without full identity verification. Available via API, web flow, or SDKs." tags: ["Age Estimation", "Identity Verification"] updated: 2025-03-07T13:18:14Z published: 2025-03-07T13:18:14Z canonical: "devdocs.veriff.com/age-estimation" --- > ## Documentation Index > Fetch the complete documentation index at: https://devdocs.veriff.com/llms.txt > Use this file to discover all available pages before exploring further. # Age Estimation This solution estimates end-user's age from the selfie images that they capture. You receive the end-user's **estimated age** and **estimated gender**. It is available via API, web flow, and native SDKs. > [!NOTE] > A **separate integration** is needed to do this verification, please contact your **solutions engineer** for info and configuration. ## Prerequisites - You have an [integration set up](/v1/docs/how-to-create-an-integration) with Veriff by your Solutions Engineer - You have configured the **decision webhook** to get responses from Veriff (see the [Webhooks](/v1/docs/webhooks-guide) section for info) --- ## Flow overview The flow is a bit different, depending on the method you are using to verify your end-users with Veriff. ### Use via SDKs 1. Create a new session using the `API keys` and the `baseURL` of your Age Estimation integration (see the [API Documentation and reference](https://devdocs.veriff.com/apidocs) about how to find these) 1. We recommend creating and using a `vendorData` parameter to pass a unique identifier for the end-user in the flow 2. Direct the end-user into the verification flow 3. The end-user passes through the verification flow on their device, where they are required to capture only a selfie (no ID document is needed) 4. Session will be automatically set to `submitted` as soon as the end-user has submitted their images 5. Receive the results from Veriff via [decision webhook](/v1/docs/decision-webhook), query them using the [GET /sessions/{sessionId}/decision](/v1-api/apidocs/v1sessionsiddecision-1) endpoint, or view them in the Veriff Customer Portal ### Use via API In this case you need to collect the end-user’s selfie image(s) yourself and pass them to Veriff. 1. Create a new session using the `API keys` and the `baseURL` of your Age Estimation integration (see the [API Documentation and reference](https://devdocs.veriff.com/apidocs) about how to find these) 1. We recommend creating and using a `vendorData` parameter to pass a unique identifier for the end-user in the flow 2. Upload the end user’s selfie via [POST /sessions/{sessionId}/media](https://devdocs.veriff.com/apidocs/v1sessionsidmedia-3) endpoint with `image.context` as `face` (see [Context types (image, video)](/v1/docs/context-types-image-video-1) for more info about image context types) 3. Patch the session to `submitted` using the [PATCH /sessions/{sessionId}](https://devdocs.veriff.com/apidocs/v1sessionsid-2) 4. Receive the results from Veriff via [decision webhook](/v1/docs/decision-webhook), query them using the [GET /sessions/{sessionId}/decision](/v1-api/apidocs/v1sessionsiddecision-1) endpoint, or view them in the Veriff Customer portal --- ## Find decision and/or session related info You can get the data from three sources: - Receive the decision webhook - Query the results via GET sessions/{sessionId}/decision - View the session in Veriff Customer Portal ### Webhook and API call payload In the webhook and the GET sessions/{sessionId}/decision endpoint, the data is in: - `verification.additionalVerifiedData.estimatedAge` as a number of the estimated exact age - `verification.additionalVerifiedData.estimatedGender` as a number of the estimated* gender *Values closer to 0.0 indicate that the end-user is likely to be male, values closer to 1.0 indicate that the end-user is likely to be female. > [!NOTE] > Note that the payload **example below** contains **only the Age Estimation-related part**. See the [decision webhook](/v1/docs/decision-webhook) and [GET /sessions/{sessionId}/decision](/v1-api/apidocs/v1sessionsiddecision-1) documentation for the full payloads. #### Sample payload ```json {    "status": "success",    "verification": {        "id": "12df6045-3846-3e45-946a-14fa6136d78b",        "attemptId": "6cab5b0-c506-47a6-922d-6ae3b72ca172",        "vendorData": "12345678",        "endUserId": "a1b2c35d-e8f7-6d5e-3cd2-a1b2c35db3d4",        "status": "approved",        "code": 9001,        "reason": null,        "reasonCode": null,        "decisionTime": "2019-11-06T07:18:36.916Z",        "acceptanceTime": "2019-11-06T07:15:27.000Z",        ...        "additionalVerifiedData": {            "estimatedAge": 32,            "estimatedGender": 0.613,        },        "comments": []    },    ...    "technicalData": {        "ip": "186.153.67.122"    }  } ``` ### Veriff Customer Portal You can find the verification session related info, including the decision, in the Veriff Customer Portal, under the **Webhooks** tab. → *See* [*Review verification in Veriff Customer Portal*](/v1/docs/how-to-review-verification-in-veriff-customer-portal) *about how to view the session info in the Veriff Customer portal* --- ## Session status and session decision info Check the `verification.status` and `verification.code` strings in the decision webhook payload. They can be the following: | `verification.status` | `verification.code` | What does it mean? | | --- | --- | --- | | `approved` | 9001 | Positive: end-user was verified. The verification process is complete. Accessing the `sessionURL` again will show that nothing is to be done here. | | `declined` | 9102 | Negative: end-user has not been verified. The verification process is complete. Either it was a fraud case or some other severe reason that the end-user could not be verified. You should investigate the session further and read the [Granular reason codes (table)](/v1/docs/granular-reason-codes). If you decide to give the end-user another try, you need to create a new session (see the POST /sessions for more info). | | `resubmission_requested` | 9103 | Resubmission has been requested. The verification process has not been completed. Something was missing from the end-user, and they need to go through the flow once more. The same `sessionURL` should be used for this purpose. You can investigate the session further and read the [Granular reason codes (table)](/v1/docs/granular-reason-codes). | If the session was `declined` or `resubmission_requested`, you can find additional information by checking the `verification.status`, `verification.code`, `verification.reason` and `verification.reasonCode` data objects. For more info about the codes you are seeing, refer to: - [Verification session status codes (table)](/v1/docs/verification-session-status-codes-table) - [Verification session decision codes (table)](/v1/docs/verification-session-decision-codes-table) - [Granular reason codes (table)](/v1/docs/granular-reason-codes) **User of Veriff customer's solution**, the person who goes through the verification flow (aka "end-user flow"). An environment created according to customer's needs to carry out, manage and observe verifications. You can find the list of your integrations in **Veriff Customer Portal** > **All** **Integrations** page (you need to be logged in). A **process where the end-user submits the data** required to get verified. Also referred to as the "end-user flow". A specific “point of entry” in an API. For **webhooks**, this is the point of entry on your side. For **Veriff public API**, you need to attach an endpoint to the end of your `baseURL` to complete the **API URL**. The results that you will get from the Veriff public API request will depend on the endpoint you attach. Veriff customer back-office, a dashboard where you can see your end-users' verification data. Depending on your setup, you may be required to access the environment via station.veriff.com or hub.veriff.com. Always **check your sign-up email** and make sure that you **log in via correct address**. ## Related - [Getting Started](/getting-started.md) - [Integrations](/how-to-create-an-integration.md) - [Create verification session](/how-to-generate-sessions-manually.md) - [Webhooks Guide](/webhooks-guide.md) - [Codes](/codes.md)