Introdução
Todas as requisições partem da URL base abaixo. As respostas são sempre em JSON e trazem o campo success indicando sucesso (true) ou falha (false).
Todos os valores monetários estão em reais (BRL) e os preços já refletem o valor final de venda. O endpoint raiz acima é público e retorna a lista de recursos — ótimo para um health-check da sua integração.
{
"success": true,
"name": "Legas Forn API",
"version": "1.0",
"status": "online",
"currency": "BRL",
"endpoints": { "...": "..." }
}Autenticação
A API usa chaves no formato Bearer token. Gere a sua em Dashboard → API / Revenda. A chave começa com lf_live_ e é exibida apenas uma vez — guarde-a em local seguro. Envie-a no cabeçalho de toda requisição autenticada:
curl https://legasforn.com.br/api/v1/wallet \
-H "Authorization: Bearer lf_live_sua_chave_aqui"Nunca exponha sua chave no frontend (navegador). Use-a apenas no servidor da sua aplicação ou no seu bot. Se a chave vazar, revogue-a imediatamente no painel.
Erros e limites
Em caso de erro, a resposta tem success: false e um objeto error com code e message. O limite é de 120 requisições por minuto por chave.
{
"success": false,
"error": {
"code": "insufficient_balance",
"message": "Saldo insuficiente. Necessário R$ 179.01, disponível R$ 20.00."
}
}| HTTP | code | Significado |
|---|---|---|
| 200 | success | Sucesso |
| 400 | invalid_* | Parâmetro ausente ou inválido |
| 401 | invalid_token | Chave ausente, inválida ou revogada |
| 402 | insufficient_balance | Saldo insuficiente na carteira |
| 403 | account_frozen | Conta suspensa |
| 404 | not_found | Recurso não encontrado |
| 410 | sold | Conta já vendida / indisponível |
| 429 | rate_limited | Muitas requisições |
| 500 | internal_error | Erro interno |
| 503 | service_unavailable | Serviço temporariamente indisponível |
Listar jogos
Retorna os jogos disponíveis e os slug aceitos no parâmetro game dos demais endpoints.
curl https://legasforn.com.br/api/v1/games \
-H "Authorization: Bearer lf_live_sua_chave_aqui"Listar contas
Retorna o catálogo de contas disponíveis. Aceita também filtros de preço e ordenação (mesmos da loja). O campo item_id de cada conta é o identificador usado para ver detalhes e comprar.
| Parâmetro | Tipo | Descrição |
|---|---|---|
| game | string (obrigatório) | Slug do jogo. Use GET /api/v1/games para a lista completa. |
| page | number | Página atual. Padrão: 1. |
| perPage | number | Itens por página (máx. 50). Padrão: 20. |
| priceFrom / priceTo | number | Filtro de faixa de preço (BRL). |
| order | string | Ordenação (ex.: price_asc, price_desc). |
IDs oficiais dos jogos
valorant fortnite steam roblox league-of-legends clash-royale genshin-impact brawl-stars
A API também aceita aliases populares: cs2 e csgo redirecionam para steam; lol redireciona para league-of-legends. Contas de CS2 e CS:GO ficam dentro do catálogo steam.
curl "https://legasforn.com.br/api/v1/accounts?game=fortnite&perPage=24" \
-H "Authorization: Bearer lf_live_sua_chave_aqui"{
"success": true,
"game": "fortnite",
"page": 1,
"perPage": 24,
"total": 636,
"totalPages": 27,
"hasMore": true,
"accounts": [
{
"item_id": "xFoVPEt",
"title": "215 Skins | 239 Picaretas | Lvl 3234",
"price": 179.01,
"warranty": "Full Acesso",
"skins": 215,
"pickaxes": 239
}
]
}Ver uma conta
Retorna os detalhes completos de uma conta específica, usando o item_id da listagem.
curl "https://legasforn.com.br/api/v1/accounts/xFoVPEt?game=fortnite" \
-H "Authorization: Bearer lf_live_sua_chave_aqui"Skins da conta
Lista os cosméticos/skins da conta com nome e URL da imagem, ideal para exibir previews ou baixar as imagens no seu bot/loja. As imagens vêm de fontes públicas oficiais dos jogos.
curl "https://legasforn.com.br/api/v1/accounts/xFoVPEt/skins?game=fortnite" \
-H "Authorization: Bearer lf_live_sua_chave_aqui"Verificar conta
Confere se uma conta ainda está disponível e válida antes de revender — perfeito para checar estoque no seu bot/site. A resposta é um status simplificado, sem expor nenhuma mensagem da origem.
| Parâmetro | Tipo | Descrição |
|---|---|---|
| accountId | string | ID da conta a verificar (obrigatório). |
| game | string | Jogo da conta (opcional). Fortnite não tem verificação automática. |
curl -X POST "https://legasforn.com.br/api/v1/verify" \
-H "Authorization: Bearer lf_live_sua_chave_aqui" \
-H "Content-Type: application/json" \
-d '{ "accountId": "xFoVPEt", "game": "valorant" }'O campo status pode ser available (disponível), unavailable (vendida/removida) ou checker_unavailable (verificador em manutenção — a conta ainda pode estar válida).
Comprar conta
Compra uma conta usando o saldo da sua carteira. A entrega é automática: a resposta já traz as credenciais em account. Se a conta ficar indisponível, o valor é reembolsado automaticamente.
| Parâmetro | Tipo | Descrição |
|---|---|---|
| accountId | string (obrigatório) | O item_id retornado na listagem. |
| game | string (obrigatório) | Slug do jogo da conta. |
curl -X POST "https://legasforn.com.br/api/v1/purchase" \
-H "Authorization: Bearer lf_live_sua_chave_aqui" \
-H "Content-Type: application/json" \
-d '{"accountId": "xFoVPEt", "game": "fortnite"}'{
"success": true,
"orderId": "a1b2c3d4-...",
"delivered": true,
"price": 179.01,
"account": {
"login": "usuario123",
"password": "senha-secreta",
"extra_info": "informações adicionais",
"email_login": "conta@email.com",
"email_password": "senha-do-email",
"email_url": "https://...",
"twofa_secret": "BASE32SECRET",
"username": "nick"
}
}Consultar carteira
Retorna o saldo atual e as últimas transações da sua carteira.
curl "https://legasforn.com.br/api/v1/wallet" \
-H "Authorization: Bearer lf_live_sua_chave_aqui"Adicionar saldo (PIX)
Gera um depósito PIX para adicionar saldo à carteira. A resposta traz o código copia e cola e o QR Code. Valor entre R$ 2,00 e R$ 1.000,00.
| Parâmetro | Tipo | Descrição |
|---|---|---|
| amount | number (obrigatório) | Valor em BRL (2 a 1000). |
| payerName | string (obrigatório) | Nome completo do pagador. |
| payerDocument | string (obrigatório) | CPF do pagador (apenas números). |
curl -X POST "https://legasforn.com.br/api/v1/wallet/deposit" \
-H "Authorization: Bearer lf_live_sua_chave_aqui" \
-H "Content-Type: application/json" \
-d '{"amount": 100, "payerName": "Joao Silva", "payerDocument": "12345678900"}'Verifica o status do depósito. Quando status for completed, o saldo já foi creditado. Outros valores: pending, expired.
curl "https://legasforn.com.br/api/v1/wallet/deposit/dep_1718..." \
-H "Authorization: Bearer lf_live_sua_chave_aqui"Listar pedidos
Retorna o histórico de pedidos da sua conta (feitos pela web ou pela API).
curl "https://legasforn.com.br/api/v1/orders?page=1&perPage=20" \
-H "Authorization: Bearer lf_live_sua_chave_aqui"Detalhe do pedido (com 2FA)
Retorna o pedido com as credenciais entregues e, quando aplicável, o código 2FA / Steam Guard atual já calculado (campo twofa). Perfeito para reenviar o login ao cliente no Discord.
curl "https://legasforn.com.br/api/v1/orders/a1b2c3d4-..." \
-H "Authorization: Bearer lf_live_sua_chave_aqui"Reembolso de conta não entregue
Se uma conta foi comprada mas não foi entregue (falha durante a entrega), você pode solicitar o reembolso pelo endpoint abaixo. O saldo é devolvido à carteira automaticamente. Este endpoint é idempotente — chamar várias vezes nunca credita em dobro.
Reembolso automático
Mesmo sem chamar este endpoint, o sistema verifica automaticamente a cada 5 minutos se há pedidos travados. Pedidos em paid há mais de 15 minutos são reembolsados automaticamente. Use este endpoint para forçar o reembolso antes disso.
| Parâmetro | Tipo | Descrição |
|---|---|---|
| id | string (path) | ID do pedido a reembolsar (orderId retornado na compra). |
curl -X POST "https://legasforn.com.br/api/v1/orders/a1b2c3d4-.../refund" \
-H "Authorization: Bearer lf_live_sua_chave_aqui"| HTTP | Significado |
|---|---|
| 200 | Reembolso processado (ou já havia sido reembolsado antes — idempotente). |
| 409 | Pedido já entregue — não é reembolsável. |
| 425 | Pedido com menos de 15 min — ainda pode estar em entrega. Tente mais tarde. |
| 404 | Pedido não encontrado ou não pertence à sua chave. |
Lucro e financeiro
Painel financeiro completo da sua conta: saldo atual, total depositado, total gasto, economia obtida com descontos/cupons, bônus recebidos e o resumo das compras por jogo. Ideal para acompanhar o lucro e o desempenho da sua revenda.
| Parâmetro | Tipo | Descrição |
|---|---|---|
| period | string | Janela de tempo: 7d, 30d, 90d, all ou uma data ISO (YYYY-MM-DD). Padrão: 30d. |
curl "https://legasforn.com.br/api/v1/stats?period=30d" \
-H "Authorization: Bearer lf_live_sua_chave_aqui"Cupons de desconto
Crie e gerencie seus próprios cupons promocionais para usar nas suas vendas. Os cupons são percentuais (até 20%) e podem ter validade, valor mínimo, limite de usos e restrição por jogo.
Criar um cupom
| Parâmetro | Tipo | Descrição |
|---|---|---|
| code | string | Código do cupom, 3 a 20 caracteres (letras e números). |
| discountPercent | number | Percentual de desconto (1 a 20). |
| minOrderValue | number | Valor mínimo do pedido (opcional, mín. R$10). |
| maxUses | number | Limite de usos (opcional, máx. 1000, padrão 100). |
| expiresAt | string | Data de expiração ISO 8601 (opcional). |
| games | string[] | Restringe a jogos específicos (opcional). |
curl -X POST "https://legasforn.com.br/api/v1/coupons" \
-H "Authorization: Bearer lf_live_sua_chave_aqui" \
-H "Content-Type: application/json" \
-d '{
"code": "PROMO10",
"discountPercent": 10,
"minOrderValue": 50,
"maxUses": 200,
"expiresAt": "2026-12-31T23:59:59Z",
"games": ["valorant", "steam"]
}'Por segurança, só são aceitos cupons percentuais de até 20%. Você pode ter no máximo 50 cupons por conta. Cupons removidos são desativados (o histórico de uso é mantido).
Exemplo: bot de Discord
Um bot completo com discord.js que lista contas e vende com um comando de barra. A entrega das credenciais é enviada por DM ao comprador.
import { Client, GatewayIntentBits, REST, Routes, SlashCommandBuilder } from "discord.js"
const API = "https://legasforn.com.br/api/v1"
const KEY = process.env.LEGAS_API_KEY // sua chave lf_live_...
const headers = {
Authorization: `Bearer ${KEY}`,
"Content-Type": "application/json",
}
const client = new Client({ intents: [GatewayIntentBits.Guilds] })
// Registra os comandos /contas e /comprar
const commands = [
new SlashCommandBuilder().setName("contas").setDescription("Lista contas à venda")
.addStringOption(o => o.setName("jogo").setDescription("ex.: fortnite").setRequired(true)),
new SlashCommandBuilder().setName("comprar").setDescription("Compra uma conta")
.addStringOption(o => o.setName("id").setDescription("item_id").setRequired(true))
.addStringOption(o => o.setName("jogo").setDescription("ex.: fortnite").setRequired(true)),
].map(c => c.toJSON())
const rest = new REST({ version: "10" }).setToken(process.env.DISCORD_TOKEN)
await rest.put(Routes.applicationCommands(process.env.DISCORD_APP_ID), { body: commands })
client.on("interactionCreate", async (i) => {
if (!i.isChatInputCommand()) return
if (i.commandName === "contas") {
const jogo = i.options.getString("jogo")
const r = await fetch(`${API}/accounts?game=${jogo}&perPage=5`, { headers })
const { accounts } = await r.json()
const lista = accounts.map(a => `\`${a.item_id}\` — ${a.title} — R$ ${a.price}`).join("\n")
await i.reply({ content: lista || "Nenhuma conta encontrada.", ephemeral: true })
}
if (i.commandName === "comprar") {
await i.deferReply({ ephemeral: true })
const accountId = i.options.getString("id")
const game = i.options.getString("jogo")
const r = await fetch(`${API}/purchase`, {
method: "POST", headers,
body: JSON.stringify({ accountId, game }),
})
const data = await r.json()
if (!data.success) return i.editReply(`Falha: ${data.error.message}`)
const c = data.account
await i.user.send(
`Compra aprovada! Pedido ${data.orderId}\n` +
`Login: ${c.login}\nSenha: ${c.password}\n${c.email_login ? "E-mail: " + c.email_login : ""}`
)
await i.editReply("Conta entregue na sua DM!")
}
})
client.login(process.env.DISCORD_TOKEN)Exemplo: loja / site
Em qualquer backend (Next.js, Express, PHP...), faça a compra no servidor — nunca exponha a chave no navegador. Exemplo de uma rota de checkout que revende com a sua própria margem:
// app/api/comprar/route.ts (seu site)
export async function POST(req) {
const { accountId, game } = await req.json()
const r = await fetch("https://legasforn.com.br/api/v1/purchase", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.LEGAS_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({ accountId, game }),
})
const data = await r.json()
if (!data.success) {
return Response.json({ erro: data.error.message }, { status: 400 })
}
// Aqui você registra a venda no SEU banco, aplica sua margem,
// envia e-mail ao cliente, etc.
return Response.json({ pedido: data.orderId, conta: data.account })
}Dica de revenda: consulte o preço com /accounts, aplique sua margem e cobre o cliente no seu próprio gateway. Você paga o valor base com seu saldo e fica com a diferença.
Prompts para IA
Quer construir mais rápido? Cole um destes prompts no v0, ChatGPT, Claude ou Cursor — eles já incluem o contexto da API para gerar código funcional.
Crie um bot de Discord em discord.js (v14) que usa a API REST da Legas Forn.
Base URL: https://legasforn.com.br/api/v1
Auth: header "Authorization: Bearer <LEGAS_API_KEY>" (variável de ambiente).
Envelope: respostas têm { success: true|false }. Erros: { success:false, error:{ code, message } }.
Endpoints:
- GET /games -> { games:[{slug,name}] }
- GET /accounts?game={slug}&perPage=10 -> { accounts:[{item_id,title,price}] }
- POST /purchase body {accountId, game} -> { success, orderId, account:{login,password,email_login} }
- GET /wallet -> { balance }
Comandos slash:
/saldo -> mostra o saldo da carteira
/contas jogo:<slug> -> lista 10 contas com id, título e preço
/comprar id:<item_id> jogo:<slug> -> compra e envia as credenciais por DM (resposta efêmera no canal)
Trate erros mostrando error.message. Não exponha a chave em logs.Pronto para começar a revender?
Gere sua chave de API agora e faça a primeira venda automática em minutos.
Criar minha chave de API