# Extruct AI — Orthogonal API

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

Extruct AI company research API. Semantic company search, lookalike company search, company profile lookup and enrichment, async deep search discovery tasks, and deep research report generation with citations. Find and discover companies using natural language queries, find similar companies to any domain, run AI-powered discovery tasks, and generate cited research reports on companies, people, and teams.

**Verified:** yes

## Access

**Run API:** `POST https://mono.orthogonal.com/v1/run`
**Auth:** `Authorization: Bearer $ORTHOGONAL_API_KEY`
Get an API key at https://mono.orthogonal.com/account/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

### Find Similar Companies

[Deprecated] Find companies similar to a reference company using Extruct AI lookalike search. Supports filters for size, country, city, and founded year. Prefer POST variant.

`GET /v1/companies/{company_identifier}/similar`

**Estimated cost:** $0.09

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `company_identifier` | string | Yes | Path parameter — substitute directly into the endpoint `path`. |
| `filters` | string | No | JSON string of SearchFilters. Keys: include.size/country/city, exclude.size/country/city/domains, founded_year_range.min/max |
| `offset` | number | No | Pagination offset |
| `limit` | number | No | Pagination limit |

```bash
# Replace {company_identifier} in "path" with real values before sending
curl -X POST 'https://mono.orthogonal.com/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"extruct-ai","path":"/v1/companies/{company_identifier}/similar","method":"GET","query":{"filters":"<string>","offset":"<number>","limit":"<number>"}}'
```

### Get Discovery Task

Get an Extruct AI Deep Search task by ID, including status and metadata. Use to poll task progress.

`GET /v1/discovery_tasks/{task_id}`

**Cost:** Free

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

```bash
# Replace {task_id} in "path" with real values before sending
curl -X POST 'https://mono.orthogonal.com/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"extruct-ai","path":"/v1/discovery_tasks/{task_id}","method":"GET"}'
```

### Lookup Company Profile

Look up the full enriched Extruct AI company profile for a known company UUID or domain. Returns description, employee count, HQ, social profiles, and more.

`GET /v1/companies/{company_identifier}`

**Cost:** Free

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

```bash
# Replace {company_identifier} in "path" with real values before sending
curl -X POST 'https://mono.orthogonal.com/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"extruct-ai","path":"/v1/companies/{company_identifier}","method":"GET"}'
```

### Get Deep Research Task

Get an Extruct AI Deep Research task by ID. Returns the full cited research report once status is done.

`GET /v1/deep_research_tasks/{task_id}`

**Cost:** Free

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

```bash
# Replace {task_id} in "path" with real values before sending
curl -X POST 'https://mono.orthogonal.com/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"extruct-ai","path":"/v1/deep_research_tasks/{task_id}","method":"GET"}'
```

### Search Companies

[Deprecated] Search for companies using natural language queries with Extruct AI. Use filters (JSON string) to narrow results by size, country, city, and founded year range. Prefer POST variant.

`GET /v1/companies/search`

**Estimated cost:** $0.09

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `q` | string | Yes | Search query |
| `filters` | string | No | JSON string of SearchFilters. Keys: include.size/country/city, exclude.size/country/city/domains, founded_year_range.min/max |
| `offset` | number | No | Pagination offset |
| `limit` | number | No | Pagination limit |

```bash
curl -X POST 'https://mono.orthogonal.com/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"extruct-ai","path":"/v1/companies/search","method":"GET","query":{"q":"<string>","filters":"<string>","offset":"<number>","limit":"<number>"}}'
```

### Find Similar Companies (POST)

Find companies similar to a reference company using Extruct AI lookalike search. POST variant accepts filters as a JSON object for large exclude lists.

`POST /v1/companies/{company_identifier}/similar`

**Estimated cost:** $0.09

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `company_identifier` | string | Yes | Path parameter — substitute directly into the endpoint `path`. |
| `filters` | object | No | Structured filters object with include/exclude keys for size, country, city, domains, and founded_year_range |
| `pagination` | object | No | Offset/limit pagination object |

