API
Esta API permite que sistemas externos (tu web, app o ERP) creen pedidos automáticamente en tu cuenta KambaChat. Los ped…
# API KambaChat — para desarrolladores
Esta API permite que sistemas externos (tu web, app o ERP) creen pedidos automáticamente en tu cuenta KambaChat. Los pedidos entran en el panel y siguen el flujo normal: confirmar y concluir.
> Disponibilidad (GEO) — Los escaparates son exclusivos de Angola. Esta API crea pedidos en tu escaparate digital, por lo que aplica a vendedores en Angola. Usuarios internacionales: KambaChat se centra en la automatización con IA de WhatsApp, Facebook e Instagram — el escaparate y la API de pedidos no están disponibles fuera de Angola.
1. Autenticación
La autenticación se hace con una clave secreta en la cabecera de cada petición.
1. Crea una clave en Panel → Ajustes → Claves API: dale un nombre y (opcional) una expiración, y pulsa Crear Clave.
2. La clave (af_...) se muestra una sola vez. Se guarda cifrada (SHA-256) — nunca recuperable. Mantenla en secreto.
3. Envíala en cada petición en la cabecera: Authorization: Bearer af_...
Seguridad
- La clave nunca se guarda en texto plano — solo su hash.
- Puedes definir expiración (30/90/365 días) y eliminar una clave en cualquier momento (revoca al instante).
- Límites: 60/min por IP y 120/min por clave.
- Nunca expongas la clave en el frontend/navegador — úsala solo en el servidor.
2. Crear un pedido
POST /api/webhooks/orders
Crea un pedido en tu cuenta (estado Pendiente) y te envía una notificación.
| Campo | Tipo | Obligatorio | Descripción |
|---|---|---|---|
| customerName | string | ✅ | Nombre del cliente |
| customerPhone | string | ✅ | Teléfono del cliente |
| customerEmail | string | — | Correo del cliente |
| address | string | — | Dirección del cliente (opcional) |
| notes | string | — | Notas del pedido |
| channel | string | — | Canal de origen (ej. WHATSAPP, por defecto WHATSAPP) |
| items | array | — | Ítems: lista de { productId, quantity } (el total se calcula) |
| total | number | — | Total (solo si no envías items) |
Ejemplo
```bash
curl -X POST https://kambachat.com/api/webhooks/orders \
-H "Authorization: Bearer af_xxxxxxxx..." \
-H "Content-Type: application/json" \
-d '{
"customerName": "Ana Silva",
"customerPhone": "+244923000000",
"customerEmail": "ana@exemplo.com",
"address": "Kilamba, Luanda",
"channel": "WHATSAPP",
"notes": "Cliente VIP — contactar por WhatsApp",
"items": [
{ "productId": "PRODUCT_ID_1", "quantity": 2 },
{ "productId": "PRODUCT_ID_2", "quantity": 1 }
]
}'
```
Respuesta (201)
```json
{ "success": true, "orderNumber": "WA12345678", "orderId": "ckx...", "total": 7500 }
```
Los productId deben pertenecer a tu cuenta. Con items, el total se recalcula con los precios reales de los productos.
3. Obtener el catálogo público
GET /api/webhooks/orders?store=SLUG
Devuelve los datos públicos del escaparate (nombre, productos activos, config de IA) por el *slug*. Sin clave (público).
```bash
curl "https://kambachat.com/api/webhooks/orders?store=a-minha-loja"
```
4. Códigos de estado
| Código | Significado |
|---|---|
| 401 | Clave ausente, inválida o expirada |
| 404 | Escaparate no encontrado (ninguno → ver regla GEO) |
| 429 | Demasiadas peticiones (límite) |
| 201 | Pedido creado con éxito |