# Fiber AI API — 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)

Reach anyone on the planet with verified contacts. Fiber AI delivers the most accurate contact data, period.

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

### Live fetch LinkedIn company

Returns an enriched company with details for a given LinkedIn company identifier

`POST /v1/linkedin-live-fetch/company/single`

**Estimated cost:** $0.04

**Docs:** https://api.fiber.ai/docs/#tag/live-fetch/POST/v1/linkedin-live-fetch/company/single

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `type` | string | Yes | Identifier type. One of: 'slug' (company vanity name, e.g. 'microsoft'), 'orgId' (LinkedIn organization ID, e.g. '1441'), 'liUrl' (full LinkedIn company URL), or 'fiberId' (Fiber company ID, e.g. 'comp_1441'). |
| `value` | string | Yes | The company's LinkedIn slug (e.g., 'microsoft'), LinkedIn URL (e.g., 'https://www.linkedin.com/company/microsoft' or 'https://www.linkedin.com/company/1441'), LinkedIn organization ID (e.g., '1441' for Google), or Fiber company ID (e.g., 'comp_1441') |

```bash
curl -X POST 'https://api.orth.sh/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"fiber","path":"/v1/linkedin-live-fetch/company/single","body":{"type":"<string>","value":"<string>"}}'
```

### Fetch LinkedIn post comments

Fetches paginated comments for a LinkedIn post. Each page contains up to 10 comments.

`POST /v1/linkedin-live-fetch/post-comments`

**Estimated cost:** $0.04

**Docs:** https://api.fiber.ai/docs/#tag/live-fetch/POST/v1/linkedin-live-fetch/post-comments

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `contentId` | string | Yes | You can get LinkedIn posts from the Profile or Company Posts endpoints. (e.g., 'urn:li:activity:7123456789012345678' or 'urn:li:ugcPost:7391650829398675456') |
| `cursor` | string | No | Pagination cursor for fetching additional pages of posts |

```bash
curl -X POST 'https://api.orth.sh/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"fiber","path":"/v1/linkedin-live-fetch/post-comments","body":{"contentId":"<string>","cursor":"<string>"}}'
```

### Investor search

Search for investors with flexible filtering capabilities

`POST /v1/investor-search`

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

**Docs:** https://api.fiber.ai/docs/#tag/search/POST/v1/investor-search

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `searchParams` | object | Yes | Investor search filter parameters |
| `pageSize` | integer | No | Number of investors to return per page (max 1000) |
| `cursor` | string | No | Pagination cursor returned from a previous search response. Use this to fetch the next page of results. Null for the first page. |

```bash
curl -X POST 'https://api.orth.sh/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"fiber","path":"/v1/investor-search","body":{"searchParams":"<object>","pageSize":"<integer>","cursor":"<string>"}}'
```

### Find person by email

Do a reverse lookup: given an email address, find someone's LinkedIn profile and personal details. Note: if you also have the person's name, company, etc., you'll get better results with the Kitchen Sink endpoint, where you can pass all the information you have.

`POST /v1/email-to-person/single`

**Estimated cost:** $0.04

**Docs:** https://api.fiber.ai/docs/#tag/email-lookup/POST/v1/email-to-person/single

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `email` | string | Yes | The person's email address for which you want to do a reverse lookup |
| `num_profiles` | string | No | Number of profiles to return. Maximum 10 profiles can be returned for given query. The returned profiles will be sorted by best match first. |

```bash
curl -X POST 'https://api.orth.sh/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"fiber","path":"/v1/email-to-person/single","body":{"email":"<string>","num_profiles":"<string>"}}'
```

### Search companies from text

Takes free-form text (e.g., 'Series A startups in USA with 50–200 employees') and returns a list of matching companies.           The endpoint interprets natural language queries and applies structured filters such as industries, funding stages, headcount ranges, and locations to identify relevant companies.

`POST /v1/natural-language-search/companies`

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

**Docs:** https://api.fiber.ai/docs/#tag/agentic-search/POST/v1/natural-language-search/companies

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `query` | string | Yes |  |
| `pageSize` | integer | No | The number of companies to return, if you need to get more results, you can paginate. |
| `cursor` | string | No | A pagination cursor returned from a previous search response. Use this to fetch the next page of results. |

```bash
curl -X POST 'https://api.orth.sh/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"fiber","path":"/v1/natural-language-search/companies","body":{"query":"<string>","pageSize":"<integer>","cursor":"<string>"}}'
```

### Validate a single email

Checks if a given email is likely to bounce using a waterfall of strategies. Works for catch-all email addresses, which are increasingly common yet hard for other APIs to validate.

`POST /v1/validate-email/single`

**Estimated cost:** $0.02

**Docs:** https://api.fiber.ai/docs/#tag/validation/POST/v1/validate-email/single

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `email` | string | Yes | The email to validate |

```bash
curl -X POST 'https://api.orth.sh/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"fiber","path":"/v1/validate-email/single","body":{"email":"<string>"}}'
```

### Company search

Search for companies using filters

`POST /v1/company-search`

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

**Docs:** https://api.fiber.ai/docs/#tag/search/POST/v1/company-search

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `searchParams` | object | Yes | Search parameters for company search API. |
| `pageSize` | integer | No | The number of companies to return, if you need to get more results, you can paginate. |
| `cursor` | string | No | A pagination cursor returned from a previous search response. Use this to fetch the next page of results. |
| `companyExclusionListIDs` | string | No | Filter out companies which belong to the given company exclusion lists. You can create company exclusion lists via /v1/exclusions/companies/create-list |

```bash
curl -X POST 'https://api.orth.sh/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"fiber","path":"/v1/company-search","body":{"searchParams":"<object>","pageSize":"<integer>","cursor":"<string>","companyExclusionListIDs":"<string>"}}'
```

### Kitchen sink person lookup

Search for a person using a variety of parameters such as LinkedIn slug, LinkedIn URL, or their current company information. Returns profile data for the person if found.

`POST /v1/kitchen-sink/person`

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

**Docs:** https://api.fiber.ai/docs/#tag/kitchen-sink/POST/v1/kitchen-sink/person

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `profileIdentifier` | string | No | If provided and correct, we would always be able to find the profile. You do not need to pass in any other info if you pass this. |
| `emailAddress` | string | No | The email address of the person to search for |
| `personName` | string | No |  |
| `jobTitle` | string | No |  |
| `companyIdentifier` | string | No | The company the profile is currently working at. If provided the accuracy of the lookup increases. You do not need to pass in any other company parameters if you pass this. |
| `companyName` | string | No |  |
| `companyDomain` | string | No |  |
| `numProfiles` | integer | No | The maximum number of profiles you want to fetch. Profiles are sorted by best match first. |
| `liveFetch` | string | No | Whether to fetch the freshest copy of the found profiles's LinkedIn data (costs extra). If omitted or set to false, we'll give the cached data present in our database. The boolean flag is deprecated and will be removed in future. Please use the object instead. |
| `forceCompanyMatch` | string | No | Whether to strictly match the company. If true, we will strictly lookup prospects which belong to given company details. |
| `fuzzySearch` | string | No | Whether to use fuzzy search on names, job titles and other parameters. This is good if you are not sure about the exact name or job title. |
| `getDetailedEducation` | string | No | Whether to include deep details about each educational item, like the school's LinkedIn URL, website, location, etc. That'll be put in the detailedEducation array. This slows down the API call, so only enable this if you need it. |
| `getDetailedWorkExperience` | string | No | Whether to include deep details about each work experience item, like the company's LinkedIn URL, website, location, etc. That'll be put in the detailedWorkExperience array. This slows down the API call, so only enable this if you need it. |

