Skip to main content
POST
/
v1
/
research
/research
curl --request POST \
  --url https://api.linkup.so/v1/research \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data @- <<EOF
{
  "excludeDomains": [
    "wikipedia.org"
  ],
  "includeDomains": [
    "microsoft.com",
    "agolution.com"
  ],
  "includeImages": true,
  "outputType": "sourcedAnswer",
  "q": "What is Microsoft's 2024 revenue?"
}
EOF
{
  "createdAt": "2026-01-01T00:00:00.000Z",
  "error": "<string>",
  "id": "01234-abcd-56789",
  "status": "completed",
  "updatedAt": "2026-01-01T00:00:00.000Z",
  "input": {
    "includeImages": false,
    "outputType": "sourcedAnswer",
    "q": "What is Microsoft's 2024 revenue?",
    "toDate": "2025-01-01",
    "excludeDomains": [
      "wikipedia.org"
    ],
    "fromDate": "2025-01-01",
    "includeDomains": [
      "microsoft.com",
      "agolution.com"
    ],
    "structuredOutputSchema": null
  },
  "output": {
    "answer": "Microsoft's revenue for fiscal year 2024 was $245.1 billion, reflecting a 16% increase from the previous year.",
    "sources": [
      {
        "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"
      }
    ]
  },
  "type": "<string>"
}

Get your API key

Create a Linkup account for free to get your API key.
This is an asynchronous endpoint — it immediately returns the research task identifier, before it is completed. Use GET /v1/research/:id to poll for the result, or GET /v1/research to list all your research tasks.
If outputType is set to structured, you may provide a JSON structuredOutputSchema to dictate the response format.
JSON formats are tricky. Learn more about structured output in our guide.

Authorizations

Authorization
string
header
required

Bearer authentication header of the form Bearer <token>, where <token> is your auth token.

Body

application/json
outputType
enum<string>
required

The type of output you want to get. Use structured for a custom-formatted response defined by structuredOutputSchema.

Available options:
sourcedAnswer,
structured
q
string
required

The natural language question for which you want to retrieve context.

Example:

"What is Microsoft's 2024 revenue?"

excludeDomains
string[]

The domains you want to exclude of the search. By default, don't restrict the search.

Example:
["wikipedia.org"]
fromDate
string | null

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"

includeDomains
string[]

The domains you want to search on. By default, don't restrict the search. You can provide up to 100 domains.

Maximum array length: 100
Example:
["microsoft.com", "agolution.com"]
includeImages
default:false

Defines whether the API should include images in its results.

structuredOutputSchema
string<json>

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
string | null

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"

Response

Research task created successfully.

createdAt
string<date-time>
required

The date and time when the task was created.

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))$
Example:

"2026-01-01T00:00:00.000Z"

error
string | null
required

The error message if the task failed.

id
string
required

The unique identifier of the task.

Example:

"01234-abcd-56789"

status
enum<string>
required

The current status of the task.

Available options:
completed,
failed,
pending,
processing
Example:

"completed"

updatedAt
string<date-time>
required

The date and time when the task status was last updated.

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))$
Example:

"2026-01-01T00:00:00.000Z"

input
object
required
output
object
required
type
string
required
Allowed value: "research"