Skip to article

Linkup

Search result sources, sourced answers, and structured outputs remain distinct modes.

On this page

Normalized search

Normalized search selects a source-result output with fast depth and no image results. It maps returned source names, URLs, and content. Sourced answers and structured output belong on the native surface.

linkup-search.ts · server
import { createSearch } from '@belweave/search-sdk';
import { linkup } from '@belweave/search-sdk/linkup';

const apiKey = process.env.LINKUP_API_KEY;
if (!apiKey) throw new Error('LINKUP_API_KEY is required');

const client = createSearch({ provider: linkup({ apiKey }) });
const response = await client.web.search({
  query: 'SQLite write concurrency',
  limit: 5,
});
console.log(response.results, response.attempts);

Depth and outputType change work and response semantics. Do not pass a sourced answer to code expecting source rows. The current native reference uses a JSON body with q, depth, and outputType; older overview examples may differ.

100 include / 50 exclude under SDK policy.

Provider-native client

linkup-native.ts · server
import { createLinkupClient } from '@belweave/search-sdk/native-linkup';

const apiKey = process.env.LINKUP_API_KEY;
if (!apiKey) throw new Error('LINKUP_API_KEY is required');

const client = createLinkupClient({ apiKey, timeoutMs: 10_000 });
const response = await client.search({ body: { q: 'SQLite write concurrency', depth: 'fast', outputType: 'searchResults' } });
console.log(response.data, response.metadata);

Read provider data from response.data and sanitized transport details from response.metadata. Native TypeScript response types are not runtime schema validation. Preserve the operation's native response and source identities.

Native operation inventory

Methods available on this native client. Paths are relative to each operation's fixed base; a provider may use more than one origin. Eligible operations retry only when you opt into a client retry policy.

15 / 15
MethodHTTP / relative pathResponse / retry eligibility
balanceGET /v1/credits/balancejson · eligible
createExtractPOST /v1/extractjson · no automatic retry
listExtractGET /v1/extractjson · eligible
getExtractGET /v1/extract/{id}json · eligible
fetchPagePOST /v1/fetchjson · no automatic retry
searchPOST /v1/searchjson · no automatic retry
createTasksPOST /v1/tasksjson · no automatic retry
listTasksGET /v1/tasksjson · eligible
getTaskGET /v1/tasks/{id}json · eligible
responsesPOST /v1/responsesjson · no automatic retry
createResearchPOST /v1/researchjson · no automatic retry
listResearchGET /v1/researchjson · eligible
getResearchGET /v1/research/{id}json · eligible
rewindSearchPOST /v1/rewind/searchjson · no automatic retry
rewindFetchPOST /v1/rewind/fetchjson · no automatic retry

Limits and operation lifecycle

  • Pass signal and per-call timeoutMs on native request input when needed.
  • Persist a returned job identifier before explicitly reading or polling the same job. Native clients do not automatically poll.
  • SSE data is incremental provider event text. Parse and validate terminal or error events according to the provider contract; there is no reconnect or replay.
  • Native operations may create, delete, ingest, or incur charges. A successful HTTP response is not proof that a remote job completed.

Official sources

Use the official reference for current schemas, account access, and operation-specific requirements.