```bash
curl -X POST 'https://api.orth.sh/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"fiber","path":"/v1/kitchen-sink/person","body":{"profileIdentifier":"<string>","emailAddress":"<string>","personName":"<string>","jobTitle":"<string>","companyIdentifier":"<string>","companyName":"<string>","companyDomain":"<string>","numProfiles":"<integer>","liveFetch":"<string>","forceCompanyMatch":"<string>","fuzzySearch":"<string>","getDetailedEducation":"<string>","getDetailedWorkExperience":"<string>"}}'
```

### Fetch LinkedIn profile posts

Fetches recent posts from a LinkedIn profile. Returns a paginated feed of posts with optional cursor for pagination. Each page returns up to 50 posts.

`POST /v1/linkedin-live-fetch/profile-posts`

**Estimated cost:** $0.04

**Docs:** https://api.fiber.ai/docs/#tag/live-fetch/POST/v1/linkedin-live-fetch/profile-posts

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `identifier` | string | Yes | Identifier can be a profile's LinkedIn slug (e.g. 'williamhgates' from <linkedin.com/in/williamhgates>), a Sales Navigator URN (e.g. 'ACwAAA.....'), or a full LinkedIn URL (e.g. 'https://www.linkedin.com/in/williamhgates/') |
| `cursor` | string | No | Pagination cursor for fetching additional pages of posts |

```bash
curl -X POST 'https://api.orth.sh/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"fiber","path":"/v1/linkedin-live-fetch/profile-posts","body":{"identifier":"<string>","cursor":"<string>"}}'
```

### Convert text into company search filters

Takes free-form text (e.g., 'Series A startups in USA with 50–200 employees') and converts it into a structured set of filters for company search.         This endpoint helps transform natural language queries into standardized search parameters such as industries, funding stages, headcount ranges, locations, and more.

`POST /v1/text-to-search-params/companies`

**Estimated cost:** $0.04

**Docs:** https://api.fiber.ai/docs/#tag/agentic-search/POST/v1/text-to-search-params/companies

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `query` | string | Yes |  |

```bash
curl -X POST 'https://api.orth.sh/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"fiber","path":"/v1/text-to-search-params/companies","body":{"query":"<string>"}}'
```

### Search profiles from text

Takes free-form text (e.g., 'Software engineers in US with 5+ years of experience') and returns a list of matching profiles.             The endpoint interprets natural language queries and applies structured filters such as job titles, seniority, skills, locations, past jobs, education, and languages to identify relevant people.

`POST /v1/natural-language-search/profiles`

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

**Docs:** https://api.fiber.ai/docs/#tag/agentic-search/POST/v1/natural-language-search/profiles

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `query` | string | Yes |  |
| `pageSize` | integer | No | The number of profiles to return, if you need to get more results, you can paginate. |
| `getDetailedEducation` | string | No | Whether to include deep details about each educational item, like the school's LinkedIn URL, website, location, etc. That'll be put in the detailedEducation array. This slows down the API call, so only enable this if you need it. |
| `getDetailedWorkExperience` | string | No | Whether to include deep details about each work experience item, like the company's LinkedIn URL, website, location, etc. That'll be put in the detailedWorkExperience array. This slows down the API call, so only enable this if you need it. |
| `cursor` | string | No | A pagination cursor returned from a previous search response. Use this to fetch the next page of results. |

```bash
curl -X POST 'https://api.orth.sh/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"fiber","path":"/v1/natural-language-search/profiles","body":{"query":"<string>","pageSize":"<integer>","getDetailedEducation":"<string>","getDetailedWorkExperience":"<string>","cursor":"<string>"}}'
```

### Convert text into profile search filters

Takes free-form text (e.g., 'Software engineers in US with 5+ years of experience') and converts it into a structured set of filters for profile search.           This endpoint helps transform natural language queries into standardized search parameters such as job titles, skills, seniority, locations, past experiences, education, languages, and more.

`POST /v1/text-to-search-params/profiles`

**Estimated cost:** $0.04

**Docs:** https://api.fiber.ai/docs/#tag/agentic-search/POST/v1/text-to-search-params/profiles

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `query` | string | Yes |  |

```bash
curl -X POST 'https://api.orth.sh/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"fiber","path":"/v1/text-to-search-params/profiles","body":{"query":"<string>"}}'
```

### People search

Search for people using filters

`POST /v1/people-search`

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

**Docs:** https://api.fiber.ai/docs/#tag/search/POST/v1/people-search

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `searchParams` | object | No | Search parameters for people search. |
| `pageSize` | integer | No | The number of profiles to return, if you need to get more results, you can paginate. |
| `cursor` | string | No | A pagination cursor returned from a previous search response. Use this to fetch the next page of results. |
| `currentCompanies` | string | No | Filter people by the companies they are currently working for. If you want to search over many companies, we suggest using the Combined Search API, which is optimized for this use case. |
| `prospectExclusionListIDs` | string | No | Filter out people which belong to the given prospect exclusion lists |
| `companyExclusionListIDs` | string | No | Filter out people who work at companies which belong to the given company exclusion lists |

```bash
curl -X POST 'https://api.orth.sh/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"fiber","path":"/v1/people-search","body":{"searchParams":"<object>","pageSize":"<integer>","cursor":"<string>","currentCompanies":"<string>","prospectExclusionListIDs":"<string>","companyExclusionListIDs":"<string>"}}'
```

### Live fetch LinkedIn profile

Returns an enriched profile with details for a given LinkedIn profile identifier

`POST /v1/linkedin-live-fetch/profile/single`

**Estimated cost:** $0.04

**Docs:** https://api.fiber.ai/docs/#tag/live-fetch/POST/v1/linkedin-live-fetch/profile/single

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `identifier` | string | Yes | Identifier can be a profile's LinkedIn slug (e.g. 'williamhgates' from <linkedin.com/in/williamhgates>), a Sales Navigator URN (e.g. 'ACwAAA.....'), or a full LinkedIn URL (e.g. 'https://www.linkedin.com/in/williamhgates/') |
| `getDetailedEducation` | string | No | Whether to include deep details about each educational item, like the school's LinkedIn URL, website, location, etc. That'll be put in the detailedEducation array. This slows down the API call, so only enable this if you need it. |
| `getDetailedWorkExperience` | string | No | Whether to include deep details about each work experience item, like the company's LinkedIn URL, website, location, etc. That'll be put in the detailedWorkExperience array. This slows down the API call, so only enable this if you need it. |

```bash
curl -X POST 'https://api.orth.sh/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"fiber","path":"/v1/linkedin-live-fetch/profile/single","body":{"identifier":"<string>","getDetailedEducation":"<string>","getDetailedWorkExperience":"<string>"}}'
```

### Job postings search

Search for job postings with flexible filtering capabilities

`POST /v1/job-search`

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

**Docs:** https://api.fiber.ai/docs/#tag/search/POST/v1/job-search

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `searchParams` | object | Yes | Job search filter parameters |
| `pageSize` | integer | No | Number of jobs to return per page (max 1000) |
| `cursor` | string | No | Pagination cursor for fetching next page of results |

```bash
curl -X POST 'https://api.orth.sh/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"fiber","path":"/v1/job-search","body":{"searchParams":"<object>","pageSize":"<integer>","cursor":"<string>"}}'
```

### Fetch LinkedIn post reactions

Fetches paginated reactions of a specific type for a LinkedIn post. Each page contains up to 10 reactions.

`POST /v1/linkedin-live-fetch/post-reactions`

**Estimated cost:** $0.04

**Docs:** https://api.fiber.ai/docs/#tag/live-fetch/POST/v1/linkedin-live-fetch/post-reactions

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `contentId` | string | Yes | You can get LinkedIn posts from the Profile or Company Posts endpoints. (e.g., 'urn:li:activity:7123456789012345678' or 'urn:li:ugcPost:7391650829398675456') |
| `reactionType` | string | No | Type of reaction to fetch. If null, all reactions will be fetched. |
| `cursor` | string | No | Pagination cursor for fetching additional pages of posts |

