> ## 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

> Establish a person's date of birth or age from open-source research, with per-field confidence and sourced evidence.

## Use case

Confirm a person's age for trust-and-safety, KYC, and due-diligence workflows where self-reported age isn't enough. Age Verification researches public sources to establish a date of birth (or a grounded age estimate when an exact date isn't available), and returns the evidence and sources behind the determination.

<Card title="API Reference" icon="code" href="/api-reference/intelligence/age-verification">
  See the full request/response schema and parameters in the API Reference.
</Card>

## Pricing

Age Verification runs at the same rate as the `high` tier of [People Intelligence](/api-reference/endpoint/people-intelligence). See [Credits & Pricing Guide](/guides/credits-and-pricing) for credit costs.

<Note>Unlike calling People Intelligence directly with `tier: "high"`, Age Verification does not require high-tier access approval — it's available to any paying org.</Note>

## Errors

For error responses (400, 403, 404, etc.), see [Handling Errors](/api-reference/errors).

***

## Start an age verification

Submit the person to verify. Returns a `task_id` for polling.

```http theme={null}
POST https://api.sixtyfour.ai/verify-age
```

### Example request

```json theme={null}
{
  "subject": {
    "name": "Jane Doe",
    "company": "Acme Corp",
    "linkedin": "https://www.linkedin.com/in/janedoe"
  }
}
```

<Tip>Save the `task_id` returned in the response — you'll need it to poll for the result.</Tip>

<Note>`subject` also accepts `lead_info` or `input` as aliases, so callers already integrated with People Intelligence can reuse the same request shape unchanged.</Note>

***

## Get verification status

Poll for progress and results of a running or completed age verification.

```http theme={null}
GET https://api.sixtyfour.ai/verify-age/{task_id}
```

`task_id` is the value returned by Start an age verification.

### Status values

| Status     | Description                                                                             |
| ---------- | --------------------------------------------------------------------------------------- |
| running    | Verification is actively researching.                                                   |
| completed  | Research finished. Response includes `date_of_birth`, `age`, `evidence`, and `sources`. |
| failed     | Verification encountered an error.                                                      |
| cancelled  | Verification was cancelled before completing.                                           |
| terminated | Verification was terminated before completing.                                          |
| timed\_out | Verification exceeded its time budget before completing.                                |

### Understanding the response

Once `completed`, the response contains:

| Field                                    | Description                                                                                                                              |
| ---------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- |
| `date_of_birth.day` / `.month` / `.year` | Individually gated on evidence — each is `null` unless established from a concrete source.                                               |
| `date_of_birth.confidence`               | 0–10 confidence in the weakest established date component.                                                                               |
| `age.value`                              | Current age in whole years — exact when the date of birth is known, otherwise a grounded estimate. `null` if it could not be determined. |
| `age.as_of`                              | ISO date the age value was calculated as of.                                                                                             |
| `age.confidence`                         | 0–10 confidence in the age value.                                                                                                        |
| `evidence`                               | Summary of what evidence established the date of birth or age.                                                                           |
| `sources`                                | Source URLs backing the determination.                                                                                                   |

<Warning>A `null` date-of-birth component means it was not established from concrete evidence — Age Verification never guesses a day, month, or year. `age.value` may still be populated as an estimate in that case.</Warning>

***

## Example usage

<CodeGroup>
  ```bash cURL theme={null}
  # 1. Start an age verification
  curl -X POST "https://api.sixtyfour.ai/verify-age" \
    -H "x-api-key: YOUR_API_KEY" \
    -H "Content-Type: application/json" \
    -d '{
      "subject": {
        "name": "Jane Doe",
        "company": "Acme Corp",
        "linkedin": "https://www.linkedin.com/in/janedoe"
      }
    }'

  # 2. Poll for status (use task_id from step 1)
  curl -X GET "https://api.sixtyfour.ai/verify-age/TASK_ID" \
    -H "x-api-key: YOUR_API_KEY"
  ```

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

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

  start_response = requests.post(
      f"{BASE_URL}/verify-age",
      headers=headers,
      json={
          "subject": {
              "name": "Jane Doe",
              "company": "Acme Corp",
              "linkedin": "https://www.linkedin.com/in/janedoe"
          }
      }
  )
  start_response.raise_for_status()
  task_id = start_response.json()["task_id"]

  while True:
      status_response = requests.get(f"{BASE_URL}/verify-age/{task_id}", headers=headers)
      status_response.raise_for_status()
      status_data = status_response.json()

      if status_data["status"] == "completed":
          print(f"Date of birth: {status_data['date_of_birth']}")
          print(f"Age: {status_data['age']}")
          break
      if status_data["status"] in ("failed", "cancelled", "terminated", "timed_out"):
          raise RuntimeError(f"Verification {status_data['status']}")

      time.sleep(10)
  ```

  ```javascript JavaScript theme={null}
  const API_KEY = "YOUR_API_KEY";
  const BASE_URL = "https://api.sixtyfour.ai";
  const headers = { "x-api-key": API_KEY, "Content-Type": "application/json" };

  const startResponse = await fetch(`${BASE_URL}/verify-age`, {
    method: "POST",
    headers,
    body: JSON.stringify({
      subject: {
        name: "Jane Doe",
        company: "Acme Corp",
        linkedin: "https://www.linkedin.com/in/janedoe"
      }
    })
  });
  const { task_id } = await startResponse.json();

  while (true) {
    const statusResponse = await fetch(`${BASE_URL}/verify-age/${task_id}`, { headers });
    const statusData = await statusResponse.json();

    if (statusData.status === "completed") {
      console.log("Date of birth:", statusData.date_of_birth);
      console.log("Age:", statusData.age);
      break;
    }
    if (["failed", "cancelled", "terminated", "timed_out"].includes(statusData.status)) {
      throw new Error(`Verification ${statusData.status}`);
    }

    await new Promise((r) => setTimeout(r, 10000));
  }
  ```
</CodeGroup>
