Envie likes com uma única requisição GET. Autenticação por API key.
/api/v2/.
Se a sua integração já roda em /api/v1/, não precisa mudar nada:
as duas versões respondem exatamente igual, com os mesmos parâmetros e o mesmo retorno.
A v1 segue ativa e sem data de desligamento.
GET https://like200.garenafreefire.com.br/api/v2/enviar
| Parâmetro | Obrigatório | Descrição |
|---|---|---|
key | Sim | Uma das suas API keys — cada uma tem limite próprio (gerencie no painel). Também aceita no header x-api-key |
uid | Sim | ID do jogador (somente números) |
region | Não | Região/servidor. Padrão: BR |
curl "https://like200.garenafreefire.com.br/api/v2/enviar?key=SUA_API_KEY&uid=123456789®ion=BR"
Ou direto no navegador:
https://like200.garenafreefire.com.br/api/v2/enviar?key=SUA_API_KEY&uid=123456789
{
"sucesso": true,
"nickname": "PlayerNick",
"uid": "123456789",
"regiao": "BR",
"likes_antes": 1200,
"likes_enviados": 100,
"likes_delta": 100,
"likes_depois": 1300,
"tempo_ms": 2143,
"uso_hoje": 5,
"limite_diario": 100,
"restantes_hoje": 95
}
Sempre retornam "sucesso": false e um campo erro:
| HTTP | erro | Significado |
|---|---|---|
| 401 | sem_chave / chave_invalida | API key ausente ou inválida |
| 403 | sem_plano | Nenhum plano ativo |
| 400 | uid_invalido | uid ausente ou não numérico |
| 429 | limite_diario | Limite da janela atingido (zera às 13:00) |
| 404 | id_nao_encontrado | ID do jogador não existe — não desconta |
| 409 | ja_enviado | ID já recebeu likes na janela atual (lockdown) — não desconta |
| 409 | em_processamento | Este ID já está sendo processado agora — não desconta |
| 503 | servidor_lotado | Servidor ocupado — tente de novo — não desconta |
| 502/504 | falha / timeout | Erro temporário — não desconta |
Cobrança: se o envio for processado pela fonte (com ou sem likes), desconta 1 do limite da janela. Lockdown, ID inexistente e erros não descontam.
Fila: processadas em paralelo até um limite; acima disso, sua chamada apenas aguarda a vez e retorna só quando a fonte responder — sem resposta intermediária.
{ "sucesso": false, "erro": "limite_diario", "mensagem": "Limite desta key (100 envios) atingido. Renova todo dia as 13:00 (America/Sao_Paulo).", "uso_hoje": 100, "limite_diario": 100, "restantes_hoje": 0, "reseta_em": "2026-09-21T16:00:00.000Z" }
Importante: cada envio processado desconta 1 do limite; atingido o limite, novos envios são bloqueados. Cada ID entra em lockdown após um envio e não pode reenviar até a janela renovar.
reseta_em com o horário exato da próxima virada (UTC, ISO-8601): use esse campo em vez de assumir meia-noite.Você pede uma meta de likes para um ID e o sistema entrega sozinho. Cada rodada rende ~200 likes e cada ID só aceita um envio por dia — 2.000 likes levam ≈ 10 dias. Você só consulta o pedido para acompanhar.
GET https://like200.garenafreefire.com.br/api/v2/pedidos/criar?key=SUA_API_KEY&uid=123456789&likes=2000
| Parâmetro | Obrigatório | Descrição |
|---|---|---|
key | Sim | Sua API key — os envios automáticos descontam do limite dela e do plano |
uid | Sim | ID do jogador (somente números) |
likes | Sim | Meta de likes a entregar (de 200 a 100.000) |
region | Não | Região/servidor. Padrão: BR |
{
"sucesso": true,
"mensagem": "Pedido criado. Os envios comecam automaticamente.",
"consultar_em": "https://like200.garenafreefire.com.br/api/v2/pedidos/pd_9f2c.../?key=SUA_API_KEY",
"link_acompanhamento": "https://like200.garenafreefire.com.br/acompanhar/ac_5f31...",
"pedido": { "id": "pd_9f2c8a71b0d4e5f6", "status": "na_fila", "meta_likes": 2000, ... }
}
Guarde o id do pedido (pd_...) — é por ele que você acompanha.
Todo pedido criado pela API já volta com link_acompanhamento. Repasse essa URL
ao dono do ID: ele abre no celular e vê, em tempo real, o perfil dele e o extrato de cada envio —
sem login, sem API key e sem acesso a nada da sua conta (nem aos seus outros pedidos).
O endereço é fixo por ID de jogador e nunca expira. Quando o pacote acaba e o cliente renova, o mesmo link que ele já tem passa a mostrar o pedido novo — e continua exibindo o total entregue naquele ID desde o começo. Entre um pedido e outro a página segue no ar, avisando que a entrega está pausada.
GET https://like200.garenafreefire.com.br/api/v2/pedidos/pd_9f2c8a71b0d4e5f6/link?key=SUA_API_KEY → o link do ID POST https://like200.garenafreefire.com.br/api/v2/pedidos/pd_9f2c8a71b0d4e5f6/link?key=SUA_API_KEY → garante o link POST https://like200.garenafreefire.com.br/api/v2/pedidos/pd_9f2c8a71b0d4e5f6/link/revogar?key=SUA_API_KEY → desliga # também aceita o ID do jogador direto, sem saber o código do pedido: GET https://like200.garenafreefire.com.br/api/v2/pedidos/uid:123456789/link?key=SUA_API_KEY
{
"sucesso": true,
"pedido": "pd_9f2c8a71b0d4e5f6",
"uid": "123456789",
"ativo": true,
"permanente": true,
"link_acompanhamento": "https://like200.garenafreefire.com.br/acompanhar/ac_5f31..."
}
O POST é idempotente: chamar de novo devolve sempre o mesmo
endereço, nunca um diferente. revogar apenas desliga a página — o
endereço fica reservado e religar traz exatamente o mesmo link de volta. Pedidos criados pelo painel
têm o botão Gerar link na tabela, com o mesmo comportamento.
GET https://like200.garenafreefire.com.br/api/v2/pedidos/pd_9f2c8a71b0d4e5f6?key=SUA_API_KEY
{
"sucesso": true,
"pedido": {
"id": "pd_9f2c8a71b0d4e5f6",
"status": "na_fila",
"uid": "123456789",
"nickname": "PlayerNick",
"meta_likes": 2000,
"likes_inicial": 4691, // likes que a conta tinha quando o pedido entrou
"likes_enviados": 600, // quanto já entregamos
"likes_atuais": 5291, // likes da conta no último envio
"likes_restantes": 1400,
"progresso": 30,
"envios_ok": 3,
"envios_erro": 0,
"envios_restantes": 7,
"ultimo_envio": "2026-08-10T16:04:11.000Z",
"proximo_envio": "2026-08-11T16:00:00.000Z",
"aguardando": "aguardando_janela",
"mensagem": "Este ID ja recebeu likes hoje. Proximo envio na virada das 13:00.",
"criado_em": "2026-08-08T12:00:00.000Z",
"concluido_em": null,
"historico": [ { "data": "...", "enviado": true, "likes_enviados": 200, "likes_antes": 5091, "likes_depois": 5291 } ]
}
}
| status | Significado |
|---|---|
na_fila | Em andamento — aguardando a próxima rodada de envio |
enviando | Enviando likes neste momento |
concluido | Meta atingida |
cancelado | Cancelado por você |
falhou | Encerrado (ex.: ID não existe) — veja ultimo_erro |
| aguardando | Por que não está enviando agora |
|---|---|
aguardando_janela | O ID já recebeu hoje; volta na virada das 13:00 |
limite_diario | Limite do plano atingido; continua na virada das 13:00 |
limite_key | Limite diário da key do pedido atingido |
plano_vencido | Plano inativo — o pedido é retomado quando renovar |
reagendado | Erro temporário na fonte; nova tentativa já agendada |
na_fila | Pronto para enviar na próxima varredura |
O cliente contratou mais likes no mesmo ID? Não precisa criar outro pedido — some na meta do que já existe. O likes aqui é o quanto adicionar, não o total novo.
GET https://like200.garenafreefire.com.br/api/v2/pedidos/pd_9f2c8a71b0d4e5f6/aumentar?key=SUA_API_KEY&likes=1400
Um pedido de 600 likes vira 2.000, o progresso já entregue continua valendo e a entrega segue de onde parou. Se o pedido já estava concluído, ele reabre e volta para a fila (ocupando uma vaga de pedido em andamento).
| HTTP | erro | Significado |
|---|---|---|
| 400 | quantidade_invalida | likes ausente ou não positivo |
| 400 | meta_maxima | A meta total passaria de 100.000 likes |
| 409 | pedido_encerrado | Pedido cancelado ou falhou — crie um novo |
| 409 | uid_em_pedido | Já existe outro pedido aberto para esse ID |
| 402 | plano_vencido | Renove o plano para aumentar pedidos |
GET https://like200.garenafreefire.com.br/api/v2/pedidos?key=SUA_API_KEY
GET https://like200.garenafreefire.com.br/api/v2/pedidos/pd_9f2c8a71b0d4e5f6/cancelar?key=SUA_API_KEY
Ao cancelar, os likes já entregues permanecem — só param os próximos envios.
| HTTP | erro | Significado |
|---|---|---|
| 400 | quantidade_invalida | likes fora do intervalo permitido |
| 409 | uid_em_pedido | Já existe pedido em andamento para esse ID |
| 429 | max_pedidos | Máximo de pedidos em andamento do seu plano |
| 404 | pedido_nao_encontrado | O pedido não é desta conta |
Cobrança: cada rodada automática desconta 1 do limite do plano, igual a uma chamada manual. Você pode ter em andamento tantos pedidos quanto o limite de envios/dia do seu plano (1 envio por dia cada). Criar o pedido não desconta nada.
Em vez de ficar consultando o pedido, cadastre uma URL em Painel → Webhook e nós avisamos o seu servidor a cada envio.
POST https://seusite.com/webhook/likes
X-Evento: envio.ok
X-Tentativa: 1
X-Assinatura: sha256=<hmac do corpo com o seu segredo>
{
"evento": "envio.ok",
"enviado_em": "2026-08-11T00:32:07.000Z",
"envio": {
"uid": "123456789", "regiao": "BR", "nickname": "PlayerNick",
"sucesso": true, "likes_enviados": 200,
"likes_antes": 1200, "likes_depois": 1400,
"erro": null, "mensagem": null, "tempo_ms": 2143, "origem": "auto"
},
"pedido": { "id": "pd_9f2c8a71b0d4e5f6", "status": "na_fila", "meta_likes": 2000,
"likes_enviados": 200, "likes_restantes": 1800, "progresso": 10 }
}
| evento | Quando dispara |
|---|---|
envio.ok | Um envio entregou likes — origem: api (sua chamada) ou auto (pedido) |
envio.erro | Um envio não entregou; o motivo vem em erro |
pedido.criado | Pedido automático criado |
pedido.concluido | O pedido bateu a meta |
pedido.falhou | Pedido encerrado (ex.: ID inexistente) |
Em envio manual o campo pedido vem null. Nas esperas normais (o ID já recebeu hoje) não mandamos evento.
Resposta esperada: qualquer 2xx. Se der outra coisa ou der timeout, tentamos de novo em 10s, 1min, 5min, 30min e 2h — depois marcamos como falha (dá para reenviar pelo painel).
// Node.js — use o corpo CRU (raw), não o JSON já convertido
const esperado = 'sha256=' + require('crypto')
.createHmac('sha256', SEU_SEGREDO).update(corpoCru).digest('hex');
const ok = esperado === req.headers['x-assinatura'];