ConcurredConcurred API

Search API

Web search via Exa with your Concurred API key

Search the web with your Concurred API key. Results come from Exa, which is built for AI-style natural-language queries.

POST /api/v1/search

When should I use this?

Use /api/v1/search when you want a plain list of search results that you'll handle yourself — to show as cards on a page, save to a database, or feed into your own prompt.

If instead you want an AI model to do the searching for you and give you an answer, use the Chat API's battle or fight modes — the models will search the web on their own when they need to.

Request

{
  "query": "latest AI research on mixture-of-experts",
  "num_results": 10,
  "type": "neural",
  "include_summary": true,
  "recency": "1m"
}
FieldTypeRequiredDescription
querystringYesThe search query. Max 1000 chars.
num_resultsintegerNoHow many results to return (1–25, default 10).
typestringNo"neural" (default, semantic), "keyword" (lexical, cheaper), or "auto".
include_summarybooleanNoInclude Exa's synthesized summary per result. Default true.
recencystringNoFilter by publication recency. Format: "7d", "1m", "1y", etc.

Response

{
  "success": true,
  "data": {
    "query": "latest AI research on mixture-of-experts",
    "results": [
      {
        "url": "https://arxiv.org/abs/2026.XXXXX",
        "title": "Scaling Sparse MoE Transformers...",
        "snippet": "We present a new routing algorithm...",
        "score": 0.94,
        "published_date": "2026-03-14",
        "author": "Smith et al.",
        "favicon": "https://arxiv.org/favicon.ico"
      }
    ],
    "auto_prompt": "Research papers on mixture-of-experts architectures from 2026",
    "cost_usd": 0.005,
    "request_id": "req_..."
  }
}
FieldDescription
results[].urlCanonical URL of the result.
results[].titlePage title.
results[].snippetShort text excerpt (up to 500 chars).
results[].scoreRelevance score, 0–1.
results[].published_dateISO date if Exa could detect one.
auto_promptExa's rewritten version of your query (what it actually searched).
cost_usdPer-request cost from Exa, surfaced for debugging.

Authentication

Same as the rest of the v1 gateway — Bearer token or X-API-Key:

curl -X POST https://concurred.ai/api/v1/search \
  -H "Authorization: Bearer ck_..." \
  -H "Content-Type: application/json" \
  -d '{"query": "latest AI research on mixture-of-experts"}'

Code examples

curl -X POST https://concurred.ai/api/v1/search \
  -H "Authorization: Bearer $CONCURRED_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "query": "openai news today",
    "num_results": 5,
    "recency": "7d"
  }'

Errors

StatusCodeMeaning
400BAD_REQUESTMissing or invalid query.
401UNAUTHORIZED / INVALID_API_KEYMissing or bad API key.
429RATE_LIMIT_EXCEEDEDEither Concurred's or Exa's rate limit. Retry after a few seconds.
500INTERNAL_ERROREXA_API_KEY not configured on the deployment.
503SERVICE_UNAVAILABLEExa returned a non-2xx.

On this page