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

# Privue API Suite

> Identity and account verification against government and banking sources.

Each endpoint makes one synchronous call to a source and returns what the source answered, with no
scoring or interpretation applied to it. DigiLocker is the exception: it requires a consent redirect
before documents can be read.

## What you can verify

<CardGroup cols={2}>
  <Card title="DigiLocker" href="/suite/digilocker">
    Government-issued documents, retrieved after the user grants consent.
  </Card>

  <Card title="PAN" href="/suite/api-reference/endpoint/verify_pan_v1_verify_post">
    PAN validity, with an optional check of the name and date of birth claimed for it.
  </Card>

  <Card title="Bank accounts" href="/suite/bank">
    Account existence and the name the bank holds against it.
  </Card>

  <Card title="Usage" href="/suite/usage">
    Calls made, credits consumed, and credits remaining.
  </Card>
</CardGroup>

## Quickstart

```bash theme={null}
curl -X POST https://api.privue.ai/pan/v1/verify \
  -H "Authorization: Bearer $PRIVUE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "pan": "ABCDE1234F",
    "name_as_per_pan": "John Doe",
    "date_of_birth": "1990-01-31",
    "reason": "Onboarding a new customer"
  }'
```

```json theme={null}
{
  "code": 200,
  "timestamp": 1751975600361,
  "transaction_id": "3b862714-d27d-4907-9027-e6399f8a8d46",
  "data": {
    "pan": "ABCDE1234F",
    "category": "individual",
    "status": "valid",
    "remarks": null,
    "name_as_per_pan_match": true,
    "date_of_birth_match": true,
    "aadhaar_seeding_status": "y"
  }
}
```

## Conventions

**Response envelope.** Every response carries `code`, repeating the HTTP status; `timestamp`, when
the response was produced, in Unix milliseconds; `transaction_id`, identifying the call; and `data`,
holding the result. Quote `transaction_id` when raising a query about a call.

**Per-endpoint versioning.** The version sits in the path, such as `/pan/v1/verify`. A new version
of one endpoint does not move another. See [versioning](/suite/versioning).

**Name matching is the caller's.** Where a source returns a name, such as `name_at_bank`, it is
returned as the source spelled it. Comparing it against an expected name, at a threshold you choose,
is your responsibility.

## Data retention

Request and response payloads are not stored. Documents are returned as the issuer's own download
links, and the response is the only copy.

Each call is recorded as metadata: the endpoint, the time, whether it succeeded, and whether it was
charged. That record is what [usage](/suite/usage) reports and what invoices are built from. It holds
nothing about the person or account the call was about.
