Caserol API ↓ Descargar Postman
Vessel POS · REST API

Conecta tu operación con el POS.

Consulta el catálogo, crea pedidos, administra terminales y sincroniza contenido utilizando respuestas JSON y autenticación Bearer.

Base URL https://caserol.vesselpos.com/

Inicio rápido

Tres pasos para realizar la primera solicitud autenticada.

01

Genera un token

Envía correo y contraseña a POST /api/login. Postman guarda el token automáticamente.

02

Usa Bearer Auth

Agrega Authorization: Bearer TU_TOKEN a cada endpoint protegido.

03

Respeta el tenant

Utiliza el dominio del comercio. El token y los datos siempre quedan aislados por tenant.

i
Pedidos sin duplicados. En POST /api/orders envía un Idempotency-Key único por intento lógico. Si la red repite la solicitud, recibirás el mismo pedido.

Formato de respuestas

Las respuestas exitosas comparten la misma envoltura; los errores incluyen estado y mensaje legible.

Éxito
{
  "status": 200,
  "success": true,
  "message": "OK",
  "data": {}
}
Error
{
  "status": 422,
  "success": false,
  "message": "Error de validación.",
  "errors": []
}
!
Límites: login permite 10 intentos por minuto. Cada Bearer Token admite hasta 600 solicitudes por minuto. Los códigos más comunes son 401, 403, 404, 409, 422 y 429.

Autenticación

Obtén el Bearer Token que se utiliza en el resto de solicitudes.

POST/api/loginGenerar token⌄

Autentica por correo y contraseña. Máximo 10 intentos por minuto y combinación de IP/correo.

Público
Body JSON
{
    "email": "usuario@empresa.com",
    "password": "tu-contraseña",
    "token_name": "Integración ERP"
}
Ejemplo cURL
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"
}'

Catálogo

Productos, categorías y adicionales del tenant del dominio.

GET/api/products?is_active=1&page=1&per_page=20Listar productos⌄

Admite q, category, is_active, page y per_page.

api.catalog.read
Ejemplo cURL
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'
GET/api/products/search?q={product_query}&is_active=1&page=1&per_page=20Buscar productos⌄

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.

api.catalog.read
Ejemplo cURL
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'
POST/api/productsCrear producto⌄

Crea un producto dentro del tenant autenticado.

api.catalog.write
Body JSON
{
    "name": "CAPUCHINO",
    "sku": "CAP-001",
    "category": "hot_drinks",
    "price": 65,
    "cost": 22,
    "is_active": 1,
    "visible_pos": 1,
    "visible_app": 1,
    "visible_kiosk": 1
}
Ejemplo cURL
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
}'
GET/api/products/{product_id}Consultar producto⌄
api.catalog.read
Ejemplo cURL
curl -X GET 'https://caserol.vesselpos.com/api/products/{product_id}' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer TU_TOKEN'
PUT/api/products/{product_id}Actualizar producto⌄

Envía solamente los campos que desees modificar.

api.catalog.write
Body JSON
{
    "price": 68,
    "visible_kiosk": 1
}
Ejemplo cURL
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
}'
DELETE/api/products/{product_id}Eliminar producto⌄
api.catalog.write
Ejemplo cURL
curl -X DELETE 'https://caserol.vesselpos.com/api/products/{product_id}' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer TU_TOKEN'
GET/api/categories?page=1&per_page=50Listar categorías⌄
api.catalog.read
Ejemplo cURL
curl -X GET 'https://caserol.vesselpos.com/api/categories?page=1&per_page=50' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer TU_TOKEN'
POST/api/categoriesCrear categoría⌄
api.catalog.write
Body JSON
{
    "code": "desserts",
    "name": "POSTRES",
    "is_active": 1,
    "visible_pos": 1
}
Ejemplo cURL
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
}'
GET/api/categories/{category_id}Consultar categoría⌄
api.catalog.read
Ejemplo cURL
curl -X GET 'https://caserol.vesselpos.com/api/categories/{category_id}' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer TU_TOKEN'
PUT/api/categories/{category_id}Actualizar categoría⌄
api.catalog.write
Body JSON
{
    "name": "POSTRES Y PANADERÍA"
}
Ejemplo cURL
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"
}'
DELETE/api/categories/{category_id}Eliminar categoría⌄
api.catalog.write
Ejemplo cURL
curl -X DELETE 'https://caserol.vesselpos.com/api/categories/{category_id}' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer TU_TOKEN'
GET/api/addons?is_active=1Listar adicionales⌄
api.catalog.read
Ejemplo cURL
curl -X GET 'https://caserol.vesselpos.com/api/addons?is_active=1' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer TU_TOKEN'
GET/api/addons/groupsListar grupos de adicionales⌄
api.catalog.read
Ejemplo cURL
curl -X GET 'https://caserol.vesselpos.com/api/addons/groups' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer TU_TOKEN'
POST/api/addonsCrear adicional⌄
api.catalog.write
Body JSON
{
    "name": "LECHE DE AVENA",
    "group_code": "milk",
    "group_name": "Leche",
    "price": 12,
    "is_active": 1
}
Ejemplo cURL
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
}'
GET/api/addons/{addon_id}Consultar adicional⌄
api.catalog.read
Ejemplo cURL
curl -X GET 'https://caserol.vesselpos.com/api/addons/{addon_id}' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer TU_TOKEN'
PUT/api/addons/{addon_id}Actualizar adicional⌄
api.catalog.write
Body JSON
{
    "price": 14
}
Ejemplo cURL
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
}'
DELETE/api/addons/{addon_id}Eliminar adicional⌄
api.catalog.write
Ejemplo cURL
curl -X DELETE 'https://caserol.vesselpos.com/api/addons/{addon_id}' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer TU_TOKEN'

