Listas
Los métodos de esta sección crean y eliminan listas, cambian sus campos y gestionan los registros: añadirlos, leerlos, actualizarlos y eliminarlos. Por ejemplo, tu sitio web puede mantener al día una lista «Carta de la cafetería», y el bot se la muestra a las personas.
Cómo se estructura una lista
Una lista tiene dos partes:
- El esquema: el nombre de la lista y sus campos. Con él trabajan los métodos de la página Listas y campos. Los nombres de los métodos lo llaman exactamente así:
getListSchema,createListSchema. - Los registros: las filas de la lista con los valores de los campos. Con ellos trabajan los métodos de la página Registros.
Las listas pertenecen a un proyecto. Una lista se puede crear en un proyecto o en un bot; en ese caso, también pasa al proyecto de ese bot. La API da acceso a todas las listas de los proyectos del propietario de la clave: tanto las creadas en bots como las creadas directamente en el proyecto.
Identificadores
| Qué | Cómo es | Dónde obtenerlo |
|---|---|---|
Lista (schema_id, id en las respuestas) |
Una cadena de 24 caracteres: 6650a1f2c3d4e5f6a7b8c9d0 |
Respuestas de getListSchemas y createListSchema |
Registro (item_id, id en las respuestas) |
Una cadena de 24 caracteres, como la de una lista | Respuestas de getListItems y addListItem |
Campo (slug) |
Letras, dígitos, - y _, preferiblemente latinas: price |
Claves del objeto fields en la respuesta de getListSchema |
Proyecto (project_uuid, project en las respuestas) |
Un UUID: 3f2b8c1e-… |
La dirección del proyecto en tu cuenta: /projects/<uuid>/… |
Bot (bot_id) |
Un número | La dirección del bot en tu cuenta: /bots/12345/… |
| Contacto | Un número | Los métodos de contactos |
El slug es el nombre del campo en las plantillas: el valor se guarda en el registro con ese nombre, y los bloques del bot lo leen con el mismo nombre. Los campos creados en tu cuenta lo reciben automáticamente; a través de la API lo defines tú.
Tipos de campo
El tipo se define en el parámetro type al crear el campo y no se puede cambiar después.
type |
Tipo en tu cuenta | Qué enviar | Qué se devuelve |
|---|---|---|---|
string |
«Texto» | Una cadena | Una cadena |
number |
«Número» | Un número o una cadena con un número: 12, "4.5" |
Un número |
bool |
«Sí/No» | true o false (también sirven 1 y 0) |
true o false |
date |
«Fecha» | Una fecha en cualquier formato habitual: "2026-10-15" |
Una fecha y hora en UTC: "2026-10-15T00:00:00.000000Z" |
datetime |
«Fecha y hora» | Una fecha y hora: "2026-10-15 14:30" o "2026-10-15T14:30:00-05:00" |
Una fecha y hora en UTC |
money |
«Dinero» | Un importe en dólares, euros, etc.: 4.5 o 12.99 |
El importe en las mismas unidades: 4.5 |
file |
«Archivo» | Un objeto con un enlace; ver más abajo | Un objeto que describe el archivo |
image |
«Imagen» | Un objeto con un enlace; ver más abajo | Un objeto que describe el archivo |
contact |
«ID del contacto» | Un ID de contacto | El ID del contacto |
bot |
«ID del bot» | Un ID de bot | El ID del bot |
Un campo vacío se devuelve como null.
Fecha y hora
Una hora sin zona horaria se trata como UTC: "2026-10-15 14:30" se guarda como 14:30 UTC. Para enviar la hora local, añade el desfase: "2026-10-15T14:30:00-05:00". Un campo date no recorta la hora: si envías una fecha con hora, la hora se conserva.
Dinero
La moneda se define en el campo al crearlo (currency) y no se envía con los registros. Es un código ISO 4217 de tres letras: USD, EUR, GBP. En createListSchema la moneda se puede omitir, y entonces es USD; en addListSchemaField es obligatoria. Un código desconocido: 422.
Envía los importes en unidades principales: dólares, no céntimos. El importe se redondea a los decimales de la moneda (dos para el dólar y el euro), y las mitades se redondean hacia arriba: 0.295 se guarda como 0.30.
Archivos e imágenes
El valor de un campo file o image es un objeto. A través de la API solo puedes guardar un enlace a un archivo disponible en internet:
{
"url": "https://example.com/menu/cappuccino.jpg",
"storage": "url",
"name": "cappuccino.jpg",
"type": "image"
}
| Clave | Obligatoria | Descripción |
|---|---|---|
url |
sí | Un enlace http:// o https:// |
storage |
sí | Siempre "url" |
name |
no | Nombre del archivo |
type |
no | Tipo de archivo: image, video, audio o document |
mime_type |
no | Tipo MIME: image/jpeg |
size |
no | Tamaño en bytes |
caption |
no | Pie |
Advertencia
Sin
"storage": "url", o con un enlace de otro tipo (nohttp/https), el valor no se guarda y no hay aviso: el campo queda ennully no se produce ningún error.
Las demás claves (como uuid o path) se ignoran: el campo guarda solo el enlace externo, y la respuesta lo devuelve exactamente como lo enviaste. Un enlace a un archivo del almacenamiento de la plataforma (como los que contienen las respuestas para los archivos subidos en tu cuenta) solo se puede guardar dentro de tu propia cuenta; un enlace a un archivo de otra cuenta no se guarda, y el campo queda en null. Si envías a updateListItem el archivo que ya está en el registro, por ejemplo un registro completo de getListItems, se queda como estaba.
En las respuestas, un archivo se describe con un objeto con las claves type, mime_type, created_at, name, size, storage, caption, meta (ancho, alto, duración, códec) y url. Los enlaces a archivos subidos en tu cuenta son temporales: descarga el archivo de inmediato o vuelve a pedir el registro.
Contacto y bot
Los campos contact y bot reciben un ID. El contacto debe pertenecer a tu bot y el bot debe ser tuyo; si no, la respuesta es 403. Un ID que no existe no pasa la validación: 422.
Además del valor del propio campo, el registro recibe las claves de servicio contact_id o bot_id; el filtro de getListItems funciona sobre ellas. Si una lista tiene varios campos de este tipo, contienen el valor del último.
Configuración del campo
| Parámetro | Tipo | Por defecto | Descripción |
|---|---|---|---|
is_required |
booleano | true |
«Campo obligatorio»: no se añade un registro sin valor |
is_hidden |
booleano | false |
«Ocultar campo en la interfaz»: el campo no se muestra en la tabla de registros de tu cuenta. La API lo devuelve como siempre |
is_encryptable |
booleano | false |
«Cifrar campo»: el valor se guarda cifrado. La API lo devuelve descifrado. En tu cuenta, el cifrado solo existe para los tipos string y number: úsalo solo para ellos. Los filtros no funcionan en campos cifrados |
Importante
Por defecto, un campo creado a través de la API es obligatorio, a diferencia de tu cuenta. Si un campo puede quedar vacío, envía
"is_required": false.
Límites
- Hasta 5000 listas por proyecto.
- De 1 a 30 campos al crear una lista.
- Nombres de listas y campos: hasta 255 caracteres.
- No se pueden usar nombres de campos de servicio:
id,_id,contact,contact_id,bot,bot_id,user,user_id,project,project_id,data,schema_id,created_at,updated_at,deleted_atni cualquier nombre que empiece por__. Para eseslug, la API responde con422y el texto «The slug is reserved.».
Las reglas generales (la clave, la frecuencia de solicitudes, los códigos de error) se describen en la página API.
Métodos
| Método | Qué hace |
|---|---|
getListSchemas |
Todas las listas de tus proyectos |
getListSchema |
Una lista con sus campos |
createListSchema |
Crear una lista |
deleteListSchema |
Eliminar una lista |
addListSchemaField |
Añadir un campo |
deleteListSchemaField |
Eliminar un campo |
getListItems |
Registros de una lista con filtrado y ordenación |
addListItem |
Añadir un registro |
updateListItem |
Actualizar un registro |
deleteListItem |
Eliminar un registro |