Search Documents

Search for documents by title. Returns document-level results (not individual passages). Useful for document lookups, autocomplete, and navigation.

GET /api/search/documents

Authentication

Requires a Bearer token. See Getting Started.

Authorization: Bearer <your-api-key>

Query parameters

ParameterTypeDefaultDescription
searchstringRequiredSearch query (matched against document titles).
teamstringTeam slug. Automatically inferred from your API key if not provided.
pageinteger1Page number.
per_pageinteger10Results per page.

Response

Success response

{
  "data": [
    {
      "id": "doc-xyz789",
      "title": "Ecclesia de Eucharistia",
      "author": "John Paul II",
      "teams": [
        { "slug": "magisterium" }
      ]
    }
  ],
  "error": null
}
FieldTypeDescription
dataarrayArray of matching documents.
data[].idstringDocument ID.
data[].titlestringDocument title.
data[].authorstringAuthor name.
data[].teamsarrayTeams associated with the document.
errornull | objectnull on success.

Error response

{
  "data": [],
  "error": {
    "message": "Search query is required"
  }
}
ConditionError Message
Missing search parameter"Search query is required"
Missing team parameter (and not inferred)"Team is required"

Example

curl -G "https://vulgate.ai/api/search/documents" \
  -H "Authorization: Bearer $VULGATE_API_KEY" \
  --data-urlencode "search=Lumen Gentium"
{
  "data": [
    {
      "id": "doc-abc123",
      "title": "Lumen Gentium",
      "author": "Second Vatican Council",
      "teams": [{ "slug": "magisterium" }]
    }
  ],
  "error": null
}

Notes

  • Only published documents are returned.
  • Title matching uses PostgreSQL full-text search with websearch mode, which supports natural language queries including quoted phrases and boolean operators.
  • This endpoint is designed for quick lookups rather than exhaustive search. Use /api/search for full content search.
Search Documents | Vulgate AI