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
| Parameter | Notes |
|---|---|
q | Required. 2 to 256 characters. |
types | Comma-separated: PRODUCT, DOCUMENT, CONTACT. Omit it to search everything. |
limit | Default 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.