Skip to content
engage-ai

Guides

Search

One endpoint that searches products, knowledge documents and contacts, typo-tolerant.

GET /search searches products, knowledge documents and contacts in one request and returns one ranked list. It is built for a search box in a dashboard.

curl -G https://api.getengageai.app/search \
  -H "Authorization: Bearer $ENGAGE_API_KEY" \
  --data-urlencode "q=ridgelne"
{
  "query": "ridgelne",
  "searched": ["PRODUCT", "DOCUMENT", "CONTACT"],
  "counts": { "PRODUCT": 1 },
  "items": [
    {
      "type": "PRODUCT",
      "id": "…",
      "title": "Ridgeline 2P Tent",
      "subtitle": "TENT-RIDGE-2P",
      "excerpt": "A two-person, three-season backpacking tent.",
      "score": 0.67,
      "updatedAt": "2026-10-12T08:15:00.000Z",
      "groupKey": null
    }
  ]
}

The query has a typo, and the product is still found. Matching uses trigrams, so it tolerates misspellings and partial words.

Parameters

ParameterNotes
qRequired. 2 to 256 characters.
typesComma-separated: PRODUCT, DOCUMENT, CONTACT. Omit it to search everything.
limitDefault 20, maximum 50.

Each item carries its type. Render whatever comes back based on that, because more types will be added over time without a new endpoint. counts gives the number of hits per type before limit was applied, for labels like "3 products, 2 documents". searched lists the types that were searched.

Search is not pagination

Results are a ranking, not a list to page through. limit is a ceiling. If the result you want is not near the top, refine the query.

Search versus retrieval

GET /search matches spelling. It is for people looking for a record.

The reply engine uses a different search that matches meaning as well. To see what the AI would find for a customer's question, use POST /knowledge/preview instead. "Can I send these back?" finds the returns policy through preview, but probably not through /search.

Reliability

If one kind of record cannot be searched for a moment, its results are left out and the rest still come back. A broken index does not break the search box.