```bash
curl -X POST 'https://api.orth.sh/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"fiber","path":"/v1/linkedin-live-fetch/post-reactions","body":{"contentId":"<string>","reactionType":"<string>","cursor":"<string>"}}'
```

### Kitchen sink company lookup

Search for a company using a variety of parameters such as LinkedIn slug, LinkedIn URL, name, etc. Returns complete company data if found.

`POST /v1/kitchen-sink/company`

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

**Docs:** https://api.fiber.ai/docs/#tag/kitchen-sink/POST/v1/kitchen-sink/company

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `companyIdentifier` | string | No | A unique identifier for the company. Accepts one of: linkedinSlug, linkedinUrl, or linkedinOrgID. Providing this increases the accuracy and speed of the lookup. If this is provided, you do not need to supply companyName or companyDomain. |
| `companyName` | string | No |  |
| `companyDomain` | string | No |  |
| `numCompanies` | integer | No | The number of companies you want to fetch. Companies are sorted by best match first. |

```bash
curl -X POST 'https://api.orth.sh/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"fiber","path":"/v1/kitchen-sink/company","body":{"companyIdentifier":"<string>","companyName":"<string>","companyDomain":"<string>","numCompanies":"<integer>"}}'
```

### Poll exhaustive contact details result

Polls the status of an exhaustive contact reveal task. Returns status and results when complete.

`POST /v1/contact-details/exhaustive/poll`

**Cost:** Free

**Docs:** https://api.fiber.ai/docs/#tag/contact-details/POST/v1/contact-details/exhaustive/poll

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `taskId` | string | Yes | Task ID from the exhaustive start endpoint. |

```bash
curl -X POST 'https://api.orth.sh/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"fiber","path":"/v1/contact-details/exhaustive/poll","body":{"taskId":"<string>"}}'
```

### Poll batch contact details

Polls a batch contact details task. Returns partial results as they complete.

`POST /v1/contact-details/batch/poll`

**Cost:** Free

**Docs:** https://api.fiber.ai/docs/#tag/contact-details/POST/v1/contact-details/batch/poll

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `taskId` | string | Yes | Task ID from the batch start endpoint. |
| `cursor` | string | No | Pagination cursor from previous poll response. |
| `take` | integer | No | Number of people to return per page. Defaults to 100. |

```bash
curl -X POST 'https://api.orth.sh/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"fiber","path":"/v1/contact-details/batch/poll","body":{"taskId":"<string>","cursor":"<string>","take":"<integer>"}}'
```

### Get company revenue estimate

Fetches the most recent annual revenue estimate for a company. Pass a LinkedIn company URL, domain, and/or company name.

`POST /v1/company-revenue`

**Estimated cost:** $0.08

**Docs:** https://api.fiber.ai/docs/#tag/company-info/POST/v1/company-revenue

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `companyMetadata` | object | Yes | Company identifier object with optional fields: name, domain, linkedinUrl, linkedinOrgId. |

```bash
curl -X POST 'https://api.orth.sh/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"fiber","path":"/v1/company-revenue","body":{"companyMetadata":"<object>"}}'
```

### Start depth chart generation

Generates an organizational depth chart for a company. Classifies employees by function. Async. Poll with /depth-chart/poll.

`POST /v1/depth-chart/start`

**Estimated cost:** $0.18

**Docs:** https://api.fiber.ai/docs/#tag/company-info/POST/v1/depth-chart/start

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `company` | object | Yes | Company identifier. Set 'identifier' to 'linkedinUrl', 'linkedinSlug', 'linkedinOrgId', or 'domain' and provide the corresponding 'value'. |
| `functions` | array | No | Optional list of function/department labels to classify employees into (e.g. ['Engineering', 'Sales']). |

```bash
curl -X POST 'https://api.orth.sh/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"fiber","path":"/v1/depth-chart/start","body":{"company":"<object>","functions":"<array>"}}'
```

### Validate a single phone number

Validates a phone number and returns whether it's valid, reachable, carrier info, and caller name.

`POST /v1/validate-phone/single`

**Estimated cost:** $0.06

**Docs:** https://api.fiber.ai/docs/#tag/validation/POST/v1/validate-phone/single

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `phoneNumber` | string | Yes | Phone number to validate. E.164 format recommended (e.g. +14155551234). |

```bash
curl -X POST 'https://api.orth.sh/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"fiber","path":"/v1/validate-phone/single","body":{"phoneNumber":"<string>"}}'
```

### Poll depth chart generation result

Polls the status of a depth chart generation. Returns the org chart when complete.

`POST /v1/depth-chart/poll`

**Cost:** Free

**Docs:** https://api.fiber.ai/docs/#tag/company-info/POST/v1/depth-chart/poll

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `reportId` | string | Yes | Report ID returned by the /depth-chart/start endpoint. |

```bash
curl -X POST 'https://api.orth.sh/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"fiber","path":"/v1/depth-chart/poll","body":{"reportId":"<string>"}}'
```

### Combined search count

Get total count of companies and people matching search filters in one call.

`POST /v1/combined-search/count`

**Estimated cost:** $0.04

**Docs:** https://api.fiber.ai/docs/#tag/search/POST/v1/combined-search/count

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `companyParams` | object | Yes | Company search parameters. |
| `profileParams` | object | No | Profile search parameters. |
| `companyExclusionListIDs` | array | No | Company exclusion list IDs to filter out. |
| `prospectExclusionListIDs` | array | No | Prospect exclusion list IDs to filter out. |

```bash
curl -X POST 'https://api.orth.sh/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"fiber","path":"/v1/combined-search/count","body":{"companyParams":"<object>","profileParams":"<object>","companyExclusionListIDs":"<array>","prospectExclusionListIDs":"<array>"}}'
```

### People search count

Get count of profiles matching search filters. Use to estimate result sizes before running a full search.

`POST /v1/people-search/count`

**Estimated cost:** $0.02

**Docs:** https://api.fiber.ai/docs/#tag/search/POST/v1/people-search/count

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `searchParams` | object | No | Search parameters for people search. |
| `currentCompanies` | array | No | Filter people by the companies they currently work for. |
| `prospectExclusionListIDs` | array | No | Prospect exclusion list IDs to filter out. |
| `companyExclusionListIDs` | array | No | Company exclusion list IDs to filter out. |

```bash
curl -X POST 'https://api.orth.sh/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"fiber","path":"/v1/people-search/count","body":{"searchParams":"<object>","currentCompanies":"<array>","prospectExclusionListIDs":"<array>","companyExclusionListIDs":"<array>"}}'
```

### Reveal contact details (turbo)

Fastest synchronous contact reveal using premium enrichment stack. Higher cost, lowest latency.

`POST /v1/contact-details/turbo/sync`

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

**Docs:** https://api.fiber.ai/docs/#tag/contact-details/POST/v1/contact-details/turbo/sync

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `linkedinUrl` | string | Yes | Person's LinkedIn URL or entity URN. |
| `enrichmentType` | object | No | Enrichment types to request. Defaults to all true. |

```bash
curl -X POST 'https://api.orth.sh/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"fiber","path":"/v1/contact-details/turbo/sync","body":{"linkedinUrl":"<string>","enrichmentType":"<object>"}}'
```

### Get company scouting report

Generates a comprehensive scouting report for a company including news, founders, funding, media links, and historical headcount.

`POST /v1/scouting-report`

**Estimated cost:** $0.12

**Docs:** https://api.fiber.ai/docs/#tag/company-info/POST/v1/scouting-report

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `company` | object | Yes | Company identifier. Set 'identifier' to 'linkedinUrl', 'linkedinSlug', 'linkedinOrgId', or 'domain' and provide the corresponding 'value'. |

