Visão geral
A Upay Gateway API utiliza autenticação baseada em API Keys (Bearer Token) seguindo o padrão OAuth 2.0. Este método garante que apenas usuários autorizados possam acessar os recursos da API, mantendo a segurança das suas transações.
Obtendo sua API Key
Passo 1: Acesse o Dashboard
- Faça login no Dashboard Upay
- Complete o processo de KYC (Know Your Customer) se ainda não tiver feito
- Navegue até Configurações → Credenciais de API
Passo 2: Crie uma API Key
-
Clique em “Criar Nova API Key”
-
Dê um nome descritivo para sua API Key (ex: “Integração Produção”, “App Mobile”)
-
Selecione as permissões necessárias:
paymentLinks:read - Ler links de pagamento
paymentLinks:write - Criar/editar links de pagamento
products:read - Ler produtos
products:write - Criar/editar produtos
coupons:read - Ler cupons
coupons:write - Criar/editar cupons
transactions:read - Ler transações
transactions:write - Criar transações
webhooks:read - Ler webhooks
webhooks:write - Criar/editar webhooks
-
Clique em “Gerar API Key”
-
⚠️ IMPORTANTE: Copie e guarde sua API Key imediatamente. Ela não será exibida novamente!
Nunca compartilhe sua API Key publicamente. Mantenha-a segura e use variáveis de ambiente ou serviços de gerenciamento de secrets.
🔑 Usando sua API Key
A API aceita autenticação em dois formatos:
Formato 1: Bearer Token (Recomendado)
Authorization: Bearer SUA_API_KEY_AQUI
Formato 2: X-API-Key Header
X-API-Key: SUA_API_KEY_AQUI
Ambos os formatos são aceitos. Recomendamos o uso do formato Bearer Token por ser mais padrão.
curl -X GET "https://upay-sistema-api.onrender.com/api/v1/payment-links" \
-H "Authorization: Bearer sua_api_key_aqui" \
-H "Content-Type: application/json"
Resposta de sucesso (200 OK):
{
"data": [],
"total": 0
}
const apiKey = 'sua_api_key_aqui';
const response = await fetch('https://upay-sistema-api.onrender.com/api/v1/payment-links', {
method: 'GET',
headers: {
'Authorization': `Bearer ${apiKey}`,
'Content-Type': 'application/json'
}
});
const data = await response.json();
import requests
api_key = 'sua_api_key_aqui'
headers = {
'Authorization': f'Bearer {api_key}',
'Content-Type': 'application/json'
}
response = requests.get(
'https://upay-sistema-api.onrender.com/api/v1/payment-links',
headers=headers
)
data = response.json()
const axios = require('axios');
const apiKey = 'sua_api_key_aqui';
const response = await axios.get('https://upay-sistema-api.onrender.com/api/payment-links', {
headers: {
'Authorization': `Bearer ${apiKey}`,
'Content-Type': 'application/json'
}
});
console.log(response.data);
Segurança
Boas Práticas
-
Nunca commite API Keys no código
- Use variáveis de ambiente
- Use serviços de gerenciamento de secrets (AWS Secrets Manager, HashiCorp Vault, etc.)
-
Use diferentes API Keys para diferentes ambientes
- Uma para desenvolvimento
- Uma para produção
- Facilita revogação se necessário
-
Revogue API Keys comprometidas imediatamente
- Acesse o Dashboard → Configurações → Credenciais de API
- Revogue a API Key comprometida
- Gere uma nova API Key
-
Use apenas as permissões necessárias
- Siga o princípio do menor privilégio
- Não conceda permissões desnecessárias
-
Rotacione suas API Keys periodicamente
- Recomendado a cada 90 dias
- Facilita a detecção de uso não autorizado
Variáveis de Ambiente
.env (Node.js/Python)
UPAY_API_KEY=sua_api_key_aqui
UPAY_API_URL=https://upay-sistema-api.onrender.com
Uso no código
// Node.js
const apiKey = process.env.UPAY_API_KEY;
// Python
import os
api_key = os.getenv('UPAY_API_KEY')
Tratamento de erros
A API retorna códigos HTTP padrão para indicar sucesso ou falha das requisições.
Códigos de status HTTP
| Código | Descrição |
|---|
200 | Requisição bem-sucedida |
201 | Recurso criado com sucesso |
400 | Requisição inválida (erro de validação) |
401 | Não autenticado (API Key inválida ou ausente) |
403 | Não autorizado (sem permissão para o recurso) |
404 | Recurso não encontrado |
429 | Muitas requisições (rate limit excedido) |
500 | Erro interno do servidor |
401 Unauthorized
{
"error": "Unauthorized",
"message": "Token inválido ou expirado",
"statusCode": 401
}
Causas comuns:
- API Key incorreta ou ausente
- Formato do header de autenticação incorreto
- API Key revogada ou expirada
Soluções:
- Verifique se a API Key está correta
- Verifique se está usando o formato
Bearer {api_key}
- Verifique se a API Key não foi revogada no dashboard
403 Forbidden
{
"error": "Forbidden",
"message": "Você não tem permissão para acessar este recurso",
"statusCode": 403
}
Causas comuns:
- API Key sem as permissões necessárias
- Tentativa de acessar recurso de outro usuário
Soluções:
- Verifique se sua API Key tem as permissões necessárias
- Entre em contato com o suporte para solicitar permissões adicionais
400 Bad Request
{
"error": "Validation Error",
"message": "Dados inválidos",
"statusCode": 400,
"details": [
{
"field": "amount",
"message": "O valor deve ser maior que 0"
},
{
"field": "currency",
"message": "Moeda inválida. Use BRL"
}
]
}
Causas comuns:
- Campos obrigatórios ausentes
- Valores fora do intervalo permitido
- Formato de dados incorreto
Soluções:
- Verifique a documentação do endpoint para campos obrigatórios
- Valide os tipos e formatos dos dados antes de enviar
429 Too Many Requests
{
"error": "Rate Limit Exceeded",
"message": "Você excedeu o limite de requisições",
"statusCode": 429,
"retryAfter": 60
}
Limites de rate:
- Endpoints públicos: 100 requisições por minuto por IP
- Endpoints autenticados: 1000 requisições por minuto por API Key
Soluções:
- Implemente exponential backoff nas suas requisições
- Use o header
Retry-After para saber quando tentar novamente
- Considere fazer cache de dados que não mudam frequentemente
Próximos passos
Agora que você sabe como autenticar suas requisições, explore: