Genera un token
Envía correo y contraseña a POST /api/login. Postman guarda el token automáticamente.
Consulta el catálogo, crea pedidos, administra terminales y sincroniza contenido utilizando respuestas JSON y autenticación Bearer.
Tres pasos para realizar la primera solicitud autenticada.
Envía correo y contraseña a POST /api/login. Postman guarda el token automáticamente.
Agrega Authorization: Bearer TU_TOKEN a cada endpoint protegido.
Utiliza el dominio del comercio. El token y los datos siempre quedan aislados por tenant.
POST /api/orders envía un Idempotency-Key único por intento lógico. Si la red repite la solicitud, recibirás el mismo pedido.Las respuestas exitosas comparten la misma envoltura; los errores incluyen estado y mensaje legible.
{
"status": 200,
"success": true,
"message": "OK",
"data": {}
}{
"status": 422,
"success": false,
"message": "Error de validación.",
"errors": []
}401, 403, 404, 409, 422 y 429.Obtén el Bearer Token que se utiliza en el resto de solicitudes.
Autentica por correo y contraseña. Máximo 10 intentos por minuto y combinación de IP/correo.
{
"email": "usuario@empresa.com",
"password": "tu-contraseña",
"token_name": "Integración ERP"
} curl -X POST 'https://caserol.vesselpos.com/api/login' \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"email": "usuario@empresa.com",
"password": "tu-contraseña",
"token_name": "Integración ERP"
}'
Productos, categorías y adicionales del tenant del dominio.
Admite q, category, is_active, page y per_page.
curl -X GET 'https://caserol.vesselpos.com/api/products?is_active=1&page=1&per_page=20' \ -H 'Accept: application/json' \ -H 'Authorization: Bearer TU_TOKEN'
Busca por ID, nombre, SKU, código o categoría. Las frases se evalúan palabra por palabra, los resultados se ordenan por relevancia y cada producto incluye un score de 0 a 100. El parámetro q es obligatorio.
curl -X GET 'https://caserol.vesselpos.com/api/products/search?q={product_query}&is_active=1&page=1&per_page=20' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer TU_TOKEN'
Crea un producto dentro del tenant autenticado.
{
"name": "CAPUCHINO",
"sku": "CAP-001",
"category": "hot_drinks",
"price": 65,
"cost": 22,
"is_active": 1,
"visible_pos": 1,
"visible_app": 1,
"visible_kiosk": 1
} curl -X POST 'https://caserol.vesselpos.com/api/products' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer TU_TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"name": "CAPUCHINO",
"sku": "CAP-001",
"category": "hot_drinks",
"price": 65,
"cost": 22,
"is_active": 1,
"visible_pos": 1,
"visible_app": 1,
"visible_kiosk": 1
}'
curl -X GET 'https://caserol.vesselpos.com/api/products/{product_id}' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer TU_TOKEN'
Envía solamente los campos que desees modificar.
{
"price": 68,
"visible_kiosk": 1
} curl -X PUT 'https://caserol.vesselpos.com/api/products/{product_id}' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer TU_TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"price": 68,
"visible_kiosk": 1
}'
curl -X DELETE 'https://caserol.vesselpos.com/api/products/{product_id}' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer TU_TOKEN'
curl -X GET 'https://caserol.vesselpos.com/api/categories?page=1&per_page=50' \ -H 'Accept: application/json' \ -H 'Authorization: Bearer TU_TOKEN'
{
"code": "desserts",
"name": "POSTRES",
"is_active": 1,
"visible_pos": 1
} curl -X POST 'https://caserol.vesselpos.com/api/categories' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer TU_TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"code": "desserts",
"name": "POSTRES",
"is_active": 1,
"visible_pos": 1
}'
curl -X GET 'https://caserol.vesselpos.com/api/categories/{category_id}' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer TU_TOKEN'
{
"name": "POSTRES Y PANADERÍA"
} curl -X PUT 'https://caserol.vesselpos.com/api/categories/{category_id}' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer TU_TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"name": "POSTRES Y PANADERÍA"
}'
curl -X DELETE 'https://caserol.vesselpos.com/api/categories/{category_id}' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer TU_TOKEN'
curl -X GET 'https://caserol.vesselpos.com/api/addons?is_active=1' \ -H 'Accept: application/json' \ -H 'Authorization: Bearer TU_TOKEN'
curl -X GET 'https://caserol.vesselpos.com/api/addons/groups' \ -H 'Accept: application/json' \ -H 'Authorization: Bearer TU_TOKEN'
{
"name": "LECHE DE AVENA",
"group_code": "milk",
"group_name": "Leche",
"price": 12,
"is_active": 1
} curl -X POST 'https://caserol.vesselpos.com/api/addons' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer TU_TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"name": "LECHE DE AVENA",
"group_code": "milk",
"group_name": "Leche",
"price": 12,
"is_active": 1
}'
curl -X GET 'https://caserol.vesselpos.com/api/addons/{addon_id}' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer TU_TOKEN'
{
"price": 14
} curl -X PUT 'https://caserol.vesselpos.com/api/addons/{addon_id}' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer TU_TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"price": 14
}'
curl -X DELETE 'https://caserol.vesselpos.com/api/addons/{addon_id}' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer TU_TOKEN'
Publicaciones visibles en la aplicación del cliente.
curl -X GET 'https://caserol.vesselpos.com/api/posts?page=1&per_page=20' \ -H 'Accept: application/json' \ -H 'Authorization: Bearer TU_TOKEN'
{
"type": "news",
"title": "Nueva temporada",
"status": "active",
"summary": "Conoce las novedades.",
"body": "<p>Contenido de la publicación.</p>"
} curl -X POST 'https://caserol.vesselpos.com/api/posts' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer TU_TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"type": "news",
"title": "Nueva temporada",
"status": "active",
"summary": "Conoce las novedades.",
"body": "<p>Contenido de la publicación.</p>"
}'
curl -X GET 'https://caserol.vesselpos.com/api/posts/{post_id}' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer TU_TOKEN'
{
"title": "Nueva temporada 2026",
"status": "active"
} curl -X PUT 'https://caserol.vesselpos.com/api/posts/{post_id}' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer TU_TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"title": "Nueva temporada 2026",
"status": "active"
}'
curl -X DELETE 'https://caserol.vesselpos.com/api/posts/{post_id}' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer TU_TOKEN'
Promociones y reglas para otorgar puntos.
curl -X GET 'https://caserol.vesselpos.com/api/promos?active=1' \ -H 'Accept: application/json' \ -H 'Authorization: Bearer TU_TOKEN'
{
"name": "2x1 del martes",
"description": "Promoción válida los martes.",
"start_date": "2026-09-15 00:00:00",
"end_date": "2026-12-31 23:59:59",
"status": "active",
"is_active": 1,
"product_ids": [
1
]
} curl -X POST 'https://caserol.vesselpos.com/api/promos' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer TU_TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"name": "2x1 del martes",
"description": "Promoción válida los martes.",
"start_date": "2026-09-15 00:00:00",
"end_date": "2026-12-31 23:59:59",
"status": "active",
"is_active": 1,
"product_ids": [
1
]
}'
curl -X GET 'https://caserol.vesselpos.com/api/promos/{promo_id}' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer TU_TOKEN'
{
"status": "paused",
"is_active": 0
} curl -X PUT 'https://caserol.vesselpos.com/api/promos/{promo_id}' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer TU_TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"status": "paused",
"is_active": 0
}'
curl -X DELETE 'https://caserol.vesselpos.com/api/promos/{promo_id}' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer TU_TOKEN'
curl -X GET 'https://caserol.vesselpos.com/api/loyalty-points/rules' \ -H 'Accept: application/json' \ -H 'Authorization: Bearer TU_TOKEN'
curl -X GET 'https://caserol.vesselpos.com/api/loyalty-points/rules/{rule_id}' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer TU_TOKEN'
Para actualizar incluye id.
{
"name": "Regla general",
"min_spend": 0,
"max_spend": 1000,
"points_per_mxn": 0.1,
"is_active": 1
} curl -X POST 'https://caserol.vesselpos.com/api/loyalty-points/rules' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer TU_TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"name": "Regla general",
"min_spend": 0,
"max_spend": 1000,
"points_per_mxn": 0.1,
"is_active": 1
}'
curl -X DELETE 'https://caserol.vesselpos.com/api/loyalty-points/rules/{rule_id}' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer TU_TOKEN'
Configuración del punto de venta y control de sesiones de caja.
curl -X GET 'https://caserol.vesselpos.com/api/pos/branches' \ -H 'Accept: application/json' \ -H 'Authorization: Bearer TU_TOKEN'
curl -X GET 'https://caserol.vesselpos.com/api/pos/registers?branch_id={branch_id}' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer TU_TOKEN'
{
"branch_id": 1,
"name": "Caja principal",
"serial_number": "POS-001",
"status": "active"
} curl -X POST 'https://caserol.vesselpos.com/api/pos/registers' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer TU_TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"branch_id": 1,
"name": "Caja principal",
"serial_number": "POS-001",
"status": "active"
}'
curl -X GET 'https://caserol.vesselpos.com/api/pos/registers/{cash_register_id}' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer TU_TOKEN'
{
"name": "Caja principal 1"
} curl -X PUT 'https://caserol.vesselpos.com/api/pos/registers/{cash_register_id}' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer TU_TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"name": "Caja principal 1"
}'
curl -X DELETE 'https://caserol.vesselpos.com/api/pos/registers/{cash_register_id}' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer TU_TOKEN'
curl -X GET 'https://caserol.vesselpos.com/api/pos/sessions?cash_register_id={cash_register_id}' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer TU_TOKEN'
curl -X GET 'https://caserol.vesselpos.com/api/pos/sessions/current?cash_register_id={cash_register_id}' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer TU_TOKEN'
{
"cash_register_id": 1,
"opening_amount": 1000
} curl -X POST 'https://caserol.vesselpos.com/api/pos/sessions/open' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer TU_TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"cash_register_id": 1,
"opening_amount": 1000
}'
{
"session_id": 1,
"counted_amount": 3450.5
} curl -X POST 'https://caserol.vesselpos.com/api/pos/sessions/close' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer TU_TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"session_id": 1,
"counted_amount": 3450.5
}'
Creación segura, consulta y actualización del ciclo operativo del pedido.
Admite status, source, branch_id, cash_register_id, customer_id, q, page y per_page.
curl -X GET 'https://caserol.vesselpos.com/api/orders?status=cart&page=1&per_page=20' \ -H 'Accept: application/json' \ -H 'Authorization: Bearer TU_TOKEN'
Busca por ID, folio, nombre del cliente o referencia de pago. También admite status, source, branch_id, cash_register_id y customer_id.
curl -X GET 'https://caserol.vesselpos.com/api/orders/search?q={order_query}&page=1&per_page=20' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer TU_TOKEN'
Usa Idempotency-Key. El servidor ignora precios enviados y los calcula desde el catálogo.
Idempotency-Key: pedido-externo-000001
{
"branch_id": 1,
"cash_register_id": 1,
"cash_session_id": 1,
"customer_id": null,
"pos_customer_name": "Público General",
"source": "api",
"ticket_type": "takeaway",
"status": "cart",
"payment_status": "open",
"items": [
{
"product_id": 1,
"qty": 2,
"selection": {
"presentation_group_id": "base_group",
"presentation_id": "base",
"single_groups": {
"milk": "LECHE DE AVENA"
},
"multi_groups": {
"extras": [
"SHOT EXTRA"
]
},
"notes": "Sin azúcar",
"takeaway": true
}
}
]
} curl -X POST 'https://caserol.vesselpos.com/api/orders' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer TU_TOKEN' \
-H 'Idempotency-Key: pedido-externo-000001' \
-H 'Content-Type: application/json' \
-d '{
"branch_id": 1,
"cash_register_id": 1,
"cash_session_id": 1,
"customer_id": null,
"pos_customer_name": "Público General",
"source": "api",
"ticket_type": "takeaway",
"status": "cart",
"payment_status": "open",
"items": [
{
"product_id": 1,
"qty": 2,
"selection": {
"presentation_group_id": "base_group",
"presentation_id": "base",
"single_groups": {
"milk": "LECHE DE AVENA"
},
"multi_groups": {
"extras": [
"SHOT EXTRA"
]
},
"notes": "Sin azúcar",
"takeaway": true
}
}
]
}'
También acepta el código de pedido en lugar del ID.
curl -X GET 'https://caserol.vesselpos.com/api/orders/{order_id}' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer TU_TOKEN'
{
"status": "preparing",
"internal_state": "preparation"
} curl -X PUT 'https://caserol.vesselpos.com/api/orders/{order_id}' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer TU_TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"status": "preparing",
"internal_state": "preparation"
}'
{
"status": "ready",
"internal_state": "ready",
"kitchen_status": "ready"
} curl -X POST 'https://caserol.vesselpos.com/api/orders/{order_id}/status' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer TU_TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"status": "ready",
"internal_state": "ready",
"kitchen_status": "ready"
}'
curl -X DELETE 'https://caserol.vesselpos.com/api/orders/{order_id}' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer TU_TOKEN'
Indicadores de ventas, productos, promociones, puntos, usuarios, cajas e inventario por almacén.
El rango máximo es de 366 días. branch_id es opcional; omítelo para consolidar todas las sucursales. Devuelve ventas, ingresos por fecha y día de semana, productos, promociones, métodos de pago, sucursales, cajas e inventario por almacén. Cada almacén incluye los totales y el detalle de existencias, consumo y consumo sin respaldo.
curl -X GET 'https://caserol.vesselpos.com/api/reports/analytics?date_from={report_date_from}&date_to={report_date_to}&branch_id={report_branch_id}' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer TU_TOKEN'