Referencia de la API · v1
Elementos
Endpoints de elementos de la API de XEYE: alta individual y por lotes de hasta 10 000, modificación, borrado y qué dispara un reentrenamiento.
El objeto elemento
Un elemento es una entrada buscable: su text es lo que se indexa y se devuelve como item; description añade contexto para el modelo (y para el enriquecimiento con IA); params es un texto opaco que guardas y recuperas tal cual, pensado para el SKU, la URL o el precio.
| Campo | Dónde | Tipo | Obligatorio | Descripción |
|---|---|---|---|---|
| text | cuerpo | string | sí | Lo que se indexa y se devuelve como item en la búsqueda (1–1000 caracteres). |
| params | cuerpo | json | no | Cualquier valor JSON; se guarda como texto opaco de hasta 8000 caracteres y la búsqueda lo devuelve en cada resultado. |
| description | cuerpo | string | no | Contexto adicional para el modelo (hasta 4000 caracteres). |
{
"id": 1001,
"list_id": 42,
"text": "Sony WH-1000XM5 wireless headphones",
"params": "{\"sku\":\"SONY-XM5\",\"url\":\"/products/sony-wh-1000xm5\",\"price\":348}",
"description": "Noise-cancelling over-ear headphones, 30h battery",
"generated_description": null,
"trained": false,
"created_at": "2026-10-14T09:15:40Z",
"updated_at": "2026-10-14T09:15:40Z"
}Endpoints
Listar elementos
https://api.xeye.es/v1/lists/{listId}/elementsÁmbito: lists:readPágina de elementos de la lista, por id ascendente, con filtro de texto libre sobre text y description.
| Campo | Dónde | Tipo | Obligatorio | Descripción |
|---|---|---|---|---|
| listId | ruta | integer | sí | Id de la lista. |
| offset | query | integer | no | Primer elemento de la página, desde 0. |
| limit | query | integer | no | Tamaño de página, de 1 a 200 (50 por defecto). |
| q | query | string | no | Texto libre sobre text y description. |
Petición
curl -X GET https://api.xeye.es/v1/lists/42/elements?limit=50 \
-H "X-API-Key: $XEYE_API_KEY"Respuesta
{
"items": [ {
"id": 1001,
"list_id": 42,
"text": "Sony WH-1000XM5 wireless headphones",
"params": "{\"sku\":\"SONY-XM5\",\"url\":\"/products/sony-wh-1000xm5\",\"price\":348}",
"description": "Noise-cancelling over-ear headphones, 30h battery",
"generated_description": null,
"trained": false,
"created_at": "2026-10-14T09:15:40Z",
"updated_at": "2026-10-14T09:15:40Z"
} ],
"total": 1,
"offset": 0,
"limit": 50
}Crear un elemento
https://api.xeye.es/v1/lists/{listId}/elementsÁmbito: lists:writeUn elemento. Para más de unos pocos, usa el lote.
| Campo | Dónde | Tipo | Obligatorio | Descripción |
|---|---|---|---|---|
| listId | ruta | integer | sí | Id de la lista. |
| text | cuerpo | string | sí | Lo que se indexa y se devuelve como item en la búsqueda (1–1000 caracteres). |
| params | cuerpo | json | no | Cualquier valor JSON; se guarda como texto opaco de hasta 8000 caracteres y la búsqueda lo devuelve en cada resultado. |
| description | cuerpo | string | no | Contexto adicional para el modelo (hasta 4000 caracteres). |
Petición
curl -X POST https://api.xeye.es/v1/lists/42/elements \
-H "X-API-Key: $XEYE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"text": "Sony WH-1000XM5 wireless headphones",
"params": {
"sku": "SONY-XM5",
"url": "/products/sony-wh-1000xm5",
"price": 348
},
"description": "Noise-cancelling over-ear headphones, 30h battery"
}'Respuesta
{
"id": 1001,
"list_id": 42,
"text": "Sony WH-1000XM5 wireless headphones",
"params": "{\"sku\":\"SONY-XM5\",\"url\":\"/products/sony-wh-1000xm5\",\"price\":348}",
"description": "Noise-cancelling over-ear headphones, 30h battery",
"generated_description": null,
"trained": false,
"created_at": "2026-10-14T09:15:40Z",
"updated_at": "2026-10-14T09:15:40Z"
}Crear elementos por lotes
https://api.xeye.es/v1/lists/{listId}/elements/batchÁmbito: lists:writeDe 1 a 10.000 elementos y hasta 16 MB por petición, todo o nada: una fila inválida rechaza el lote entero con 400 y no se inserta nada. Un solo entrenamiento pendiente por lote. Para sincronizar un catálogo entero: borra por lotes y vuelve a cargar.
| Campo | Dónde | Tipo | Obligatorio | Descripción |
|---|---|---|---|---|
| listId | ruta | integer | sí | Id de la lista. |
| elements | cuerpo | object[] | sí | De 1 a 10 000 elementos con los mismos campos que la creación individual. |
| elements[].text | cuerpo | string | sí | Lo que se indexa y se devuelve como item en la búsqueda (1–1000 caracteres). |
| elements[].params | cuerpo | json | no | Cualquier valor JSON; se guarda como texto opaco de hasta 8000 caracteres y la búsqueda lo devuelve en cada resultado. |
| elements[].description | cuerpo | string | no | Contexto adicional para el modelo (hasta 4000 caracteres). |
Petición
curl -X POST https://api.xeye.es/v1/lists/42/elements/batch \
-H "X-API-Key: $XEYE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"elements": [
{
"text": "Sony WH-1000XM5 wireless headphones",
"params": {
"sku": "SONY-XM5",
"price": 348
}
},
{
"text": "Bose QuietComfort Ultra headphones",
"params": {
"sku": "BOSE-QCU",
"price": 429
}
}
]
}'Respuesta
{
"created": 2,
"items": [ { "id": 1001, "list_id": 42, "text": "Sony WH-1000XM5 wireless headphones", "trained": false, "...": "..." }, { "id": 1002, "...": "..." } ]
}Borrar elementos por lotes
https://api.xeye.es/v1/lists/{listId}/elements/batch-deleteÁmbito: lists:writeBorra los ids indicados que pertenezcan a la lista y devuelve cuántos borró. Los ids ajenos o ya borrados se ignoran: repetir la llamada es seguro.
| Campo | Dónde | Tipo | Obligatorio | Descripción |
|---|---|---|---|---|
| listId | ruta | integer | sí | Id de la lista. |
| ids | cuerpo | integer[] | sí | De 1 a 10 000 ids de elementos de la lista. |
Petición
curl -X POST https://api.xeye.es/v1/lists/42/elements/batch-delete \
-H "X-API-Key: $XEYE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"ids": [
1001,
1002,
1003
]
}'Respuesta
{ "deleted": 3 }Obtener un elemento
https://api.xeye.es/v1/lists/{listId}/elements/{elementId}Ámbito: lists:readUn elemento. Debe pertenecer a la lista de la ruta; si no, 404.
| Campo | Dónde | Tipo | Obligatorio | Descripción |
|---|---|---|---|---|
| listId | ruta | integer | sí | Id de la lista. |
| elementId | ruta | integer | sí | Id del elemento; debe pertenecer a la lista de la ruta. |
Petición
curl -X GET https://api.xeye.es/v1/lists/42/elements/1001 \
-H "X-API-Key: $XEYE_API_KEY"Respuesta
{
"id": 1001,
"list_id": 42,
"text": "Sony WH-1000XM5 wireless headphones",
"params": "{\"sku\":\"SONY-XM5\",\"url\":\"/products/sony-wh-1000xm5\",\"price\":348}",
"description": "Noise-cancelling over-ear headphones, 30h battery",
"generated_description": null,
"trained": false,
"created_at": "2026-10-14T09:15:40Z",
"updated_at": "2026-10-14T09:15:40Z"
}Modificar un elemento
https://api.xeye.es/v1/lists/{listId}/elements/{elementId}Ámbito: lists:writeParcial: solo cambian los campos presentes. params sustituye el anterior completo.
| Campo | Dónde | Tipo | Obligatorio | Descripción |
|---|---|---|---|---|
| listId | ruta | integer | sí | Id de la lista. |
| elementId | ruta | integer | sí | Id del elemento; debe pertenecer a la lista de la ruta. |
| text | cuerpo | string | no | Lo que se indexa y se devuelve como item en la búsqueda (1–1000 caracteres). |
| params | cuerpo | json | no | Cualquier valor JSON; se guarda como texto opaco de hasta 8000 caracteres y la búsqueda lo devuelve en cada resultado. |
| description | cuerpo | string | no | Contexto adicional para el modelo (hasta 4000 caracteres). |
Petición
curl -X PATCH https://api.xeye.es/v1/lists/42/elements/1001 \
-H "X-API-Key: $XEYE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"params": {
"sku": "SONY-XM5",
"url": "/products/sony-wh-1000xm5",
"price": 329,
"stock": 12
}
}'Respuesta
{
"id": 1001,
"list_id": 42,
"text": "Sony WH-1000XM5 wireless headphones",
"params": "{\"sku\":\"SONY-XM5\",\"url\":\"/products/sony-wh-1000xm5\",\"price\":329,\"stock\":12}",
"description": "Noise-cancelling over-ear headphones, 30h battery",
"generated_description": null,
"trained": false,
"created_at": "2026-10-14T09:15:40Z",
"updated_at": "2026-10-14T09:15:40Z"
}Borrar un elemento
https://api.xeye.es/v1/lists/{listId}/elements/{elementId}Ámbito: lists:writeBorra el elemento y deja un entrenamiento pendiente.
| Campo | Dónde | Tipo | Obligatorio | Descripción |
|---|---|---|---|---|
| listId | ruta | integer | sí | Id de la lista. |
| elementId | ruta | integer | sí | Id del elemento; debe pertenecer a la lista de la ruta. |
Petición
curl -X DELETE https://api.xeye.es/v1/lists/42/elements/1001 \
-H "X-API-Key: $XEYE_API_KEY"Sin cuerpo de respuesta (204 No Content).
Límites: text hasta 1000 caracteres, description hasta 4000, params hasta 8000 (como texto), 10.000 elementos y 16 MB por lote. No hay máximo de elementos por lista; la calidad de la búsqueda y el precio del entrenamiento dependen del tamaño.