Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/cryguy/hashboard/llms.txt

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

The search endpoint performs a case-insensitive substring match across all content visible to the authenticated principal, returning grouped results for boards, cards, and documents in a single response. It is the fastest way for an agent to locate a resource by name or keyword without iterating over boards individually. Results are always visibility-filtered. The search never reveals a resource the caller cannot read through normal access rules. Under the URL-as-capability model, link-shared items (link-read / link-write) are not listed for non-household members — search uses the same Listed predicates as board and doc list endpoints, so discovering an item through search is equivalent to being told its ID. Card description documents surface as their owning card in search results, not as separate document hits.

Endpoint

Search all visible resources

GET /api/v1/search?q={query}
q
string
required
The search query string. Must be at least 2 characters — queries shorter than 2 characters return empty result groups immediately without hitting the database.
Response — a SearchResults object:
query
string
The query string that was searched, echoed back.
boards
SearchHit[]
Matching boards.
cards
SearchHit[]
Matching cards.
docs
SearchHit[]
Matching standalone documents.
total
number
Total number of hits across all three groups.
Each SearchHit contains:
type
string
One of "board", "card", or "doc".
id
string
Resource ID.
title
string
Display title of the matching resource.
snippet
string | null
A short excerpt from the matched content, or null if the match was on the title only.
boardId
string | null
The board the resource belongs to, if applicable. null for loose cards, top-level docs, and boards themselves.

Example

curl 'https://hashboard.example.com/api/v1/search?q=sprint+planning' \
  -H 'Authorization: Bearer hb_TOKEN'
{
  "query": "sprint planning",
  "boards": [],
  "cards": [
    {
      "type": "card",
      "id": "a1b2c3d4-...",
      "title": "Sprint planning checklist",
      "snippet": "Define acceptance criteria before sprint planning begins",
      "boardId": "e5f6a7b8-..."
    }
  ],
  "docs": [
    {
      "type": "doc",
      "id": "c9d0e1f2-...",
      "title": "Sprint Planning Runbook",
      "snippet": "Run this checklist at the start of every sprint planning session",
      "boardId": null
    }
  ],
  "total": 2
}

What is searched

ResourceFields searched
Boardsname, description
Cardstitle
Documentstitle, content (card descriptions surface as the card, not a separate doc hit)
Search is a substring match, not a ranked full-text index. Short queries (2–3 characters) may return a large number of results. For large instances, prefer more specific queries.

Visibility and access

Search results respect every visibility mode:
  • private resources are only returned when the caller is in the creator’s household or is an assignee of the card.
  • public resources are returned for all authenticated principals.
  • link-read / link-write resources are returned only for household members. Link-shared items are never surfaced in search for outsiders — listing the ID would itself constitute sharing the resource, defeating the URL-as-capability model.
Anonymous requests (Guest principal) only see public resources.

Build docs developers (and LLMs) love