```bash
curl -X POST 'https://api.orth.sh/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"fiber","path":"/v1/scouting-report","body":{"company":"<object>"}}'
```

### Company count

Get count of companies matching search filters. Use to estimate result sizes before running a full search.

`POST /v1/company-count`

**Estimated cost:** $0.02

**Docs:** https://api.fiber.ai/docs/#tag/search/POST/v1/company-count

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `searchParams` | object | Yes | Search parameters for company search. |
| `companyExclusionListIDs` | array | No | Company exclusion list IDs to filter out. |

```bash
curl -X POST 'https://api.orth.sh/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"fiber","path":"/v1/company-count","body":{"searchParams":"<object>","companyExclusionListIDs":"<array>"}}'
```

### Start batch contact details

Batch contact reveal for up to 2000 people. Async. Poll with /contact-details/batch/poll.

`POST /v1/contact-details/batch/start`

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

**Docs:** https://api.fiber.ai/docs/#tag/contact-details/POST/v1/contact-details/batch/start

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `personDetails` | array | Yes | Array of objects. Each item has linkedinUrl: {value: "https://linkedin.com/in/..."} |
| `enrichmentTypes` | object | No | Contact types to request. Defaults to all true. |

```bash
curl -X POST 'https://api.orth.sh/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"fiber","path":"/v1/contact-details/batch/start","body":{"personDetails":"<array>","enrichmentTypes":"<object>"}}'
```

### Reveal contact details (standard)

Standard synchronous contact reveal. Returns emails and/or phone numbers for a person given their LinkedIn URL. Best balance of speed, cost, and coverage.

`POST /v1/contact-details/single`

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

**Docs:** https://api.fiber.ai/docs/#tag/contact-details/POST/v1/contact-details/single

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `linkedinUrl` | string | Yes | Person's LinkedIn URL or bare slug (e.g. 'https://www.linkedin.com/in/william-h-gates'). |
| `enrichmentType` | object | No | Enrichment types to request. Defaults to all true. Set fields to false to reduce cost. |
| `validateEmails` | boolean | No | Whether to bounce-validate emails before returning. No additional cost. |

```bash
curl -X POST 'https://api.orth.sh/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"fiber","path":"/v1/contact-details/single","body":{"linkedinUrl":"<string>","enrichmentType":"<object>","validateEmails":"<boolean>"}}'
```

### Start exhaustive contact details reveal

Maximum-coverage async contact reveal. Runs all waterfall steps in parallel. Poll with /contact-details/exhaustive/poll.

`POST /v1/contact-details/exhaustive/start`

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

**Docs:** https://api.fiber.ai/docs/#tag/contact-details/POST/v1/contact-details/exhaustive/start

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `linkedinUrl` | string | Yes | Person's LinkedIn URL or slug. |
| `enrichmentType` | object | No | Enrichment types to request. Defaults to all true. |

```bash
curl -X POST 'https://api.orth.sh/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"fiber","path":"/v1/contact-details/exhaustive/start","body":{"linkedinUrl":"<string>","enrichmentType":"<object>"}}'
```

### Fetch Twitter/X user profile

Fetches a Twitter/X user profile by handle.

`POST /v1/twitter/profile`

**Estimated cost:** $0.04

**Docs:** https://api.fiber.ai/docs/#tag/social-media/POST/v1/twitter/profile

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `handle` | string | Yes | Twitter/X handle, with or without leading '@'. |

```bash
curl -X POST 'https://api.orth.sh/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"fiber","path":"/v1/twitter/profile","body":{"handle":"<string>"}}'
```

### Search Twitter/X tweets

Search tweets by query string. Supports Twitter search operators.

`POST /v1/twitter/search`

**Estimated cost:** $0.04

**Docs:** https://api.fiber.ai/docs/#tag/social-media/POST/v1/twitter/search

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `query` | string | Yes | Tweet search query. |
| `cursor` | string | No | Pagination cursor. |

```bash
curl -X POST 'https://api.orth.sh/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"fiber","path":"/v1/twitter/search","body":{"query":"<string>","cursor":"<string>"}}'
```

### Fetch Twitter/X tweet quote tweets

Fetches paginated quote tweets for a given tweet.

`POST /v1/twitter/tweet-quotes`

**Estimated cost:** $0.04

**Docs:** https://api.fiber.ai/docs/#tag/social-media/POST/v1/twitter/tweet-quotes

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `tweetId` | string | Yes | Numeric tweet ID. |
| `cursor` | string | No | Pagination cursor. |

```bash
curl -X POST 'https://api.orth.sh/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"fiber","path":"/v1/twitter/tweet-quotes","body":{"tweetId":"<string>","cursor":"<string>"}}'
```

### Fetch Twitter/X tweet replies

Fetches paginated replies to a given tweet.

`POST /v1/twitter/tweet-replies`

**Estimated cost:** $0.04

**Docs:** https://api.fiber.ai/docs/#tag/social-media/POST/v1/twitter/tweet-replies

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `tweetId` | string | Yes | Numeric tweet ID. |
| `cursor` | string | No | Pagination cursor. |

```bash
curl -X POST 'https://api.orth.sh/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"fiber","path":"/v1/twitter/tweet-replies","body":{"tweetId":"<string>","cursor":"<string>"}}'
```

### Fetch Twitter/X user tweets

Fetches paginated tweets from a Twitter/X user.

`POST /v1/twitter/user-tweets`

**Estimated cost:** $0.04

**Docs:** https://api.fiber.ai/docs/#tag/social-media/POST/v1/twitter/user-tweets

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `handle` | string | Yes | Twitter/X handle. |
| `cursor` | string | No | Pagination cursor. |

```bash
curl -X POST 'https://api.orth.sh/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"fiber","path":"/v1/twitter/user-tweets","body":{"handle":"<string>","cursor":"<string>"}}'
```

### Find LinkedIn URL from X handle

Resolves a Twitter/X handle to a LinkedIn profile URL.

`POST /v1/twitter-handle-to-linkedin/single`

**Estimated cost:** $0.06

**Docs:** https://api.fiber.ai/docs/#tag/social-media/POST/v1/twitter-handle-to-linkedin/single

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `handle` | string | Yes | Twitter/X handle, with or without '@'. |
| `context` | string | No | Optional hint to disambiguate common-name handles. |

```bash
curl -X POST 'https://api.orth.sh/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"fiber","path":"/v1/twitter-handle-to-linkedin/single","body":{"handle":"<string>","context":"<string>"}}'
```

### Fetch Instagram user profile

Fetches an Instagram user profile by handle.

`POST /v1/instagram/profile`

**Estimated cost:** $0.04

**Docs:** https://api.fiber.ai/docs/#tag/instagram/POST/v1/instagram/profile

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `handle` | string | Yes | Instagram handle, with or without '@'. |

```bash
curl -X POST 'https://api.orth.sh/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"fiber","path":"/v1/instagram/profile","body":{"handle":"<string>"}}'
```

### Fetch Instagram post details

Fetches details for a specific Instagram post.

`POST /v1/instagram/post-details`

**Estimated cost:** $0.04

**Docs:** https://api.fiber.ai/docs/#tag/instagram/POST/v1/instagram/post-details

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `postUrl` | string | Yes | Full Instagram post URL or shortcode. |

```bash
curl -X POST 'https://api.orth.sh/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"fiber","path":"/v1/instagram/post-details","body":{"postUrl":"<string>"}}'
```

### Fetch Instagram user posts

Fetches paginated posts from an Instagram user.

`POST /v1/instagram/user-posts`

**Estimated cost:** $0.04

