Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.auvy.ai/llms.txt

Use this file to discover all available pages before exploring further.

Search API

Search is the unified brain-scoped discovery API. The same POST /v1/search route serves native-tool search (match-only query: type/pattern or bare term) and grep (additionally: list type / type/, or match + optional keywords / grep_keywords for extra AND filters on path/title/snippet — rejected with 400 when combined with list-only query). Keyword matching runs over indexed resource_chunks (and catalog heads for synapse kinds); when a vector index is configured, results merge dense retrieval with lexical signals (RRF).
Search requires brain scope. Send X-Brain-Id or configure getBrainId in the public SDK.

Searchable Types

The current unified search bundle is: assets, artifacts, stakeholder_maps, meetings, cortex_action_plans, receptors, pathways, neurons, reflexes
  • Synapse catalog (receptors, pathways, neurons, reflexes): keyword over catalog rows plus optional vector search on the search-resource index (reflexes are keyword-only today).
  • Document lane (assets, artifacts): lexical resource_chunks plus chunk-level vectors in the same search-resource namespace when embedded.
  • Structured catalog heads (meetings, stakeholder_maps, cortex_action_plans): lexical resource_chunks plus per-head search vectors when search-resource-embedding has indexed those resources.
For owner-scoped retrieval over recollection sets, use Recollections search.

POST /v1/search

Synchronous single-facet search. The server enqueues the same search job internally, waits for completion, and returns a browse-compatible hit shape plus optional normalized rows.
POST /v1/search
FieldTypeRequiredDescription
querystringYessearch: match only — type/pattern or bare term (mapped to neurons/…). grep: also type or type/ to list that facet.
search_modestringNohybrid (default), lexical (keyword only), or vector (dense-first; still hydrates from the spine).
filtersobjectNois_active, visibility where supported.
path_prefix / pathPrefixstringNoFolder scope on resource heads for assets/artifacts (normalized server-side).
keywordsstring | string[]Nogrep match only: extra AND terms (string is whitespace-split). Not allowed with list-only query.
grep_keywordsstring[]NoSame as keywords as an explicit array (max 12). Not allowed with list-only query.
curl -X POST https://api.auvy.ai/v1/search \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "X-Brain-Id: YOUR_BRAIN_ID" \
  -H "Content-Type: application/json" \
  -d '{"query": "assets/refund policy"}'
Response:
{
  "type": "assets",
  "results": [
    { "path": "assets/00000000-0000-0000-0000-000000000000", "title": "Refund policy", "snippet": "...", "similarity": 0.89 }
  ],
  "normalized": []
}

GET /v1/search

Asynchronous multi-facet search. The response contains a job_id; poll Jobs or use SDK streaming helpers.
GET /v1/search?q=refunds&types=["assets","artifacts","neurons"]
ParameterTypeDescription
qstringRequired search text.
typesstring or JSON arrayOptional subset of searchable path plurals. Defaults to the full unified bundle.
typestringSingle type alternative to types.
limitnumberMax results per type.
offsetnumberOffset per type.
is_activebooleanCatalog active filter where supported.
search_modestringOptional hybrid, lexical, or vector.
const searchJob = await auvy.resources.search.search({
  q: 'renewal risk',
  types: ['meetings', 'stakeholder_maps', 'artifacts', 'neurons'],
  limit: 10,
})

const job = await auvy.jobs.getStatus(searchJob.job_id)
When complete, the job result includes per-type buckets and normalized rows:
{
  "status": "completed",
  "result": {
    "results": {
      "assets": [],
      "artifacts": [],
      "meetings": [],
      "neurons": []
    },
    "total": 0,
    "normalized": []
  }
}

SDK Helpers

const sync = await auvy.resources.search.searchSemantic({
  query: 'artifacts/customer briefing',
  search_mode: 'hybrid',
})

const grepSync = await auvy.resources.search.grepSemantic({
  query: 'neurons/billing',
  grep_keywords: ['refund', 'policy'],
})

const asyncJob = await auvy.search.search({
  q: 'customer renewal',
  type: 'meetings',
})
Top-level auvy.search is an alias of auvy.resources.search; prefer the resources namespace in new code. Use searchSemantic for match-only POST; use grepSemantic when you need list-by-type or match + grep_keywords.