Put the box on your page
Your movies-and-actors group becomes the thing a visitor actually touches.
If your front-end is a web page, @searchstack/autocomplete saves you work: a tiny, framework-agnostic JavaScript component that turns any <input> into an as-you-type box wired to your list or group. It handles debouncing, keyboard navigation, mobile full-screen mode and cancelled requests. You style the rows.
Try it
This box is wired to the live movies-and-actors group. Try matrix, hemsworth, dark or dream:
Every keystroke calls the suggest endpoint on the Demo account’s movies-and-actors group with a read-only demo key, drawing films and actors with different row templates.
Add it to a page
An input for it to bind to:
<input id="movie-search" style="width:100%" />
Then import the component and call attachGroup with the input's id, an API key scoped to suggest (it ships in your page, so keep it read-only), the account, the group name, and the group's current membership version:
<script type="module">
import { attachGroup } from 'https://cdn.jsdelivr.net/npm/@searchstack/autocomplete@2/dist/searchstack-autocomplete.js'
await attachGroup('movie-search', 'YOUR_SUGGEST_KEY', 'Demo', 'movies-and-actors', 3)
</script>
Prefer a build step? It's on npm:
npm install @searchstack/autocomplete
import { attachGroup } from '@searchstack/autocomplete'
await attachGroup('movie-search', 'YOUR_SUGGEST_KEY', 'Demo', 'movies-and-actors', 3)
For a single list, call attachList instead: same arguments, but pass the list name and its version number.
Style each result
Each result shows its name by default. Pass a template — a function that gets a result and returns HTML — to render richer rows, branching on the list_name a group result carries:
await attachGroup('movie-search', 'YOUR_SUGGEST_KEY', 'Demo', 'movies-and-actors', 3, {
template: (r) => {
if (r.list_name === 'actors') {
return `<div class="row">
<img src="${r.image_url}" width="40">
<div><strong>${r.name}</strong><br><small>Actor</small></div>
</div>`
}
return `<div class="row">
<img src="${r.poster_url}" width="40">
<div><strong>${r.name}</strong> <small>(${r.year})</small></div>
</div>`
}
})
Not using JavaScript? Call the API directly
Underneath, the plug-in makes one HTTPS request per keystroke to the suggest endpoint. It's a POST to suggest/group/{account}/{group}/{version}/{query} (drop the /group segment for a single list), with your suggest key in the X-API-Key header:
curl -X POST "https://api.searchstack.dev/suggest/group/Demo/movies-and-actors/3/hemsworth" \
-H "X-API-Key: YOUR_SUGGEST_KEY" \
-H "Content-Type: application/json" \
-d '{ "size": 6 }'
You get back a plain list of matching records — the same data the box draws its rows from:
[
{ "list_name": "actors", "name": "Liam Hemsworth", "image_url": "…" },
{ "list_name": "actors", "name": "Chris Hemsworth", "image_url": "…" }
]
Wire that into a Python backend, a Swift app or a Go service. Full request and response details are in the suggest reference.
Go deeper: Every option, event and CSS variable in the reference.