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

Linkup is a web search engine for AI apps. We connect your AI application to the internet. Our API provides grounding data to enrich your AI’s output and increase its precision, accuracy and factuality.

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

### Search

The /search endpoint allows you to retrieve web content.

`POST /search`

**Estimated cost:** $0.01

**Docs:** https://docs.linkup.so/pages/documentation/api-reference/endpoint/post-search

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `q` | string | Yes | The natural language question for which you want to retrieve context. |
| `depth` | string | Yes | Defines the precision of the search. standard returns results faster; deep takes longer but yields more comprehensive results. |
| `outputType` | string | Yes | The type of output you want to get. Use structured for a custom-formatted response defined by structuredOutputSchema. |
| `structuredOutputSchema` | object | No | Required only when outputType is structured. Provide a JSON schema (as a string) representing the desired response format. The root must be of type object. |
| `includeSources` | boolean | No | Relevant only when outputType is structured. Defines whether the response should include sources. Please note that it modifies the schema of the response, see below |
| `includeImages` | boolean | No | Defines whether the API should include images in its results. |
| `fromDate` | string | No | The date from which the search results should be considered, in ISO 8601 format (YYYY-MM-DD). It must be before toDate, if provided, and later than 1970-01-01. |
| `toDate` | string | No | The date until which the search results should be considered, in ISO 8601 format (YYYY-MM-DD). It must be later than fromDate, if provided, or than 1970-01-01. |
| `includeDomains` | string | No | The domains you want to search on. By default, don't restrict the search. You can provide up to 100 domains. |
| `excludeDomains` | string | No | The domains you want to exclude of the search. By default, don't restrict the search. |
| `includeInlineCitations` | boolean | No | Relevant only when outputType is sourcedAnswer. Defines whether the answer should include inline citations. |
| `maxResults` | number | No | The maximum number of results to return. |

```bash
curl -X POST 'https://mono.orthogonal.com/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"linkup","path":"/search","body":{"q":"<string>","depth":"<string>","outputType":"<string>","structuredOutputSchema":"<object>","includeSources":"<boolean>","includeImages":"<boolean>","fromDate":"<string>","toDate":"<string>","includeDomains":"<string>","excludeDomains":"<string>","includeInlineCitations":"<boolean>","maxResults":"<number>"}}'
```

### Fetch

The /fetch endpoint allows you to fetch a single webpage from a given URL.

`POST /fetch`

**Estimated cost:** $0.01

**Docs:** https://docs.linkup.so/pages/documentation/api-reference/endpoint/post-fetch

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `url` | string | Yes | The URL of the webpage you want to fetch. |
| `renderJs` | boolean | No | Defines whether the API should render the JavaScript of the webpage. |
| `includeRawHtml` | boolean | No | Defines whether the API should include the raw HTML of the webpage in its response. |
| `extractImages` | boolean | No | Defines whether the API should extract the images from the webpage in its response. |

```bash
curl -X POST 'https://mono.orthogonal.com/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"linkup","path":"/fetch","body":{"url":"<string>","renderJs":"<boolean>","includeRawHtml":"<boolean>","extractImages":"<boolean>"}}'
```

### Research

Creates an asynchronous research task that performs comprehensive multi-step web research. Returns a task ID immediately. Poll GET /research/:id for results.

`POST /research`

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

**Docs:** https://docs.linkup.so/pages/documentation/endpoints/research/post

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `q` | string | Yes | The natural language question for which you want to perform research. |
| `outputType` | string | Yes | The type of output. Use sourcedAnswer for a sourced text answer, or structured for a custom-formatted response defined by structuredOutputSchema. |
| `reasoningDepth` | string | No | Pin the reasoning depth (S < M < L < XL). Defaults to L. Higher depths trade latency for thoroughness. |
| `mode` | string | No | Pin the research agent mode: answer, investigate, research, or auto (default). Omit to let the agent auto-classify. |
| `structuredOutputSchema` | object | No | Required only when outputType is structured. JSON schema representing the desired response format. Root must be type object. |
| `fromDate` | string | No | Start date for results in ISO 8601 format (YYYY-MM-DD). |
| `toDate` | string | No | End date for results in ISO 8601 format (YYYY-MM-DD). |
| `includeDomains` | string | No | Domains to restrict search to. Up to 100 domains. |
| `excludeDomains` | string | No | Domains to exclude from search. |

```bash
curl -X POST 'https://mono.orthogonal.com/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"linkup","path":"/research","body":{"q":"<string>","outputType":"<string>","reasoningDepth":"<string>","mode":"<string>","structuredOutputSchema":"<object>","fromDate":"<string>","toDate":"<string>","includeDomains":"<string>","excludeDomains":"<string>"}}'
```

### Get Research Task

Retrieves a specific research task by ID. Use this to poll for results after creating a research task with POST /research.

`GET /research/:id`

**Estimated cost:** $0.001

**Docs:** https://docs.linkup.so/pages/documentation/endpoints/research/get

_No parameters required._

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

---

Full details and an interactive quickstart: https://mono.orthogonal.com/publisher/linkup
