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

# Quick Start

> Verify emails, phones, and look up CPF with API v1 — sync (up to 10) or async batch.

<Tip>
  From **clean signup to first verification** in a few steps. Email uses scope **`validations:email`**; phone uses **`validations:phone`**; CPF uses **`validations:cpf`**. Billing follows the chosen mode or SKU — [Modes and billing](/en/validations-api/como-funciona/modos-e-cobranca).
</Tip>

## In short

* **Email** — check whether the address exists before sending a campaign or transactional.
* **Phone** — check format and, in full mode, whether it **has WhatsApp**.
* **CPF** — **quick** mode (format) or **full** mode (official government database via partnership).
* **Up to 10** in sync API or dashboard; **large lists** via async batch.

## Before you start

| Item            | Email                                              | Phone               | CPF               |
| --------------- | -------------------------------------------------- | ------------------- | ----------------- |
| Key scope       | `validations:email`                                | `validations:phone` | `validations:cpf` |
| Credits or PAYG | Yes                                                | Yes                 | Yes               |
| Authentication  | `Authorization: Bearer sk_live_...` or `x-api-key` | Same                | Same              |

Base URL: `https://api.notifique.dev`.

***

## Email — immediate verification (up to 10)

Send the list and get results in the same response — ideal at signup or before importing a small spreadsheet.

```http theme={null}
POST /v1/validations/email
Content-Type: application/json
Authorization: Bearer sk_live_xxxxx
```

**Quick mode** — format, disposable domain, and MX (cheaper):

```json theme={null}
{
  "emails": ["client@example.com", "bounce@invalid-domain.xyz"],
  "mode": "quick"
}
```

**Full mode** — includes inbox check (deeper):

```json theme={null}
{
  "emails": ["client@example.com"],
  "mode": "full"
}
```

Response **200**:

```json theme={null}
{
  "success": true,
  "data": {
    "mode": "quick",
    "total_credits_charged": 1,
    "results": [
      {
        "email": "client@example.com",
        "status": "valid",
        "reason": null,
        "disposable": false,
        "mx_found": true,
        "catch_all": false,
        "suggested_spelling": null,
        "credits_charged": 1
      },
      {
        "email": "bounce@invalid-domain.xyz",
        "status": "invalid",
        "reason": "MX record not found",
        "disposable": false,
        "mx_found": false,
        "catch_all": null,
        "suggested_spelling": null,
        "credits_charged": 0
      }
    ]
  }
}
```

### Email — large batch (up to 10,000)

For large lists, processing runs in the background — you check progress later.

```http theme={null}
POST /v1/validations/email/batch
```

```json theme={null}
{
  "emails": ["a@example.com", "b@example.com"],
  "mode": "full"
}
```

Response **200** (job queued):

```json theme={null}
{
  "success": true,
  "data": {
    "job_id": "job_email_abc123",
    "status": "queued",
    "total": 2,
    "mode": "full"
  }
}
```

Check progress:

```http theme={null}
GET /v1/validations/email/batch/{jobId}
```

***

## Phone — immediate verification (up to 10)

Same idea: send up to 10 numbers and get results in the response.

```http theme={null}
POST /v1/validations/phone
Content-Type: application/json
Authorization: Bearer sk_live_xxxxx
```

**Quick mode** — international format and line type:

```json theme={null}
{
  "phones": ["+5511999999999", "+14155552671"],
  "mode": "quick"
}
```

**Full mode** — includes WhatsApp check:

```json theme={null}
{
  "phones": ["+5511999999999"],
  "mode": "full"
}
```

Response **200**:

```json theme={null}
{
  "success": true,
  "data": {
    "mode": "full",
    "total_credits_charged": 5,
    "results": [
      {
        "phone": "+5511999999999",
        "status": "valid",
        "phone_valid": true,
        "line_type": "mobile",
        "country_code": "BR",
        "whatsapp_registered": true,
        "reason": null,
        "credits_charged": 5
      }
    ]
  }
}
```

In `quick` mode, `whatsapp_registered` is `null` (WhatsApp is not checked).

### Phone — large batch (500 to 10,000)

```http theme={null}
POST /v1/validations/phone/batch
```

```json theme={null}
{
  "phones": ["+5511999999999", "+5511888888888"],
  "mode": "full"
}
```

<Warning>
  Phone batch requires **at least 500** numbers per job. For smaller lists, use the dashboard or the sync route.
</Warning>

Job status:

```http theme={null}
GET /v1/validations/phone/batch/{jobId}
```

***

## CPF — immediate lookup (up to 10)

