Autenticacion
La API de SalonBookIt utiliza dos metodos de autenticacion: API Keys para identificar tu negocio y JWT para autenticar clientes.
Resumen
API Key
Identifica tu negocio en cada peticion. Requerida para todos los endpoints.
- Se obtiene desde el Dashboard
- Se envia en el header
X-API-Key - Prefijo
hh_live_para produccion
JWT Token
Autentica a un cliente especifico. Requerido para endpoints privados.
- Se obtiene via
/api/v1/auth/login/ - Se envia en el header
Authorization - Expira en 24 horas
API Keys
Tu API Key identifica tu negocio y debe incluirse en todas las peticiones a la API.
Obtener tu API Key
- Inicia sesion en tu Dashboard
- Ve a Configuracion → Integraciones
- Haz clic en Generar Nueva API Key
- Asigna un nombre descriptivo (ej: "Widget Web", "App Movil")
- Copia y guarda la API Key de forma segura
Usar la API Key
Incluye tu API Key en el header X-API-Key de cada peticion:
curl -X GET "https://app.salonbookit.com/api/v1/negocio/" \
-H "X-API-Key: hh_live_abc123def456..."
const response = await fetch('https://app.salonbookit.com/api/v1/servicios/', {
headers: {
'X-API-Key': 'hh_live_abc123def456...'
}
});
const data = await response.json();
import requests
response = requests.get(
'https://app.salonbookit.com/api/v1/servicios/',
headers={'X-API-Key': 'hh_live_abc123def456...'}
)
data = response.json()
$ch = curl_init('https://app.salonbookit.com/api/v1/servicios/');
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'X-API-Key: hh_live_abc123def456...'
]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
$data = json_decode($response, true);
Tipos de API Key
| Prefijo | Entorno | Uso |
|---|---|---|
hh_live_ |
Produccion | Datos reales, transacciones reales |
hh_test_ |
Pruebas | Datos de prueba, sin cargos reales |
Nunca incluyas tu API Key en codigo del lado del cliente que sea visible publicamente. Para el widget, usamos una API Key con permisos limitados que solo permite operaciones de lectura y creacion de reservas.
Autenticacion JWT
Los endpoints que requieren autenticacion de cliente utilizan tokens JWT. Estos endpoints incluyen:
- Ver reservas del cliente
- Ver/modificar perfil del cliente
- Consultar puntos de fidelidad
- Ver historial de pedidos
Obtener un token JWT
/api/v1/auth/login/
Request
curl -X POST "https://app.salonbookit.com/api/v1/auth/login/" \
-H "X-API-Key: hh_live_abc123..." \
-H "Content-Type: application/json" \
-d '{
"email": "cliente@ejemplo.com",
"password": "contraseƱa123"
}'
Response (200 OK)
{
"success": true,
"data": {
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"cliente": {
"id": 123,
"nombre": "Juan Garcia",
"email": "cliente@ejemplo.com",
"telefono": "+34612345678"
},
"expires_in": 86400
}
}
Usar el token JWT
Incluye el token en el header Authorization con el prefijo Bearer:
curl -X GET "https://app.salonbookit.com/api/v1/cliente/reservas/" \
-H "X-API-Key: hh_live_abc123..." \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
Renovar el token
Los tokens expiran en 24 horas. Usa el endpoint de refresh para obtener uno nuevo:
/api/v1/auth/refresh/
curl -X POST "https://app.salonbookit.com/api/v1/auth/refresh/" \
-H "X-API-Key: hh_live_abc123..." \
-H "Authorization: Bearer TOKEN_ACTUAL"
Rate Limiting
La API tiene limites de peticiones para garantizar un servicio estable:
| Limite | Ventana | Descripcion |
|---|---|---|
| 120 requests | 1 minuto | Limite general por API Key |
| 20 intentos | 15 minutos | Login (por IP) |
| 10 intentos | 1 hora | Registro (por IP) |
Headers de Rate Limit
Cada respuesta incluye headers informativos:
X-RateLimit-Limit: 120
X-RateLimit-Remaining: 115
X-RateLimit-Reset: 1704067200
| Header | Descripcion |
|---|---|
X-RateLimit-Limit |
Numero maximo de requests permitidos |
X-RateLimit-Remaining |
Requests restantes en la ventana actual |
X-RateLimit-Reset |
Timestamp Unix cuando se reinicia el contador |
Error 429: Too Many Requests
Si excedes el limite, recibiras un error 429:
{
"success": false,
"error": {
"code": "RATE_LIMIT_EXCEEDED",
"message": "Has excedido el limite de requests. Intenta de nuevo en 45 segundos."
}
}
Errores de autenticacion
| Codigo | HTTP Status | Descripcion |
|---|---|---|
MISSING_API_KEY |
401 | No se incluyo el header X-API-Key |
INVALID_API_KEY |
401 | API Key no valida o no encontrada |
API_KEY_DISABLED |
403 | La API Key ha sido desactivada |
API_KEY_EXPIRED |
403 | La API Key ha expirado |
INVALID_TOKEN |
401 | JWT Token invalido o malformado |
TOKEN_EXPIRED |
401 | JWT Token expirado |
INVALID_CREDENTIALS |
401 | Email o contraseƱa incorrectos |