Skip to main content

POST /validate

Valida uma chave de licença em tempo real. Este é o endpoint principal chamado diretamente da sua aplicação para verificar se um usuário tem uma licença ativa antes de conceder acesso a funcionalidades protegidas.
Nunca chame este endpoint diretamente de código client-side expondo seu API key (ex: JavaScript no navegador, app mobile sem ofuscação). Prefira fazer a validação no seu servidor backend, que então informa o resultado à aplicação client. Se precisar validar no cliente, use ofuscação de chave e considere os riscos de segurança envolvidos.

Parâmetros da requisição

key
string
required
A chave de licença a ser validada (ex: BLUUBE-A1B2-C3D4-E5F6).
app_id
string
required
Identificador da aplicação que está realizando a validação. Deve corresponder ao app_id ao qual o API key está vinculado.
device_id
string
Identificador único do dispositivo que está tentando usar a licença. Usado para controlar o limite de ativações (max_activations). Recomendado para licenças com limite de dispositivos.

Campos da resposta

valid
boolean
true se a licença é válida e está ativa para uso. false em qualquer outro caso.
status
string
Status detalhado da chave. Valores possíveis: active, expired, suspended, not_found.
type
string
Tipo da licença: permanent, trial ou time_limited. null se a chave não for encontrada.
expires_at
string | null
Data e hora de expiração no formato ISO 8601. null para licenças permanentes ou não encontradas.
activations_remaining
integer | null
Número de ativações restantes com base em max_activations. null se não houver limite de ativações.
message
string
Mensagem descritiva sobre o resultado da validação, adequada para exibir em logs ou interfaces de suporte.

Exemplos de requisição

curl --request POST \
  --url https://api.bluube.com/v1/validate \
  --header 'Authorization: Bearer blv_live_abc123xyz' \
  --header 'Content-Type: application/json' \
  --data '{
    "key": "BLUUBE-A1B2-C3D4-E5F6",
    "app_id": "app_9f3d2a1b",
    "device_id": "device_win_c7d8e9f0"
  }'

Exemplos de resposta

Licença válida e ativa:
{
  "valid": true,
  "status": "active",
  "type": "time_limited",
  "expires_at": "2026-12-31T23:59:59Z",
  "activations_remaining": 3,
  "message": "Licença válida."
}
Licença expirada:
{
  "valid": false,
  "status": "expired",
  "type": "trial",
  "expires_at": "2026-03-01T23:59:59Z",
  "activations_remaining": null,
  "message": "Esta licença expirou em 01/03/2026."
}
Licença suspensa:
{
  "valid": false,
  "status": "suspended",
  "type": "permanent",
  "expires_at": null,
  "activations_remaining": null,
  "message": "Esta licença foi suspensa. Entre em contato com o suporte."
}
Chave não encontrada:
{
  "valid": false,
  "status": "not_found",
  "type": null,
  "expires_at": null,
  "activations_remaining": null,
  "message": "Chave de licença não encontrada."
}
Evite chamar /validate a cada ação do usuário. Faça o cache do resultado de validação no seu servidor por um período razoável (ex: 5 a 10 minutos) e revalide apenas quando necessário — como na inicialização da aplicação ou após o cache expirar. Isso reduz a latência percebida pelo usuário e diminui o risco de atingir os limites de requisição da API.