# ContactOut — Orthogonal API

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

Find anyone's email and phone number. Sales and recruitment intelligence with LinkedIn enrichment, people search, company search, email verification, and decision maker discovery.

**Verified:** yes

## Access

**Run API:** `POST https://api.orth.sh/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

### Enrich from Email

Get profile details from an email address.

`GET /v1/email/enrich`

**Estimated cost:** $0.33

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `email` | string | Yes | Email address |
| `include` | string | No | Data to include (work_email) |

```bash
curl -X POST 'https://api.orth.sh/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"contactout","path":"/v1/email/enrich","method":"GET","query":{"email":"<string>","include":"<string>"}}'
```

### Batch Contact LinkedIn (v1)

Get contact details for up to 30 LinkedIn profiles.

`POST /v1/people/linkedin/batch`

**Estimated cost:** Dynamic — use `"dryRun": true` in the Run API request to check the exact cost before calling.

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `profiles` | array | Yes |  |

```bash
curl -X POST 'https://api.orth.sh/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"contactout","path":"/v1/people/linkedin/batch","body":{"profiles":"<array>"}}'
```

### Enrich from LinkedIn URL

Get full profile details (email, phone, work history, education, skills) from a LinkedIn profile URL.

`GET /v1/linkedin/enrich`

**Estimated cost:** Dynamic — use `"dryRun": true` in the Run API request to check the exact cost before calling.

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `profile` | string | Yes | LinkedIn profile URL |
| `profile_only` | boolean | No | If true, returns profile without contact info |

```bash
curl -X POST 'https://api.orth.sh/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"contactout","path":"/v1/linkedin/enrich","method":"GET","query":{"profile":"<string>","profile_only":"<boolean>"}}'
```

### Get Contact from LinkedIn

Get contact details for a LinkedIn profile.

`GET /v1/people/linkedin`

**Estimated cost:** Dynamic — use `"dryRun": true` in the Run API request to check the exact cost before calling.

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `profile` | string | Yes |  |
| `include_phone` | boolean | No |  |
| `email_type` | string | No |  |

```bash
curl -X POST 'https://api.orth.sh/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"contactout","path":"/v1/people/linkedin","method":"GET","query":{"profile":"<string>","include_phone":"<boolean>","email_type":"<string>"}}'
```

### People Enrich

Enrich a person using multiple data points (name, email, phone, LinkedIn, company).

`POST /v1/people/enrich`

**Estimated cost:** $0.55

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `full_name` | string | No |  |
| `first_name` | string | No |  |
| `last_name` | string | No |  |
| `email` | string | No |  |
| `phone` | string | No |  |
| `linkedin_url` | string | No |  |
| `company` | array | No |  |
| `company_domain` | string | No |  |
| `job_title` | string | No |  |
| `location` | string | No |  |
| `education` | array | No |  |
| `include` | array | No | work_email, personal_email, phone |

```bash
curl -X POST 'https://api.orth.sh/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"contactout","path":"/v1/people/enrich","body":{"full_name":"<string>","first_name":"<string>","last_name":"<string>","email":"<string>","phone":"<string>","linkedin_url":"<string>","company":"<array>","company_domain":"<string>","job_title":"<string>","location":"<string>","education":"<array>","include":"<array>"}}'
```

### Domain Enrich

Get company information from domain names.

`POST /v1/domain/enrich`

**Estimated cost:** Dynamic — use `"dryRun": true` in the Run API request to check the exact cost before calling.

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `domains` | array | Yes |  |

```bash
curl -X POST 'https://api.orth.sh/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"contactout","path":"/v1/domain/enrich","body":{"domains":"<array>"}}'
```

### People Count

Count matching profiles for search criteria.

`POST /v1/people/count`

**Cost:** Free

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `name` | string | No | Name of the profile |
| `job_title` | array | No | Job titles |
| `company` | array | No | Company names |
| `domain` | array | No | Company domains |
| `location` | array | No | Locations |
| `industry` | array | No | Industries |
| `seniority` | array | No | Seniority levels |

```bash
curl -X POST 'https://api.orth.sh/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"contactout","path":"/v1/people/count","body":{"name":"<string>","job_title":"<array>","company":"<array>","domain":"<array>","location":"<array>","industry":"<array>","seniority":"<array>"}}'
```

---

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