**Docs:** https://api.fiber.ai/docs/#tag/instagram/POST/v1/instagram/user-posts

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `handle` | string | Yes | Instagram handle. |
| `nextPageToken` | string | No | Pagination token. |

```bash
curl -X POST 'https://api.orth.sh/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"fiber","path":"/v1/instagram/user-posts","body":{"handle":"<string>","nextPageToken":"<string>"}}'
```

### Fetch Instagram user reels

Fetches paginated reels from an Instagram user.

`POST /v1/instagram/user-reels`

**Estimated cost:** $0.04

**Docs:** https://api.fiber.ai/docs/#tag/instagram/POST/v1/instagram/user-reels

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `handle` | string | Yes | Instagram handle. |
| `nextPageToken` | string | No | Pagination token. |

```bash
curl -X POST 'https://api.orth.sh/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"fiber","path":"/v1/instagram/user-reels","body":{"handle":"<string>","nextPageToken":"<string>"}}'
```

### Start GitHub lookup

Looks up GitHub profiles for a list of people. Async. Poll with /github-lookup/poll.

`POST /v1/github-lookup/trigger`

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

**Docs:** https://api.fiber.ai/docs/#tag/github/POST/v1/github-lookup/trigger

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `overallContext` | string | Yes | Descriptor of what the people have in common. |
| `people` | array | Yes | List of people. Each item needs inputType (linkedinUrl\|linkedinUserId\|manual) plus the corresponding field. E.g. {inputType: "linkedinUrl", linkedinUrl: "https://linkedin.com/in/..."} |

```bash
curl -X POST 'https://api.orth.sh/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"fiber","path":"/v1/github-lookup/trigger","body":{"overallContext":"<string>","people":"<array>"}}'
```

### Poll GitHub lookup results

Polls the status of a GitHub lookup agent run.

`POST /v1/github-lookup/poll`

**Cost:** Free

**Docs:** https://api.fiber.ai/docs/#tag/github/POST/v1/github-lookup/poll

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `githubAgentRunId` | string | Yes | Agent run ID from the trigger endpoint. |

```bash
curl -X POST 'https://api.orth.sh/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"fiber","path":"/v1/github-lookup/poll","body":{"githubAgentRunId":"<string>"}}'
```

### Start GitHub to LinkedIn lookup

Batch GitHub to LinkedIn lookup. Async. Poll with /github-to-linkedin/polling.

`POST /v1/github-to-linkedin/trigger`

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

**Docs:** https://api.fiber.ai/docs/#tag/github/POST/v1/github-to-linkedin/trigger

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `overallContext` | string | No | Descriptor of what the people have in common. |
| `people` | array | Yes | List of GitHub usernames. Max 1000. |
| `outputType` | string | No | What to extract: 'linkedin', 'email', or 'both'. Default: 'linkedin'. |

```bash
curl -X POST 'https://api.orth.sh/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"fiber","path":"/v1/github-to-linkedin/trigger","body":{"overallContext":"<string>","people":"<array>","outputType":"<string>"}}'
```

### Poll GitHub to LinkedIn lookup

Polls the status of a GitHub to LinkedIn batch lookup.

`POST /v1/github-to-linkedin/polling`

**Cost:** Free

**Docs:** https://api.fiber.ai/docs/#tag/github/POST/v1/github-to-linkedin/polling

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `githubAgentRunId` | string | Yes | Agent run ID from the trigger endpoint. |
| `cursor` | string | No | Pagination cursor. |
| `pageSize` | number | No | Results per page. Default: 10. |

```bash
curl -X POST 'https://api.orth.sh/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"fiber","path":"/v1/github-to-linkedin/polling","body":{"githubAgentRunId":"<string>","cursor":"<string>","pageSize":"<number>"}}'
```

### Fetch Twitter/X tweet details

Fetches full details for a specific tweet by ID.

`POST /v1/twitter/tweet-details`

**Estimated cost:** $0.04

**Docs:** https://api.fiber.ai/docs/#tag/social-media/POST/v1/twitter/tweet-details

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `tweetId` | string | Yes | Numeric tweet ID. |

```bash
curl -X POST 'https://api.orth.sh/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"fiber","path":"/v1/twitter/tweet-details","body":{"tweetId":"<string>"}}'
```

### Fetch Twitter/X tweet retweeters

Fetches paginated list of users who retweeted a tweet.

`POST /v1/twitter/tweet-retweeters`

**Estimated cost:** $0.04

**Docs:** https://api.fiber.ai/docs/#tag/social-media/POST/v1/twitter/tweet-retweeters

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `tweetId` | string | Yes | Numeric tweet ID. |
| `cursor` | string | No | Pagination cursor. |

```bash
curl -X POST 'https://api.orth.sh/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"fiber","path":"/v1/twitter/tweet-retweeters","body":{"tweetId":"<string>","cursor":"<string>"}}'
```

### Fetch Instagram post comments

Fetches paginated comments on an Instagram post.

`POST /v1/instagram/post-comments`

**Estimated cost:** $0.04

**Docs:** https://api.fiber.ai/docs/#tag/instagram/POST/v1/instagram/post-comments

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `postUrl` | string | Yes | Full Instagram post URL or shortcode. |
| `nextPageToken` | string | No | Pagination token. |

```bash
curl -X POST 'https://api.orth.sh/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"fiber","path":"/v1/instagram/post-comments","body":{"postUrl":"<string>","nextPageToken":"<string>"}}'
```

### Fetch Twitter/X user followers

Fetches paginated followers of a Twitter/X user.

`POST /v1/twitter/user-followers`

**Estimated cost:** $0.04

**Docs:** https://api.fiber.ai/docs/#tag/social-media/POST/v1/twitter/user-followers

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `handle` | string | Yes | Twitter/X handle. |
| `cursor` | string | No | Pagination cursor. |

```bash
curl -X POST 'https://api.orth.sh/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"fiber","path":"/v1/twitter/user-followers","body":{"handle":"<string>","cursor":"<string>"}}'
```

### Fetch Twitter/X user following

Fetches paginated list of accounts a Twitter/X user follows.

`POST /v1/twitter/user-following`

**Estimated cost:** $0.04

**Docs:** https://api.fiber.ai/docs/#tag/social-media/POST/v1/twitter/user-following

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `handle` | string | Yes | Twitter/X handle. |
| `cursor` | string | No | Pagination cursor. |

```bash
curl -X POST 'https://api.orth.sh/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"fiber","path":"/v1/twitter/user-following","body":{"handle":"<string>","cursor":"<string>"}}'
```

### Fetch Twitter/X user mentions

Fetches paginated mentions of a Twitter/X user.

`POST /v1/twitter/user-mentions`

**Estimated cost:** $0.04

**Docs:** https://api.fiber.ai/docs/#tag/social-media/POST/v1/twitter/user-mentions

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `handle` | string | Yes | Twitter/X handle. |
| `cursor` | string | No | Pagination cursor. |

```bash
curl -X POST 'https://api.orth.sh/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"fiber","path":"/v1/twitter/user-mentions","body":{"handle":"<string>","cursor":"<string>"}}'
```

### Find person by GitHub username

Finds LinkedIn profile and/or email from a GitHub username. Synchronous.

`POST /v1/github-to-linkedin/single`

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

**Docs:** https://api.fiber.ai/docs/#tag/github/POST/v1/github-to-linkedin/single

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `githubUsername` | string | Yes | GitHub username to look up. |
| `outputType` | string | No | What to extract: 'linkedin', 'email', or 'both'. Default: 'both'. |

```bash
curl -X POST 'https://api.orth.sh/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"fiber","path":"/v1/github-to-linkedin/single","body":{"githubUsername":"<string>","outputType":"<string>"}}'
```

### Fetch popular TikTok songs

Fetches popular TikTok songs.

