Autenticação
O Toktus API utiliza API Keys para autenticar todas as requisições (exceto registro de conta e webhooks).
Fluxo de Autenticação
graph LR
A[Registrar Conta] --> B[Receber API Key]
B --> C[Incluir em x-api-key]
C --> D[Fazer Requisições]
1. Registrar Conta
Para começar, você precisa criar uma conta:
curl -X POST https://api.toktus.com/api/v1/clients \
-H "Content-Type: application/json" \
-d '{
"name": "Minha Empresa LTDA",
"email": "[email protected]"
}'Resposta:
{
"success": true,
"data": {
"id": "550e8400-e29b-41d4-a716-446655440000",
"name": "Minha Empresa LTDA",
"email": "[email protected]",
"apiKey": "tk_a1b2c3d4e5f6789abcdef...",
"createdAt": "2026-02-17T14:30:00Z"
}
}[!WARNING]
A API Key é exibida uma única vez e não pode ser recuperada. Armazene-a em local seguro antes de prosseguir!
2. Configurar a Conta (opcional, mas recomendado)
Com a API Key em mãos, você pode configurar o comportamento padrão da conta antes de começar a processar pagamentos. Todas essas configurações são feitas via um único endpoint:
curl -X PATCH https://api.toktus.com/api/v1/clients/settings \
-H "x-api-key: tk_SUA_CHAVE" \
-H "Content-Type: application/json" \
-d '{
"primaryGateway": "pagarme",
"gatewayFallbacks": ["asaas", "stripe"],
"compatibilityMode": null,
"responseFormat": "normalized"
}'| Campo | O que faz |
|---|---|
primaryGateway | Define o gateway padrão — o campo gateway no payload deixa de ser obrigatório |
gatewayFallbacks | Lista ordenada de gateways tentados caso o primário falhe |
compatibilityMode | Aceita payloads e retorna respostas no formato nativo de outro gateway (migração zero-código) |
responseFormat | Controla o shape da resposta: full (padrão), normalized ou raw |
[!TIP]
ConfigurarprimaryGatewayé especialmente útil se você usa sempre o mesmo gateway — elimina o campogatewayde todas as suas chamadas. Consulte Configurações da Conta para detalhes completos e exemplos.
3. Usar a API Key
Inclua sua API Key no header x-api-key em todas as requisições:
curl -X GET https://api.toktus.com/api/v1/credentials \
-H "x-api-key: tk_a1b2c3d4e5f6789abcdef..."Exemplos por linguagem
Segurança da API Key
Faça
- Armazene em variáveis de ambiente (
.env, não commite no Git) - Use cofres de segredos em produção (AWS Secrets Manager, Azure Key Vault, HashiCorp Vault)
- Implemente rotação periódica de chaves
- Monitore uso suspeito (IPs desconhecidos, volumes anormais)
- Use HTTPS sempre (nunca HTTP)
Não Faça
- Commitar no Git ou repositórios públicos
- Hardcodear no código-fonte
- Expor em requisições client-side (JavaScript no navegador)
- Compartilhar via e-mail, chat ou canais não criptografados
- Registrar em logs ou sistemas de monitoramento em texto claro
- Incluir em URLs ou query parameters
Exemplo: Armazenando com Segurança
.env (Local)
# .env (adicione ao .gitignore!)
TOKTUS_API_API_KEY=tk_a1b2c3d4e5f6789abcdef...
```
## Docker Compose
```yaml
version: '3.8'
services:
api:
image: sua-api:latest
environment:
- TOKTUS_API_API_KEY=${TOKTUS_API_API_KEY}
env_file:
- .env.production
```
## Kubernetes
```bash
kubectl create secret generic toktus-api-credentials \
--from-literal=api-key='tk_a1b2c3d4e5f6789abcdef...'
```
```yaml
apiVersion: v1
kind: Pod
metadata:
name: sua-api
spec:
containers:
- name: app
image: sua-api:latest
env:
- name: TOKTUS_API_API_KEY
valueFrom:
secretKeyRef:
name: toktus-api-credentials
key: api-key
```
## Endpoints Públicos (Sem Autenticação)
Apenas 2 grupos de endpoints **não** exigem `x-api-key`:
| Endpoint | Motivo |
|----------|--------|
| `POST /api/v1/clients` | Criação de conta (você ainda não tem API Key) |
| `POST /api/v1/webhooks/*` | Webhooks recebidos dos gateways (validação interna) |
**Todos os demais endpoints** exigem o header `x-api-key`.
## Erros de Autenticação
### 401 MISSING_API_KEY - Header ausente
```json
{
"success": false,
"error": {
"code": "MISSING_API_KEY",
"message": "Header x-api-key is required"
}
}Solução: Adicione o header x-api-key: tk_sua_chave.
401 INVALID_API_KEY - API Key inválida
{
"success": false,
"error": {
"code": "INVALID_API_KEY",
"message": "The provided API key is invalid"
}
}Possíveis causas:
- API Key digitada incorretamente
- API Key revogada
403 CLIENT_INACTIVE - Conta desativada
{
"success": false,
"error": {
"code": "CLIENT_INACTIVE",
"message": "Your account has been deactivated"
}
}Solução: Entre em contato com o suporte para reativar sua conta.
Listar Contas Registradas
Para ver todas as contas cadastradas (sem expor as API Keys):
curl -X GET https://api.toktus.com/api/v1/clients \
-H "x-api-key: tk_a1b2c3d4e5f6789abcdef..."Resposta:
{
"success": true,
"data": [
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"name": "Minha Empresa LTDA",
"email": "[email protected]",
"isActive": true,
"createdAt": "2026-02-17T14:30:00Z"
}
]
}[!NOTE]
Por segurança, a API Key nunca é retornada após o registro inicial.
Rate Limiting
Para proteger a API, implementamos limites de taxa:
| Limite | Valor | Ação quando excedido |
|---|---|---|
| Por API Key | 100 req/min | HTTP 429 + Retry-After header |
| Por IP (sem API Key) | 100 req/min | HTTP 429 + Retry-After header |
Resposta HTTP 429:
{
"success": false,
"error": {
"code": "RATE_LIMIT_EXCEEDED",
"message": "Limite de requisições excedido. Aguarde 45 segundos antes de tentar novamente."
}
}Headers incluídos:
Retry-After: 45(segundos até poder tentar novamente)X-RateLimit-Limit: 100(limite total)X-RateLimit-Remaining: 0(requisições restantes)X-RateLimit-Reset: 60(segundos até reset da janela)
Próximos Passos
- Credenciais — Cadastrar as chaves de API de cada gateway de pagamento
- Configurações da Conta — Gateway padrão, fallbacks, modo de compatibilidade e formato de resposta
- Clientes & Assinaturas — Criar seu primeiro cliente ou assinatura
- Erros — Referência completa de códigos de erro
Updated about 2 hours ago