Send **CPF + birth date** pairs and get results in the same response.

```http theme={null}
POST /v1/validations/cpf
Content-Type: application/json
Authorization: Bearer sk_live_xxxxx
```

**Quick mode** — validates CPF checksum and birth date format (cheaper):

```json theme={null}
{
  "items": [
    { "cpf": "12345678909", "birthDate": "1990-01-01" }
  ],
  "mode": "quick"
}
```

Response **200** (locally valid):

```json theme={null}
{
  "success": true,
  "data": {
    "mode": "quick",
    "totalCreditsCharged": 1,
    "results": [
      {
        "cpf": "12345678909",
        "birthDate": "1990-01-01",
        "status": "valid",
        "resultCode": 8,
        "reason": null,
        "name": null,
        "socialName": null,
        "registrationStatus": null,
        "registeredBirthDate": null,
        "deceasedIndicator": null,
        "creditsCharged": 1
      }
    ]
  }
}
```

**Full mode** — official government database lookup (via partnership). Send **multiple pairs in one request** — each item returns its own `status`:

```json theme={null}
{
  "items": [
    { "cpf": "12345678909", "birthDate": "1990-01-01" },
    { "cpf": "11144477735", "birthDate": "2015-06-10" }
  ],
  "mode": "full"
}
```

Response **200** (adult **found** + minor **blocked** in the same response):

```json theme={null}
{
  "success": true,
  "data": {
    "mode": "full",
    "totalCreditsCharged": 1800,
    "results": [
      {
        "cpf": "12345678909",
        "birthDate": "1990-01-01",
        "status": "found",
        "resultCode": 1,
        "reason": null,
        "name": "Maria da Silva",
        "socialName": null,
        "registrationStatus": { "code": "0", "description": "Regular" },
        "registeredBirthDate": "1990-01-01",
        "deceasedIndicator": null,
        "creditsCharged": 900
      },
      {
        "cpf": "11144477735",
        "birthDate": "2015-06-10",
        "status": "minorBlocked",
        "resultCode": 3,
        "reason": "Query blocked for minor data protected by LGPD.",
        "name": null,
        "socialName": null,
        "registrationStatus": null,
        "registeredBirthDate": null,
        "deceasedIndicator": null,
        "creditsCharged": 900
      }
    ]
  }
}
```

<Note>
  Other statuses in the same array: `notFound`, `invalid` (no charge). See [CPF lookup](/en/validations-api/como-funciona/introducao-cpf).
</Note>

Isolated example — **not found** (still charged in full mode):

```json theme={null}
{
  "success": true,
  "data": {
    "mode": "full",
    "totalCreditsCharged": 900,
    "results": [
      {
        "cpf": "98765432100",
        "birthDate": "1985-03-15",
        "status": "notFound",
        "resultCode": 2,
        "reason": "CPF not found.",
        "name": null,
        "socialName": null,
        "registrationStatus": null,
        "registeredBirthDate": null,
        "deceasedIndicator": null,
        "creditsCharged": 900
      }
    ]
  }
}
```

### CPF — large batch (up to 10,000)

```http theme={null}
POST /v1/validations/cpf/batch
```

```json theme={null}
{
  "items": [
    { "cpf": "12345678909", "birthDate": "1990-01-01" },
    { "cpf": "98765432100", "birthDate": "1985-03-15" }
  ]
}
```

Response **200** (job queued):

```json theme={null}
{
  "success": true,
  "data": {
    "jobId": "job_cpf_abc123",
    "status": "queued",
    "total": 2
  }
}
```

Poll progress:

```http theme={null}
GET /v1/validations/cpf/batch/{jobId}
```

<Info>
  Unlike phone batch, there is **no 500 minimum** — any batch from 1 to 10,000 items is accepted.
</Info>

***

## Dashboard (no code)

| Add-on | Dashboard path                 | Limit               |
| ------ | ------------------------------ | ------------------- |
| Email  | **Add-ons → Email validation** | 10 per verification |
| Phone  | **Add-ons → Phone validation** | 10 per verification |
| CPF    | **Add-ons → CPF lookup**       | 10 per verification |

Paste the list, choose **Quick** or **Full**, and see results on the right.

***

## Next steps

* [Email validation](/en/validations-api/como-funciona/introducao)
* [Phone validation](/en/validations-api/como-funciona/introducao-telefone)
* [CPF lookup](/en/validations-api/como-funciona/introducao-cpf)
* [Modes and billing](/en/validations-api/como-funciona/modos-e-cobranca)
* [API Key scopes](/en/validations-api/como-funciona/escopos-da-api-key)