`POST /v1/tiktok/popular-songs`

**Estimated cost:** $0.04

**Docs:** https://api.fiber.ai/docs/#tag/tiktok/POST/v1/tiktok/popular-songs

_No parameters required._

```bash
curl -X POST 'https://api.orth.sh/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"fiber","path":"/v1/tiktok/popular-songs"}'
```

### Search TikTok videos by keyword

Searches TikTok videos by keyword or phrase.

`POST /v1/tiktok/search-keyword`

**Estimated cost:** $0.04

**Docs:** https://api.fiber.ai/docs/#tag/tiktok/POST/v1/tiktok/search-keyword

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `query` | string | Yes | Keyword or phrase to search. |
| `nextPageToken` | string | No | Pagination token. |

```bash
curl -X POST 'https://api.orth.sh/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"fiber","path":"/v1/tiktok/search-keyword","body":{"query":"<string>","nextPageToken":"<string>"}}'
```

### Search TikTok users

Searches TikTok users by query.

`POST /v1/tiktok/search-users`

**Estimated cost:** $0.04

**Docs:** https://api.fiber.ai/docs/#tag/tiktok/POST/v1/tiktok/search-users

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `query` | string | Yes | Search query for TikTok users. |
| `nextPageToken` | string | No | Pagination token. |

```bash
curl -X POST 'https://api.orth.sh/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"fiber","path":"/v1/tiktok/search-users","body":{"query":"<string>","nextPageToken":"<string>"}}'
```

### Fetch TikTok song details

Fetches details for a TikTok song.

`POST /v1/tiktok/song-details`

**Estimated cost:** $0.04

**Docs:** https://api.fiber.ai/docs/#tag/tiktok/POST/v1/tiktok/song-details

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `songUrl` | string | Yes | Full TikTok music/song URL. |

```bash
curl -X POST 'https://api.orth.sh/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"fiber","path":"/v1/tiktok/song-details","body":{"songUrl":"<string>"}}'
```

### Fetch TikTok videos using a song

Fetches TikTok videos that use a specific song.

`POST /v1/tiktok/song-videos`

**Estimated cost:** $0.04

**Docs:** https://api.fiber.ai/docs/#tag/tiktok/POST/v1/tiktok/song-videos

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `songUrl` | string | Yes | Full TikTok music/song URL. |
| `nextPageToken` | string | No | Pagination token. |

```bash
curl -X POST 'https://api.orth.sh/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"fiber","path":"/v1/tiktok/song-videos","body":{"songUrl":"<string>","nextPageToken":"<string>"}}'
```

### Fetch TikTok trending feed

Fetches the TikTok trending feed.

`POST /v1/tiktok/trending-feed`

**Estimated cost:** $0.04

**Docs:** https://api.fiber.ai/docs/#tag/tiktok/POST/v1/tiktok/trending-feed

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `nextPageToken` | string | No | Pagination token. |

```bash
curl -X POST 'https://api.orth.sh/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"fiber","path":"/v1/tiktok/trending-feed","body":{"nextPageToken":"<string>"}}'
```

### TikTok unified search

Unified search returning both videos and users.

`POST /v1/tiktok/unified-search`

**Estimated cost:** $0.04

**Docs:** https://api.fiber.ai/docs/#tag/tiktok/POST/v1/tiktok/unified-search

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `query` | string | Yes | Search query. |
| `nextPageToken` | string | No | Pagination token. |

```bash
curl -X POST 'https://api.orth.sh/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"fiber","path":"/v1/tiktok/unified-search","body":{"query":"<string>","nextPageToken":"<string>"}}'
```

### Fetch TikTok user videos

Fetches paginated videos from a TikTok user.

`POST /v1/tiktok/user-videos`

**Estimated cost:** $0.04

**Docs:** https://api.fiber.ai/docs/#tag/tiktok/POST/v1/tiktok/user-videos

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `handle` | string | Yes | TikTok handle. |
| `nextPageToken` | string | No | Pagination token. |

```bash
curl -X POST 'https://api.orth.sh/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"fiber","path":"/v1/tiktok/user-videos","body":{"handle":"<string>","nextPageToken":"<string>"}}'
```

### Fetch TikTok video comments

Fetches paginated comments on a TikTok video.

`POST /v1/tiktok/video-comments`

**Estimated cost:** $0.04

**Docs:** https://api.fiber.ai/docs/#tag/tiktok/POST/v1/tiktok/video-comments

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `videoUrl` | string | Yes | Full TikTok video URL. |
| `nextPageToken` | string | No | Pagination token. |

```bash
curl -X POST 'https://api.orth.sh/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"fiber","path":"/v1/tiktok/video-comments","body":{"videoUrl":"<string>","nextPageToken":"<string>"}}'
```

### Fetch TikTok video details

Fetches details for a specific TikTok video.

`POST /v1/tiktok/video-details`

**Estimated cost:** $0.04

**Docs:** https://api.fiber.ai/docs/#tag/tiktok/POST/v1/tiktok/video-details

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `videoUrl` | string | Yes | Full TikTok video URL. |

```bash
curl -X POST 'https://api.orth.sh/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"fiber","path":"/v1/tiktok/video-details","body":{"videoUrl":"<string>"}}'
```

### Fetch TikTok video transcript

Fetches the transcript of a TikTok video.

`POST /v1/tiktok/video-transcript`

**Estimated cost:** $0.04

**Docs:** https://api.fiber.ai/docs/#tag/tiktok/POST/v1/tiktok/video-transcript

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `videoUrl` | string | Yes | Full TikTok video URL. |

```bash
curl -X POST 'https://api.orth.sh/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"fiber","path":"/v1/tiktok/video-transcript","body":{"videoUrl":"<string>"}}'
```

### Fetch YouTube channel info

Fetches YouTube channel info and paginated videos.

`POST /v1/youtube/channel`

**Estimated cost:** $0.04

**Docs:** https://api.fiber.ai/docs/#tag/youtube/POST/v1/youtube/channel

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `channelIdentifier` | string | Yes | YouTube @handle, channel ID, or full URL. |
| `nextPageToken` | string | No | Pagination token. |

```bash
curl -X POST 'https://api.orth.sh/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"fiber","path":"/v1/youtube/channel","body":{"channelIdentifier":"<string>","nextPageToken":"<string>"}}'
```

### Search YouTube videos

Searches YouTube videos by query.

`POST /v1/youtube/search`

**Estimated cost:** $0.04

**Docs:** https://api.fiber.ai/docs/#tag/youtube/POST/v1/youtube/search

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `query` | string | Yes | Search query string. |
| `nextPageToken` | string | No | Pagination token. |

```bash
curl -X POST 'https://api.orth.sh/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"fiber","path":"/v1/youtube/search","body":{"query":"<string>","nextPageToken":"<string>"}}'
```

### Fetch YouTube video transcript

Fetches the transcript of a YouTube video.

`POST /v1/youtube/transcript`

**Estimated cost:** $0.04

**Docs:** https://api.fiber.ai/docs/#tag/youtube/POST/v1/youtube/transcript

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `videoId` | string | Yes | YouTube video ID or full URL. |
| `languageCode` | string | No | BCP-47 language code (e.g. 'en', 'es'). |

```bash
curl -X POST 'https://api.orth.sh/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"fiber","path":"/v1/youtube/transcript","body":{"videoId":"<string>","languageCode":"<string>"}}'
```

### Fetch YouTube video details

Fetches details for a specific YouTube video.

`POST /v1/youtube/video-details`

**Estimated cost:** $0.04

**Docs:** https://api.fiber.ai/docs/#tag/youtube/POST/v1/youtube/video-details

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `videoId` | string | Yes | YouTube video ID or full URL. |

