# FullEnrich — Orthogonal API

> Pay-per-use API on Orthogonal. Each call is billed to your Orthogonal balance.
> Base API: `https://api.orthogonal.com/v1/run` · [llms.txt](https://orthogonal.com/llms.txt) · [browse all APIs](https://orthogonal.com/discover)

FullEnrich aggregates 20+ data providers for B2B contact enrichment, reverse email lookup, and people/company search. Find work emails, mobile phones, personal emails, and professional profiles.

**Verified:** no

## Access

**Run API:** `POST https://api.orthogonal.com/v1/run`
**Auth:** `Authorization: Bearer $ORTHOGONAL_API_KEY`
Get an API key at https://orthogonal.com/dashboard/settings/api-keys

Every call goes through the unified Run API: send the API `slug`, the endpoint `path`, and the `query`/`body` parameters. The response is `{ "success": true, "price": "<usd>", "data": { ... } }`.

## Endpoints

### Get Enrichment Result

Retrieve results of a bulk enrichment by enrichment_id. Use this to poll for results if not using webhooks. Returns contact data with emails, phones, and professional details.

`GET /contact/enrich/bulk/{enrichment_id}`

**Estimated cost:** $0.01

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `enrichment_id` | string | Yes | Path parameter — substitute directly into the endpoint `path`. |
| `enrichment_id` | string | Yes | The enrichment ID returned from the POST /contact/enrich/bulk call |

```bash
# Replace {enrichment_id} in "path" with real values before sending
curl -X POST 'https://api.orthogonal.com/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"fullenrich","path":"/contact/enrich/bulk/{enrichment_id}","method":"GET","query":{"enrichment_id":"<string>"}}'
```

### Start Bulk Enrichment

Start enrichment for up to 100 B2B contacts. Provide first_name + last_name + company or linkedin_url. Returns enrichment_id to poll for results. Async: results delivered via webhook or GET endpoint.

`POST /contact/enrich/bulk`

**Estimated cost:** $0.01

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `name` | string | Yes | Name for this enrichment batch (visible in dashboard) |
| `webhook_url` | string | No | URL to receive results when enrichment completes |
| `webhook_events` | object | No | Per-event webhook URLs, e.g. {contact_finished: url} |
| `data` | array | Yes | Array of contacts to enrich (max 100). Each needs first_name+last_name+domain/company_name or linkedin_url. Optional: enrich_fields array (contact.work_emails, contact.personal_emails, contact.phones), custom object. |

```bash
curl -X POST 'https://api.orthogonal.com/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"fullenrich","path":"/contact/enrich/bulk","body":{"name":"<string>","webhook_url":"<string>","webhook_events":"<object>","data":"<array>"}}'
```

### Reverse Email Lookup

Identify the person and company behind one or more email addresses. Returns full person profile (name, job title, work history) and company details (industry, headcount). Async: results via webhook or GET endpoint.

`POST /contact/reverse/email/bulk`

**Estimated cost:** $0.01

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `name` | string | Yes | Name for this reverse lookup batch |
| `webhook_url` | string | No | URL to receive results when lookup completes |
| `data` | array | Yes | Array of objects with email field to look up |

```bash
curl -X POST 'https://api.orthogonal.com/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"fullenrich","path":"/contact/reverse/email/bulk","body":{"name":"<string>","webhook_url":"<string>","data":"<array>"}}'
```

### Get Reverse Email Result

Retrieve results of a reverse email lookup by enrichment_id. Returns person and company profiles for the submitted emails.

`GET /contact/reverse/email/bulk/{enrichment_id}`

**Estimated cost:** $0.01

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `enrichment_id` | string | Yes | Path parameter — substitute directly into the endpoint `path`. |
| `enrichment_id` | string | Yes | The enrichment ID returned from the POST reverse email call |

```bash
# Replace {enrichment_id} in "path" with real values before sending
curl -X POST 'https://api.orthogonal.com/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"fullenrich","path":"/contact/reverse/email/bulk/{enrichment_id}","method":"GET","query":{"enrichment_id":"<string>"}}'
```

### Search Company

Search for companies based on various filters including industry, headcount, location, and more. Multiple filters within the same field use AND logic. Returns full company details. Costs 0.25 credits per result.

`POST /company/search`

**Estimated cost:** $0.01

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `filters` | object | Yes | Filter criteria for company search (industry, headcount, location, etc.) |
| `page` | number | No | Page number for pagination |
| `limit` | number | No | Number of results per page |

```bash
curl -X POST 'https://api.orthogonal.com/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"fullenrich","path":"/company/search","body":{"filters":"<object>","page":"<number>","limit":"<number>"}}'
```

### Search People

Search for people based on various filters including job title, company, location, industry, and more. Multiple filters within the same field use AND logic. Returns professional details and company lite info. Costs 0.25 credits per result.

`POST /people/search`

**Estimated cost:** $0.01

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `filters` | object | Yes | Filter criteria for people search (job_title, company, location, industry, etc.) |
| `page` | number | No | Page number for pagination |
| `limit` | number | No | Number of results per page |

```bash
curl -X POST 'https://api.orthogonal.com/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"fullenrich","path":"/people/search","body":{"filters":"<object>","page":"<number>","limit":"<number>"}}'
```

---

Full details and an interactive quickstart: https://orthogonal.com/discover/fullenrich
