📖 Documentação da API

Referência completa para integração com a API de salas do Vortex FF. Crie salas, gerencie jogadores, inicie partidas e muito mais.

URL Base

Copiarhttps://SEU_DOMINIO/api

Todas as requisições e respostas usam JSON. Em rotas com body, envie Content-Type: application/json.

🛡️ Autenticação

Todas as rotas exigem autenticação. Envie seu token Vortex FF no header de autorização:

CopiarAuthorization: Bearer SEU_TOKEN

Seu token é do tipo saldo (consome crédito por sala) ou infinito (salas ilimitadas). Veja o saldo em GET /balance.

POST/rooms

Cria uma sala personalizada no Free Fire. Consome 1 crédito (tokens com saldo).

Copiar{ "password": "123456", // obrigatório (1-16 chars) "start_delay_minutes": 10, // obrigatório. AP/custom: 1-10 · br_padrao: 1-20 "config_type": "ap_padrao", // opcional: ap_padrao, gelo_inf, tatico, ap_fullcapa, capa_3, ap_uxd, ap_7r, br_padrao "room_name": "Sala Teste", // opcional "map_name": "Bermuda", // opcional: Bermuda, Purgatory, Kalahari, Nextera "1500_ouro": false // opcional (alias ouro_1500): 1º round com 1500 de ouro (AP/custom) }

Resposta

{ "session_id": "9784c0c6dc72...", "room_id": 947072, "password": "123456", "status": "active", "invite_link": "https://ffshare.garena.com/...", "expires_at": "2026-04-08T21:43:25Z" }
POST/rooms (Battle Royale)

Mesma rota, com config_type: "br_padrao". Até 48 jogadores. 1500_ouro é ignorado.

{ "password": "123456", "start_delay_minutes": 20, // 1-20 no BR "config_type": "br_padrao", // obrigatório p/ Battle Royale "room_name": "Sala BR", "map_name": "Bermuda", // Bermuda, Purgatory, Kalahari, Nova Terra (Nextera), Solara "equipe": "squad", // solo, duo, squad (padrão squad) "espectadores": 16 // 30, 16, 8, 6, 4, 2, 1 (padrão 30) }

equipe e espectadores só valem em br_padrao. Depois é o mesmo fluxo: POST /start para iniciar.

GET/rooms/{session_id}

Consulta o status da sessão/sala. 404 se a sessão não existir mais. status: active (aguardando start) ou started (partida iniciada).

GET/rooms/{session_id}/members

Lista os jogadores reais dentro da sala em tempo real. Cada jogador tem team, slot e platform (mobile/emulator). Em AP os slots vão de 1-8; no BR até 48. O dono (bot) não é incluído.

Adicione ?include_loadout=true para incluir o loadout (personagem, skills, pet e imagens). As imagens vêm como /icons/… — públicas, use direto em <img> a partir do seu domínio.

GET /rooms/{session_id}/members?include_loadout=true
GET/rooms/{session_id}/result

Resultado da partida (vencedor, kills, MVP) — funciona para AP e Battle Royale. Faça polling e leia o campo status: jogandofinalizada (ou no_match). O campo poll_after_seconds diz quanto esperar; quando for null, pare de consultar (o header Retry-After também é enviado).

{ "session_id": "f6c87a7a...", "status": "finalizada", "poll_after_seconds": null, "winner_team": 2, "match_mvp": { "account_id": 1852702683, "nickname": "emptymind", "kills": 9 }, "game_mode": "ap", // ap · br_solo · br_duo · br_squad "teams": [ { "team": 2, "is_winner": true, "players": [ { "account_id": 2835763706, "nickname": "NEL MIDIA", "kills": 6, "won": true } ] } ] }

No BR (duo/squad) cada jogador também traz headshots, knockdowns e revives. 404 se a sala nunca deu start ou o resultado expirou (~15 min).

POST/rooms/{session_id}/kick

Expulsa um jogador. A sessão precisa estar active. Não é permitido expulsar o dono.

{ "player_uid": 1234567890 }
POST/rooms/{session_id}/start

Inicia a partida manualmente. A sessão passa para started e permanece consultável por ~1 minuto.

POST/rooms/{session_id}/release

Encerra a sala e libera a sessão/conta. Após o encerramento a sessão é deletada.

GET/stats/tc?ids={id1},{id2}

Estatísticas Total Competitive de um ou mais jogadores (UIDs separados por vírgula).

{ "results": [ { "account_id": 1705236910, "matches": 33, "wins": 23, "kills": 5, "mvp": 27 } ] }
GET/balance

Retorna o saldo, tipo de plano e informações do token autenticado.

{ "user_id": "abc123", "plan_type": "credit", // ou "infinite" "credit": { "balance": 29.97, "total_spent": 0.03 }, "cost_per_room": 0.03, "rooms_created": 12 }

⏱️ Rate limits

Janela fixa de 60s. Ao estourar, a resposta é 429 com o header Retry-After (segundos para tentar de novo) — respeite-o antes de repetir. Limites principais por minuto: POST /rooms ~120, consultas (GET) ~600, ações (kick/start/release) ~240, GET /balance 20.

Sugestão para POST /rooms: não passe de ~2 req/s por token e use fila/backoff. Criações em massa também podem dar 429 por concorrência.

⚠️ Códigos de Erro

CódigoSignificado
401Token ausente ou inválido
402Saldo insuficiente
403Token desabilitado ou sem permissão
404Sessão não encontrada
409Ação inválida para o estado da sala
422Payload inválido
429Limite de requisições excedido
503Falha operacional