Documentacao AstraPay
Cada usuario cria sua propria API Key no painel e usa essa chave para gerar PIX, consultar status e listar transacoes.
Quickstart
Fluxo correto: o usuario cria a conta, gera a propria API Key em /api-keys e usa essa chave somente no backend. Na criacao de cobrancas, envie uma chave de idempotencia para nunca duplicar um PIX em tentativas repetidas.
Usuario gera a chave
Cada conta tem suas proprias API Keys. Nao existe PIX anonimo fora de uma conta.
Backend envia a cobranca
Use X-Api-Key e envie valor, descricao e dados opcionais do pagador.
PIX fica vinculado
Exiba o QR Code ou o campo pix_copy_paste para o cliente pagar.
curl -X POST http://72.60.140.55/api/v1/pix \
-H "Content-Type: application/json" \
-H "X-Api-Key: astrapay_SUA_CHAVE" \
-H "X-Idempotency-Key: pedido-1234" \
-d '{"valor":29.90,"descricao":"Pedido #1234"}'Autenticacao
Use API Key para integracoes externas. Use Bearer Token apenas no app/painel do usuario.
Token retornado no login. Ele serve para o dashboard e endpoints de conta do usuario.
curl -X POST http://72.60.140.55/api/auth/login \
-H "Content-Type: application/json" \
-d '{"email":"seu@email.com","password":"SuaSenha1"}'
# Response:
{
"success": true,
"data": {
"token": "abc123...",
"user": { "id": 1, "name": "...", "email": "...", "tier": "basic" }
}
}
# Use the token:
curl http://72.60.140.55/api/auth/me \
-H "Authorization: Bearer abc123..."
Chave para integracao server-to-server. Cada usuario gera a propria chave no painel em API Keys.
curl -X POST http://72.60.140.55/api/v1/pix \
-H "Content-Type: application/json" \
-H "X-Api-Key: astrapay_SUA_CHAVE_AQUI" \
-d '{"valor":29.90,"descricao":"Pedido #1234"}'
API v1 - PIX (API Key)
Base URL: http://72.60.140.55/api/v1
| Metodo | URL | Auth | Descricao |
|---|---|---|---|
| POST | /pix | API Key | Criar nova cobranca PIX |
| GET | /pix/{id} | API Key | Consultar status de um PIX |
| GET | /balance | API Key | Consultar saldo do usuario |
| GET | /transactions | API Key | Listar transacoes (paginado) |
| POST | /webhook | API Key | Cadastrar URL para receber eventos PIX |
Cria uma nova cobranca PIX.
Parametros (JSON Body)
| Campo | Tipo | Obrig. | Descricao |
|---|---|---|---|
| valor | float | Sim | Valor em reais (ex: 29.90) |
| descricao | string | Nao | Descricao da cobranca |
| payer_name | string | Nao | Nome do pagador |
| payer_cpf_cnpj | string | Nao | CPF/CNPJ do pagador |
curl
curl -X POST http://72.60.140.55/api/v1/pix \
-H "Content-Type: application/json" \
-H "X-Api-Key: astrapay_..." \
-H "X-Idempotency-Key: pedido-1234" \
-d '{"valor":29.90,"descricao":"Pedido #1234"}'JavaScript (fetch)
fetch('http://72.60.140.55/api/v1/pix', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'X-Api-Key': 'astrapay_...',
'X-Idempotency-Key': 'pedido-1234',
},
body: JSON.stringify({
valor: 29.90,
descricao: 'Pedido #1234',
}),
}).then(r => r.json())
.then(data => console.log(data));Resposta (201 Created)
{
"success": true,
"data": {
"transaction": {
"id": 42,
"amount": 29.90,
"net_amount": 29.45,
"fee_amount": 0.45,
"status": "pending",
"pix_copy_paste": "00020126360014br.gov.bcb.pix...",
"pix_qrcode_url": "data:image/png;base64,...",
"pix_expiration": "2026-07-20T15:00:00",
"description": "Pedido #1234"
},
"idempotent_replay": false
}
}Consulta o status e detalhes de uma transacao PIX.
curl
curl http://72.60.140.55/api/v1/pix/42 \
-H "X-Api-Key: astrapay_..."JS fetch
fetch('http://72.60.140.55/api/v1/pix/42', {
headers: { 'X-Api-Key': 'astrapay_...' }
}).then(r => r.json())
.then(data => {
if (data.data.transaction.status === 'confirmed') {
console.log('Pago!');
}
});Auth API (Bearer Token)
Endpoints para autenticacao e gerenciamento de conta de usuario.
| Metodo | URL | Auth | Descricao |
|---|---|---|---|
| POST | /api/auth/register | Publico | Criar nova conta |
| POST | /api/auth/login | Publico | Login de usuario |
| POST | /api/auth/verify-email | Publico | Verificar email |
| GET | /api/auth/me | Bearer | Dados do usuario logado |
Cria uma nova conta AstraPay. Senha deve ter 8+ caracteres, 1 maiuscula e 1 numero.
curl
curl -X POST http://72.60.140.55/api/auth/register \
-H "Content-Type: application/json" \
-d '{
"name": "Seu Nome",
"email": "seu@email.com",
"password": "Senha123",
"cpf": "000.000.000-00"
}'Resposta (201)
{
"success": true,
"data": {
"token": "abc123...",
"user": { "id": 1, "name": "Seu Nome", ... },
"message": "Conta criada com sucesso."
}
}Realiza login e retorna um Bearer token valido por 24 horas.
curl
curl -X POST http://72.60.140.55/api/auth/login \
-H "Content-Type: application/json" \
-d '{"email":"seu@email.com","password":"Senha123"}'Resposta (200)
{
"success": true,
"data": {
"token": "abc123...",
"user": { "id": 1, "name": "...", "email": "...", "tier": "basic" }
}
}Confirma o email do usuario usando o token enviado.
curl -X POST http://72.60.140.55/api/auth/verify-email \
-H "Content-Type: application/json" \
-d '{"token":"abc123..."}'
# Response (200):
{ "success": true, "data": { "message": "Email verificado com sucesso", "tier_upgraded_to": "basic" } }PIX (Bearer Token)
Endpoints autenticados usados pelo dashboard.
| Metodo | URL | Auth | Descricao |
|---|---|---|---|
| POST | /api/pix/create | Bearer | Criar cobranca PIX |
| GET | /api/pix/status | Bearer | Consultar status (?id=X) |
| GET | /api/pix/list | Bearer | Listar transacoes |
| GET | /api/pix/stats | Bearer | Estatisticas de PIX |
Rate Limits
60
req/min (API Key)
Limite padrao por chave
30
req/min (Bearer)
Limite global por IP
429
Limite excedido
Header Retry-After incluso
Webhooks
Cadastre uma URL HTTPS para receber pix.updated sempre que o status da cobranca mudar. A URL recebe uma assinatura HMAC SHA-256 para seu backend validar a origem.
curl -X POST http://72.60.140.55/api/v1/webhook \
-H "Content-Type: application/json" \
-H "X-Api-Key: astrapay_..." \
-d '{"url":"https://sua-loja.com/webhooks/astrapay","events":["pix.updated"]}'
# A resposta retorna signing_secret uma unica vez.// Payload recebido
{
"id": "evt_...",
"event": "pix.updated",
"created_at": "2026-09-15T20:00:00+00:00",
"data": { "transaction": { "id": 42, "status": "confirmed" } }
}
// Assinatura para validar
HMAC_SHA256(timestamp + "." + raw_body, signing_secret)
// Headers: X-AstraPay-Timestamp e X-AstraPay-Signature: v1=...