API
Integra Micuadre POS con tus propias herramientas.
Integra Micuadre POS con tus propias herramientas.
La API de Micuadre POS te permite integrar el punto de venta con sistemas externos, automatizar operaciones y construir integraciones personalizadas. Utilizamos una arquitectura REST combinada con WebSockets para garantizar sincronización en tiempo real.
Todas las respuestas se entregan en formato JSON. La base URL para todas las peticiones es https://api.micuadre.com/v1.
Cada petición debe incluir tu API key en el header X-API-Key. Puedes generar tu API key desde el panel de administración del sistema.
X-API-Key: mca_live_a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6
Si la API key es inválida o no se envía, recibirás un error 401 Unauthorized.
Estos son los endpoints disponibles en la versión actual de la API:
| Método | Ruta | Descripción |
|---|---|---|
| GET | /api/state |
Obtiene el estado completo del sistema: caja, turno activo, productos y configuración actual. |
| POST | /api/sale |
Registra una venta. El body debe incluir productos, cantidades y forma de pago. |
| POST | /api/product |
Crea o actualiza un producto en el inventario. Usa id para actualizar uno existente. |
| POST | /api/settings |
Actualiza la configuración del sistema: impuestos, moneda, horarios y preferencias. |
| POST | /api/warehouse |
Gestiona el warehouse: ajustes de stock, transferencias entre almacenes y recepción de mercancía. |
| POST | /api/purchase |
Registra una orden de compra a proveedor con los productos y cantidades recibidas. |
| POST | /api/history/revert |
Revierte una venta o movimiento previamente registrado. Requiere el ID de la transacción original. |
| GET | /api/download |
Descarga un reporte en PDF o CSV según los parámetros especificados en la consulta. |
Micuadre POS utiliza WebSockets para mantener todos los puntos de venta sincronizados en tiempo real. Puedes suscribirte a eventos específicos para reaccionar a cambios al instante.
Conéctate a wss://api.micuadre.com/v1/ws incluyendo tu API key como query parameter ?api_key=.
const ws = new WebSocket('wss://api.micuadre.com/v1/ws?api_key=mca_live_a1b2c3d4e5');
ws.onmessage = function(event) {
const data = JSON.parse(event.data);
console.log('Evento recibido:', data);
};
Los eventos disponibles incluyen sale.created, product.updated, stock.changed y shift.opened.
A continuación se muestran ejemplos con curl para cada endpoint.
curl -H "X-API-Key: mca_live_a1b2c3d4e5" \ https://api.micuadre.com/v1/api/state
curl -X POST -H "X-API-Key: mca_live_a1b2c3d4e5" \
-H "Content-Type: application/json" \
-d '{
"products": [
{"id": "prod_001", "qty": 2, "price": 15},
{"id": "prod_002", "qty": 1, "price": 35}
],
"payment": "cash",
"amount_received": 70
}' \
https://api.micuadre.com/v1/api/sale
curl -X POST -H "X-API-Key: mca_live_a1b2c3d4e5" \
-H "Content-Type: application/json" \
-d '{
"name": "Galletas María",
"price": 15,
"cost": 10,
"stock": 100,
"category": "alimentos"
}' \
https://api.micuadre.com/v1/api/product
curl -X POST -H "X-API-Key: mca_live_a1b2c3d4e5" \
-H "Content-Type: application/json" \
-d '{
"tax_rate": 16,
"currency": "MXN",
"store_name": "Tienda Principal",
"open_hours": {"mon-fri": "08:00-20:00"}
}' \
https://api.micuadre.com/v1/api/settings
curl -X POST -H "X-API-Key: mca_live_a1b2c3d4e5" \
-H "Content-Type: application/json" \
-d '{
"action": "adjust",
"product_id": "prod_001",
"quantity": 50,
"reason": "restock"
}' \
https://api.micuadre.com/v1/api/warehouse
curl -X POST -H "X-API-Key: mca_live_a1b2c3d4e5" \
-H "Content-Type: application/json" \
-d '{
"supplier": "Distribuidora ABC",
"items": [
{"product_id": "prod_001", "qty": 100, "unit_cost": 9}
],
"total": 900
}' \
https://api.micuadre.com/v1/api/purchase
curl -X POST -H "X-API-Key: mca_live_a1b2c3d4e5" \
-H "Content-Type: application/json" \
-d '{
"transaction_id": "txn_abc123",
"reason": "Devolución del cliente"
}' \
https://api.micuadre.com/v1/api/history/revert
curl -H "X-API-Key: mca_live_a1b2c3d4e5" \ "https://api.micuadre.com/v1/api/download?type=pdf&from=2026-01-01&to=2026-06-30" \ -o reporte.pdf
La API utiliza códigos de estado HTTP convencionales para indicar el resultado de cada operación.
| Código | Significado | Descripción |
|---|---|---|
200 |
OK | La petición se completó exitosamente. |
201 |
Created | El recurso fue creado correctamente. |
400 |
Bad Request | La solicitud contiene datos inválidos o campos obligatorios faltantes. |
401 |
Unauthorized | API key inválida o no proporcionada. |
403 |
Forbidden | No tienes permisos para acceder a este recurso. |
404 |
Not Found | El recurso solicitado no existe. |
409 |
Conflict | Conflicto con el estado actual del recurso (ej. venta ya revertida). |
429 |
Too Many Requests | Se excedió el límite de peticiones por minuto. |
500 |
Internal Server Error | Error interno del servidor. Intenta nuevamente más tarde. |