# Leadsforge — 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)

Leadsforge API for lead search, enrichment (email, phone, LinkedIn), company followers, and lookalike company discovery.

**Verified:** yes

## 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

### Search Company Followers

Search followers of a company on LinkedIn with filters for country, department, seniority, and job title.

`POST /company-followers/search`

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

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `linkedinUrl` | string | Yes | LinkedIn company URL |
| `limit` | number | Yes | Number of results to return |
| `countries` | array | No | Country filter |
| `departments` | array | No | Department filter |
| `levels` | array | No | Seniority level filter |
| `jobTitles` | array | No | Job title filter |
| `states` | array | No | State filter |
| `clientRequestID` | string | No | Client request ID for tracking |
| `webhookURL` | string | No | Webhook URL for completion notification |

```bash
curl -X POST 'https://api.orthogonal.com/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"leadsforge","path":"/company-followers/search","body":{"linkedinUrl":"<string>","limit":"<number>","countries":"<array>","departments":"<array>","levels":"<array>","jobTitles":"<array>","states":"<array>","clientRequestID":"<string>","webhookURL":"<string>"}}'
```

### Get Search Departments

Get available department values for search filtering.

`GET /search/filters/departments`

**Estimated cost:** $0.005

_No parameters required._

```bash
curl -X POST 'https://api.orthogonal.com/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"leadsforge","path":"/search/filters/departments","method":"GET"}'
```

### Get Search Funding Types

Get available funding type values for search filtering.

`GET /search/filters/funding-types`

**Estimated cost:** $0.005

_No parameters required._

```bash
curl -X POST 'https://api.orthogonal.com/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"leadsforge","path":"/search/filters/funding-types","method":"GET"}'
```

### Get Search Industries

Get available industry values for search filtering.

`GET /search/filters/industries`

**Estimated cost:** $0.005

_No parameters required._

```bash
curl -X POST 'https://api.orthogonal.com/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"leadsforge","path":"/search/filters/industries","method":"GET"}'
```

### Get Search Revenue Ranges

Get available revenue range values for search filtering.

`GET /search/filters/revenue-ranges`

**Estimated cost:** $0.005

_No parameters required._

```bash
curl -X POST 'https://api.orthogonal.com/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"leadsforge","path":"/search/filters/revenue-ranges","method":"GET"}'
```

### Find Phones (Batch)

Find phone numbers for multiple people. Returns a job ID to poll for results.

`POST /enrichment/phones`

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

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `people` | array | No | Array of people objects with firstName, lastName, company, companyDomain, linkedinURL, externalID |
| `personIDs` | array | No | Array of Leadsforge person IDs |
| `saveToList` | boolean | No | Save results to a list |
| `clientRequestID` | string | No | Client request ID for tracking |
| `webhookURL` | string | No | Webhook URL for completion notification |

```bash
curl -X POST 'https://api.orthogonal.com/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"leadsforge","path":"/enrichment/phones","body":{"people":"<array>","personIDs":"<array>","saveToList":"<boolean>","clientRequestID":"<string>","webhookURL":"<string>"}}'
```

### Find LinkedIn Profiles

Find LinkedIn profiles for multiple people. Returns a job ID to poll for results.

`POST /enrichment/linkedin`

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

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `people` | array | No | Array of people objects with firstName, lastName, company, companyDomain, linkedinURL, externalID |
| `personIDs` | array | No | Array of Leadsforge person IDs |
| `saveToList` | boolean | No | Save results to a list |
| `clientRequestID` | string | No | Client request ID for tracking |
| `webhookURL` | string | No | Webhook URL for completion notification |

```bash
curl -X POST 'https://api.orthogonal.com/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"leadsforge","path":"/enrichment/linkedin","body":{"people":"<array>","personIDs":"<array>","saveToList":"<boolean>","clientRequestID":"<string>","webhookURL":"<string>"}}'
```

### List Enrichment Jobs

List enrichment jobs with optional filtering.

`GET /enrichment/jobs`

**Estimated cost:** $0.005

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `offset` | number | No | Offset for pagination |
| `limit` | number | No | Page size |
| `status` | string | No | Filter by status (in_progress, completed, failed, no_results) |
| `type` | string | No | Filter by type (email, phone, linkedin) |
| `clientRequestID` | string | No | Filter by client request ID |
| `from` | string | No | Created-at lower bound (RFC3339) |
| `to` | string | No | Created-at upper bound (RFC3339) |

```bash
curl -X POST 'https://api.orthogonal.com/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"leadsforge","path":"/enrichment/jobs","method":"GET","query":{"offset":"<number>","limit":"<number>","status":"<string>","type":"<string>","clientRequestID":"<string>","from":"<string>","to":"<string>"}}'
```

### Get Enrichment Results

