1. Obtenha sua API Key
Acesse o painel Cyrus, vá em Configurações → API Keys e gere uma nova chave.
Chaves de produção têm prefixo sk_live_ e chaves de teste têm prefixo sk_test_.
⚠
Nunca exponha sua API Key no frontend ou em repositórios públicos. Use variáveis de ambiente.
2. Faça sua primeira cobrança
curl -X POST https://api.cyrus.com.br/api/v1/charges \
-H "x-api-key: sk_test_sua_chave_aqui" \
-H "Content-Type: application/json" \
-d '{
"amount": 100.00,
"clientName": "João Silva",
"description": "Pedido #1234"
}'const response = await fetch('https://api.cyrus.com.br/api/v1/charges', {
method: 'POST',
headers: {
'x-api-key': process.env.CYRUS_API_KEY,
'Content-Type': 'application/json',
},
body: JSON.stringify({
amount: 100.00,
clientName: 'João Silva',
description: 'Pedido #1234',
}),
})
const data = await response.json()
const { transactionId, txid, qrCode, qrCodeBase64 } = dataimport requests
response = requests.post(
'https://api.cyrus.com.br/api/v1/charges',
json={
'amount': 100.00,
'clientName': 'João Silva',
'description': 'Pedido #1234',
},
headers={'x-api-key': 'sk_test_sua_chave_aqui'}
)
data = response.json()
transaction_id = data['transactionId']
qr_code_base64 = data['qrCodeBase64']Resposta 201 Created
"transactionId": "cm1abc123def456",
"txid": "E1234567820240115120000000000001",
"qrCode": "00020126580014br.gov.bcb.pix0136...",
"qrCodeBase64": "iVBORw0KGgoAAAANSUhEUgAA...",
"expiresAt": "2024-01-15T13:00:00.000Z",
"amount": 100.00,
"fees": {
"feeAmount": 0.33,
"gatewayFeeAmount": 0.13,
"adminMargin": 0.20,
"netAmount": 99.67
}
}3. Exiba o QR Code para o pagador
O campo qrCodeBase64 contém a imagem PNG pronta para exibição:
O campo qrCode é o código Copia e Cola que o pagador pode usar no app bancário.
4. Configure um webhook para receber a confirmação
Registre um endpoint no painel em Configurações → Webhooks. Quando o pagamento for confirmado você receberá:
"event": "transaction.completed",
"data": {
"transactionId": "cm1abc123def456",
"txid": "E1234567820240115120000000000001",
"endToEndId": "E1234567820240115120000000000001",
"amount": 100.00,
"paidAt": "2024-01-15T12:03:42.000Z"
},
"timestamp": "2024-01-15T12:03:42.000Z"
}5. Verifique a autenticidade do webhook
Cada evento inclui o header X-Cyrus-Signature com o secret do webhook cadastrado. Verifique antes de processar:
const signature = req.headers['x-cyrus-signature']
const secret = process.env.CYRUS_WEBHOOK_SECRET
if (signature !== secret) {
return res.status(401).json({ error: 'Assinatura inválida' })
}
const { event, data } = req.body
if (event === 'transaction.completed') {
// liberar o pedido, enviar e-mail de confirmação, etc.
}
res.status(200).json({ received: true })
})✓
Você concluiu sua primeira integração com a API Cyrus!
Próximos passos
- Enviar pagamentos PIX — transfira valores para qualquer chave PIX
- Guia completo de webhooks — todos os eventos disponíveis
- Ambientes e sandbox — teste sem riscos