Local Daemon HTTP API
May 13, 2026 ยท View on GitHub
This document describes the current user-facing HTTP API exposed by the local open-websearch daemon.
This API is intended for:
- local scripts
- local tooling
- skill or plugin integrations
It is not a public internet API. The daemon binds to 127.0.0.1 by default.
Start and check
Start the daemon:
npm run serve
Or choose a port:
node build/index.js serve --port 3211
Check status through the CLI:
npm run status -- --json
npm run status -- --base-url http://127.0.0.1:3211 --json
When calling localhost directly, bypass any shell proxy settings:
curl --noproxy '*' http://127.0.0.1:3210/health
Common response envelope
Success:
{
"status": "ok",
"data": {},
"error": null,
"hint": null
}
Error:
{
"status": "error",
"data": null,
"error": {
"code": "validation_failed",
"message": "Use a valid URL"
},
"hint": "Retry with a supported input"
}
Endpoints
GET /health
Liveness only.
Example:
curl --noproxy '*' http://127.0.0.1:3210/health
Example response:
{
"status": "ok",
"data": {
"daemon": "running"
},
"error": null,
"hint": null
}
GET /status
Returns daemon state, runtime readiness, activation state, version, supported operations, and config summary.
Example:
curl --noproxy '*' http://127.0.0.1:3210/status
Example response:
{
"status": "ok",
"data": {
"daemon": "running",
"runtime": "ready",
"activation": "active",
"version": "2.x.x",
"capabilities": [
"search",
"fetch-web",
"fetch-csdn",
"fetch-juejin",
"fetch-github-readme",
"fetch-linuxdo"
],
"baseUrl": "http://127.0.0.1:3210",
"configSummary": {
"defaultSearchEngine": "bing",
"allowedSearchEngines": [],
"searchMode": "request",
"useProxy": false,
"fetchWebAllowInsecureTls": false
}
},
"error": null,
"hint": null
}
POST /search
Request body:
{
"query": "open web search",
"limit": 3,
"engines": ["startpage", "bing", "sogou"],
"searchMode": "playwright"
}
Notes:
queryis requiredlimitis optional, integer1-50, default10enginesis optionalsearchModeis optional:request,auto, orplaywrightsearchModecurrently only affects Bing; other engines ignore it- if
enginesis omitted, the daemon uses its configured default engine
Example:
curl --noproxy '*' -X POST http://127.0.0.1:3210/search \
-H "Content-Type: application/json" \
-d '{"query":"open web search","limit":3,"engines":["sogou"]}'
POST /fetch-web
Request body:
{
"url": "https://awiki.ai",
"maxChars": 30000
}
Notes:
urlis requiredmaxCharsis optional, integer1000-200000, default30000- returns the full structured web-fetch payload
Example:
curl --noproxy '*' -X POST http://127.0.0.1:3210/fetch-web \
-H "Content-Type: application/json" \
-d '{"url":"https://awiki.ai","maxChars":3000}'
POST /fetch-github-readme
Request body:
{
"url": "https://github.com/Aas-ee/open-webSearch"
}
Example:
curl --noproxy '*' -X POST http://127.0.0.1:3210/fetch-github-readme \
-H "Content-Type: application/json" \
-d '{"url":"https://github.com/Aas-ee/open-webSearch"}'
Success payload shape:
{
"status": "ok",
"data": {
"url": "https://github.com/Aas-ee/open-webSearch",
"content": "# README\n..."
},
"error": null,
"hint": null
}
POST /fetch-csdn
Request body:
{
"url": "https://blog.csdn.net/..."
}
Example:
curl --noproxy '*' -X POST http://127.0.0.1:3210/fetch-csdn \
-H "Content-Type: application/json" \
-d '{"url":"https://blog.csdn.net/weixin_45801664/article/details/149000138"}'
POST /fetch-juejin
Request body:
{
"url": "https://juejin.cn/post/..."
}
Example:
curl --noproxy '*' -X POST http://127.0.0.1:3210/fetch-juejin \
-H "Content-Type: application/json" \
-d '{"url":"https://juejin.cn/post/7514613876334721075"}'
POST /fetch-linuxdo
Request body:
{
"url": "https://linux.do/t/topic/123.json"
}
Example:
curl --noproxy '*' -X POST http://127.0.0.1:3210/fetch-linuxdo \
-H "Content-Type: application/json" \
-d '{"url":"https://linux.do/t/topic/123.json"}'
Notes
- The local daemon is separate from the MCP HTTP endpoints such as
/mcpand/sse. --daemon-urland--spawnare CLI options, not HTTP request parameters.- Search latency mostly depends on the selected engine and network conditions, not localhost HTTP overhead.
- Startpage connectivity may depend on outbound network conditions or local proxy availability.