Autenticación
La API de Integración de SalesOS usa el esquema de peticiones firmadas P2S-SIGN-V1 en el headerAuthorization. Las API Keys tienen alcance a un solo tenant, se hashean con bcrypt y soportan límites de tasa y listas de IPs permitidas.
Entornos
- Production
- Staging
URL Base:
https://api.play2sell.comDashboard: https://dashboard.play2sell.comApp: https://app.play2sell.comInicio Rápido
1. Crear una API Key
Ve a Integraciones > API Keys en el Dashboard de SalesOS:- Haz clic en Crear API Key
- Nombra tu clave (ej., “Sincronización Nocturna CRM”, “Integración Formulario Web”)
- Selecciona el alcance:
default:sync - Haz clic en Crear
- Copia los dos valores inmediatamente — solo se muestran una vez:
- API Key — identificador público, ej.
sk_live_a1b2c3d4... - API Key Secret — usado para firmar peticiones, nunca se envía por la red
- API Key — identificador público, ej.
2. Firma y Envía una Petición
Para llamadas server-to-server, construye el headerAuthorization como P2S-SIGN-V1 API_KEY:TIMESTAMP:SIGNATURE. La SIGNATURE es el HMAC-SHA256 hex de una cadena de claves derivadas en 5 pasos:
k1 = HMAC_SHA256(key=API_KEY_SECRET, msg=API_KEY)k2 = HMAC_SHA256(key=k1, msg=TIMESTAMP)k3 = HMAC_SHA256(key=k2, msg=METHOD)k4 = HMAC_SHA256(key=k3, msg=PATH)SIG = HMAC_SHA256_HEX(key=k4, msg=PAYLOAD_SHA256_HEX)
TIMESTAMP es Unix epoch en segundos, válido por 30 segundos. PAYLOAD_SHA256_HEX es el SHA-256 hex en minúsculas del cuerpo bruto de la petición (usa el digest de la cadena vacía e3b0c4...b855 cuando no haya body).
- Node.js
- Python
- Bash
3. Verificar la Respuesta
Éxito (200):Propiedades de la API Key
Formatos de Clave
SalesOS usa dos prefijos de clave para distinguir ambientes:Errores de Autenticación
Ejemplo: Header Authorization faltante
Ejemplo: Firma inválida
Una firma que no coincide con la que recalcula el servidor — generalmente causada por un cambio en el body después de firmar, una divergencia en la canonicalización del path, o una clave desactualizada:Ejemplo: Timestamp fuera de la ventana de 30s
Ejemplo: Clave sin el alcance requerido
Si tu clave solo tieneleads:read pero el endpoint requiere default:sync:
Ejemplo: Límite de tasa excedido
retry_after indica cuántos segundos debes esperar. La ventana de límite de tasa se reinicia cada hora.
Límites de Tasa
Cada API key tiene un contador de límite de tasa independiente que se reinicia cada hora:
Cómo funciona:
- Cada solicitud exitosa incrementa el contador
- Cuando el contador alcanza el límite, las solicitudes siguientes retornan
429 - El contador se reinicia a 0 una hora después de la primera solicitud en la ventana
Mejores Prácticas de Seguridad
- Usa variables de entorno — Almacena
SALESOS_API_KEYen variables de entorno o un gestor de secretos, nunca en el código fuente - Rota las claves periódicamente — Crea una nueva clave, actualiza tu integración, luego revoca la anterior
- Usa listas de IPs permitidas — Si tu integración se ejecuta desde IPs fijas, restringe la clave solo a esas IPs
- Monitorea el uso — Revisa los logs de uso de la API en el Dashboard para detectar patrones inesperados
- Usa
sk_test_para desarrollo — Las claves de prueba aíslan tu ambiente de desarrollo de producción - Revoca claves comprometidas inmediatamente — Ve a Dashboard > Admin > API Keys > Revocar
Ejemplo de rotación de claves
Proximos Pasos
Integracion por Defecto
Comienza a enviar actividades a SalesOS
API Keys
Gestiona claves programaticamente