Contenido

Publicaciones visibles en la aplicación del cliente.

GET/api/posts?page=1&per_page=20Listar publicaciones⌄
api.content.read
Ejemplo cURL
curl -X GET 'https://caserol.vesselpos.com/api/posts?page=1&per_page=20' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer TU_TOKEN'
POST/api/postsCrear publicación⌄
api.content.write
Body JSON
{
    "type": "news",
    "title": "Nueva temporada",
    "status": "active",
    "summary": "Conoce las novedades.",
    "body": "<p>Contenido de la publicación.</p>"
}
Ejemplo cURL
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>"
}'
GET/api/posts/{post_id}Consultar publicación⌄
api.content.read
Ejemplo cURL
curl -X GET 'https://caserol.vesselpos.com/api/posts/{post_id}' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer TU_TOKEN'
PUT/api/posts/{post_id}Actualizar publicación⌄
api.content.write
Body JSON
{
    "title": "Nueva temporada 2026",
    "status": "active"
}
Ejemplo cURL
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"
}'
DELETE/api/posts/{post_id}Eliminar publicación⌄
api.content.write
Ejemplo cURL
curl -X DELETE 'https://caserol.vesselpos.com/api/posts/{post_id}' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer TU_TOKEN'

Marketing y lealtad

Promociones y reglas para otorgar puntos.

GET/api/promos?active=1Listar promociones⌄
api.marketing.read
Ejemplo cURL
curl -X GET 'https://caserol.vesselpos.com/api/promos?active=1' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer TU_TOKEN'
POST/api/promosCrear promoción⌄
api.marketing.write
Body JSON
{
    "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
    ]
}
Ejemplo cURL
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
    ]
}'
GET/api/promos/{promo_id}Consultar promoción⌄
api.marketing.read
Ejemplo cURL
curl -X GET 'https://caserol.vesselpos.com/api/promos/{promo_id}' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer TU_TOKEN'
PUT/api/promos/{promo_id}Actualizar promoción⌄
api.marketing.write
Body JSON
{
    "status": "paused",
    "is_active": 0
}
Ejemplo cURL
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
}'
DELETE/api/promos/{promo_id}Eliminar promoción⌄
api.marketing.write
Ejemplo cURL
curl -X DELETE 'https://caserol.vesselpos.com/api/promos/{promo_id}' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer TU_TOKEN'
GET/api/loyalty-points/rulesListar reglas de puntos⌄
api.loyalty.read
Ejemplo cURL
curl -X GET 'https://caserol.vesselpos.com/api/loyalty-points/rules' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer TU_TOKEN'
GET/api/loyalty-points/rules/{rule_id}Consultar regla⌄
api.loyalty.read
Ejemplo cURL
curl -X GET 'https://caserol.vesselpos.com/api/loyalty-points/rules/{rule_id}' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer TU_TOKEN'
POST/api/loyalty-points/rulesCrear o actualizar regla⌄

Para actualizar incluye id.

api.loyalty.write
Body JSON
{
    "name": "Regla general",
    "min_spend": 0,
    "max_spend": 1000,
    "points_per_mxn": 0.1,
    "is_active": 1
}
Ejemplo cURL
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
}'
DELETE/api/loyalty-points/rules/{rule_id}Eliminar regla⌄
api.loyalty.write
Ejemplo cURL
curl -X DELETE 'https://caserol.vesselpos.com/api/loyalty-points/rules/{rule_id}' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer TU_TOKEN'

