Build Anything with Your Knowledge
HTTP API for programmatic access to GNO search and retrieval. Build custom tools, automate workflows, integrate with any language.
Key Benefits
- Full search capabilities via HTTP
- JSON request/response format
- Works with any language
- No authentication required
- Zero rate limits
Example Commands
curl http://localhost:3000/api/status
curl -X POST /api/query -d '{...}'
Get Started
Ready to try REST API?
Your Index, Programmable
Every GNO feature is accessible via REST API. Build custom dashboards, integrate with scripts, automate document workflows—all with simple HTTP calls.
gno serve
# API available at http://localhost:3000/api/*
Quick Examples
Search Documents
curl -X POST http://localhost:3000/api/query \
-H "Content-Type: application/json" \
-d '{"query": "authentication patterns", "limit": 10}'
Get AI Answer
curl -X POST http://localhost:3000/api/ask \
-H "Content-Type: application/json" \
-d '{"query": "What is our deployment process?"}'
Check Status
curl http://localhost:3000/api/status | jq
Available Endpoints
| Endpoint | Method | Description |
|---|---|---|
/api/status |
GET | Index statistics |
/api/search |
POST | BM25 keyword search |
/api/query |
POST | Hybrid search (recommended) |
/api/ask |
POST | AI-powered Q&A |
/api/docs |
GET | List documents |
/api/doc |
GET | Get document content |
/api/presets |
GET/POST | Model preset management |
/api/models/pull |
POST | Download models |
/api/models/status |
GET | Download progress |
Language Integrations
Python
import requests
def search(query: str) -> list:
resp = requests.post(
"http://localhost:3000/api/query",
json={"query": query, "limit": 10}
)
return resp.json()["results"]
def ask(question: str) -> str:
resp = requests.post(
"http://localhost:3000/api/ask",
json={"query": question}
)
return resp.json().get("answer")
JavaScript
async function search(query) {
const resp = await fetch("http://localhost:3000/api/query", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ query, limit: 10 }),
});
const data = await resp.json();
return data.results;
}
Shell Script
#!/bin/bash
gno_search() {
curl -s -X POST http://localhost:3000/api/query \
-H "Content-Type: application/json" \
-d "{\"query\": \"$1\"}" | jq '.results'
}
gno_search "project roadmap"
Use Cases
Raycast Commands
Create instant search from your launcher:
#!/bin/bash
# @raycast.title Search Notes
curl -s -X POST http://localhost:3000/api/query \
-d "{\"query\": \"$1\"}" | jq -r '.results[].title'
Obsidian Plugins
Query your external notes from within Obsidian.
Custom Dashboards
Build team knowledge bases with your own frontend.
CI/CD Integration
Search documentation as part of your pipeline.
No Limits
- No authentication — It’s your local machine
- No rate limits — Performance depends on hardware
- No data limits — Index as much as you want
- No cloud — Everything stays local
Full Documentation
See the API Reference for complete endpoint documentation, request/response schemas, and more examples.