Get results of a completed enrichment job with pagination.

`GET /enrichment/jobs/{jobID}/results`

**Estimated cost:** $0.005

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `jobID` | string | Yes | Path parameter — substitute directly into the endpoint `path`. |
| `offset` | number | No | Offset for pagination |
| `limit` | number | No | Page size |

```bash
# Replace {jobID} 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":"leadsforge","path":"/enrichment/jobs/{jobID}/results","method":"GET","query":{"offset":"<number>","limit":"<number>"}}'
```

### Get Enrichment Job

Get the status of an enrichment job by job ID.

`GET /enrichment/jobs/{jobID}`

**Estimated cost:** $0.005

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `jobID` | string | Yes | Path parameter — substitute directly into the endpoint `path`. |

```bash
# Replace {jobID} 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":"leadsforge","path":"/enrichment/jobs/{jobID}","method":"GET"}'
```

### Get Company Followers Job Status

Get the status of a company followers job by job ID.

`GET /company-followers/jobs/{jobID}`

**Estimated cost:** $0.005

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `jobID` | string | Yes | Path parameter — substitute directly into the endpoint `path`. |

```bash
# Replace {jobID} 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":"leadsforge","path":"/company-followers/jobs/{jobID}","method":"GET"}'
```

### Get Company Followers Countries

Get list of supported country values for company followers filtering.

`GET /company-followers/filters/countries`

**Estimated cost:** $0.005

_No parameters required._

```bash
curl -X POST 'https://api.orthogonal.com/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"leadsforge","path":"/company-followers/filters/countries","method":"GET"}'
```

### Get Company Followers Departments

Get list of supported department values for company followers filtering.

`GET /company-followers/filters/departments`

**Estimated cost:** $0.005

_No parameters required._

```bash
curl -X POST 'https://api.orthogonal.com/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"leadsforge","path":"/company-followers/filters/departments","method":"GET"}'
```

### Get Company Followers Job Titles

Get paginated list of supported job title values with optional search.

`GET /company-followers/filters/job-titles`

**Estimated cost:** $0.005

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `search` | string | No | Search query |
| `page` | number | No | Page number |
| `page_size` | number | No | Page size (max 20) |

```bash
curl -X POST 'https://api.orthogonal.com/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"leadsforge","path":"/company-followers/filters/job-titles","method":"GET","query":{"search":"<string>","page":"<number>","page_size":"<number>"}}'
```

### Get Company Followers Levels

Get list of supported seniority level values for company followers filtering.

`GET /company-followers/filters/levels`

**Estimated cost:** $0.005

_No parameters required._

```bash
curl -X POST 'https://api.orthogonal.com/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"leadsforge","path":"/company-followers/filters/levels","method":"GET"}'
```

### Get Company Followers States

Get list of supported state/region values for company followers filtering.

`GET /company-followers/filters/states`

**Estimated cost:** $0.005

_No parameters required._

```bash
curl -X POST 'https://api.orthogonal.com/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"leadsforge","path":"/company-followers/filters/states","method":"GET"}'
```

### Get Lookalikes Departments

Get available department values for lookalikes filtering.

`GET /lookalikes/filters/departments`

**Estimated cost:** $0.005

_No parameters required._

```bash
curl -X POST 'https://api.orthogonal.com/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"leadsforge","path":"/lookalikes/filters/departments","method":"GET"}'
```

### Get Lookalikes Employee Ranges

Get available employee range values for lookalikes filtering.

`GET /lookalikes/filters/employee-ranges`

**Estimated cost:** $0.005

_No parameters required._

```bash
curl -X POST 'https://api.orthogonal.com/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"leadsforge","path":"/lookalikes/filters/employee-ranges","method":"GET"}'
```

### Search Lookalike Companies

Search for lookalike companies with pagination and filtering.

`POST /lookalikes/search`

**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 | Array of company domains to find lookalikes for |
| `page` | number | No | Page number |
| `pageSize` | number | No | Page size |
| `categories` | array | No | Category filter |
| `employeeRanges` | array | No | Employee range filter |
| `fundingStages` | array | No | Funding stage filter |
| `locations` | array | No | Location filter (array of objects with id and type) |

```bash
curl -X POST 'https://api.orthogonal.com/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"leadsforge","path":"/lookalikes/search","body":{"domains":"<array>","page":"<number>","pageSize":"<number>","categories":"<array>","employeeRanges":"<array>","fundingStages":"<array>","locations":"<array>"}}'
```

### Get Lookalikes Locations

Get available location values for lookalikes filtering.

`GET /lookalikes/filters/locations`

**Estimated cost:** $0.005

_No parameters required._

```bash
curl -X POST 'https://api.orthogonal.com/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"leadsforge","path":"/lookalikes/filters/locations","method":"GET"}'
```

