API de Passe Free Fire
API REST para estoque real de contas e envio automático de Passe Booyah
via reseller_key. Ideal para bots Telegram, painéis e automações.
Seu Bot --reseller_key--> RT Passe API --> contas com diamantes --> gift no ID do jogador
Base URL
https://rtpysystemsapipasses.squareweb.app
Nos exemplos: {BASE} = essa URL. Content-Type padrão dos endpoints de envio/estoque: application/x-www-form-urlencoded.
Autenticação
Todos os endpoints de revenda usam a reseller_key (chave da sua loja/bot).
- Compre/renove a key no dashboard web (login com e-mail e senha).
- Envie a key no body form ou query
reseller_key=SUA_KEY. - Não compartilhe a key publicamente.
Consultar estoque de passes
/api/contas/verificar
Parâmetros
| Campo | Obrigatório | Descrição |
|---|---|---|
reseller_key | Sim | Sua chave de revenda |
status | Não | cache (padrão, rápido) ou now (consulta diamantes ao vivo) |
Request
POST {BASE}/api/contas/verificar
Content-Type: application/x-www-form-urlencoded
reseller_key=SUA_KEY
Resposta sucesso (200)
{
"contas": [
{
"uid": "5172602433",
"diamonds": 301,
"passes": 1,
"presentes_enviados_hoje": 0,
"account_level": 24,
"error": null
}
],
"estatisticas": {
"total_contas": 9,
"contas_com_erro": 0,
"total_diamantes": 2709,
"total_passes_disponiveis": 9,
"tempo_processamento_segundos": 0.0
}
}
Use estatisticas.total_passes_disponiveis no bot (cada passe consome ~250 diamantes de uma conta).
Enviar passe Booyah
/api/enviar/passe
Parâmetros
| Campo | Obrigatório | Descrição |
|---|---|---|
reseller_key | Sim | Sua key |
clientID | Sim | ID do jogador (Free Fire) |
mensagem | Não | Texto do gift (padrão interno se vazio) |
Request
POST {BASE}/api/enviar/passe
Content-Type: application/x-www-form-urlencoded
reseller_key=SUA_KEY&clientID=123456789&mensagem=Obrigado!
Sucesso (200)
{
"status": "PASSE_ENVIADO",
"message": "Passe Booyah Enviado com Sucesso!",
"ClientID": "123456789",
"Nickname": "NickDoPlayer",
"Conta_utilizada": "UID_DA_CONTA",
"Diamantes_Antes": 301,
"Diamantes_Depois": 51,
"Mensagem_Do_Presente": "Obrigado!"
}
Só considere sucesso se status === "PASSE_ENVIADO". A API escolhe automaticamente uma conta com diamantes e tenta de novo se uma falhar.
Adicionar conta ao estoque
/api/adicionar_contaPOST {BASE}/api/adicionar_conta
Content-Type: application/x-www-form-urlencoded
reseller_key=SUA_KEY&uid=UID_GUEST&password=SENHA_GUEST
Sucesso: status: "CONTA_ADICIONADA"
Erros comuns: LEVEL_TOO_LOW, SALDO_INICIAL_INSUFICIENTE, CONTA_JA_EXISTE, RESELLER_NOT_FOUND, KEY_EXPIRED.
Remover conta
/api/remover_contaPOST {BASE}/api/remover_conta
Content-Type: application/x-www-form-urlencoded
reseller_key=SUA_KEY&uid=UID_GUEST
Sucesso: status: "CONTA_REMOVIDA"
Balance / estatísticas da key
/api/balance/passesPOST {BASE}/api/balance/passes
reseller_key=SUA_KEY
{
"status": "DADOS_OBTIDOS",
"msg": "Informações abaixo",
"userBalance": {
"passesEnviados": 120,
"contasUsadas": 40,
"contasAdicionadasTotais": 50,
"ValorEstimadoJaGanho": "R$ 432,00"
}
}
Ninja (rotas extras)
| Método | Rota | Uso |
|---|---|---|
| GET/POST | /api/contas/verificar/ninja | Estoque ninja |
| POST | /api/enviar/ninja | Enviar ninja (ninja=branco|preto) |
POST {BASE}/api/enviar/ninja
reseller_key=SUA_KEY&clientID=123456789&ninja=branco&mensagem=Aproveite!
Códigos de erro (completo)
Respostas de falha (estrutura típica):
{
"status": "CODIGO",
"message": "Descrição em português"
}
| HTTP | status / code | Quando |
|---|---|---|
| 400 | missing parameters… | Faltou reseller_key / clientID / uid |
| 404 | RESELLER_NOT_FOUND | Key inválida / não existe |
| 403 | KEY_EXPIRED | Key vencida (ainda pode renovar no dashboard) |
| 404 | SEM_CONTAS_DISPONIVEIS | Sem contas no estoque |
| 400 | SEM_CONTAS_COM_DIAMANTES | Contas sem diamantes / limite diário |
| 400 | SELF_PASSE | Tentou enviar passe para si mesmo |
| 400 | LEVEL_INVÁLIDO | Destinatário com level baixo |
| 400 | LEVEL_TOO_LOW | Conta guest com level insuficiente (add) |
| 400 | SALDO_INICIAL_INSUFICIENTE | Guest sem diamantes p/ passe |
| 400 | CONTA_JA_EXISTE | UID já no estoque da key |
| 404 | CONTA_NAO_ENCONTRADA | UID não está na key |
| 200* | SEM_CONTAS_DISPONIVEIS (verificar) | Nenhuma conta para listar |
| 404 | Rota Não Encontrada | Path errado |
| 405 | Método Inválido | GET em rota que só aceita POST etc. |
| 500 | SISTEMA_BUGADO | Erro interno do servidor |
Exemplos
// Key inválida
{ "status": "RESELLER_NOT_FOUND", "message": "Revendedor nao encontrado!" }
// Sem estoque no envio
{
"status": "SEM_CONTAS_DISPONIVEIS",
"message": "Não há mais contas disponíveis no seu estoque para tentar o envio!"
}
// Key expirada
{
"status": "KEY_EXPIRED",
"message": "Key expirada! Voce tem … para renovar…",
"pode_renovar": true,
"contas_backup": 12
}
Regras importantes
- 1 passe ≈ 250 diamantes de uma conta guest do estoque.
- A API tenta outras contas automaticamente se uma falhar (JWT, gems, level).
- Contas com diamantes < 250 podem ser removidas na verificação.
- Key expirada: contas ficam em backup temporário — renove no dashboard.
- Timeout recomendado no cliente: 60s no envio, 20–30s no estoque cache.
- Não faça spam de envios; use fila no seu bot.
Exemplos de integração
Python (requests)
import requests
BASE = "https://rtpysystemsapipasses.squareweb.app"
KEY = "SUA_RESELLER_KEY"
def estoque():
r = requests.post(
f"{BASE}/api/contas/verificar",
data={"reseller_key": KEY},
timeout=30,
)
data = r.json()
return data.get("estatisticas", {}).get("total_passes_disponiveis", 0)
def enviar_passe(client_id, mensagem="Obrigado!"):
r = requests.post(
f"{BASE}/api/enviar/passe",
data={
"reseller_key": KEY,
"clientID": str(client_id),
"mensagem": mensagem,
},
timeout=60,
)
data = r.json()
if data.get("status") == "PASSE_ENVIADO":
return {"ok": True, "nick": data.get("Nickname"), "raw": data}
return {"ok": False, "status": data.get("status"), "message": data.get("message"), "raw": data}
Node.js (axios)
const axios = require("axios");
const qs = require("querystring");
const BASE = "https://rtpysystemsapipasses.squareweb.app";
const KEY = "SUA_RESELLER_KEY";
async function estoque() {
const { data } = await axios.post(
`${BASE}/api/contas/verificar`,
qs.stringify({ reseller_key: KEY }),
{ headers: { "Content-Type": "application/x-www-form-urlencoded" }, timeout: 30000 }
);
return data.estatisticas?.total_passes_disponiveis ?? 0;
}
async function enviarPasse(clientID, mensagem = "Obrigado!") {
const { data } = await axios.post(
`${BASE}/api/enviar/passe`,
qs.stringify({ reseller_key: KEY, clientID: String(clientID), mensagem }),
{ headers: { "Content-Type": "application/x-www-form-urlencoded" }, timeout: 60000 }
);
if (data.status === "PASSE_ENVIADO") return { ok: true, data };
return { ok: false, code: data.status, message: data.message, data };
}
cURL
# Estoque curl -X POST "https://rtpysystemsapipasses.squareweb.app/api/contas/verificar" \ -d "reseller_key=SUA_KEY" # Enviar curl -X POST "https://rtpysystemsapipasses.squareweb.app/api/enviar/passe" \ -d "reseller_key=SUA_KEY" \ -d "clientID=123456789" \ -d "mensagem=Booyah"
Integrar no bot
- Crie conta no site com e-mail + senha e compre/renove a key.
- No bot, configure a Base URL +
reseller_key. - Menu estoque →
/api/contas/verificar→ mostretotal_passes_disponiveis. - Envio →
/api/enviar/passe→ sePASSE_ENVIADO, desconte o cliente; senão mostremessage. - Trate
KEY_EXPIREDeSEM_CONTAS_*com mensagem clara de recarga/estoque.
| Rota | Uso principal |
|---|---|
POST /api/contas/verificar | Estoque de passes |
POST /api/enviar/passe | Enviar passe |
POST /api/adicionar_conta | Abastecer estoque |
POST /api/remover_conta | Remover guest |
POST /api/balance/passes | Stats da key |