> ## Documentation Index
> Fetch the complete documentation index at: https://docs.sixtyfour.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Age Verification

> Check people's ages from public evidence and decide what to do with each result.

This guide runs a batch of age verifications and sorts each person into pass, fail or manual review based on the evidence. For the request and response fields, see the [Age Verification reference](/api-reference/endpoint/age-verification).

## Try it in the dashboard

Open [Age Verification in the API Playground](https://app.sixtyfour.ai/playground/verify-age), enter what you know about the person under Subject, and run it. The playground runs the same job as the API and shows the date of birth, age, evidence and sources.

## Verify a batch and gate on confidence

Each verification runs `high` tier research and takes a few minutes, so start them all first and then poll. This script checks whether each person is at least 18 and sends anything uncertain to a human.

```python theme={null}
import time
import requests

BASE_URL = "https://api.sixtyfour.ai"
headers = {"x-api-key": "YOUR_API_KEY", "Content-Type": "application/json"}

MIN_AGE = 18
MIN_CONFIDENCE = 80  # 0-100; raise it for legal or compliance decisions

people = [
    {"name": "Jane Doe", "company": "Acme Corp", "linkedin": "https://www.linkedin.com/in/janedoe"},
    {"name": "John Smith", "location": "Austin, TX", "email": "john@example.com"},
]

task_ids = []
for person in people:
    start = requests.post(f"{BASE_URL}/verify-age", headers=headers, json={"subject": person})
    start.raise_for_status()
    task_ids.append(start.json()["task_id"])

pending = dict(zip(task_ids, people))
while pending:
    for task_id, person in list(pending.items()):
        result = requests.get(f"{BASE_URL}/verify-age/{task_id}", headers=headers).json()
        if result["status"] == "running":
            continue
        del pending[task_id]

        if result["status"] != "completed":
            print(person["name"], "review", f"job {result['status']}")
            continue

        age = result["age"]
        if age["value"] is None or age["confidence"] < MIN_CONFIDENCE:
            decision = "review"
        elif age["value"] >= MIN_AGE:
            decision = "pass"
        else:
            decision = "fail"
        print(person["name"], decision, age["value"], result["sources"])
    if pending:
        time.sleep(15)
```

## Reading the result

* Gate on `age.confidence` or `date_of_birth.confidence`, not on whether a value is present. Both are 0–100.
* A `null` date component means no source established it. A known birth year with an unknown day and month still pins the age to within a year.
* `age.value` can be an estimate when no date of birth was found. Its confidence reflects that.
* Keep `evidence` and `sources` with any decision you act on, so a reviewer can check them.

## Getting better matches

* Send every identifier you have in `subject`. A name alone rarely identifies one person; a company, location, email or LinkedIn URL usually does.
* Reuse People Intelligence payloads as they are: `lead_info` is accepted in place of `subject`.
* From an AI client, use the `sixtyfour_verify_age_start` and `sixtyfour_verify_age_status` tools in the [MCP server](/developer-tools/mcp-setup).


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.