### Get Lookalikes Seniorities

Get available seniority values for lookalikes filtering.

`GET /lookalikes/filters/seniorities`

**Estimated cost:** $0.005

_No parameters required._

```bash
curl -X POST 'https://api.orthogonal.com/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"leadsforge","path":"/lookalikes/filters/seniorities","method":"GET"}'
```

### Get Search Seniorities

Get available seniority values for search filtering.

`GET /search/filters/seniorities`

**Estimated cost:** $0.005

_No parameters required._

```bash
curl -X POST 'https://api.orthogonal.com/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"leadsforge","path":"/search/filters/seniorities","method":"GET"}'
```

### Get Company Followers Results

Get results of a company followers job with pagination.

`GET /company-followers/jobs/{jobID}/results`

**Estimated cost:** $0.005

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `jobID` | string | Yes | Path parameter — substitute directly into the endpoint `path`. |
| `offset` | number | No | Offset for pagination |
| `limit` | number | No | Page size |

```bash
# Replace {jobID} 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":"leadsforge","path":"/company-followers/jobs/{jobID}/results","method":"GET","query":{"offset":"<number>","limit":"<number>"}}'
```

### Find Email

Find email address for a person synchronously. Provide name + company or LinkedIn URL.

`POST /enrichment/email`

**Estimated cost:** $0.03

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `firstName` | string | No | Person's first name |
| `lastName` | string | No | Person's last name |
| `company` | string | No | Company name |
| `companyDomain` | string | No | Company domain |
| `linkedinURL` | string | No | LinkedIn profile URL |
| `personID` | string | No | Leadsforge person ID |
| `externalID` | string | No | External reference ID |

```bash
curl -X POST 'https://api.orthogonal.com/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"leadsforge","path":"/enrichment/email","body":{"firstName":"<string>","lastName":"<string>","company":"<string>","companyDomain":"<string>","linkedinURL":"<string>","personID":"<string>","externalID":"<string>"}}'
```

### Preview Lookalike Companies

Preview lookalike companies for given domains. This endpoint is free on the upstream API.

`POST /lookalikes/preview`

**Estimated cost:** $0.005

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `domains` | array | Yes | Array of company domains to find lookalikes for |
| `categories` | array | No | Category filter |
| `employeeRanges` | array | No | Employee range filter |
| `fundingStages` | array | No | Funding stage filter |
| `locations` | array | No | Location filter (array of objects with id and type) |

```bash
curl -X POST 'https://api.orthogonal.com/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"leadsforge","path":"/lookalikes/preview","body":{"domains":"<array>","categories":"<array>","employeeRanges":"<array>","fundingStages":"<array>","locations":"<array>"}}'
```

### Find Emails (Batch)

Find email addresses for multiple people. Returns a job ID to poll for results.

`POST /enrichment/emails`

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

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `people` | array | No | Array of people objects with firstName, lastName, company, companyDomain, linkedinURL, externalID |
| `personIDs` | array | No | Array of Leadsforge person IDs |
| `saveToList` | boolean | No | Save results to a list |
| `clientRequestID` | string | No | Client request ID for tracking |
| `webhookURL` | string | No | Webhook URL for completion notification |

```bash
curl -X POST 'https://api.orthogonal.com/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"leadsforge","path":"/enrichment/emails","body":{"people":"<array>","personIDs":"<array>","saveToList":"<boolean>","clientRequestID":"<string>","webhookURL":"<string>"}}'
```

### Get Search Company Types

Get available company type values for search filtering.

`GET /search/filters/company-types`

**Estimated cost:** $0.005

_No parameters required._

```bash
curl -X POST 'https://api.orthogonal.com/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"leadsforge","path":"/search/filters/company-types","method":"GET"}'
```

### List Company Followers Jobs

List company followers jobs with optional filtering.

`GET /company-followers/jobs`

**Estimated cost:** $0.005

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `offset` | number | No | Offset for pagination |
| `limit` | number | Yes | Page size (max 100) |
| `status` | string | No | Filter by status (in_progress, completed, failed, no_results) |
| `clientRequestID` | string | No | Filter by client request ID |
| `from` | string | No | Created-at lower bound (RFC3339) |
| `to` | string | No | Created-at upper bound (RFC3339) |

```bash
curl -X POST 'https://api.orthogonal.com/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"leadsforge","path":"/company-followers/jobs","method":"GET","query":{"offset":"<number>","limit":"<number>","status":"<string>","clientRequestID":"<string>","from":"<string>","to":"<string>"}}'
```

### Find Phone

Find phone number for a person synchronously. Provide name + company or LinkedIn URL.

`POST /enrichment/phone`

