Skip to the page

Linkup compatible

Change the address, every depth at $0.005.

SpecStream answers Linkup's POST /v1/search in Linkup's own JSON, at $0.005 a search of up to 10 results at every depth, deep included. Every line below was measured on production on November 10, 2026 with the linkup-sdk Python client 0.24.0.

The switch is one line: base_url="https://api.specstream.ai/linkup/v1" in place of https://api.linkup.so/v1, and a SpecStream key as the Bearer token. Your code reads results[].name, url and content as before.

SpecStream scores 97.9 F-score on all 1,000 SimpleQA Verified questions and 64.0 item F1 on all 200 WideSearch tasks. A sourcedAnswer costs the same $0.005.

New accounts get $10 of credit, no card. It covers 2,000 searches.

Linkup search to SpecStream, parameter by parameter and field by field

SpecStreamLinkup
AddressPOST or GET https://api.specstream.ai/linkup/v1/searchPOST https://api.linkup.so/v1/search
The keyA SpecStream key as Authorization: BearerA Linkup key as a Bearer token in the Authorization header
`depth`flash and fast return each result's search excerpt; standard and deep read each page and return up to about 3,500 characters of it. Every depth costs $0.005flash, fast or standard cost $0.005 with searchResults; deep costs $0.05
`outputType`searchResults, and sourcedAnswer with answer and sources[], at the same price. structured gets 400 with the reasonsearchResults; sourcedAnswer or structured cost $0.006, or $0.055 at deep
`maxResults`1 to 100, 10 when you send noneA minimum of 1, and the number of results is never above maxResults
FiltersincludeDomains, excludeDomains, and fromDate and toDate as YYYY-MM-DD. A fromDate after the toDate gets 400The same domain and date filters
The replyresults[] with type text, name, url, content, and favicon as an empty string. With sourcedAnswer: answer and sources[] with name, url and snippetresults[] with type, name, url, content and favicon, or answer and sources
ErrorsLinkup's {"statusCode", "error": {"code", "message", "details"}}. An empty balance answers 429 INSUFFICIENT_FUNDS_CREDITS, as Linkup does. A busy call answers 429 with Retry-After and charges nothingNo credit is subtracted when an error occurs. An empty balance answers 429
Rate limitUp to 8,800 searches a minute on one account10 queries per second per organization
Free to start$10 of credit, no card, which covers 2,000 searches$20 of credit at sign up with a professional email address

The Linkup search reference, on SpecStream

What else Linkup users price

How SpecStream scores

The same numbers as the benchmarks page, from the official tasks and scorers.

How to migrate, step by step

1. Create a key under Agents & API in the workspace. A new account gets $10 of credit, no card, which covers 2,000 searches.

2. Set the base address to https://api.specstream.ai/linkup/v1 where your code has https://api.linkup.so/v1, and send the SpecStream key as the Bearer token. In Python:

import requests

BASE = "https://api.specstream.ai/linkup/v1"  # was https://api.linkup.so/v1

reply = requests.post(
    f"{BASE}/search",
    headers={"Authorization": f"Bearer {SPECSTREAM_KEY}"},
    json={"q": "Who founded Mistral AI and when?", "depth": "deep", "outputType": "searchResults", "maxResults": 10},
    timeout=60,
)
reply.raise_for_status()
for result in reply.json()["results"]:
    print(result["name"], result["url"], result["content"][:200])

3. In JavaScript:

const res = await fetch("https://api.specstream.ai/linkup/v1/search", {
  method: "POST",
  headers: {
    Authorization: `Bearer ${process.env.SPECSTREAM_KEY}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({ q: "Who founded Mistral AI and when?", depth: "fast", outputType: "sourcedAnswer" }),
});
const data = await res.json();
console.log(data.answer);
for (const source of data.sources) console.log(source.name, source.url);

4. Read 429 with INSUFFICIENT_FUNDS_CREDITS as an empty balance, and any other 429 as a call to send again after Retry-After; neither is charged.

5. When your product needs every match in place of a results page, write the request in plain words. SpecStream reads it back as the conditions every row must meet and the facts to bring back, quotes the most it can cost, and delivers the rows after you approve.

Frequently asked questions

Something we didn't answer? Talk to a human

Is there a Linkup compatible API?
Yes. SpecStream answers Linkup's /v1/search at https://api.specstream.ai/linkup/v1 in Linkup's JSON, checked on production on November 10, 2026, for $0.005 a search of up to 10 results at every depth.
How do I migrate from Linkup?
Change one line: set base_url to https://api.specstream.ai/linkup/v1 and use a SpecStream key. The request body, with q, depth and outputType, and the code that reads results[] stay as they are.
How much does Linkup cost?
Linkup charges $0.005 a search at flash, fast or standard with searchResults, $0.006 with an answer, and $0.05 to $0.055 at deep. SpecStream charges $0.005 for all of them.
Which apps and SDKs take the SpecStream address for Linkup?
Open WebUI: choose the web search engine linkup and put the address in its JSON setting LINKUP_SEARCH_PARAMS: {"url": "https://api.specstream.ai/linkup/v1/search"}. LiteLLM 1.108.4: set LINKUP_API_BASE to https://api.specstream.ai/linkup/v1 and put your SpecStream key in LINKUP_API_KEY. The call stays litellm.search(search_provider="linkup").
Does the linkup-sdk client work with SpecStream?
Yes. The linkup-sdk Python client 0.24.0 ran every check in the pass table with base_url="https://api.specstream.ai/linkup/v1" and a SpecStream key.
Does SpecStream support outputType structured?
No. A call with outputType structured gets 400 with the reason; searchResults and sourcedAnswer both work, at $0.005 a call.
Which Linkup fields does SpecStream not fill?
One: favicon is an empty string on every result and source. Each result has type, name, url and content, and a sourcedAnswer has answer and sources.
What happens when search is busy?
The route answers 429 with a Retry-After header and charges nothing. One account can send up to 8,800 searches a minute.

Sources

SpecStream wrote this page. Each Linkup figure comes from Linkup's own pages, and each other provider's figure from that company's own page. The route's behavior is taken from its code and from the pass table measured on production on November 10, 2026.

  1. Linkup search referencedocs.linkup.so/pages/documentation/endpoints/search/reference.md, read Nov 10, 2026
  2. Linkup authenticationdocs.linkup.so/pages/documentation/platform/authentication.md, read Nov 10, 2026
  3. Linkup API pricingdocs.linkup.so/pages/documentation/platform/pricing.md, read Nov 10, 2026
  4. Linkup rate limitsdocs.linkup.so/pages/documentation/platform/rate-limits.md, read Nov 10, 2026
  5. Linkup pricinglinkup.so/pricing, read Nov 10, 2026
  6. SpecStream pass table, Linkup routespecstream.ai/specstream/dialects/linkup.md, read Nov 10, 2026
  7. Tavily API creditsdocs.tavily.com/documentation/api-credits.md, read Nov 9, 2026
  8. Exa pricingexa.ai/docs/admin/pricing.md, read Nov 9, 2026
  9. Parallel pricingparallel.ai/pricing, read Nov 9, 2026
  10. SpecStream benchmarksspecstream.ai/benchmarks, read Nov 10, 2026
  11. SpecStream pricingspecstream.ai/pricing, read Nov 10, 2026
  12. SpecStream for agentsspecstream.ai/agents.md, read Nov 10, 2026