Documentação da API
Integre o sistema OlympusPay ao seu site, bot ou aplicativo de forma simples e rápida.
Base URL:
https://olympuspay.cloud/api/v1
Autenticação
Todas as requisições devem incluir sua API Key no cabeçalho (Header).
Authorization: oly_live_seutokenaqui123...
Nunca compartilhe sua chave API com ninguém. Se vazar, gere uma nova no painel.
GET
/balance
Consultar Saldo
Retorna o saldo atual disponível na sua conta.
Exemplo de Requisição
curl -X GET https://olympuspay.cloud/api/v1/balance \
-H "Authorization: oly_live_..."
Resposta (200 OK)
{
"balance": 150.50
}
POST
/pay
Criar Pagamento (Depósito)
Gera um PIX Copia e Cola para seu cliente pagar. O ID retornado aqui é o ID do Banco.
Parâmetros (Body JSON)
| Campo | Tipo | Descrição |
|---|---|---|
amount Obrigatório |
Number | Valor do pagamento (Ex: 10.00). Mínimo 5.00. |
Exemplo de Body
{
"amount": 25.00
}
Resposta de Sucesso
{
"id": 49281, // <-- ID NUMÉRICO (Use este para checar status)
"status": "pending",
"qr_code": "00020126580014br.gov.bcb.pix...",
"qr_code_base64": "https://api.qrserver.com/..."
}
POST
/withdraw
Realizar Saque
Envia dinheiro da sua conta para uma chave PIX externa. O ID retornado é o ID Olympus.
Parâmetros (Body JSON)
| Campo | Tipo | Descrição |
|---|---|---|
amount Obrigatório |
Number | Valor a ser enviado (Ex: 50.00). |
pix_key Obrigatório |
String | A chave Pix do destinatário. |
key_type Opcional |
String | Tipo da chave: cpf, email, phone, random. Se não enviar, tentamos detectar. |
Exemplo de Body
{
"amount": 50.00,
"pix_key": "[email protected]",
"key_type": "email"
}
Resposta de Sucesso
{
"id": "wd_api_1709230021", // <-- ID OLYMPUS (Use este para checar status)
"status": "pending",
"message": "Saque solicitado."
}
GET
/payment/:id
Consultar Pagamento AUTO-APPROVE
Use o ID Numérico recebido na criação do depósito.
Se o status na API bancária for PAID, essa rota atualiza seu saldo automaticamente.
Exemplo de Requisição
curl -X GET https://olympuspay.cloud/api/v1/payment/49281 \
-H "Authorization: oly_live_..."
Respostas Possíveis
Caso 1: Sucesso (Pago e Creditado){
"id": 49281,
"status": "paid",
"message": "Pagamento confirmado e saldo creditado.",
"received": 24.00
}
Caso 2: Pendente (Aguardando)
{
"id": 49281,
"status": "pending",
"vision_status": "pending"
}
GET
/withdraw/:id
Consultar Saque AUTO-REFUND
Use o ID Olympus (wd_api_...) recebido na solicitação de saque.
Se o saque falhar no banco (chave inválida, rejeitado), essa rota devolve seu dinheiro automaticamente.
Exemplo de Requisição
curl -X GET https://olympuspay.cloud/api/v1/withdraw/wd_api_170923... \
-H "Authorization: oly_live_..."
Respostas Possíveis
Caso 1: Sucesso (Enviado){
"id": "wd_api_170923...",
"status": "paid"
}
Caso 2: Pendente (Processando)
{
"id": "wd_api_170923...",
"status": "pending"
}
Caso 3: Falha (Dinheiro Estornado)
{
"id": "wd_api_170923...",
"status": "failed",
"message": "Falha no banco. Valor estornado."
}
Exemplo de Integração (Python)
Script CLI para testar todas as rotas.
Nota: Este é um código de exemplo gerado por IA (ChatGPT) para fins didáticos e de teste.
import requests
# ==============================
# CONFIGURAÇÃO
# ==============================
API_KEY = "SUA_API_KEY_AQUI" # Substitua pela sua chave
BASE_URL = "https://olympuspay.cloud/api/v1"
HEADERS = {
"Authorization": API_KEY,
"Content-Type": "application/json"
}
# ==============================
# FUNÇÕES
# ==============================
def consultar_saldo():
try:
r = requests.get(f"{BASE_URL}/balance", headers=HEADERS)
print("\n🔎 SALDO:")
print(r.json())
except Exception as e:
print(f"Erro: {e}")
def criar_deposito():
valor = input("Valor do depósito (ex: 5.90): ").replace(",", ".")
try:
valor = float(valor)
except:
print("❌ Valor inválido")
return
payload = {"amount": valor}
try:
r = requests.post(
f"{BASE_URL}/pay",
headers=HEADERS,
json=payload
)
data = r.json()
print("\n📥 DEPÓSITO CRIADO")
print(data)
# Tenta recuperar o ID de várias formas
payment_id = (
data.get("id")
or data.get("payment_id")
or data.get("order_id")
or data.get("reference")
)
if payment_id:
print(f"\n🆔 ID DO DEPÓSITO: {payment_id}")
print("👉 Use esse ID para consultar o status")
else:
print("\n⚠️ ATENÇÃO: ID não identificado automaticamente.")
if "qr_code" in data:
print("\n📲 PIX COPIA E COLA:")
print(data["qr_code"])
except Exception as e:
print(f"Erro na requisição: {e}")
def consultar_deposito():
payment_id = input("ID do depósito: ").strip()
if not payment_id:
print("❌ ID inválido")
return
try:
r = requests.get(
f"{BASE_URL}/payment/{payment_id}",
headers=HEADERS
)
print("\n📊 STATUS DO DEPÓSITO")
print(r.json())
except Exception as e:
print(f"Erro: {e}")
def criar_saque():
valor = input("Valor do saque (ex: 10.00): ").replace(",", ".")
try:
valor = float(valor)
except:
print("❌ Valor inválido")
return
pix_key = input("Chave PIX: ").strip()
key_type = input("Tipo da chave (cpf/email/phone/random) [enter p/ ignorar]: ").strip()
payload = {
"amount": valor,
"pix_key": pix_key
}
if key_type:
payload["key_type"] = key_type
try:
r = requests.post(
f"{BASE_URL}/withdraw",
headers=HEADERS,
json=payload
)
data = r.json()
print("\n📤 SAQUE CRIADO")
print(data)
withdraw_id = data.get("id")
if withdraw_id:
print(f"\n🆔 ID DO SAQUE: {withdraw_id}")
print("👉 Use esse ID para consultar o status")
except Exception as e:
print(f"Erro: {e}")
def consultar_saque():
withdraw_id = input("ID do saque: ").strip()
if not withdraw_id:
print("❌ ID inválido")
return
try:
r = requests.get(
f"{BASE_URL}/withdraw/{withdraw_id}",
headers=HEADERS
)
print("\n📊 STATUS DO SAQUE")
print(r.json())
except Exception as e:
print(f"Erro: {e}")
# ==============================
# MENU
# ==============================
def menu():
while True:
print("""
==============================
OLYMPUSPAY CLI
==============================
1 - Consultar saldo
2 - Criar depósito (PIX)
3 - Consultar depósito
4 - Criar saque (PIX)
5 - Consultar saque
0 - Sair
""")
opcao = input("Escolha: ").strip()
if opcao == "1": consultar_saldo()
elif opcao == "2": criar_deposito()
elif opcao == "3": consultar_deposito()
elif opcao == "4": criar_saque()
elif opcao == "5": consultar_saque()
elif opcao == "0":
print("Saindo...")
break
else:
print("❌ Opção inválida")
if __name__ == "__main__":
menu()