linkup-mcp 0.1.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- linkup_mcp-0.1.0/.gitignore +8 -0
- linkup_mcp-0.1.0/LICENSE +21 -0
- linkup_mcp-0.1.0/PKG-INFO +144 -0
- linkup_mcp-0.1.0/README.md +120 -0
- linkup_mcp-0.1.0/pyproject.toml +42 -0
- linkup_mcp-0.1.0/src/linkup_mcp/__init__.py +5 -0
- linkup_mcp-0.1.0/src/linkup_mcp/__main__.py +4 -0
- linkup_mcp-0.1.0/src/linkup_mcp/openapi.json +1 -0
- linkup_mcp-0.1.0/src/linkup_mcp/server.py +1047 -0
- linkup_mcp-0.1.0/tests/selftest.py +204 -0
- linkup_mcp-0.1.0/tests/test_wait.py +113 -0
linkup_mcp-0.1.0/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Martin Silbernagl
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
Metadata-Version: 2.5
|
|
2
|
+
Name: linkup-mcp
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: MCP server for the whole Linkup web API: search, fetch, research, batch tasks, credits, extract and rewind, with the documentation built in
|
|
5
|
+
Project-URL: Homepage, https://github.com/cybernagl/linkup-mcp
|
|
6
|
+
Project-URL: Issues, https://github.com/cybernagl/linkup-mcp/issues
|
|
7
|
+
Project-URL: Linkup docs, https://docs.linkup.so
|
|
8
|
+
Author: Martin Silbernagl
|
|
9
|
+
License-Expression: MIT
|
|
10
|
+
License-File: LICENSE
|
|
11
|
+
Keywords: claude-code,linkup,mcp,model-context-protocol,research,web-search
|
|
12
|
+
Classifier: Development Status :: 4 - Beta
|
|
13
|
+
Classifier: Environment :: Console
|
|
14
|
+
Classifier: Intended Audience :: Developers
|
|
15
|
+
Classifier: Programming Language :: Python :: 3
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
19
|
+
Classifier: Topic :: Internet :: WWW/HTTP
|
|
20
|
+
Requires-Python: >=3.11
|
|
21
|
+
Requires-Dist: httpx<1,>=0.28
|
|
22
|
+
Requires-Dist: mcp<2,>=1.30
|
|
23
|
+
Description-Content-Type: text/markdown
|
|
24
|
+
|
|
25
|
+
# linkup-mcp
|
|
26
|
+
|
|
27
|
+
An MCP server for the whole [Linkup](https://www.linkup.so) web API, one tool per
|
|
28
|
+
operation, with Linkup's own operational guidance (prices, latencies, limits, polling
|
|
29
|
+
rules, best practices) in the tool descriptions and in a built-in guide. Stdio transport,
|
|
30
|
+
Python, two dependencies.
|
|
31
|
+
|
|
32
|
+
Not affiliated with Linkup. Written against `https://api.linkup.so/v1/openapi.json` and the
|
|
33
|
+
documentation as read on 2026-11-13; the snapshot of the spec is shipped as a resource.
|
|
34
|
+
|
|
35
|
+
## Why
|
|
36
|
+
|
|
37
|
+
Linkup's official server ([`linkup-mcp-server`](https://github.com/LinkupPlatform/linkup-mcp-server),
|
|
38
|
+
also hosted at `https://mcp.linkup.so/mcp`) exposes four tools: `linkup-search` (always a
|
|
39
|
+
sourced answer, no output type), `linkup-research` (output fixed to `sourcedAnswer`),
|
|
40
|
+
`linkup-get-research` and `linkup-fetch` (no pro mode, no schema extraction). It has no
|
|
41
|
+
research listing, no batch tasks, no credit balance, no extract, rewind or responses. This
|
|
42
|
+
server keeps those four tool names, gives them every documented parameter, and adds the rest.
|
|
43
|
+
|
|
44
|
+
## Tools
|
|
45
|
+
|
|
46
|
+
| Tool | API | Billed per call (USD) |
|
|
47
|
+
|---|---|---|
|
|
48
|
+
| linkup-search | POST /search | 0.005 to 0.055 |
|
|
49
|
+
| linkup-fetch | POST /fetch | 0.001 to 0.011 |
|
|
50
|
+
| linkup-research | POST /research (create task) | 0.25 (S), 0.50 (M), 1.50 (L), 2.50 (XL) |
|
|
51
|
+
| linkup-wait-research | GET /research/{id}, polled 2 s doubling to 10 s, time-boxed, resumable | free |
|
|
52
|
+
| linkup-get-research | GET /research/{id} | free |
|
|
53
|
+
| linkup-list-research | GET /research | free |
|
|
54
|
+
| linkup-tasks-create | POST /tasks, 1 to 100 items, `dry_run` returns the cost estimate | as the wrapped calls |
|
|
55
|
+
| linkup-tasks-get | GET /tasks/{id} | free |
|
|
56
|
+
| linkup-tasks-list | GET /tasks, with type and status filters and the concurrency quota | free |
|
|
57
|
+
| linkup-credits-balance | GET /credits/balance | free |
|
|
58
|
+
| linkup-extract, linkup-get-extract, linkup-list-extract, linkup-extract-download | /extract (closed beta: 403 unless enabled) | variable, 2 to 10 typical |
|
|
59
|
+
| linkup-rewind-search, linkup-rewind-fetch | /rewind (closed beta) | not published |
|
|
60
|
+
| linkup-responses | POST /responses (OpenAI Responses format) | not published |
|
|
61
|
+
| linkup-guide | documentation, no network | free |
|
|
62
|
+
|
|
63
|
+
Resources: `linkup://guide` (the full guide) and `linkup://openapi.json` (the spec snapshot).
|
|
64
|
+
|
|
65
|
+
Behaviour worth knowing:
|
|
66
|
+
|
|
67
|
+
- Research tasks are created once and polled. `linkup-wait-research` returns after
|
|
68
|
+
`max_wait_seconds` (default 600) with `done: false` if the task still runs and can be
|
|
69
|
+
called again with the same id. It never re-creates a task.
|
|
70
|
+
- Every response is capped by `max_chars`. Truncation order: raw content and source snippets
|
|
71
|
+
first, then trailing sources, the answer or markdown last. `_truncated` and `_hint` say
|
|
72
|
+
when it happened. Research answers come back byte-identical to the API unless they alone
|
|
73
|
+
exceed the cap.
|
|
74
|
+
- `linkup-list-research` and `linkup-tasks-list` return an `output_preview` per task;
|
|
75
|
+
`include_output: true` returns the full outputs.
|
|
76
|
+
- Errors carry Linkup's status code, its error body, and a one-line hint (for example 429:
|
|
77
|
+
rate limit or empty balance).
|
|
78
|
+
|
|
79
|
+
## Install
|
|
80
|
+
|
|
81
|
+
With [uv](https://docs.astral.sh/uv/), from [PyPI](https://pypi.org/project/linkup-mcp/),
|
|
82
|
+
no checkout needed:
|
|
83
|
+
|
|
84
|
+
```
|
|
85
|
+
uvx linkup-mcp
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
Claude Code, user scope (the key goes into the env of the entry, never on the command line):
|
|
89
|
+
|
|
90
|
+
```
|
|
91
|
+
claude mcp add-json --scope user linkup '{"type":"stdio","command":"uvx","args":["linkup-mcp"],"env":{"LINKUP_API_KEY":"<key>"}}'
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
The current main branch instead of the release: replace `linkup-mcp` in `args` with
|
|
95
|
+
`--from`, `git+https://github.com/cybernagl/linkup-mcp`, `linkup-mcp`, or run
|
|
96
|
+
|
|
97
|
+
```
|
|
98
|
+
uvx --from git+https://github.com/cybernagl/linkup-mcp linkup-mcp
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
Any other MCP client: run `linkup-mcp` (or `python -m linkup_mcp`) over stdio with
|
|
102
|
+
`LINKUP_API_KEY` in the environment.
|
|
103
|
+
|
|
104
|
+
Environment: `LINKUP_API_KEY` (required), `LINKUP_BASE_URL` (default
|
|
105
|
+
`https://api.linkup.so/v1`), `LINKUP_TIMEOUT` (seconds per HTTP request, default 180).
|
|
106
|
+
|
|
107
|
+
From a checkout:
|
|
108
|
+
|
|
109
|
+
```
|
|
110
|
+
git clone https://github.com/cybernagl/linkup-mcp && cd linkup-mcp
|
|
111
|
+
uv venv && uv pip install -e .
|
|
112
|
+
.venv/bin/linkup-mcp
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
## Test
|
|
116
|
+
|
|
117
|
+
```
|
|
118
|
+
.venv/bin/python tests/test_wait.py # offline: wait loop, error mapping, truncation, list summaries
|
|
119
|
+
.venv/bin/python tests/selftest.py # protocol checks, plus free live calls when LINKUP_API_KEY is set
|
|
120
|
+
.venv/bin/python tests/selftest.py --paid # adds two fast searches and two fetches, about 0.014 USD
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
The self-test never creates a research task (0.25 USD and up). GitHub Actions runs the
|
|
124
|
+
offline tests and the protocol self-test on Python 3.11, 3.12 and 3.13 for every push.
|
|
125
|
+
|
|
126
|
+
## Claude Code Notes
|
|
127
|
+
|
|
128
|
+
- Results above 50,000 characters (or `MAX_MCP_OUTPUT_TOKENS`, default 25,000 tokens) are
|
|
129
|
+
saved to a file by Claude Code and handed over as a path. The default `max_chars` caps
|
|
130
|
+
(40,000 for search, fetch and lists; 48,000 for a research or task result) keep results
|
|
131
|
+
inline; raise `max_chars` when you want everything.
|
|
132
|
+
- `MCP_TOOL_TIMEOUT` defaults to about 28 hours and stdio servers have no per-request
|
|
133
|
+
timer, so long research waits are safe.
|
|
134
|
+
|
|
135
|
+
## Updating the Guide
|
|
136
|
+
|
|
137
|
+
Prices, limits and wording come from Linkup's documentation
|
|
138
|
+
(https://docs.linkup.so/llms.txt). They live in `src/linkup_mcp/server.py` next to
|
|
139
|
+
`DOCS_READ_DATE`. When Linkup changes something, update the text and the date, and replace
|
|
140
|
+
`src/linkup_mcp/openapi.json` with a fresh download of the spec.
|
|
141
|
+
|
|
142
|
+
## License
|
|
143
|
+
|
|
144
|
+
MIT.
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
# linkup-mcp
|
|
2
|
+
|
|
3
|
+
An MCP server for the whole [Linkup](https://www.linkup.so) web API, one tool per
|
|
4
|
+
operation, with Linkup's own operational guidance (prices, latencies, limits, polling
|
|
5
|
+
rules, best practices) in the tool descriptions and in a built-in guide. Stdio transport,
|
|
6
|
+
Python, two dependencies.
|
|
7
|
+
|
|
8
|
+
Not affiliated with Linkup. Written against `https://api.linkup.so/v1/openapi.json` and the
|
|
9
|
+
documentation as read on 2026-11-13; the snapshot of the spec is shipped as a resource.
|
|
10
|
+
|
|
11
|
+
## Why
|
|
12
|
+
|
|
13
|
+
Linkup's official server ([`linkup-mcp-server`](https://github.com/LinkupPlatform/linkup-mcp-server),
|
|
14
|
+
also hosted at `https://mcp.linkup.so/mcp`) exposes four tools: `linkup-search` (always a
|
|
15
|
+
sourced answer, no output type), `linkup-research` (output fixed to `sourcedAnswer`),
|
|
16
|
+
`linkup-get-research` and `linkup-fetch` (no pro mode, no schema extraction). It has no
|
|
17
|
+
research listing, no batch tasks, no credit balance, no extract, rewind or responses. This
|
|
18
|
+
server keeps those four tool names, gives them every documented parameter, and adds the rest.
|
|
19
|
+
|
|
20
|
+
## Tools
|
|
21
|
+
|
|
22
|
+
| Tool | API | Billed per call (USD) |
|
|
23
|
+
|---|---|---|
|
|
24
|
+
| linkup-search | POST /search | 0.005 to 0.055 |
|
|
25
|
+
| linkup-fetch | POST /fetch | 0.001 to 0.011 |
|
|
26
|
+
| linkup-research | POST /research (create task) | 0.25 (S), 0.50 (M), 1.50 (L), 2.50 (XL) |
|
|
27
|
+
| linkup-wait-research | GET /research/{id}, polled 2 s doubling to 10 s, time-boxed, resumable | free |
|
|
28
|
+
| linkup-get-research | GET /research/{id} | free |
|
|
29
|
+
| linkup-list-research | GET /research | free |
|
|
30
|
+
| linkup-tasks-create | POST /tasks, 1 to 100 items, `dry_run` returns the cost estimate | as the wrapped calls |
|
|
31
|
+
| linkup-tasks-get | GET /tasks/{id} | free |
|
|
32
|
+
| linkup-tasks-list | GET /tasks, with type and status filters and the concurrency quota | free |
|
|
33
|
+
| linkup-credits-balance | GET /credits/balance | free |
|
|
34
|
+
| linkup-extract, linkup-get-extract, linkup-list-extract, linkup-extract-download | /extract (closed beta: 403 unless enabled) | variable, 2 to 10 typical |
|
|
35
|
+
| linkup-rewind-search, linkup-rewind-fetch | /rewind (closed beta) | not published |
|
|
36
|
+
| linkup-responses | POST /responses (OpenAI Responses format) | not published |
|
|
37
|
+
| linkup-guide | documentation, no network | free |
|
|
38
|
+
|
|
39
|
+
Resources: `linkup://guide` (the full guide) and `linkup://openapi.json` (the spec snapshot).
|
|
40
|
+
|
|
41
|
+
Behaviour worth knowing:
|
|
42
|
+
|
|
43
|
+
- Research tasks are created once and polled. `linkup-wait-research` returns after
|
|
44
|
+
`max_wait_seconds` (default 600) with `done: false` if the task still runs and can be
|
|
45
|
+
called again with the same id. It never re-creates a task.
|
|
46
|
+
- Every response is capped by `max_chars`. Truncation order: raw content and source snippets
|
|
47
|
+
first, then trailing sources, the answer or markdown last. `_truncated` and `_hint` say
|
|
48
|
+
when it happened. Research answers come back byte-identical to the API unless they alone
|
|
49
|
+
exceed the cap.
|
|
50
|
+
- `linkup-list-research` and `linkup-tasks-list` return an `output_preview` per task;
|
|
51
|
+
`include_output: true` returns the full outputs.
|
|
52
|
+
- Errors carry Linkup's status code, its error body, and a one-line hint (for example 429:
|
|
53
|
+
rate limit or empty balance).
|
|
54
|
+
|
|
55
|
+
## Install
|
|
56
|
+
|
|
57
|
+
With [uv](https://docs.astral.sh/uv/), from [PyPI](https://pypi.org/project/linkup-mcp/),
|
|
58
|
+
no checkout needed:
|
|
59
|
+
|
|
60
|
+
```
|
|
61
|
+
uvx linkup-mcp
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
Claude Code, user scope (the key goes into the env of the entry, never on the command line):
|
|
65
|
+
|
|
66
|
+
```
|
|
67
|
+
claude mcp add-json --scope user linkup '{"type":"stdio","command":"uvx","args":["linkup-mcp"],"env":{"LINKUP_API_KEY":"<key>"}}'
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
The current main branch instead of the release: replace `linkup-mcp` in `args` with
|
|
71
|
+
`--from`, `git+https://github.com/cybernagl/linkup-mcp`, `linkup-mcp`, or run
|
|
72
|
+
|
|
73
|
+
```
|
|
74
|
+
uvx --from git+https://github.com/cybernagl/linkup-mcp linkup-mcp
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
Any other MCP client: run `linkup-mcp` (or `python -m linkup_mcp`) over stdio with
|
|
78
|
+
`LINKUP_API_KEY` in the environment.
|
|
79
|
+
|
|
80
|
+
Environment: `LINKUP_API_KEY` (required), `LINKUP_BASE_URL` (default
|
|
81
|
+
`https://api.linkup.so/v1`), `LINKUP_TIMEOUT` (seconds per HTTP request, default 180).
|
|
82
|
+
|
|
83
|
+
From a checkout:
|
|
84
|
+
|
|
85
|
+
```
|
|
86
|
+
git clone https://github.com/cybernagl/linkup-mcp && cd linkup-mcp
|
|
87
|
+
uv venv && uv pip install -e .
|
|
88
|
+
.venv/bin/linkup-mcp
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
## Test
|
|
92
|
+
|
|
93
|
+
```
|
|
94
|
+
.venv/bin/python tests/test_wait.py # offline: wait loop, error mapping, truncation, list summaries
|
|
95
|
+
.venv/bin/python tests/selftest.py # protocol checks, plus free live calls when LINKUP_API_KEY is set
|
|
96
|
+
.venv/bin/python tests/selftest.py --paid # adds two fast searches and two fetches, about 0.014 USD
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
The self-test never creates a research task (0.25 USD and up). GitHub Actions runs the
|
|
100
|
+
offline tests and the protocol self-test on Python 3.11, 3.12 and 3.13 for every push.
|
|
101
|
+
|
|
102
|
+
## Claude Code Notes
|
|
103
|
+
|
|
104
|
+
- Results above 50,000 characters (or `MAX_MCP_OUTPUT_TOKENS`, default 25,000 tokens) are
|
|
105
|
+
saved to a file by Claude Code and handed over as a path. The default `max_chars` caps
|
|
106
|
+
(40,000 for search, fetch and lists; 48,000 for a research or task result) keep results
|
|
107
|
+
inline; raise `max_chars` when you want everything.
|
|
108
|
+
- `MCP_TOOL_TIMEOUT` defaults to about 28 hours and stdio servers have no per-request
|
|
109
|
+
timer, so long research waits are safe.
|
|
110
|
+
|
|
111
|
+
## Updating the Guide
|
|
112
|
+
|
|
113
|
+
Prices, limits and wording come from Linkup's documentation
|
|
114
|
+
(https://docs.linkup.so/llms.txt). They live in `src/linkup_mcp/server.py` next to
|
|
115
|
+
`DOCS_READ_DATE`. When Linkup changes something, update the text and the date, and replace
|
|
116
|
+
`src/linkup_mcp/openapi.json` with a fresh download of the spec.
|
|
117
|
+
|
|
118
|
+
## License
|
|
119
|
+
|
|
120
|
+
MIT.
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
[project]
|
|
2
|
+
name = "linkup-mcp"
|
|
3
|
+
version = "0.1.0"
|
|
4
|
+
description = "MCP server for the whole Linkup web API: search, fetch, research, batch tasks, credits, extract and rewind, with the documentation built in"
|
|
5
|
+
readme = "README.md"
|
|
6
|
+
requires-python = ">=3.11"
|
|
7
|
+
license = "MIT"
|
|
8
|
+
license-files = ["LICENSE"]
|
|
9
|
+
authors = [{ name = "Martin Silbernagl" }]
|
|
10
|
+
keywords = ["mcp", "model-context-protocol", "linkup", "web-search", "research", "claude-code"]
|
|
11
|
+
classifiers = [
|
|
12
|
+
"Development Status :: 4 - Beta",
|
|
13
|
+
"Environment :: Console",
|
|
14
|
+
"Intended Audience :: Developers",
|
|
15
|
+
"Programming Language :: Python :: 3",
|
|
16
|
+
"Programming Language :: Python :: 3.11",
|
|
17
|
+
"Programming Language :: Python :: 3.12",
|
|
18
|
+
"Programming Language :: Python :: 3.13",
|
|
19
|
+
"Topic :: Internet :: WWW/HTTP",
|
|
20
|
+
]
|
|
21
|
+
dependencies = [
|
|
22
|
+
"mcp>=1.30,<2",
|
|
23
|
+
"httpx>=0.28,<1",
|
|
24
|
+
]
|
|
25
|
+
|
|
26
|
+
[project.urls]
|
|
27
|
+
Homepage = "https://github.com/cybernagl/linkup-mcp"
|
|
28
|
+
Issues = "https://github.com/cybernagl/linkup-mcp/issues"
|
|
29
|
+
"Linkup docs" = "https://docs.linkup.so"
|
|
30
|
+
|
|
31
|
+
[project.scripts]
|
|
32
|
+
linkup-mcp = "linkup_mcp.server:main"
|
|
33
|
+
|
|
34
|
+
[build-system]
|
|
35
|
+
requires = ["hatchling"]
|
|
36
|
+
build-backend = "hatchling.build"
|
|
37
|
+
|
|
38
|
+
[tool.hatch.build.targets.wheel]
|
|
39
|
+
packages = ["src/linkup_mcp"]
|
|
40
|
+
|
|
41
|
+
[tool.hatch.build.targets.sdist]
|
|
42
|
+
include = ["src/linkup_mcp", "tests", "README.md", "LICENSE", "pyproject.toml"]
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"openapi":"3.1.0","paths":{"/v1/credits/balance":{"get":{"description":"The `/credits/balance` endpoint allows you to retrieve your current credits balance.","operationId":"balance","parameters":[],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreditOutput_Output"}}}},"401":{"description":"Unauthorized - Invalid or missing API key"}},"security":[{"bearer":[]}],"summary":"/credits/balance","tags":["Credits"]}},"/v1/extract":{"post":{"description":"[BETA] The `POST /extract` method creates an asynchronous extract task.","operationId":"createExtract","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PostExtractInput"}}}},"responses":{"200":{"description":"Extract task created successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PostExtractOutput_Output"}}}},"400":{"description":"Bad Request - Invalid parameters"},"401":{"description":"Unauthorized - Invalid or missing API key"},"403":{"description":"Forbidden - Extract tasks are not enabled for this organization."},"429":{"description":"Too Many Requests - Rate limit exceeded or insufficient credits"}},"security":[{"bearer":[]}],"summary":"/extract","tags":["Extract"]},"get":{"description":"[BETA] The `GET /extract` method, without extract task identifier, lists all created extract tasks for the authenticated organization, with pagination.","operationId":"listExtract","parameters":[{"name":"page","required":false,"in":"query","schema":{"default":1,"minimum":1,"type":"integer"}},{"name":"pageSize","required":false,"in":"query","schema":{"default":10,"maximum":100,"minimum":1,"type":"integer"}},{"name":"sortBy","required":false,"in":"query","schema":{"enum":["createdAt","updatedAt"],"type":"string"}},{"name":"sortDirection","required":false,"in":"query","schema":{"default":"asc","enum":["asc","desc"],"type":"string"}}],"responses":{"200":{"description":"Paginated list of extract tasks.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListExtractOutput"}}}},"401":{"description":"Unauthorized - Invalid or missing API key"}},"security":[{"bearer":[]}],"summary":"/extract","tags":["Extract"]}},"/v1/extract/{id}":{"get":{"description":"[BETA] The `GET /extract/:id` method, with extract task identifier, retrieves a specific extract task information.","operationId":"getExtract","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"Extract task details.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExtractTaskOutput"}}}},"400":{"description":"Bad Request - Invalid parameters"},"401":{"description":"Unauthorized - Invalid or missing API key"}},"security":[{"bearer":[]}],"summary":"/extract/:id","tags":["Extract"]}},"/v1/fetch":{"post":{"description":"The `/fetch` endpoint allows you to fetch a single webpage from a given URL.","operationId":"fetch","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FetchInput"}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FetchOutput_Output"}}}},"400":{"description":"Bad Request - Invalid parameters"},"401":{"description":"Unauthorized - Invalid or missing API key"},"402":{"description":"Payment Required - No API key provided. Returns x402 payment details in the `payment-required` header for pay-per-request with USDC."},"429":{"description":"Too Many Requests - Rate limit exceeded or insufficient credits"}},"security":[{"bearer":[]}],"summary":"/fetch","tags":["Fetch"]}},"/v1/search":{"post":{"description":"The `/search` endpoint allows you to retrieve web content.","operationId":"search","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchInput"}}}},"responses":{"200":{"content":{"searchResults":{"schema":{"$ref":"#/components/schemas/SearchResultsOutput"}},"sourcedAnswer":{"schema":{"$ref":"#/components/schemas/SourcedAnswerOutput"}},"structured":{"schema":{"description":"When you pick `structured` for the `outputType` parameter, you will get the object corresponding to the JSON schema you used in the `structuredOutputSchema` param.","properties":{},"type":"object"}},"structuredWithSources":{"schema":{"$ref":"#/components/schemas/StructuredWithSourcesOutput"}}},"description":"Successful response"},"400":{"description":"Bad Request - Invalid parameters"},"401":{"description":"Unauthorized - Invalid or missing API key"},"402":{"description":"Payment Required - No API key provided. Returns x402 payment details in the `payment-required` header for pay-per-request with USDC."},"429":{"description":"Too Many Requests - Rate limit exceeded or insufficient credits"}},"security":[{"bearer":[]}],"summary":"/search","tags":["Search"]}},"/v1/tasks":{"post":{"description":"The `POST /tasks` method creates a list of tasks.","operationId":"createTasks","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TasksInput"}}}},"responses":{"200":{"description":"Tasks created successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PostTasksOutput_Output"}}}},"400":{"description":"Bad Request - Invalid parameters"},"401":{"description":"Unauthorized - Invalid or missing API key"},"429":{"description":"Too Many Requests - Rate limit exceeded or insufficient credits"}},"security":[{"bearer":[]}],"summary":"/tasks","tags":["Tasks"]},"get":{"description":"The `GET /tasks` method, without a task identifier, lists all created tasks for the authenticated organization, with pagination.","operationId":"listTasks","parameters":[{"name":"type","required":false,"in":"query","explode":true,"schema":{"items":{"enum":["extract","fetch","research","search"],"type":"string"},"type":"array"}},{"name":"status","required":false,"in":"query","explode":true,"schema":{"items":{"enum":["completed","failed","pending","processing"],"type":"string"},"type":"array"}},{"name":"page","required":false,"in":"query","schema":{"default":1,"minimum":1,"type":"integer"}},{"name":"pageSize","required":false,"in":"query","schema":{"default":10,"maximum":100,"minimum":1,"type":"integer"}},{"name":"sortBy","required":false,"in":"query","schema":{"enum":["createdAt","updatedAt"],"type":"string"}},{"name":"sortDirection","required":false,"in":"query","schema":{"default":"asc","enum":["asc","desc"],"type":"string"}}],"responses":{"200":{"description":"Paginated list of tasks.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListTasksOutput"}}}},"401":{"description":"Unauthorized - Invalid or missing API key"}},"security":[{"bearer":[]}],"summary":"/tasks","tags":["Tasks"]}},"/v1/tasks/{id}":{"get":{"description":"The `GET /tasks/:id` method, with task identifier, retrieves a specific task information.","operationId":"getTask","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"Task details.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaskOutput"}}}},"400":{"description":"Bad Request - Invalid parameters"},"401":{"description":"Unauthorized - Invalid or missing API key"}},"security":[{"bearer":[]}],"summary":"/tasks/:id","tags":["Tasks"]}},"/v1/responses":{"post":{"description":"Proxy endpoint for OpenAI response generation — use when the OpenAI client's base URL is set to linkup.","operationId":"responses","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateResponsesInput"}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponsesOutput_Output"}}}},"400":{"description":"Bad Request - Invalid parameters"},"401":{"description":"Unauthorized - Invalid or missing API key"},"429":{"description":"Too Many Requests - Rate limit exceeded or insufficient credits"}},"security":[{"bearer":[]}],"summary":"/responses","tags":["Responses"]}},"/v1/research":{"post":{"description":"The `POST /research` method creates an asynchronous research task which can perform a comprehensive web research.","operationId":"createResearch","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PostResearchInput"}}}},"responses":{"200":{"description":"Research task created successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PostResearchOutput_Output"}}}},"400":{"description":"Bad Request - Invalid parameters"},"401":{"description":"Unauthorized - Invalid or missing API key"},"402":{"description":"Payment Required - No API key provided. Returns x402 payment details in the `payment-required` header for pay-per-request with USDC."},"429":{"description":"Too Many Requests - Rate limit exceeded or insufficient credits"}},"security":[{"bearer":[]}],"summary":"/research","tags":["Research"]},"get":{"description":"The `GET /research` method, without research task identifier, lists all created research tasks for the authenticated organization, with pagination.","operationId":"listResearch","parameters":[{"name":"page","required":false,"in":"query","schema":{"default":1,"minimum":1,"type":"integer"}},{"name":"pageSize","required":false,"in":"query","schema":{"default":10,"maximum":100,"minimum":1,"type":"integer"}},{"name":"sortBy","required":false,"in":"query","schema":{"enum":["createdAt","updatedAt"],"type":"string"}},{"name":"sortDirection","required":false,"in":"query","schema":{"default":"asc","enum":["asc","desc"],"type":"string"}}],"responses":{"200":{"description":"Paginated list of research tasks.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListResearchOutput"}}}},"401":{"description":"Unauthorized - Invalid or missing API key"}},"security":[{"bearer":[]}],"summary":"/research","tags":["Research"]}},"/v1/research/{id}":{"get":{"description":"The `GET /research/:id` method, with research task identifier, retrieves a specific research task information.","operationId":"getResearch","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"Research task details.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResearchTaskOutput"}}}},"400":{"description":"Bad Request - Invalid parameters"},"401":{"description":"Unauthorized - Invalid or missing API key"}},"security":[{"bearer":[]}],"summary":"/research/:id","tags":["Research"]}},"/v1/rewind/search":{"post":{"description":"[BETA] The `/rewind/search` endpoint searches the web as it was by the end of a given UTC day.","operationId":"rewindSearch","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RewindSearchInput"}}}},"responses":{"200":{"description":"Pages visible on the requested day.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RewindSearchOutput_Output"}}}},"400":{"description":"Bad Request - Invalid parameters"},"403":{"description":"Forbidden - Rewind is not enabled for this organization."},"429":{"description":"Too Many Requests - Rate limit exceeded or insufficient credits"}},"security":[{"bearer":[]}],"summary":"/rewind/search","tags":["Rewind"]}},"/v1/rewind/fetch":{"post":{"description":"[BETA] The `/rewind/fetch` endpoint returns a page as it was by the end of a given UTC day.","operationId":"rewindFetch","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RewindFetchInput"}}}},"responses":{"200":{"description":"The revision of the page visible on the requested day.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RewindFetchOutput_Output"}}}},"400":{"description":"Bad Request - Invalid parameters"},"403":{"description":"Forbidden - Rewind is not enabled for this organization."},"404":{"description":"No revision of the URL is visible on the requested day."},"422":{"description":"Unprocessable - Rewind is not available for the requested day."},"429":{"description":"Too Many Requests - Rate limit exceeded or insufficient credits"}},"security":[{"bearer":[]}],"summary":"/rewind/fetch","tags":["Rewind"]}}},"info":{"title":"Linkup API","description":"Search the web in real time to get trustworthy, source-backed answers. Find the latest news and comprehensive results from the most relevant sources. Use natural language queries to quickly gather facts, citations, and context.","version":"1.0","contact":{}},"tags":[],"servers":[{"url":"https://api.linkup.so"}],"components":{"securitySchemes":{"bearer":{"scheme":"bearer","bearerFormat":"JWT","type":"http"}},"schemas":{"CreditOutput_Output":{"type":"object","properties":{"balance":{"type":"number","description":"The number of credits remaining in your account.","example":123.456}},"required":["balance"],"id":"CreditOutput_Output","additionalProperties":false},"ExtractTaskInput":{"type":"object","properties":{"q":{"description":"[BETA] The natural-language query describing which rows to extract and what each row should contain.","type":"string"},"schema":{"default":null,"format":"json","description":"[BETA] Optional JSON schema describing a single extracted row. When provided, every returned row must match this schema."},"url":{"description":"[BETA] The seed URL the extract task should start from.","example":"https://example.com/team","format":"uri","type":"string"},"verifyUrls":{"default":false,"description":"[BETA] Defines whether URLs found in extracted rows should be checked for reachability after extraction. Defaults to false.","type":"boolean"}},"required":["q","url"],"description":"[BETA] Input for an extract task. The extract task type is in beta; its behavior and response shape may change.","id":"ExtractTaskInput"},"PostExtractInput":{"example":{"q":"All engineering team members with their name, role, and profile page","schema":{"properties":{"name":{"description":"Full name","type":"string"},"profileUrl":{"format":"uri","type":"string"},"role":{"type":"string"}},"required":["name","profileUrl"],"type":"object"},"url":"https://example.com/team","verifyUrls":true},"id":"PostExtractInput","$ref":"#/components/schemas/ExtractTaskInput"},"ExtractTaskInput_Output":{"type":"object","properties":{"q":{"description":"[BETA] The natural-language query describing which rows to extract and what each row should contain.","type":"string"},"schema":{"default":null,"format":"json","description":"[BETA] Optional JSON schema object describing a single extracted row. When provided, every returned row must match this schema.","type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"url":{"description":"[BETA] The seed URL the extract task should start from.","example":"https://example.com/team","format":"uri","type":"string"},"verifyUrls":{"default":false,"description":"[BETA] Defines whether URLs found in extracted rows should be checked for reachability after extraction. Defaults to false.","type":"boolean"}},"required":["q","url"],"additionalProperties":false,"description":"[BETA] Input for an extract task. The extract task type is in beta; its behavior and response shape may change.","id":"ExtractTaskInput_Output"},"ExtractOutput_Output":{"type":"object","properties":{"creditsUsed":{"type":"number","minimum":0,"description":"[BETA] Credits used by this extract task."},"resultUrl":{"type":"string","format":"uri","description":"[BETA] URL to download the extracted rows as a newline-delimited JSON (NDJSON) file. The URL remains valid for 24 hours."},"rowsReturned":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["creditsUsed","resultUrl","rowsReturned"],"additionalProperties":false,"description":"[BETA] Output for an extract task. The extracted rows are stored as an NDJSON file and exposed through a time-limited URL. The extract task type is in beta; its behavior and response shape may change.","id":"ExtractOutput_Output"},"ExtractTaskOutput_Output":{"type":"object","properties":{"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"The date and time when the task was created.","example":"2026-01-01T00:00:00.000Z"},"error":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"The error message if the task failed."},"id":{"type":"string","description":"The unique identifier of the task.","example":"01234-abcd-56789"},"status":{"type":"string","enum":["completed","failed","pending","processing"],"description":"The current status of the task.","example":"completed"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"The date and time when the task status was last updated.","example":"2026-01-01T00:00:00.000Z"},"input":{"$ref":"#/components/schemas/ExtractTaskInput_Output"},"output":{"anyOf":[{"$ref":"#/components/schemas/ExtractOutput_Output"},{"type":"null"}]},"type":{"type":"string","const":"extract"}},"required":["createdAt","error","id","status","updatedAt","input","output","type"],"additionalProperties":false,"description":"[BETA] Extract task output. The extract task type is in beta; its behavior and response shape may change.","id":"ExtractTaskOutput_Output"},"PostExtractOutput_Output":{"id":"PostExtractOutput_Output","$ref":"#/components/schemas/ExtractTaskOutput_Output"},"ExtractTaskOutput":{"type":"object","properties":{"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"The date and time when the task was created.","example":"2026-01-01T00:00:00.000Z"},"error":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"The error message if the task failed."},"id":{"type":"string","description":"The unique identifier of the task.","example":"01234-abcd-56789"},"status":{"type":"string","enum":["completed","failed","pending","processing"],"description":"The current status of the task.","example":"completed"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"The date and time when the task status was last updated.","example":"2026-01-01T00:00:00.000Z"},"input":{"$ref":"#/components/schemas/ExtractTaskInput"},"output":{"anyOf":[{"$ref":"#/components/schemas/ExtractOutput"},{"type":"null"}]},"type":{"type":"string","const":"extract"}},"required":["createdAt","error","id","status","updatedAt","input","output","type"],"description":"[BETA] Extract task output. The extract task type is in beta; its behavior and response shape may change.","id":"ExtractTaskOutput"},"ExtractOutput":{"type":"object","properties":{"creditsUsed":{"type":"number","minimum":0,"description":"[BETA] Credits used by this extract task."},"resultUrl":{"type":"string","format":"uri","description":"[BETA] URL to download the extracted rows as a newline-delimited JSON (NDJSON) file. The URL remains valid for 24 hours."},"rowsReturned":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["creditsUsed","resultUrl","rowsReturned"],"description":"[BETA] Output for an extract task. The extracted rows are stored as an NDJSON file and exposed through a time-limited URL. The extract task type is in beta; its behavior and response shape may change.","id":"ExtractOutput"},"ListExtractOutput":{"type":"object","properties":{"metadata":{"type":"object","properties":{"page":{"type":"number"},"pageSize":{"type":"number"},"total":{"type":"number"},"totalPages":{"type":"number"}},"required":["page","pageSize","total","totalPages"]},"data":{"type":"array","items":{"$ref":"#/components/schemas/ExtractTaskOutput"}}},"required":["metadata","data"],"id":"ListExtractOutput"},"FetchImageOutput":{"type":"object","properties":{"alt":{"type":"string","description":"The alt text of the image.","example":"Image description"},"url":{"type":"string","description":"The URL of the image.","example":"https://example.com/image.jpg","format":"uri"}},"required":["alt","url"],"id":"FetchImageOutput"},"FetchInput":{"type":"object","properties":{"extractImages":{"default":false,"description":"Defines whether the API should extract the images from the webpage in its response.","example":false,"anyOf":[{"type":"boolean"},{"type":"string"}]},"includeRawContent":{"default":false,"description":"Defines whether the API should include the raw page content and its content type in the response.","example":false,"anyOf":[{"type":"boolean"},{"type":"string"}]},"includeRawHtml":{"default":false,"deprecated":true,"description":"Deprecated. Use includeRawContent instead. Defines whether rawHtml is returned for non-LinkedIn HTML pages.","example":false,"anyOf":[{"type":"boolean"},{"type":"string"}]},"renderJs":{"default":false,"description":"Defines whether the API should render the JavaScript of the webpage.","example":false,"anyOf":[{"type":"boolean"},{"type":"string"}]},"mode":{"default":"standard","description":"Defines the fetch strategy. Pro fetch delivers significantly higher success rates on hard-to-retrieve pages.","example":"standard","type":"string","enum":["standard","pro"]},"instructions":{"description":"Optional instructions that guide how data is extracted. Requires schema.","example":"Use public list prices only and express monetary values in USD.","type":"string"},"schema":{"default":null,"format":"json","description":"Optional JSON Schema of type object describing the structured data to extract from the page. Fields with no grounded value are omitted, even when marked as required."},"url":{"description":"The URL of the webpage you want to fetch.","example":"https://docs.linkup.so","format":"uri","type":"string"}},"required":["url"],"id":"FetchInput"},"FetchImageOutput_Output":{"type":"object","properties":{"alt":{"type":"string","description":"The alt text of the image.","example":"Image description"},"url":{"type":"string","description":"The URL of the image.","example":"https://example.com/image.jpg","format":"uri"}},"required":["alt","url"],"additionalProperties":false,"id":"FetchImageOutput_Output"},"FetchOutput_Output":{"type":"object","properties":{"contentType":{"description":"The type of rawContent. Present only when rawContent is returned.","example":"html","type":"string"},"data":{"description":"Structured data extracted from the webpage. Present only when schema is provided; fields with no grounded value are omitted.","example":{"name":"Example product","price":49},"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"favicon":{"type":"string","format":"uri","description":"The URL of the website favicon.","example":"https://favicons.linkup.so?domain=docs.linkup.so"},"images":{"description":"List of images extracted from the webpage.","example":[{"alt":"Image 1","url":"https://example.com/image.jpg"},{"alt":"Image 2","url":"https://example.com/image2.jpg"}],"type":"array","items":{"$ref":"#/components/schemas/FetchImageOutput_Output"}},"markdown":{"type":"string","description":"The clean markdown version of the webpage.","example":"Get started for free, no credit card required..."},"rawContent":{"description":"The raw page content.","example":"<!DOCTYPE html><html lang=\"en\"><head>...</head><body>...</body></html>","type":"string"},"rawHtml":{"deprecated":true,"description":"The raw HTML version of the webpage.","example":"<!DOCTYPE html><html lang=\"en\"><head>...</head><body>...</body></html>","type":"string"}},"required":["favicon","markdown"],"additionalProperties":false,"id":"FetchOutput_Output"},"Source":{"type":"object","properties":{"name":{"type":"string","description":"The title or name of the resource.","example":"Microsoft 2024 Annual Report"},"url":{"type":"string","description":"The URL of the resource.","example":"https://www.microsoft.com/investor/reports/ar24/index.html","format":"uri"},"favicon":{"anyOf":[{"type":"string","const":""},{"type":"string","format":"uri"}],"description":"The favicon URL, if available.","example":"https://www.microsoft.com/favicon.ico","format":"uri"},"publishedAt":{"description":"The publication date of the resource, if available.","example":"2024-07-30","type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"},"snippet":{"type":"string","description":"Extracted text content associated with the source.","example":"Highlights from fiscal year 2024 compared with fiscal year 2023 included..."}},"required":["name","url","favicon","snippet"],"id":"Source"},"SourcedAnswerOutput":{"type":"object","properties":{"answer":{"type":"string","description":"The answer to your question.","example":"Microsoft's revenue for fiscal year 2024 was $245.1 billion, reflecting a 16% increase from the previous year."},"sources":{"type":"array","items":{"$ref":"#/components/schemas/Source"},"description":"List of sources used to answer the question.","example":[{"name":"Microsoft 2024 Annual Report","snippet":"Highlights from fiscal year 2024 compared with fiscal year 2023 included: Microsoft Cloud revenue increased 23% to $137.4 billion.","url":"https://www.microsoft.com/investor/reports/ar24/index.html"}]}},"required":["answer","sources"],"id":"SourcedAnswerOutput"},"TextSearchResultOutput":{"type":"object","properties":{"name":{"type":"string","description":"The title or name of the resource.","example":"Microsoft 2024 Annual Report"},"url":{"type":"string","description":"The URL of the resource.","example":"https://www.microsoft.com/investor/reports/ar24/index.html","format":"uri"},"content":{"type":"string","description":"Extracted text content associated with the resource.","example":"Highlights from fiscal year 2024 compared with fiscal year 2023 included: Microsoft Cloud revenue increased 23% to $137.4 billion."},"favicon":{"anyOf":[{"type":"string","const":""},{"type":"string","format":"uri"}],"description":"The favicon URL, if available.","example":"https://www.microsoft.com/favicon.ico","format":"uri"},"publishedAt":{"description":"The publication date of the resource, if available.","example":"2024-07-30","type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"},"type":{"type":"string","const":"text","description":"The type of the resource.","enum":["text"],"example":"text"}},"required":["name","url","content","favicon","type"],"id":"TextSearchResultOutput"},"ImageSearchResultOutput":{"type":"object","properties":{"name":{"type":"string","description":"The title or name of the resource.","example":"Microsoft 2024 Annual Report"},"url":{"type":"string","description":"The URL of the resource.","example":"https://www.microsoft.com/investor/reports/ar24/index.html","format":"uri"},"type":{"type":"string","const":"image","description":"The type of the resource.","enum":["image"],"example":"image"}},"required":["name","url","type"],"id":"ImageSearchResultOutput"},"SearchResultsOutput":{"type":"object","properties":{"results":{"type":"array","items":{"oneOf":[{"$ref":"#/components/schemas/TextSearchResultOutput"},{"$ref":"#/components/schemas/ImageSearchResultOutput"}]},"description":"List of search results."}},"required":["results"],"id":"SearchResultsOutput"},"SearchOutput":{"type":"object","properties":{},"additionalProperties":{},"id":"SearchOutput"},"StructuredWithSourcesOutput":{"type":"object","properties":{"data":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":true,"description":"The object corresponding to the JSON schema you used in the `structuredOutputSchema` param."},"sources":{"type":"array","items":{"oneOf":[{"$ref":"#/components/schemas/TextSearchResultOutput"},{"$ref":"#/components/schemas/ImageSearchResultOutput"}]},"description":"List of sources used to answer the question."}},"required":["data","sources"],"id":"StructuredWithSourcesOutput"},"SearchInput":{"type":"object","properties":{"excludeDomains":{"description":"The domains you want to exclude of the search. By default, don't restrict the search.","example":["wikipedia.org"],"type":"array","items":{"example":"wikipedia.org","type":"string"}},"fromDate":{"description":"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.","example":"2025-01-01","anyOf":[{"type":"string"},{"type":"null"}]},"includeDomains":{"description":"The domains you want to search on. By default, don't restrict the search. You can provide up to 100 domains.","example":["microsoft.com","agolution.com"],"maxItems":100,"type":"array","items":{"example":"microsoft.com","type":"string"}},"q":{"description":"The natural language question for which you want to retrieve context.","example":"What is Microsoft's 2024 revenue?","type":"string"},"structuredOutputSchema":{"default":null,"format":"json","description":"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`."},"toDate":{"description":"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.","example":"2025-01-01","anyOf":[{"type":"string"},{"type":"null"}]},"depth":{"type":"string","enum":["deep","fast","flash","standard"],"description":"Defines the search mode. `flash` is lowest latency: ranked sources and snippets in a few hundred milliseconds, built for low-latency use cases. `fast` is higher-quality one-shot retrieval in about a second — the recommended default for most agentic applications. `standard` is a single pass of agentic search for queries that span several topics or sources. `deep` runs several search iterations, optimizing for coverage and multi-hop agentic workflows."},"includeImages":{"default":false,"description":"Defines whether the API should include images in its results.","anyOf":[{"type":"boolean"},{"type":"string"}]},"includeInlineCitations":{"default":false,"description":"Relevant only when `outputType` is `sourcedAnswer`. Defines whether the answer should include inline citations.","anyOf":[{"type":"boolean"},{"type":"string"}]},"includeSources":{"default":false,"description":"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**","anyOf":[{"type":"boolean"},{"type":"string"}]},"maxResults":{"description":"The maximum number of results to return. The number of results will always be ≤ to maxResults.","example":5,"type":"number","minimum":1},"outputType":{"type":"string","enum":["searchResults","sourcedAnswer","structured"],"description":"The type of output you want to get. Use `structured` for a custom-formatted response defined by `structuredOutputSchema`."}},"required":["q","depth","outputType"],"id":"SearchInput","example":{"depth":"deep","excludeDomains":["wikipedia.org"],"includeDomains":["microsoft.com","agolution.com"],"outputType":"sourcedAnswer","q":"What is Microsoft's 2024 revenue?"}},"FetchOutput":{"type":"object","properties":{"contentType":{"description":"The type of rawContent. Present only when rawContent is returned.","example":"html","type":"string"},"data":{"description":"Structured data extracted from the webpage. Present only when schema is provided; fields with no grounded value are omitted.","example":{"name":"Example product","price":49},"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"favicon":{"type":"string","format":"uri","description":"The URL of the website favicon.","example":"https://favicons.linkup.so?domain=docs.linkup.so"},"images":{"description":"List of images extracted from the webpage.","example":[{"alt":"Image 1","url":"https://example.com/image.jpg"},{"alt":"Image 2","url":"https://example.com/image2.jpg"}],"type":"array","items":{"$ref":"#/components/schemas/FetchImageOutput"}},"markdown":{"type":"string","description":"The clean markdown version of the webpage.","example":"Get started for free, no credit card required..."},"rawContent":{"description":"The raw page content.","example":"<!DOCTYPE html><html lang=\"en\"><head>...</head><body>...</body></html>","type":"string"},"rawHtml":{"deprecated":true,"description":"The raw HTML version of the webpage.","example":"<!DOCTYPE html><html lang=\"en\"><head>...</head><body>...</body></html>","type":"string"}},"required":["favicon","markdown"],"id":"FetchOutput"},"TaskInput":{"oneOf":[{"type":"object","properties":{"input":{"$ref":"#/components/schemas/SearchTaskInput"},"type":{"type":"string","const":"search"}},"required":["input","type"]},{"type":"object","properties":{"input":{"$ref":"#/components/schemas/FetchTaskInput"},"type":{"type":"string","const":"fetch"}},"required":["input","type"]},{"type":"object","properties":{"input":{"$ref":"#/components/schemas/ResearchTaskInput"},"type":{"type":"string","const":"research"}},"required":["input","type"]},{"type":"object","properties":{"input":{"$ref":"#/components/schemas/ExtractTaskInput"},"type":{"type":"string","const":"extract","description":"[BETA] Extract task type. This feature is in beta."}},"required":["input","type"]}],"id":"TaskInput"},"SearchTaskInput":{"type":"object","properties":{"excludeDomains":{"description":"The domains you want to exclude of the search. By default, don't restrict the search.","example":["wikipedia.org"],"type":"array","items":{"example":"wikipedia.org","type":"string"}},"fromDate":{"description":"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.","example":"2025-01-01","anyOf":[{"type":"string"},{"type":"null"}]},"includeDomains":{"description":"The domains you want to search on. By default, don't restrict the search. You can provide up to 100 domains.","example":["microsoft.com","agolution.com"],"maxItems":100,"type":"array","items":{"example":"microsoft.com","type":"string"}},"q":{"description":"The natural language question for which you want to retrieve context.","example":"What is Microsoft's 2024 revenue?","type":"string"},"structuredOutputSchema":{"default":null,"format":"json","description":"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`."},"toDate":{"description":"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.","example":"2025-01-01","anyOf":[{"type":"string"},{"type":"null"}]},"depth":{"type":"string","enum":["deep","fast","flash","standard"],"description":"Defines the search mode. `flash` is lowest latency: ranked sources and snippets in a few hundred milliseconds, built for low-latency use cases. `fast` is higher-quality one-shot retrieval in about a second — the recommended default for most agentic applications. `standard` is a single pass of agentic search for queries that span several topics or sources. `deep` runs several search iterations, optimizing for coverage and multi-hop agentic workflows."},"includeImages":{"default":false,"description":"Defines whether the API should include images in its results.","anyOf":[{"type":"boolean"},{"type":"string"}]},"includeInlineCitations":{"default":false,"description":"Relevant only when `outputType` is `sourcedAnswer`. Defines whether the answer should include inline citations.","anyOf":[{"type":"boolean"},{"type":"string"}]},"includeSources":{"default":false,"description":"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**","anyOf":[{"type":"boolean"},{"type":"string"}]},"maxResults":{"description":"The maximum number of results to return. The number of results will always be ≤ to maxResults.","example":5,"type":"number","minimum":1},"outputType":{"type":"string","enum":["searchResults","sourcedAnswer","structured"],"description":"The type of output you want to get. Use `structured` for a custom-formatted response defined by `structuredOutputSchema`."}},"required":["q","depth","outputType"],"id":"SearchTaskInput"},"FetchTaskInput":{"type":"object","properties":{"extractImages":{"default":false,"description":"Defines whether the API should extract the images from the webpage in its response.","example":false,"anyOf":[{"type":"boolean"},{"type":"string"}]},"includeRawContent":{"default":false,"description":"Defines whether the API should include the raw page content and its content type in the response.","example":false,"anyOf":[{"type":"boolean"},{"type":"string"}]},"includeRawHtml":{"default":false,"deprecated":true,"description":"Deprecated. Use includeRawContent instead. Defines whether rawHtml is returned for non-LinkedIn HTML pages.","example":false,"anyOf":[{"type":"boolean"},{"type":"string"}]},"renderJs":{"default":false,"description":"Defines whether the API should render the JavaScript of the webpage.","example":false,"anyOf":[{"type":"boolean"},{"type":"string"}]},"mode":{"default":"standard","description":"Defines the fetch strategy. Pro fetch delivers significantly higher success rates on hard-to-retrieve pages.","example":"standard","type":"string","enum":["standard","pro"]},"instructions":{"description":"Optional instructions that guide how data is extracted. Requires schema.","example":"Use public list prices only and express monetary values in USD.","type":"string"},"schema":{"default":null,"format":"json","description":"Optional JSON Schema of type object describing the structured data to extract from the page. Fields with no grounded value are omitted, even when marked as required."},"url":{"description":"The URL of the webpage you want to fetch.","example":"https://docs.linkup.so","format":"uri","type":"string"}},"required":["url"],"id":"FetchTaskInput"},"ResearchTaskInput":{"type":"object","properties":{"excludeDomains":{"description":"The domains you want to exclude of the search. By default, don't restrict the search.","example":["wikipedia.org"],"type":"array","items":{"example":"wikipedia.org","type":"string"}},"fromDate":{"description":"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.","example":"2025-01-01","anyOf":[{"type":"string"},{"type":"null"}]},"includeDomains":{"description":"The domains you want to search on. By default, don't restrict the search. You can provide up to 100 domains.","example":["microsoft.com","agolution.com"],"maxItems":100,"type":"array","items":{"example":"microsoft.com","type":"string"}},"q":{"description":"The natural language question for which you want to retrieve context.","example":"What is Microsoft's 2024 revenue?","type":"string"},"structuredOutputSchema":{"default":null,"format":"json","description":"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`."},"toDate":{"description":"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.","example":"2025-01-01","anyOf":[{"type":"string"},{"type":"null"}]},"mode":{"default":"auto","description":"Pin the research agent mode. Omit to let the agent auto-classify per request based on the question.","enum":["answer","auto","investigate","research"],"type":"string"},"outputType":{"type":"string","enum":["sourcedAnswer","structured"],"description":"The type of output you want to get. Use `structured` for a custom-formatted response defined by `structuredOutputSchema`."},"reasoningDepth":{"default":"L","description":"Pin the reasoning depth (S < M < L < XL). Defaults to L when omitted. Higher depths trade latency for thoroughness.","enum":["L","M","S","XL"],"type":"string"}},"required":["q","outputType"],"id":"ResearchTaskInput"},"TasksInput":{"minItems":1,"maxItems":100,"type":"array","items":{"$ref":"#/components/schemas/TaskInput"},"example":[{"input":{"depth":"deep","excludeDomains":["wikipedia.org"],"includeDomains":["microsoft.com","agolution.com"],"outputType":"sourcedAnswer","q":"What is Microsoft's 2024 revenue?"},"type":"search"},{"input":{"extractImages":false,"includeRawContent":false,"renderJs":false,"url":"https://docs.linkup.so"},"type":"fetch"},{"input":{"outputType":"sourcedAnswer","q":"Research the current state of the semiconductor market, covering key market dynamics, major industry players and their strategic positioning, recent analyst sentiment, and the main bull and bear cases for the sector. Ground the report in sourced, factual information."},"type":"research"}],"id":"TasksInput"},"TaskOutput_Output":{"oneOf":[{"type":"object","properties":{"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"The date and time when the task was created.","example":"2026-01-01T00:00:00.000Z"},"error":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"The error message if the task failed."},"id":{"type":"string","description":"The unique identifier of the task.","example":"01234-abcd-56789"},"status":{"type":"string","enum":["completed","failed","pending","processing"],"description":"The current status of the task.","example":"completed"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"The date and time when the task status was last updated.","example":"2026-01-01T00:00:00.000Z"},"input":{"$ref":"#/components/schemas/SearchTaskInput_Output"},"output":{"anyOf":[{"anyOf":[{"$ref":"#/components/schemas/SourcedAnswerOutput_Output"},{"$ref":"#/components/schemas/SearchResultsOutput_Output"},{"$ref":"#/components/schemas/StructuredWithSourcesOutput_Output"},{"$ref":"#/components/schemas/StructuredOutput_Output"}]},{"type":"null"}]},"type":{"type":"string","const":"search"}},"required":["createdAt","error","id","status","updatedAt","input","output","type"],"additionalProperties":false},{"type":"object","properties":{"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"The date and time when the task was created.","example":"2026-01-01T00:00:00.000Z"},"error":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"The error message if the task failed."},"id":{"type":"string","description":"The unique identifier of the task.","example":"01234-abcd-56789"},"status":{"type":"string","enum":["completed","failed","pending","processing"],"description":"The current status of the task.","example":"completed"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"The date and time when the task status was last updated.","example":"2026-01-01T00:00:00.000Z"},"input":{"$ref":"#/components/schemas/FetchTaskInput_Output"},"output":{"anyOf":[{"$ref":"#/components/schemas/FetchOutput_Output"},{"type":"null"}]},"type":{"type":"string","const":"fetch"}},"required":["createdAt","error","id","status","updatedAt","input","output","type"],"additionalProperties":false},{"$ref":"#/components/schemas/ResearchTaskOutput_Output"},{"$ref":"#/components/schemas/ExtractTaskOutput_Output"}],"id":"TaskOutput_Output"},"SearchTaskInput_Output":{"type":"object","properties":{"excludeDomains":{"description":"The domains you want to exclude of the search. By default, don't restrict the search.","example":["wikipedia.org"],"type":"array","items":{"example":"wikipedia.org","type":"string"}},"fromDate":{"description":"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.","example":"2025-01-01","type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"},"includeDomains":{"description":"The domains you want to search on. By default, don't restrict the search. You can provide up to 100 domains.","example":["microsoft.com","agolution.com"],"maxItems":100,"type":"array","items":{"example":"microsoft.com","type":"string"}},"q":{"description":"The natural language question for which you want to retrieve context.","example":"What is Microsoft's 2024 revenue?","type":"string"},"structuredOutputSchema":{"default":null,"format":"json","description":"Required only when `outputType` is `structured`. Provide a JSON schema object representing the desired response format. The root must be of type `object`.","type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"toDate":{"description":"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.","example":"2025-01-01","type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"},"depth":{"type":"string","enum":["deep","fast","flash","standard"],"description":"Defines the search mode. `flash` is lowest latency: ranked sources and snippets in a few hundred milliseconds, built for low-latency use cases. `fast` is higher-quality one-shot retrieval in about a second — the recommended default for most agentic applications. `standard` is a single pass of agentic search for queries that span several topics or sources. `deep` runs several search iterations, optimizing for coverage and multi-hop agentic workflows."},"includeImages":{"default":false,"description":"Defines whether the API should include images in its results.","type":"boolean"},"includeInlineCitations":{"default":false,"description":"Relevant only when `outputType` is `sourcedAnswer`. Defines whether the answer should include inline citations.","type":"boolean"},"includeSources":{"default":false,"description":"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**","type":"boolean"},"maxResults":{"description":"The maximum number of results to return. The number of results will always be ≤ to maxResults.","example":5,"type":"number","minimum":1},"outputType":{"type":"string","enum":["searchResults","sourcedAnswer","structured"],"description":"The type of output you want to get. Use `structured` for a custom-formatted response defined by `structuredOutputSchema`."}},"required":["q","toDate","depth","includeImages","includeInlineCitations","includeSources","outputType"],"additionalProperties":false,"id":"SearchTaskInput_Output"},"SourcedAnswerOutput_Output":{"type":"object","properties":{"answer":{"type":"string","description":"The answer to your question.","example":"Microsoft's revenue for fiscal year 2024 was $245.1 billion, reflecting a 16% increase from the previous year."},"sources":{"type":"array","items":{"$ref":"#/components/schemas/Source_Output"},"description":"List of sources used to answer the question.","example":[{"name":"Microsoft 2024 Annual Report","snippet":"Highlights from fiscal year 2024 compared with fiscal year 2023 included: Microsoft Cloud revenue increased 23% to $137.4 billion.","url":"https://www.microsoft.com/investor/reports/ar24/index.html"}]}},"required":["answer","sources"],"additionalProperties":false,"id":"SourcedAnswerOutput_Output"},"Source_Output":{"type":"object","properties":{"name":{"type":"string","description":"The title or name of the resource.","example":"Microsoft 2024 Annual Report"},"url":{"type":"string","description":"The URL of the resource.","example":"https://www.microsoft.com/investor/reports/ar24/index.html","format":"uri"},"favicon":{"anyOf":[{"type":"string","const":""},{"type":"string","format":"uri"}],"description":"The favicon URL, if available.","example":"https://www.microsoft.com/favicon.ico","format":"uri"},"publishedAt":{"description":"The publication date of the resource, if available.","example":"2024-07-30","type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"},"snippet":{"type":"string","description":"Extracted text content associated with the source.","example":"Highlights from fiscal year 2024 compared with fiscal year 2023 included..."}},"required":["name","url","favicon","snippet"],"additionalProperties":false,"id":"Source_Output"},"SearchResultsOutput_Output":{"type":"object","properties":{"results":{"type":"array","items":{"oneOf":[{"$ref":"#/components/schemas/TextSearchResultOutput_Output"},{"$ref":"#/components/schemas/ImageSearchResultOutput_Output"}]},"description":"List of search results."}},"required":["results"],"additionalProperties":false,"id":"SearchResultsOutput_Output"},"TextSearchResultOutput_Output":{"type":"object","properties":{"name":{"type":"string","description":"The title or name of the resource.","example":"Microsoft 2024 Annual Report"},"url":{"type":"string","description":"The URL of the resource.","example":"https://www.microsoft.com/investor/reports/ar24/index.html","format":"uri"},"content":{"type":"string","description":"Extracted text content associated with the resource.","example":"Highlights from fiscal year 2024 compared with fiscal year 2023 included: Microsoft Cloud revenue increased 23% to $137.4 billion."},"favicon":{"anyOf":[{"type":"string","const":""},{"type":"string","format":"uri"}],"description":"The favicon URL, if available.","example":"https://www.microsoft.com/favicon.ico","format":"uri"},"publishedAt":{"description":"The publication date of the resource, if available.","example":"2024-07-30","type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"},"type":{"type":"string","const":"text","description":"The type of the resource.","enum":["text"],"example":"text"}},"required":["name","url","content","favicon","type"],"additionalProperties":false,"id":"TextSearchResultOutput_Output"},"ImageSearchResultOutput_Output":{"type":"object","properties":{"name":{"type":"string","description":"The title or name of the resource.","example":"Microsoft 2024 Annual Report"},"url":{"type":"string","description":"The URL of the resource.","example":"https://www.microsoft.com/investor/reports/ar24/index.html","format":"uri"},"type":{"type":"string","const":"image","description":"The type of the resource.","enum":["image"],"example":"image"}},"required":["name","url","type"],"additionalProperties":false,"id":"ImageSearchResultOutput_Output"},"StructuredWithSourcesOutput_Output":{"type":"object","properties":{"data":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":true,"description":"The object corresponding to the JSON schema you used in the `structuredOutputSchema` param."},"sources":{"type":"array","items":{"oneOf":[{"$ref":"#/components/schemas/TextSearchResultOutput_Output"},{"$ref":"#/components/schemas/ImageSearchResultOutput_Output"}]},"description":"List of sources used to answer the question."}},"required":["data","sources"],"additionalProperties":false,"id":"StructuredWithSourcesOutput_Output"},"StructuredOutput_Output":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{},"id":"StructuredOutput_Output"},"FetchTaskInput_Output":{"type":"object","properties":{"extractImages":{"default":false,"description":"Defines whether the API should extract the images from the webpage in its response.","example":false,"type":"boolean"},"includeRawContent":{"default":false,"description":"Defines whether the API should include the raw page content and its content type in the response.","example":false,"type":"boolean"},"includeRawHtml":{"default":false,"deprecated":true,"description":"Deprecated. Use includeRawContent instead. Defines whether rawHtml is returned for non-LinkedIn HTML pages.","example":false,"type":"boolean"},"renderJs":{"default":false,"description":"Defines whether the API should render the JavaScript of the webpage.","example":false,"type":"boolean"},"mode":{"default":"standard","description":"Defines the fetch strategy. Pro fetch delivers significantly higher success rates on hard-to-retrieve pages.","example":"standard","type":"string","enum":["standard","pro"]},"instructions":{"description":"Optional instructions that guide how data is extracted. Requires schema.","example":"Use public list prices only and express monetary values in USD.","type":"string","maxLength":4000},"schema":{"default":null,"format":"json","description":"Optional JSON Schema object describing the structured data to extract from the page.","type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"url":{"description":"The URL of the webpage you want to fetch.","example":"https://docs.linkup.so","format":"uri","type":"string"}},"required":["extractImages","includeRawContent","includeRawHtml","renderJs","mode","url"],"additionalProperties":false,"id":"FetchTaskInput_Output"},"ResearchTaskOutput_Output":{"type":"object","properties":{"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"The date and time when the task was created.","example":"2026-01-01T00:00:00.000Z"},"error":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"The error message if the task failed."},"id":{"type":"string","description":"The unique identifier of the task.","example":"01234-abcd-56789"},"status":{"type":"string","enum":["completed","failed","pending","processing"],"description":"The current status of the task.","example":"completed"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"The date and time when the task status was last updated.","example":"2026-01-01T00:00:00.000Z"},"input":{"$ref":"#/components/schemas/ResearchTaskInput_Output"},"output":{"anyOf":[{"anyOf":[{"$ref":"#/components/schemas/ResearchSourcedAnswerOutput_Output"},{"$ref":"#/components/schemas/StructuredOutput_Output"}]},{"type":"null"}]},"type":{"type":"string","const":"research"}},"required":["createdAt","error","id","status","updatedAt","input","output","type"],"additionalProperties":false,"id":"ResearchTaskOutput_Output"},"ResearchTaskInput_Output":{"type":"object","properties":{"excludeDomains":{"description":"The domains you want to exclude of the search. By default, don't restrict the search.","example":["wikipedia.org"],"type":"array","items":{"example":"wikipedia.org","type":"string"}},"fromDate":{"description":"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.","example":"2025-01-01","type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"},"includeDomains":{"description":"The domains you want to search on. By default, don't restrict the search. You can provide up to 100 domains.","example":["microsoft.com","agolution.com"],"maxItems":100,"type":"array","items":{"example":"microsoft.com","type":"string"}},"q":{"description":"The natural language question for which you want to retrieve context.","example":"What is Microsoft's 2024 revenue?","type":"string"},"structuredOutputSchema":{"default":null,"format":"json","description":"Required only when `outputType` is `structured`. Provide a JSON schema object representing the desired response format. The root must be of type `object`.","type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"toDate":{"description":"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.","example":"2025-01-01","type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"},"mode":{"default":"auto","description":"Pin the research agent mode. Omit to let the agent auto-classify per request based on the question.","enum":["answer","auto","investigate","research"],"type":"string"},"outputType":{"type":"string","enum":["sourcedAnswer","structured"],"description":"The type of output you want to get. Use `structured` for a custom-formatted response defined by `structuredOutputSchema`."},"reasoningDepth":{"default":"L","description":"Pin the reasoning depth (S < M < L < XL). Defaults to L when omitted. Higher depths trade latency for thoroughness.","enum":["L","M","S","XL"],"type":"string"}},"required":["q","toDate","mode","outputType","reasoningDepth"],"additionalProperties":false,"id":"ResearchTaskInput_Output"},"ResearchSourcedAnswerOutput_Output":{"example":{"answer":"**Date:** May 19, 2026\n\n### 1. Executive Summary\nThe global semiconductor market has entered a period of unprecedented expansion in 2026, driven by an artificial intelligence \"super-cycle\" that is fundamentally restructuring industry supply and demand....","sources":[{"favicon":"","name":"Global Semiconductor Sales Increase 25% from Q4 2025 to Q1 2026 - Semiconductor Industry Association","snippet":"Global semiconductor sales reached $298.5 billion during the first quarter of 2026, representing a 25% increase compared to the fourth quarter of 2025.","url":"https://www.semiconductors.org/global-semiconductor-sales-increase-25-from-q4-2025-to-q1-2026/"},{"favicon":"","name":"Global Semiconductor Sales Increase 25% from Q4 2025 to Q1 2026 | SemiWiki","snippet":"Global semiconductor sales in March 2026 were $99.5 billion, an increase of 79.2% compared to March 2025 and 11.5% more than February 2026.","url":"https://semiwiki.com/forum/threads/global-semiconductor-sales-increase-25-from-q4-2025-to-q1-2026.25061/"}]},"id":"ResearchSourcedAnswerOutput_Output","$ref":"#/components/schemas/SourcedAnswerOutput_Output"},"PostTasksOutput_Output":{"type":"array","items":{"$ref":"#/components/schemas/TaskOutput_Output"},"id":"PostTasksOutput_Output"},"TaskOutput":{"oneOf":[{"type":"object","properties":{"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"The date and time when the task was created.","example":"2026-01-01T00:00:00.000Z"},"error":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"The error message if the task failed."},"id":{"type":"string","description":"The unique identifier of the task.","example":"01234-abcd-56789"},"status":{"type":"string","enum":["completed","failed","pending","processing"],"description":"The current status of the task.","example":"completed"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"The date and time when the task status was last updated.","example":"2026-01-01T00:00:00.000Z"},"input":{"$ref":"#/components/schemas/SearchTaskInput"},"output":{"anyOf":[{"anyOf":[{"$ref":"#/components/schemas/SourcedAnswerOutput"},{"$ref":"#/components/schemas/SearchResultsOutput"},{"$ref":"#/components/schemas/StructuredWithSourcesOutput"},{"$ref":"#/components/schemas/StructuredOutput"}]},{"type":"null"}]},"type":{"type":"string","const":"search"}},"required":["createdAt","error","id","status","updatedAt","input","output","type"]},{"type":"object","properties":{"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"The date and time when the task was created.","example":"2026-01-01T00:00:00.000Z"},"error":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"The error message if the task failed."},"id":{"type":"string","description":"The unique identifier of the task.","example":"01234-abcd-56789"},"status":{"type":"string","enum":["completed","failed","pending","processing"],"description":"The current status of the task.","example":"completed"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"The date and time when the task status was last updated.","example":"2026-01-01T00:00:00.000Z"},"input":{"$ref":"#/components/schemas/FetchTaskInput"},"output":{"anyOf":[{"$ref":"#/components/schemas/FetchOutput"},{"type":"null"}]},"type":{"type":"string","const":"fetch"}},"required":["createdAt","error","id","status","updatedAt","input","output","type"]},{"$ref":"#/components/schemas/ResearchTaskOutput"},{"$ref":"#/components/schemas/ExtractTaskOutput"}],"id":"TaskOutput"},"StructuredOutput":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{},"id":"StructuredOutput"},"ResearchTaskOutput":{"type":"object","properties":{"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"The date and time when the task was created.","example":"2026-01-01T00:00:00.000Z"},"error":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"The error message if the task failed."},"id":{"type":"string","description":"The unique identifier of the task.","example":"01234-abcd-56789"},"status":{"type":"string","enum":["completed","failed","pending","processing"],"description":"The current status of the task.","example":"completed"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"The date and time when the task status was last updated.","example":"2026-01-01T00:00:00.000Z"},"input":{"$ref":"#/components/schemas/ResearchTaskInput"},"output":{"anyOf":[{"anyOf":[{"$ref":"#/components/schemas/ResearchSourcedAnswerOutput"},{"$ref":"#/components/schemas/StructuredOutput"}]},{"type":"null"}]},"type":{"type":"string","const":"research"}},"required":["createdAt","error","id","status","updatedAt","input","output","type"],"id":"ResearchTaskOutput"},"ResearchSourcedAnswerOutput":{"example":{"answer":"**Date:** May 19, 2026\n\n### 1. Executive Summary\nThe global semiconductor market has entered a period of unprecedented expansion in 2026, driven by an artificial intelligence \"super-cycle\" that is fundamentally restructuring industry supply and demand....","sources":[{"favicon":"","name":"Global Semiconductor Sales Increase 25% from Q4 2025 to Q1 2026 - Semiconductor Industry Association","snippet":"Global semiconductor sales reached $298.5 billion during the first quarter of 2026, representing a 25% increase compared to the fourth quarter of 2025.","url":"https://www.semiconductors.org/global-semiconductor-sales-increase-25-from-q4-2025-to-q1-2026/"},{"favicon":"","name":"Global Semiconductor Sales Increase 25% from Q4 2025 to Q1 2026 | SemiWiki","snippet":"Global semiconductor sales in March 2026 were $99.5 billion, an increase of 79.2% compared to March 2025 and 11.5% more than February 2026.","url":"https://semiwiki.com/forum/threads/global-semiconductor-sales-increase-25-from-q4-2025-to-q1-2026.25061/"}]},"id":"ResearchSourcedAnswerOutput","$ref":"#/components/schemas/SourcedAnswerOutput"},"TasksQuota":{"type":"object","properties":{"inFlight":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Number of tasks currently pending or processing for the organization."},"limit":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991,"description":"Maximum number of concurrent pending or processing tasks allowed."}},"required":["inFlight","limit"],"id":"TasksQuota"},"ListTasksOutput":{"type":"object","properties":{"metadata":{"type":"object","properties":{"page":{"type":"number"},"pageSize":{"type":"number"},"total":{"type":"number"},"totalPages":{"type":"number"}},"required":["page","pageSize","total","totalPages"]},"data":{"type":"array","items":{"$ref":"#/components/schemas/TaskOutput"}},"quota":{"$ref":"#/components/schemas/TasksQuota"}},"required":["metadata","data","quota"],"id":"ListTasksOutput"},"ResponsesTextFormatInput":{"type":"object","properties":{"format":{"anyOf":[{"type":"string"},{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}],"description":"Defines the response text format. Accepts the literal string `text` for plain text or a JSON schema object that describes the desired structured output.","example":"text"}},"required":["format"],"id":"ResponsesTextFormatInput"},"CreateResponsesInput":{"type":"object","properties":{"input":{"anyOf":[{"type":"string"},{"minItems":1,"type":"array","items":{"type":"object","properties":{"content":{"type":"string"},"role":{"type":"string","enum":["user","assistant","developer"]}},"required":["content","role"]}}],"description":"The natural language question for which you want to retrieve context.","example":"What is Microsoft's 2024 revenue?"},"instructions":{"description":"Optional instructions to guide the response generation. It`s similar to a system message.","example":"You are a helpful assistant that provides concise answers.","type":"string"},"model":{"type":"string","enum":["linkup-deep","linkup-standard"],"description":"The model used to generate the response.`linkup-standard` returns results faster; `linkup-deep` takes longer but yields more comprehensive results."},"text":{"description":"Optional custom text format configuration.","$ref":"#/components/schemas/ResponsesTextFormatInput"}},"required":["input","model"],"id":"CreateResponsesInput"},"ResponsesMessageOutput_Output":{"type":"object","properties":{"content":{"type":"array","items":{"$ref":"#/components/schemas/ResponsesTextOutput_Output"}},"id":{"type":"string"},"role":{"type":"string","const":"assistant"},"status":{"type":"string","const":"completed"},"type":{"type":"string","const":"message"}},"required":["content","id","role","status","type"],"additionalProperties":false,"id":"ResponsesMessageOutput_Output"},"ResponsesTextOutput_Output":{"type":"object","properties":{"annotations":{"type":"array","items":{"$ref":"#/components/schemas/ResponsesUrlCitationOutput_Output"}},"text":{"type":"string"},"type":{"type":"string","const":"output_text"}},"required":["annotations","text","type"],"additionalProperties":false,"id":"ResponsesTextOutput_Output"},"ResponsesUrlCitationOutput_Output":{"type":"object","properties":{"end_index":{"type":"number"},"start_index":{"type":"number"},"title":{"type":"string"},"type":{"type":"string","const":"url_citation"},"url":{"type":"string"}},"required":["end_index","start_index","title","type","url"],"additionalProperties":false,"id":"ResponsesUrlCitationOutput_Output"},"ResponsesOutput_Output":{"type":"object","properties":{"created_at":{"type":"number"},"error":{"anyOf":[{"type":"string"},{"type":"null"}]},"id":{"type":"string"},"incomplete_details":{"type":"null"},"instructions":{"type":"null"},"metadata":{"type":"null"},"model":{"type":"string"},"object":{"type":"string","const":"response"},"output":{"anyOf":[{"type":"array","items":{"$ref":"#/components/schemas/ResponsesMessageOutput_Output"}},{"type":"null"}]},"output_text":{"type":"string"},"parallel_tool_calls":{"type":"boolean"},"temperature":{"type":"null"},"tool_choice":{"type":"string","const":"auto"},"tools":{"type":"array","items":{}},"top_p":{"type":"null"}},"required":["created_at","error","id","incomplete_details","instructions","metadata","model","object","output","output_text","parallel_tool_calls","temperature","tool_choice","tools","top_p"],"id":"ResponsesOutput_Output","additionalProperties":false},"PostResearchInput":{"type":"object","properties":{"excludeDomains":{"description":"The domains you want to exclude of the search. By default, don't restrict the search.","example":["wikipedia.org"],"type":"array","items":{"example":"wikipedia.org","type":"string"}},"fromDate":{"description":"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.","example":"2025-01-01","anyOf":[{"type":"string"},{"type":"null"}]},"includeDomains":{"description":"The domains you want to search on. By default, don't restrict the search. You can provide up to 100 domains.","example":["microsoft.com","agolution.com"],"maxItems":100,"type":"array","items":{"example":"microsoft.com","type":"string"}},"q":{"description":"The natural language question for which you want to retrieve context.","example":"What is Microsoft's 2024 revenue?","type":"string"},"structuredOutputSchema":{"default":null,"format":"json","description":"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`."},"toDate":{"description":"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.","example":"2025-01-01","anyOf":[{"type":"string"},{"type":"null"}]},"mode":{"default":"auto","description":"Pin the research agent mode. Omit to let the agent auto-classify per request based on the question.","enum":["answer","auto","investigate","research"],"type":"string"},"outputType":{"type":"string","enum":["sourcedAnswer","structured"],"description":"The type of output you want to get. Use `structured` for a custom-formatted response defined by `structuredOutputSchema`."},"reasoningDepth":{"default":"L","description":"Pin the reasoning depth (S < M < L < XL). Defaults to L when omitted. Higher depths trade latency for thoroughness.","enum":["L","M","S","XL"],"type":"string"}},"required":["q","outputType"],"id":"PostResearchInput","example":{"outputType":"sourcedAnswer","q":"Research the current state of the semiconductor market, covering key market dynamics, major industry players and their strategic positioning, recent analyst sentiment, and the main bull and bear cases for the sector. Ground the report in sourced, factual information."}},"PostResearchOutput_Output":{"id":"PostResearchOutput_Output","$ref":"#/components/schemas/ResearchTaskOutput_Output"},"ListResearchOutput":{"type":"object","properties":{"metadata":{"type":"object","properties":{"page":{"type":"number"},"pageSize":{"type":"number"},"total":{"type":"number"},"totalPages":{"type":"number"}},"required":["page","pageSize","total","totalPages"]},"data":{"type":"array","items":{"$ref":"#/components/schemas/ResearchTaskOutput"}}},"required":["metadata","data"],"id":"ListResearchOutput"},"RewindSearchInput":{"type":"object","properties":{"asOf":{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$","description":"The UTC day to search as of, in YYYY-MM-DD format.","example":"2026-03-12"},"q":{"description":"The search query.","example":"Donald Trump","type":"string"}},"required":["asOf","q"],"id":"RewindSearchInput"},"RewindSearchOutput_Output":{"type":"object","properties":{"asOf":{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$","description":"The UTC day the results were searched as of."},"results":{"type":"array","items":{"type":"object","properties":{"content":{"type":"string","description":"The text of the revision visible on asOf."},"name":{"type":"string","description":"The title of the matching page."},"url":{"type":"string","description":"The URL of the matching page.","format":"uri"},"validFrom":{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$","description":"The first UTC day this revision is visible."},"validTo":{"anyOf":[{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"},{"type":"null"}],"description":"The first UTC day this revision is no longer visible. Null when still current."}},"required":["content","name","url","validFrom","validTo"],"additionalProperties":false}}},"required":["asOf","results"],"id":"RewindSearchOutput_Output","additionalProperties":false},"RewindFetchInput":{"type":"object","properties":{"asOf":{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$","description":"The UTC day to fetch the page as of, in YYYY-MM-DD format.","example":"2026-03-12"},"url":{"type":"string","format":"uri","description":"The URL of the page to fetch. It must match the stored URL exactly: no normalization is applied.","example":"https://example.com/a"}},"required":["asOf","url"],"id":"RewindFetchInput"},"RewindFetchOutput_Output":{"type":"object","properties":{"asOf":{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$","description":"The UTC day the page was fetched as of."},"content":{"type":"string","description":"The full text of the revision visible on asOf."},"name":{"type":"string","description":"The title of the page."},"url":{"type":"string","description":"The URL of the page.","format":"uri"},"validFrom":{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$","description":"The first UTC day this revision is visible."},"validTo":{"anyOf":[{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"},{"type":"null"}],"description":"The first UTC day this revision is no longer visible. Null when still current."}},"required":["asOf","content","name","url","validFrom","validTo"],"id":"RewindFetchOutput_Output","additionalProperties":false}}}}
|