Suggestions
Obtén sugerencias de búsqueda en tiempo real.
Endpoint
GET /api/suggestions
Headers
| Header | Requerido | Descripción |
|---|---|---|
X-Widget-Token | Sí | Token de autenticación |
Query params
| Param | Tipo | Requerido | Descripción |
|---|---|---|---|
q | string | Sí | Query parcial |
limit | number | No | Número de sugerencias (default: 5) |
Response
{
"suggestions": [
{
"type": "query",
"text": "zapatillas running",
"count": 150
},
{
"type": "category",
"text": "Zapatillas de deporte",
"count": 320
},
{
"type": "brand",
"text": "Nike",
"count": 85
},
{
"type": "product",
"text": "Nike Air Max 90",
"product": {
"id": "prod_123",
"name": "Nike Air Max 90",
"price": 129.99,
"imageUrl": "https://..."
}
}
]
}
Tipos de sugerencia
| Tipo | Descripción |
|---|---|
query | Búsqueda popular relacionada |
category | Categoría coincidente |
brand | Marca coincidente |
product | Producto específico |
Ejemplo
curl -X GET "https://api.neuroon.ai/api/suggestions?q=zapat&limit=5" \
-H "X-Widget-Token: YOUR_TOKEN"
Uso recomendado
Implementa debounce para evitar peticiones excesivas:
import { debounce } from 'lodash';
const fetchSuggestions = debounce(async (query) => {
const response = await fetch(
`https://api.neuroon.ai/api/suggestions?q=${encodeURIComponent(query)}`,
{ headers: { 'X-Widget-Token': token } }
);
return response.json();
}, 150);
input.addEventListener('input', async (e) => {
if (e.target.value.length >= 2) {
const { suggestions } = await fetchSuggestions(e.target.value);
renderSuggestions(suggestions);
}
});
Notas
- Mínimo 2 caracteres para obtener sugerencias
- Las sugerencias se ordenan por relevancia
- El campo
countindica productos relacionados