Sucursales, terminales y cajas

Configuración del punto de venta y control de sesiones de caja.

GET/api/pos/branchesListar sucursales⌄
api.pos.read
Ejemplo cURL
curl -X GET 'https://caserol.vesselpos.com/api/pos/branches' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer TU_TOKEN'
GET/api/pos/registers?branch_id={branch_id}Listar terminales⌄
api.pos.read
Ejemplo cURL
curl -X GET 'https://caserol.vesselpos.com/api/pos/registers?branch_id={branch_id}' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer TU_TOKEN'
POST/api/pos/registersCrear terminal⌄
api.pos.write
Body JSON
{
    "branch_id": 1,
    "name": "Caja principal",
    "serial_number": "POS-001",
    "status": "active"
}
Ejemplo cURL
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"
}'
GET/api/pos/registers/{cash_register_id}Consultar terminal⌄
api.pos.read
Ejemplo cURL
curl -X GET 'https://caserol.vesselpos.com/api/pos/registers/{cash_register_id}' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer TU_TOKEN'
PUT/api/pos/registers/{cash_register_id}Actualizar terminal⌄
api.pos.write
Body JSON
{
    "name": "Caja principal 1"
}
Ejemplo cURL
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"
}'
DELETE/api/pos/registers/{cash_register_id}Eliminar terminal⌄
api.pos.write
Ejemplo cURL
curl -X DELETE 'https://caserol.vesselpos.com/api/pos/registers/{cash_register_id}' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer TU_TOKEN'
GET/api/pos/sessions?cash_register_id={cash_register_id}Listar sesiones de caja⌄
api.cash.read
Ejemplo cURL
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'
GET/api/pos/sessions/current?cash_register_id={cash_register_id}Consultar sesión abierta⌄
api.cash.read
Ejemplo cURL
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'
POST/api/pos/sessions/openAbrir caja⌄
api.cash.write
Body JSON
{
    "cash_register_id": 1,
    "opening_amount": 1000
}
Ejemplo cURL
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
}'
POST/api/pos/sessions/closeCerrar caja⌄
api.cash.write
Body JSON
{
    "session_id": 1,
    "counted_amount": 3450.5
}
Ejemplo cURL
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
}'

Pedidos

Creación segura, consulta y actualización del ciclo operativo del pedido.

GET/api/orders?status=cart&page=1&per_page=20Listar pedidos⌄

Admite status, source, branch_id, cash_register_id, customer_id, q, page y per_page.

api.orders.read
Ejemplo cURL
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'
GET/api/orders/search?q={order_query}&page=1&per_page=20Buscar pedidos⌄

Busca por ID, folio, nombre del cliente o referencia de pago. También admite status, source, branch_id, cash_register_id y customer_id.

api.orders.read
Ejemplo cURL
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'
POST/api/ordersCrear pedido⌄

Usa Idempotency-Key. El servidor ignora precios enviados y los calcula desde el catálogo.

api.orders.create
Headers adicionales
Idempotency-Key: pedido-externo-000001
Body JSON
{
    "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
            }
        }
    ]
}
Ejemplo cURL
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
            }
        }
    ]
}'
GET/api/orders/{order_id}Consultar pedido⌄

También acepta el código de pedido en lugar del ID.

api.orders.read
Ejemplo cURL
curl -X GET 'https://caserol.vesselpos.com/api/orders/{order_id}' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer TU_TOKEN'
PUT/api/orders/{order_id}Actualizar pedido⌄
api.orders.update
Body JSON
{
    "status": "preparing",
    "internal_state": "preparation"
}
Ejemplo cURL
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"
}'
POST/api/orders/{order_id}/statusActualizar estado operativo⌄
api.orders.update
Body JSON
{
    "status": "ready",
    "internal_state": "ready",
    "kitchen_status": "ready"
}
Ejemplo cURL
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"
}'
DELETE/api/orders/{order_id}Cancelar pedido⌄
api.orders.cancel
Ejemplo cURL
curl -X DELETE 'https://caserol.vesselpos.com/api/orders/{order_id}' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer TU_TOKEN'

Reportes y estadísticas

Indicadores de ventas, productos, promociones, puntos, usuarios, cajas e inventario por almacén.

GET/api/reports/analytics?date_from={report_date_from}&date_to={report_date_to}&branch_id={report_branch_id}Consultar reporte analítico⌄

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.

api.reports.read
Ejemplo cURL
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'
No encontramos endpoints.
Prueba con otra palabra o permiso.