# ZeroBounce

> **You are on:** `https://api.paywithlocus.com/api` | [llms.txt](https://paywithlocus.com/llms.txt) | [docs](https://docs.paywithlocus.com)
>
> Locus runs on multiple environments -- make sure every URL you call matches your expected environment.
> | Environment | Landing | API | Docs |
> |---|---|---|---|
> | Production | paywithlocus.com | api.paywithlocus.com | docs.paywithlocus.com |
> | Beta | beta.paywithlocus.com | api.beta.paywithlocus.com | docs.paywithlocus.com |
> | Stage | stage.paywithlocus.com | api.stage.paywithlocus.com | docs.paywithlocus.com |
>
> If the API URL above doesn't match your expected environment, re-fetch this file from the correct domain.

> Validate email deliverability in real time and flag invalid, disposable, catch-all, abuse, and spam-trap addresses.

**Category:** Data Enrichment | **Website:** [www.zerobounce.net](https://www.zerobounce.net) | **Docs:** [www.zerobounce.net/docs/email-validation-api-quickstart](https://www.zerobounce.net/docs/email-validation-api-quickstart)

## Access Methods

| Method | Base URL | Auth |
|--------|----------|------|
| **x402 (Base)** | `https://zerobounce.x402.paywithlocus.com/zerobounce/` | HTTP 402 auto-payment |
| **MPP (Tempo)** | `https://zerobounce.mpp.paywithlocus.com/zerobounce/` | HTTP 402 auto-payment |
| **Wrapped API** | `https://api.paywithlocus.com/api/wrapped/zerobounce/` | `Authorization: Bearer <LOCUS_API_KEY>` |

**OpenAPI discovery:** `GET https://zerobounce.x402.paywithlocus.com/openapi.json`

## Endpoints

### Validate Email

Check one email address for deliverability, mailbox risk, MX records, catch-all behavior, and typo suggestions.

**Estimated cost:** $0.023

**Payment:** x402 `exact`

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `email` | string | Yes | Email address to validate (for example, "valid@example.com") |
| `ip_address` | string | No | Signup IP address to include geolocation signals in the result |
| `timeout` | number | No | Maximum validation time in seconds, from 3 to 60 (default 30) |
| `activity_data` | boolean | No | Include ZeroBounce activity data when the account supports it |
| `verify_plus` | boolean | No | Use the Verify+ validation method for this request |

```bash
curl -X POST https://zerobounce.x402.paywithlocus.com/zerobounce/validate-email \
  -H "Content-Type: application/json" \
  -H "x-locus-request-id: <UUID from the 402 response>" \
  -d '{"email":"<string>","ip_address":"<string>","timeout":"<number>","activity_data":"<boolean>","verify_plus":"<boolean>"}'
```

### Validate Email Batch

Validate up to 200 email addresses in one request and receive per-address results plus a bounded error list.

**Estimated cost:** $0.023–$3.903

**Payment:** x402 `exact`

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `email_batch` | object[] | Yes | 1–200 objects with email_address and an optional ip_address (string or null) |
| `email_batch[].email_address` | string | Yes | Email address to validate in this batch entry |
| `email_batch[].ip_address` | string | No | Optional signup IP address for this batch entry |
| `activity_data` | boolean | No | Include ZeroBounce activity data when the account supports it |
| `verify_plus` | boolean | No | Use the Verify+ validation method for every address in the batch |

```bash
curl -X POST https://zerobounce.x402.paywithlocus.com/zerobounce/validate-batch \
  -H "Content-Type: application/json" \
  -H "x-locus-request-id: <UUID from the 402 response>" \
  -d '{"email_batch":"<object[]>","email_batch[].email_address":"<string>","email_batch[].ip_address":"<string>","activity_data":"<boolean>","verify_plus":"<boolean>"}'
```