```bash
curl -X POST 'https://api.orth.sh/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"fiber","path":"/v1/youtube/video-details","body":{"videoId":"<string>"}}'
```

### Fetch YouTube video comments

Fetches paginated comments on a YouTube video.

`POST /v1/youtube/video-comments`

**Estimated cost:** $0.04

**Docs:** https://api.fiber.ai/docs/#tag/youtube/POST/v1/youtube/video-comments

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `videoId` | string | Yes | YouTube video ID or full URL. |
| `nextPageToken` | string | No | Pagination token. |

```bash
curl -X POST 'https://api.orth.sh/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"fiber","path":"/v1/youtube/video-comments","body":{"videoId":"<string>","nextPageToken":"<string>"}}'
```

### Fetch TikTok user profile

Fetches a TikTok user profile by handle.

`POST /v1/tiktok/profile`

**Estimated cost:** $0.04

**Docs:** https://api.fiber.ai/docs/#tag/tiktok/POST/v1/tiktok/profile

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `handle` | string | Yes | TikTok handle, with or without '@'. |

```bash
curl -X POST 'https://api.orth.sh/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"fiber","path":"/v1/tiktok/profile","body":{"handle":"<string>"}}'
```

### Fetch popular TikTok creators

Fetches popular TikTok creators, optionally filtered by country.

`POST /v1/tiktok/popular-creators`

**Estimated cost:** $0.04

**Docs:** https://api.fiber.ai/docs/#tag/tiktok/POST/v1/tiktok/popular-creators

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `country` | string | No | ISO 3166-1 alpha-3 country code (e.g. 'USA'). Omit for global. |
| `sort` | string | No | Sort order. Omit for default ranking. |

```bash
curl -X POST 'https://api.orth.sh/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"fiber","path":"/v1/tiktok/popular-creators","body":{"country":"<string>","sort":"<string>"}}'
```

### Fetch popular TikTok hashtags

Fetches trending TikTok hashtags.

`POST /v1/tiktok/popular-hashtags`

**Estimated cost:** $0.04

**Docs:** https://api.fiber.ai/docs/#tag/tiktok/POST/v1/tiktok/popular-hashtags

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `country` | string | No | ISO 3166-1 alpha-3 country code. |
| `periodDays` | number | No | Time period: 7, 30, or 120 days. |

```bash
curl -X POST 'https://api.orth.sh/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"fiber","path":"/v1/tiktok/popular-hashtags","body":{"country":"<string>","periodDays":"<number>"}}'
```

### Fetch TikTok user followers

Fetches paginated followers of a TikTok user.

`POST /v1/tiktok/user-followers`

**Estimated cost:** $0.04

**Docs:** https://api.fiber.ai/docs/#tag/tiktok/POST/v1/tiktok/user-followers

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `handle` | string | Yes | TikTok handle. |
| `nextPageToken` | string | No | Pagination token. |

```bash
curl -X POST 'https://api.orth.sh/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"fiber","path":"/v1/tiktok/user-followers","body":{"handle":"<string>","nextPageToken":"<string>"}}'
```

### Search TikTok hashtag videos

Searches TikTok videos by hashtag.

`POST /v1/tiktok/search-hashtag`

**Estimated cost:** $0.04

**Docs:** https://api.fiber.ai/docs/#tag/tiktok/POST/v1/tiktok/search-hashtag

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `query` | string | Yes | Hashtag to search (with or without '#'). |
| `nextPageToken` | string | No | Pagination token. |

```bash
curl -X POST 'https://api.orth.sh/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"fiber","path":"/v1/tiktok/search-hashtag","body":{"query":"<string>","nextPageToken":"<string>"}}'
```

### Fetch TikTok user following

Fetches paginated list of accounts a TikTok user follows.

`POST /v1/tiktok/user-following`

**Estimated cost:** $0.04

**Docs:** https://api.fiber.ai/docs/#tag/tiktok/POST/v1/tiktok/user-following

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `handle` | string | Yes | TikTok handle. |
| `nextPageToken` | string | No | Pagination token. |

```bash
curl -X POST 'https://api.orth.sh/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"fiber","path":"/v1/tiktok/user-following","body":{"handle":"<string>","nextPageToken":"<string>"}}'
```

### Fetch TikTok comment replies

Fetches paginated replies to a TikTok comment.

`POST /v1/tiktok/comment-replies`

**Estimated cost:** $0.04

**Docs:** https://api.fiber.ai/docs/#tag/tiktok/POST/v1/tiktok/comment-replies

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `commentId` | string | Yes | Comment ID to fetch replies for. |
| `videoUrl` | string | Yes | TikTok video URL the comment belongs to. |
| `nextPageToken` | string | No | Pagination token. |

```bash
curl -X POST 'https://api.orth.sh/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"fiber","path":"/v1/tiktok/comment-replies","body":{"commentId":"<string>","videoUrl":"<string>","nextPageToken":"<string>"}}'
```

### POST /v1/stealth-founders/search

Search for stealth or ex-stealth startup founders. Returns profiles of founders currently in or who have left stealth mode. Charged per profile found.

`POST /v1/stealth-founders/search`

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

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `stealthConfig` | object | Yes | Object with mode. Use {"mode":"in-stealth"} or {"mode":"left-stealth"}. Optional date filters. |
| `searchParams` | object | No | Optional profile search filters |
| `pageSize` | integer | No | Profiles per page (default 25) |
| `cursor` | string | No | Pagination cursor |

```bash
curl -X POST 'https://api.orth.sh/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"fiber","path":"/v1/stealth-founders/search","body":{"stealthConfig":"<object>","searchParams":"<object>","pageSize":"<integer>","cursor":"<string>"}}'
```

### POST /v1/google-maps-search/check

Check progress of a Google Maps search. Returns completion percentage.

`POST /v1/google-maps-search/check`

**Cost:** Free

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `searchID` | string | Yes | Search ID from /google-maps-search/start |

```bash
curl -X POST 'https://api.orth.sh/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"fiber","path":"/v1/google-maps-search/check","body":{"searchID":"<string>"}}'
```

### POST /v1/google-maps-search/poll

Poll for Google Maps search results. Returns paginated business data.

`POST /v1/google-maps-search/poll`

**Cost:** Free

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `searchID` | string | Yes | Search ID from /google-maps-search/start |
| `pageSize` | integer | No | Results per page (default 25) |
| `cursor` | string | No | Pagination cursor from previous response |

```bash
curl -X POST 'https://api.orth.sh/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"fiber","path":"/v1/google-maps-search/poll","body":{"searchID":"<string>","pageSize":"<integer>","cursor":"<string>"}}'
```

### POST /v1/natural-language-search/combined/sync

Natural language search for both companies and profiles. Converts text query to search params and returns results. Fixed cost for param generation plus per-result charges.

`POST /v1/natural-language-search/combined/sync`

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

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `query` | string | Yes | Natural language query (e.g. 'Senior PMs at Series A FinTech in NYC') |
| `companyConfig` | object | Yes | {pageSize, exclusionListIDs, companyCursor} |
| `profileConfig` | object | Yes | {pageSize, exclusionListIDs, profileCursor, getDetailedEducation, getDetailedWorkExperience} |

```bash
curl -X POST 'https://api.orth.sh/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"fiber","path":"/v1/natural-language-search/combined/sync","body":{"query":"<string>","companyConfig":"<object>","profileConfig":"<object>"}}'
```

### POST /v1/natural-language-search/job-description-search

Search for profiles matching a job description using natural language. Converts JD text to search params and returns matching candidates.

`POST /v1/natural-language-search/job-description-search`

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

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `search` | object | Yes | For initial: {request:'initial', query:'...', pageSize:25}. For pagination: {request:'subsequent', cursor:'...'} |

