Linkup Research API

The Research API from Linkup — 2 operation(s) for research.

GitHub OpenAPI

Operations 3

POST /v1/research /research #
GET /v1/research /research #
GET /v1/research/{id} /research/:id #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/linkup-so:linkup-so-research-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

linkup-so-research-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Linkup Research 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: {}
servers:
- url: https://api.linkup.so
tags:
- name: Research
paths:
  /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
components:
  schemas:
    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
    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
    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
    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_Output:
      example:
        answer: '**Date:** May 19, 2026


          ### 1. Executive Summary

          The 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'
    ResearchSourcedAnswerOutput:
      example:
        answer: '**Date:** May 19, 2026


          ### 1. Executive Summary

          The 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'
    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
    StructuredOutput:
      type: object
      propertyNames:
        type: string
      additionalProperties: {}
      id: StructuredOutput
    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
    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.
    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
        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
    PostResearchOutput_Output:
      id: PostResearchOutput_Output
      $ref: '#/components/schemas/ResearchTaskOutput_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
        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_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
    StructuredOutput_Output:
      type: object
      propertyNames:
        type: string
      additionalProperties: {}
      id: StructuredOutput_Output
  securitySchemes:
    bearer:
      scheme: bearer
      bearerFormat: JWT
      type: http
x-provenance:
  method: harvested
  publisher: Linkup
  source: https://api.linkup.so/v1/openapi.json
  note: split by refine-openapis from the provider's own published document, verified by fetch (openapi/_original/*.fetch.json);
    stamped by stamp-openapi-provenance.py (roadmap#793)