Authentication
All requests require a bearer token. Tokens are issued per-workspace from the dashboard and scoped to a role.
curl https://api.findola.com/v1/search \
-H "Authorization: Bearer $FINDOLA_KEY" \
-H "Content-Type: application/json" \
-d '{"query":"Who owns the Acme renewal?"}'
POST /v1/search
Returns ranked, permission-filtered documents matching the query — no synthesis.
| Field | Type | Description |
|---|---|---|
query | string | Natural-language query. |
scope | string? | One of: workspace, team, self. |
filters | object? | e.g. { app: "slack", since: "7d" } |
top_k | int? | Default 10, max 50. |
POST /v1/answer
Synthesizes an answer with inline citations and a confidence score.
{
"answer": "Sarah Chen (AE) owns the Acme renewal...",
"citations": [
{ "id": "1", "source": "salesforce", "url": "https://..." },
{ "id": "2", "source": "gmail", "url": "https://..." }
],
"confidence": 0.94,
"credits_used": 3,
"latency_ms": 1740
}
POST /v1/workflows/run
Execute a defined workflow synchronously or asynchronously. Returns a run_id for tracking.
{
"workflow": "daily_exec_brief",
"inputs": { "date": "2026-05-28" },
"async": true
}
GET /v1/stream/:run_id
Server-Sent Events stream of agent steps as they happen: planning, retrieval, tool calls, verification, final answer.
Webhooks
Subscribe to workflow.completed, workflow.failed, answer.low_confidence, permission.changed, and more. Signed with HMAC-SHA256.
MCP server
Findola ships a Model Context Protocol server so any MCP-compatible agent host (Claude Desktop, Cursor, internal agents) can query the index directly.
{
"mcpServers": {
"findola": {
"command": "npx",
"args": ["@findola/mcp"],
"env": { "FINDOLA_KEY": "sk_live_..." }
}
}
}
Errors & rate limits
| Status | Meaning |
|---|---|
401 | Invalid or missing token |
403 | Permission denied by source ACL |
429 | Rate limit exceeded (per plan) |
503 | Upstream provider degraded — automatic retry |
Default rate limits: 100 rpm on Starter, 1,000 rpm on Growth, custom on Enterprise.