```bash
curl -X POST 'https://api.orth.sh/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"fiber","path":"/v1/natural-language-search/job-description-search","body":{"search":"<object>"}}'
```

### POST /v1/local-business-search/start

Start an AI-powered local business search. Finds company details, decision makers, and contact info. Async: poll with /local-business-search/poll.

`POST /v1/local-business-search/start`

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

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `companies` | array | Yes | Companies to research Array items with fields: companyName, companyWebsite, companyCity, companyState, companyCountryName, companyCountryCode, companyAddress, context |
| `jobTitles` | array | No | Job titles to find at each company (e.g. ['CEO','Owner']) |
| `strictJobTitleMatch` | boolean | No | If true, only match exact role variants |
| `contactPreferences` | object | No | Controls which contact data to fetch |

```bash
curl -X POST 'https://api.orth.sh/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"fiber","path":"/v1/local-business-search/start","body":{"companies":"<array>","jobTitles":"<array>","strictJobTitleMatch":"<boolean>","contactPreferences":"<object>"}}'
```

### POST /v1/social-media-lookup/trigger

Find social media profiles (Twitter, Instagram) for a person. Async: poll with /social-media-lookup/polling.

`POST /v1/social-media-lookup/trigger`

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

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `person` | object | Yes | Person to look up. Use {inputType:'linkedinUrl', linkedinUrl:'...'} or {inputType:'manual', firstName:'...', lastName:'...'} |
| `platforms` | array | No | Platforms to search (default: ['TWITTER']) |
| `overallContext` | string | No | Context to help disambiguation (e.g. 'AI researcher at OpenAI') |

```bash
curl -X POST 'https://api.orth.sh/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"fiber","path":"/v1/social-media-lookup/trigger","body":{"person":"<object>","platforms":"<array>","overallContext":"<string>"}}'
```

### POST /v1/local-business-search/poll

Poll for local business search results.

`POST /v1/local-business-search/poll`

**Cost:** Free

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `researchRunId` | string | Yes | Research run ID from /local-business-search/start |
| `pageSize` | integer | No | Results per page (default 25) |
| `cursor` | string | No | Pagination cursor |

```bash
curl -X POST 'https://api.orth.sh/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"fiber","path":"/v1/local-business-search/poll","body":{"researchRunId":"<string>","pageSize":"<integer>","cursor":"<string>"}}'
```

### POST /v1/domain-lookup/trigger

Find domains and websites for a list of companies. Async: poll with /domain-lookup/polling. Max 400 companies per request.

`POST /v1/domain-lookup/trigger`

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

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `overAllContext` | string | Yes | What the companies have in common (e.g. 'British freight brokers') |
| `companyInfo` | array | Yes | Companies to look up (max 400) Array items with fields: name, domain, country, state, city, address, findEmailDomains, otherContext, description |

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

### POST /v1/multi-source/search

Multi-source AI search. Searches across multiple data sources using natural language. Pricing coming soon from Fiber.

`POST /v1/multi-source/search`

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

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `search` | object | Yes | For initial: {request:'initial', query:'...', pageSize:10}. For pagination: {request:'subsequent', cursor:'...'} |

```bash
curl -X POST 'https://api.orth.sh/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"fiber","path":"/v1/multi-source/search","body":{"search":"<object>"}}'
```

### POST /v1/social-media-lookup/polling

Poll for social media lookup results.

`POST /v1/social-media-lookup/polling`

**Cost:** Free

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `socialMediaFinderRunId` | string | Yes | Run ID from /social-media-lookup/trigger |
| `cursor` | string | No | Pagination cursor |
| `pageSize` | number | No | Results per page (default 10) |

```bash
curl -X POST 'https://api.orth.sh/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"fiber","path":"/v1/social-media-lookup/polling","body":{"socialMediaFinderRunId":"<string>","cursor":"<string>","pageSize":"<number>"}}'
```

### POST /v1/domain-lookup/polling

Poll for domain lookup results.

`POST /v1/domain-lookup/polling`

**Cost:** Free

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `domainAgentRunId` | string | Yes | Run ID from /domain-lookup/trigger |
| `cursor` | string | No | Pagination cursor |
| `pageSize` | number | No | Results per page (default 10) |

```bash
curl -X POST 'https://api.orth.sh/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"fiber","path":"/v1/domain-lookup/polling","body":{"domainAgentRunId":"<string>","cursor":"<string>","pageSize":"<number>"}}'
```

### POST /v1/google-maps-search/start

Start a search on Google Maps. Searches businesses by query across specified areas. Charges 3 credits ($0.06) per business found. Async: poll with /google-maps-search/poll.

`POST /v1/google-maps-search/start`

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

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `query` | string | Yes | Search query for Google Maps (e.g. 'dominos pizza'). Do not include location. |
| `maxResults` | integer | No | Max results to return (default 100, max 10000) |
| `strategy` | object | Yes | Search strategy. Use {"strategy":"whole-usa"} or {"strategy":"specific-areas","unionAll":[...]} |
| `name` | string | No | Optional project name for reference |

```bash
curl -X POST 'https://api.orth.sh/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"fiber","path":"/v1/google-maps-search/start","body":{"query":"<string>","maxResults":"<integer>","strategy":"<object>","name":"<string>"}}'
```

### POST /v1/stealth-founders/count

Count stealth or ex-stealth startup founders matching search criteria.

`POST /v1/stealth-founders/count`

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

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `stealthConfig` | object | Yes | Object with mode. Use {"mode":"in-stealth"} or {"mode":"left-stealth"}. Optional date filters. |
| `searchParams` | object | No | Optional profile search filters |

```bash
curl -X POST 'https://api.orth.sh/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"fiber","path":"/v1/stealth-founders/count","body":{"stealthConfig":"<object>","searchParams":"<object>"}}'
```

### POST /v1/real-estate/listings

Search real estate listings by location. Supports filtering by price, bedrooms, property type, and more. Charged per page of results.

`POST /v1/real-estate/listings`

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

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `location` | object | Yes | Either {type:'raw', rawQuery:'Austin TX'} or {type:'structured', city:'Austin', stateCode:'TX'} |
| `nextPageToken` | string | No | Pagination token from previous response |
| `sortBy` | string | No | Sort order |
| `listingStatus` | string | No | Listing category |
| `homeTypes` | array | No | Property types to include |
| `price` | object | No | Price range {min, max} |
| `bedrooms` | object | No | Bedroom count {min} |
| `bathrooms` | object | No | Bathroom count {min} |
| `keywords` | string | No | Keywords to match in listing text |

```bash
curl -X POST 'https://api.orth.sh/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"fiber","path":"/v1/real-estate/listings","body":{"location":"<object>","nextPageToken":"<string>","sortBy":"<string>","listingStatus":"<string>","homeTypes":"<array>","price":"<object>","bedrooms":"<object>","bathrooms":"<object>","keywords":"<string>"}}'
```

### POST /v1/combined-search/paginated

Combined people and company search with pagination. Returns both companies and profiles matching filters. Charged per result returned.

`POST /v1/combined-search/paginated`

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

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `companyConfig` | object | No | Company search config with searchParams and pageSize |
| `profileConfig` | object | No | Profile search config with searchParams and pageSize |

```bash
curl -X POST 'https://api.orth.sh/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"fiber","path":"/v1/combined-search/paginated","body":{"companyConfig":"<object>","profileConfig":"<object>"}}'
```

### POST /v1/natural-language-search/combined-search-param

Converts natural language text into structured company and profile search parameters. Does not return results, only the search params.

`POST /v1/natural-language-search/combined-search-param`

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

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `query` | string | Yes | Natural language query to convert to search params |

```bash
curl -X POST 'https://api.orth.sh/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"fiber","path":"/v1/natural-language-search/combined-search-param","body":{"query":"<string>"}}'
```

---

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