**Estimated cost:** $0.3

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `firstName` | string | No | Person's first name |
| `lastName` | string | No | Person's last name |
| `company` | string | No | Company name |
| `companyDomain` | string | No | Company domain |
| `linkedinURL` | string | No | LinkedIn profile URL |
| `personID` | string | No | Leadsforge person ID |
| `externalID` | string | No | External reference ID |

```bash
curl -X POST 'https://api.orthogonal.com/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"leadsforge","path":"/enrichment/phone","body":{"firstName":"<string>","lastName":"<string>","company":"<string>","companyDomain":"<string>","linkedinURL":"<string>","personID":"<string>","externalID":"<string>"}}'
```

### Count Search Results

Count the number of results matching search filters without returning the actual data.

`POST /search/count`

**Estimated cost:** $0.005

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `leadJobTitles` | object | No | Job title filter with include/exclude arrays and exactMatch boolean |
| `leadSeniorities` | object | No | Seniority filter with include/exclude arrays |
| `leadDepartments` | object | No | Department filter with include/exclude arrays |
| `leadLocations` | object | No | Lead location filter with include/exclude arrays |
| `companyDomains` | object | No | Company domain filter with include/exclude arrays |
| `companyNames` | object | No | Company name filter with include/exclude arrays |
| `companyIndustries` | object | No | Industry filter with include/exclude arrays |
| `companyLocations` | object | No | Company location filter with include/exclude arrays |
| `companyEmployeeNumberRange` | object | No | Employee count range with min/max |
| `companyRequired` | boolean | No | Require company info |
| `maxContactsPerCompany` | number | No | Max contacts per company |

```bash
curl -X POST 'https://api.orthogonal.com/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"leadsforge","path":"/search/count","body":{"leadJobTitles":"<object>","leadSeniorities":"<object>","leadDepartments":"<object>","leadLocations":"<object>","companyDomains":"<object>","companyNames":"<object>","companyIndustries":"<object>","companyLocations":"<object>","companyEmployeeNumberRange":"<object>","companyRequired":"<boolean>","maxContactsPerCompany":"<number>"}}'
```

### Search People

Search for people/leads with filters on company, job title, location, seniority, and more.

`POST /search`

**Estimated cost:** $0.005

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `limit` | number | No | Number of results to return |
| `maxContactsPerCompany` | number | No | Max contacts per company |
| `companyRequired` | boolean | No | Require company info |
| `leadJobTitles` | object | No | Job title filter with include/exclude arrays and exactMatch boolean |
| `leadSeniorities` | object | No | Seniority filter with include/exclude arrays |
| `leadDepartments` | object | No | Department filter with include/exclude arrays |
| `leadLocations` | object | No | Lead location filter with include/exclude arrays |
| `leadLanguages` | object | No | Language filter with include/exclude arrays and primaryOnly boolean |
| `leadTenure` | object | No | Tenure filter with min/max |
| `leadIDs` | object | No | Lead ID filter with include/exclude arrays |
| `companyDomains` | object | No | Company domain filter with include/exclude arrays |
| `companyNames` | object | No | Company name filter with include/exclude arrays |
| `companyIndustries` | object | No | Industry filter with include/exclude arrays |
| `companyLocations` | object | No | Company location filter with include/exclude arrays |
| `companyTypes` | object | No | Company type filter with include/exclude arrays |
| `companyKeywords` | object | No | Company keyword filter with include/exclude arrays and matchAll boolean |
| `companyTechnologies` | object | No | Technology filter with any/all arrays |
| `companyEmployeeNumberRange` | object | No | Employee count range with min/max |
| `companyFoundedYearRange` | object | No | Founded year range with min/max |
| `companyYearsInBusinessRange` | object | No | Years in business range with min/max |
| `companyRevenueRanges` | array | No | Revenue range filter |
| `companyFundingRounds` | object | No | Funding rounds filter with include/exclude arrays |
| `companyIDs` | object | No | Company ID filter with include/exclude arrays |
| `cursor` | string | No | Pagination cursor |

```bash
curl -X POST 'https://api.orthogonal.com/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"leadsforge","path":"/search","query":{"cursor":"<string>"},"body":{"limit":"<number>","maxContactsPerCompany":"<number>","companyRequired":"<boolean>","leadJobTitles":"<object>","leadSeniorities":"<object>","leadDepartments":"<object>","leadLocations":"<object>","leadLanguages":"<object>","leadTenure":"<object>","leadIDs":"<object>","companyDomains":"<object>","companyNames":"<object>","companyIndustries":"<object>","companyLocations":"<object>","companyTypes":"<object>","companyKeywords":"<object>","companyTechnologies":"<object>","companyEmployeeNumberRange":"<object>","companyFoundedYearRange":"<object>","companyYearsInBusinessRange":"<object>","companyRevenueRanges":"<array>","companyFundingRounds":"<object>","companyIDs":"<object>"}}'
```

---

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