Autenticação
A API de Integração SalesOS usa o esquema de requisições assinadas P2S-SIGN-V1 no headerAuthorization. As API Keys têm escopo em um único tenant, são hasheadas com bcrypt e suportam rate limiting e listas de IPs permitidos.
Ambientes
- Production
- Staging
URL Base:
https://api.play2sell.comDashboard: https://dashboard.play2sell.comApp: https://app.play2sell.comInício Rápido
1. Crie uma API Key
Acesse Integracoes > API Keys no Dashboard SalesOS:- Clique em Criar API Key
- Nomeie sua chave (ex.: “Sincronização CRM Noturna”, “Integração Formulário Website”)
- Selecione o escopo:
default:sync - Clique em Criar
- Copie os dois valores imediatamente — só são exibidos uma vez:
- API Key — identificador público, ex.
sk_live_a1b2c3d4... - API Key Secret — usado para assinar requisições, nunca é enviado pela rede
- API Key — identificador público, ex.
2. Assine e Envie uma Requisição
Para chamadas server-to-server, monte o headerAuthorization como P2S-SIGN-V1 API_KEY:TIMESTAMP:SIGNATURE. A SIGNATURE é o HMAC-SHA256 hex de uma cadeia de chaves derivada em 5 passos:
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 é Unix epoch em segundos, válido por 30 segundos. PAYLOAD_SHA256_HEX é o SHA-256 hex em minúsculas do corpo bruto da requisição (use o digest da string vazia e3b0c4...b855 quando não houver body).
- Node.js
- Python
- Bash
3. Verifique a Resposta
Sucesso (200):Propriedades da API Key
Formatos de Chave
O SalesOS usa dois prefixos de chave para distinguir ambientes:Erros de Autenticação
Exemplo: Header Authorization ausente
Exemplo: Assinatura inválida
Uma assinatura que não bate com o que o servidor recalcula — geralmente causada por mudança no body após assinar, divergência na canonicalização do path, ou chave desatualizada:Exemplo: Timestamp fora da janela de 30s
Exemplo: Chave sem o escopo necessário
Se sua chave possui apenasleads:read mas o endpoint requer default:sync:
Exemplo: Rate limit excedido
retry_after indica quantos segundos aguardar. A janela de rate limit é reiniciada a cada hora.
Rate Limits
Cada API key possui um contador de rate limit independente que é reiniciado a cada hora:
Como funciona:
- Cada requisição bem-sucedida incrementa o contador
- Quando o contador atinge o limite, requisições seguintes retornam
429 - O contador é reiniciado para 0 uma hora após a primeira requisição na janela
Boas Práticas de Segurança
- Use variáveis de ambiente — Armazene
SALESOS_API_KEYem variáveis de ambiente ou em um gerenciador de segredos, nunca no código-fonte - Rotacione as chaves periodicamente — Crie uma nova chave, atualize sua integração e depois revogue a antiga
- Use listas de IPs permitidos — Se sua integração roda a partir de IPs fixos, restrinja a chave apenas a esses IPs
- Monitore o uso — Verifique os logs de uso da API no Dashboard para padrões inesperados
- Use
sk_test_para desenvolvimento — Chaves de teste isolam seu ambiente de desenvolvimento da produção - Revogue chaves comprometidas imediatamente — Acesse Dashboard > Admin > API Keys > Revogar
Exemplo de rotação de chaves
Proximos Passos
Integracao Padrao
Comece a enviar atividades para o SalesOS
API Keys
Gerencie chaves programaticamente

