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
Todo rechazo de la capa de autenticación tiene el mismo formato:error es un string legible y code es estable — ramifica por code, nunca por el texto.
Ejemplo: Clave sin el alcance requerido
missing_scopes solo aparece en este caso.
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 petición autenticada y autorizada cuenta en la ventana de la clave (los rechazos de autenticación no cuentan)
- La ventana es de una hora desde la primera petición
- Hoy el límite se mide, pero no bloquea. Cuando se active el bloqueo, el exceso responderá
429concode: "rate_limited"y el headerRetry-Afteren segundos — manéjalo desde ya
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

