Autenticação (API Key)
POST /authenticate/clients — autentica qualquer titular do tenant sem senha, usando a Tenant API Key.
Autenticação (API Key)
Troca a Tenant API Key do seu white label pelo JWT de um titular do seu tenant, informando apenas o CPF/CNPJ — sem a senha do cliente final. Uso exclusivamente server-to-server. Mesmo shape de resposta do POST /authenticate.
Uso exclusivamente server-to-server — nunca exponha a Tenant API Key em app mobile, front-end ou repositório. O token vale 24h e é restrito ao titular informado: para operar vários titulares, repita a chamada com o documento de cada um (um token por titular, cacheável até expirar) e trate 401 re-autenticando. Revogar a chave invalida imediatamente todos os tokens emitidos com ela, mesmo dentro das 24h. Operações de escrita (Pix, TEV) continuam exigindo o pin do cliente final, salvo se a Isenção de PIN via API de Tenant estiver habilitada para o seu tenant. Erros: 400 quando o X-Tenant-Id está ausente/inválido ou o document está fora de 11–14 dígitos; 401 quando a chave está ausente, inválida, revogada, expirada ou é de outro tenant, quando o documento não corresponde a um titular do seu tenant, e quando o titular está bloqueado (Conta bloqueada. Procure o suporte.); 429 no rate limit. Veja o guia de Autenticação para ciclo de vida e rotação da chave.
Headers
- AcceptObrigatóriostringapplication/json
- Content-TypeObrigatóriostringapplication/json
- X-Tenant-IdObrigatóriostring (UUID)Identificador do tenant (cliente WL) dono da chave e do titular.
- X-Tenant-Api-KeyObrigatóriostringTenant API Key do seu tenant, no formato tnk_<prefixo>.<segredo>.
Body
- documentObrigatóriostringCPF (11 dígitos) ou CNPJ (14 dígitos) do titular, apenas números. Único campo do corpo — não há senha, PIN nem accountId.
Exemplo de requisição
curl -X POST https://baas.staterpay.io/authenticate/clients \ -H "Accept: application/json" \ -H "Content-Type: application/json" \ -H "X-Tenant-Id: 00000000-0000-0000-0000-000000000000" \ -H "X-Tenant-Api-Key: tnk_0356d4a1.vsqBAy5sAI63nyUoxgN-NWVfmIFdX9W6" \ -d '{ "document": "12345678900" }'Resposta
- tokenstring (JWT)JWT a usar nas chamadas subsequentes no header Authorization: Bearer <token>. TTL de 24h (iat e exp do payload).
- entityType"PERSON" | "COMPANY"Tipo da entidade autenticada — PERSON (PF) ou COMPANY (PJ).
- entity.idstring (UUID)ID interno da entidade.
- entity.emailstringEmail cadastrado.
- entity.emailConfirmationbooleanSe o email foi confirmado.
- entity.phonestring | nullTelefone no formato E.164 (+55...).
- entity.phoneConfirmationbooleanSe o telefone foi confirmado.
- entity.namestringNome completo (PF) ou razão social (PJ).
- entity.documentstringCPF ou CNPJ, apenas dígitos.
- entity.status"ACTIVE" | "BLOCKED" | "CLOSED"Estado atual da conta.
- entity.onboardingStepstringEtapa do onboarding. "DONE" quando concluído.
- entity.onboardingLinkstring | nullURL para retomar o onboarding, quando incompleto.
- entity.onboardingRequisitionIdnumber | nullID da requisição de onboarding (auditoria).
- entity.hasPinbooleanSe o titular tem PIN definido para operações sensíveis.
- accountsarrayContas associadas à entidade.
- accounts[].idstring (UUID)ID da conta.
- accounts[].bankstringCódigo do banco (3 dígitos).
- accounts[].agencystringAgência (4 dígitos).
- accounts[].numberstringNúmero da conta.
- accounts[].balancenumberSaldo atual em reais (não centavos).
- accounts[].status"APPROVED" | "PENDING" | "REJECTED"Estado de provisionamento da conta.
- accounts[].monthlyGoalnumberMeta de gastos mensal definida pelo usuário.
- accounts[].monthlySpendingnumberGastos no mês corrente.
- accounts[].savingsProgressnumberProgresso na meta de economia.
// PF — entityType: "PERSON"{ "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.<payload>.<signature>", "entityType": "PERSON", "entity": { "id": "00000000-0000-0000-0000-000000000001", "email": "fulano@example.com", "emailConfirmation": false, "phone": null, "phoneConfirmation": false, "name": "Fulano de Tal", "document": "12345678900", "status": "ACTIVE", "onboardingStep": "DONE", "onboardingLink": null, "onboardingRequisitionId": null, "hasPin": true }, "accounts": [ { "id": "00000000-0000-0000-0000-000000000010", "bank": "000", "agency": "0001", "number": "1000001", "balance": 6.44, "status": "APPROVED", "monthlyGoal": 0, "monthlySpending": 3.10, "savingsProgress": 0 } ]}// PJ — entityType: "COMPANY"{ "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.<payload>.<signature>", "entityType": "COMPANY", "entity": { "id": "00000000-0000-0000-0000-000000000002", "email": "contato@empresa.com.br", "emailConfirmation": true, "phone": "+5511900000000", "phoneConfirmation": true, "name": "NOME EMPRESA LTDA", "document": "12345678000190", "status": "ACTIVE", "onboardingStep": "DONE", "onboardingLink": null, "onboardingRequisitionId": null, "hasPin": true }, "accounts": [ { "id": "00000000-0000-0000-0000-000000000020", "bank": "000", "agency": "0001", "number": "1000002", "balance": 224.93, "status": "APPROVED", "monthlyGoal": 0, "monthlySpending": 22.20, "savingsProgress": 0 } ]}https://baas.staterpay.io