```bash
# Replace {company_identifier} in "path" with real values before sending
curl -X POST 'https://mono.orthogonal.com/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"extruct-ai","path":"/v1/companies/{company_identifier}/similar","body":{"filters":"<object>","pagination":"<object>"}}'
```

### Search Companies (POST)

Search for companies using natural language queries with Extruct AI. POST variant accepts filters as a JSON object. Use when exclude.domains list is too large for a GET URL.

`POST /v1/companies/search`

**Estimated cost:** $0.09

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `q` | string | Yes | Search query |
| `filters` | object | No | Structured filters object with include/exclude keys for size, country, city, domains, and founded_year_range |
| `pagination` | object | No | Offset/limit pagination object |

```bash
curl -X POST 'https://mono.orthogonal.com/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"extruct-ai","path":"/v1/companies/search","body":{"q":"<string>","filters":"<object>","pagination":"<object>"}}'
```

### Get Discovery Task Results

Get the results of an Extruct AI Deep Search task by task ID. Returns scored and enriched companies.

`GET /v1/discovery_tasks/{task_id}/results`

**Cost:** Free

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `task_id` | string | Yes | Path parameter — substitute directly into the endpoint `path`. |
| `offset` | number | No | Pagination offset |
| `limit` | number | No | Pagination limit |

```bash
# Replace {task_id} in "path" with real values before sending
curl -X POST 'https://mono.orthogonal.com/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"extruct-ai","path":"/v1/discovery_tasks/{task_id}/results","method":"GET","query":{"offset":"<number>","limit":"<number>"}}'
```

### Create Deep Research Task

Create an async Extruct AI Deep Research task that produces a cited report on a company, person, or team. Choose medium, high, or xhigh depth.

`POST /v1/deep_research_tasks`

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

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `brief` | string | Yes | Free-text research brief about a company, person, or team |
| `depth` | string | No | Research depth: medium (5 agents), high (15), xhigh (25). Default: medium |
| `output_schema` | object | No | Optional JSON Schema for structured report output. Omit for markdown. |

```bash
curl -X POST 'https://mono.orthogonal.com/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"extruct-ai","path":"/v1/deep_research_tasks","body":{"brief":"<string>","depth":"<string>","output_schema":"<object>"}}'
```

### Resume Discovery Task

Request additional results for a completed Extruct AI Deep Search task. Resumes discovery with new matches.

`POST /v1/discovery_tasks/{task_id}/resume`

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

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `task_id` | string | Yes | Path parameter — substitute directly into the endpoint `path`. |
| `desired_new_results` | number | No | Additional results requested (default 25, limited by 250-result task cap) |

```bash
# Replace {task_id} in "path" with real values before sending
curl -X POST 'https://mono.orthogonal.com/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"extruct-ai","path":"/v1/discovery_tasks/{task_id}/resume","body":{"desired_new_results":"<number>"}}'
```

### Create Discovery Task

Create an async Extruct AI Deep Search discovery task. An AI agent finds and ranks companies against your natural-language criteria using web, Extruct DB, Maps, and LinkedIn.

`POST /v1/discovery_tasks`

**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 | Ideal description of companies to find |
| `desired_num_results` | number | No | Target number of results (max 250, default 100) |
| `auto_data_sources` | boolean | No | Automatically determine best data sources based on query (default true) |
| `data_sources` | array | No | Manual data source selection array (ignored if auto_data_sources is true) |
| `criteria` | array | No | Optional criteria array for evaluating discovered companies. Each criterion graded 1-5. |
| `exclude_domains` | array | No | Domains of companies the run must not return |
| `exclude_task_ids` | array | No | IDs of completed Deep Search tasks whose returned companies must be excluded |

```bash
curl -X POST 'https://mono.orthogonal.com/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"extruct-ai","path":"/v1/discovery_tasks","body":{"query":"<string>","desired_num_results":"<number>","auto_data_sources":"<boolean>","data_sources":"<array>","criteria":"<array>","exclude_domains":"<array>","exclude_task_ids":"<array>"}}'
```

---

Full details and an interactive quickstart: https://mono.orthogonal.com/publisher/extruct-ai
