Desenvolvedores / Documentação

Documentação da API

Referência para integrar seu bot ou sistema à Nexa.

Chaves individuais, saldo e operações de salas estão ativos. Para criar, sua conta precisa de crédito ou assinatura Nexa. Pix ainda não está disponível.

Criação de salas, consulta de jogadores e gerenciamento de partidas por requisições HTTP. Os exemplos usam JSON e podem ser adaptados à linguagem do seu projeto.

Formato
REST · JSON
Autenticação
Bearer token
URL base
https://187-127-38-140.sslip.io/v1

Primeiros passos

Do primeiro acesso à organização da sua operação.

  1. Entre com Discord

    Use o botão Entrar com Discord e autorize a identificação do seu perfil na página oficial do Discord. Se o acesso estiver em configuração, a tela informará isso.

  2. Gere sua chave

    No painel, abra Chaves de API. A chave é pessoal e autentica suas requisições à Nexa. Você pode revelá-la, copiá-la ou trocá-la.

  3. Consulte suas salas

    Envie a chave no cabeçalho Authorization para GET /v1/rooms. Cada conta enxerga somente as próprias salas.

  4. Conheça os planos

    Cada sala consome R$ 0,02 do saldo Nexa ou usa a assinatura ativa. O pagamento por Pix ainda não foi integrado; créditos e assinatura podem ser ativados manualmente pelo administrador para testes.

  5. Proteja a chave

    Guarde-a em uma variável de ambiente no servidor do seu bot ou sistema, nunca no código enviado ao navegador.

Autenticação

Discord para entrar. Chave de API para integrar.

O acesso ao painel usa o fluxo oficial OAuth2 do Discord. A Nexa solicita apenas a identificação básica do perfil. A senha é tratada pelo Discord, nunca pela Nexa.

Gere sua chave no painel e envie Authorization: Bearer NEXA_API_KEY em cada requisição. NEXA_API_KEY representa sua chave pessoal no exemplo.

Envie JSON com Content-Type: application/json nas requisições com corpo. Configure NEXA_API_URL como https://187-127-38-140.sslip.io/v1 no servidor da sua integração.

  1. Mantenha segredos no servidor

    Use variáveis de ambiente. Não coloque chaves em links, capturas de tela, repositórios públicos ou código do navegador.

  2. Uma chave por conta

    Sua chave fica vinculada ao login Discord e só consulta salas dessa conta. Cada pessoa deve gerar a própria chave.

  3. Em caso de vazamento

    Use Gerar Nova Key. A anterior é invalidada imediatamente; atualize seu bot ou sistema.

Cabeçalhos
Authorization: Bearer NEXA_API_KEY
Content-Type: application/json

Ciclo de uma sala

Entenda a sequência antes de automatizar ações.

  1. active · sala aberta

    A sala foi criada e aguarda os jogadores. Consulte os membros antes de iniciar.

  2. started · partida iniciada

    O start foi enviado. A sessão ainda pode ser consultada por um período curto.

  3. jogando · resultado parcial

    O endpoint de resultado já pode mostrar jogadores e equipes, mas sem vencedor definido.

  4. finalizada · resultado pronto

    O endpoint de resultado informa o vencedor e as estatísticas finais. Pare de consultar quando poll_after_seconds for null.

Listar salas

Consulte as salas vinculadas à sua chave.

GET/v1/roomsAtivo
curl --request GET "$NEXA_API_URL/rooms" \
  --header "Authorization: Bearer $NEXA_API_KEY"
Resposta de exemplo200 OK
{
  "rooms": []
}

Criar sala

Solicite uma nova sala com as configurações da sua operação.

POST/v1/roomsAtivo

Corpo da requisição

room_namestring
Nome da sala, com até 80 caracteres. Se omitido, a Nexa escolhe um nome.
passwordstringobrigatório
Senha da sala, de 1 a 16 caracteres.
start_delay_minutesintegerobrigatório
Minutos até o start automático: 1–10 em AP, 1–20 em BR.
config_typestring
ap_padrao, gelo_inf, tatico, ap_fullcapa, capa_3, ap_uxd, ap_7r ou br_padrao. Padrão: ap_padrao.
map_namestring
Bermuda, Purgatory, Kalahari ou Nextera em AP. BR também aceita Nova Terra e Solara.
1500_ouroboolean
Em AP, começa o primeiro round com 1500 de ouro. Ignorado em BR.
carregamentoboolean
Em AP, cria a sala com carregamento ligado. Ignorado em BR.
equipestring
Apenas BR: solo, duo ou squad. Padrão: squad.
espectadoresinteger
Apenas BR: 30, 16, 8, 6, 4, 2 ou 1. Padrão: 30.
curl --request POST "$NEXA_API_URL/rooms" \
  --header "Authorization: Bearer $NEXA_API_KEY" \
  --header "Content-Type: application/json" \
  --data '{
  "room_name": "Sala da comunidade",
  "password": "1234",
  "start_delay_minutes": 5,
  "config_type": "ap_padrao",
  "map_name": "Bermuda",
  "1500_ouro": false,
  "carregamento": false
}'
Resposta de exemplo200 OK
{
  "id": "00000000-0000-4000-8000-000000000001",
  "session_id": "f6c87a7a2df44a21b4b8a4d2d2cbf8b0",
  "room_id": 947072,
  "room_name": "Sala da comunidade",
  "status": "active",
  "invite_link": "https://ffshare.garena.com/?region=BR"
}

Consultar sala

Acompanhe o estado de uma sala pelo seu identificador.

GET/v1/rooms/{session_id}Ativo

Parâmetro de caminho

session_idstringobrigatório
Sessão retornada na criação da sala.
curl --request GET "$NEXA_API_URL/rooms/f6c87a7a2df44a21b4b8a4d2d2cbf8b0" \
  --header "Authorization: Bearer $NEXA_API_KEY"
Resposta de exemplo200 OK
{
  "session_id": "f6c87a7a2df44a21b4b8a4d2d2cbf8b0",
  "room_id": 947072,
  "room_name": "Sala da comunidade",
  "status": "active"
}

Listar jogadores

Consulte quem entrou na sala antes de iniciar uma partida.

GET/v1/rooms/{session_id}/members?include_loadout=trueAtivo

Parâmetro de caminho

session_idstringobrigatório
Sessão retornada na criação da sala.
curl --request GET "$NEXA_API_URL/rooms/f6c87a7a2df44a21b4b8a4d2d2cbf8b0/members?include_loadout=true" \
  --header "Authorization: Bearer $NEXA_API_KEY"
Resposta de exemplo200 OK
{
  "session_id": "f6c87a7a2df44a21b4b8a4d2d2cbf8b0",
  "status": "active",
  "member_count": 0,
  "members": []
}

Iniciar partida

Solicite o início de uma sala que está aguardando.

POST/v1/rooms/{session_id}/startAtivo

Parâmetro de caminho

session_idstringobrigatório
Sessão retornada na criação da sala.
curl --request POST "$NEXA_API_URL/rooms/f6c87a7a2df44a21b4b8a4d2d2cbf8b0/start" \
  --header "Authorization: Bearer $NEXA_API_KEY"
Resposta de exemplo200 OK
{
  "session_id": "f6c87a7a2df44a21b4b8a4d2d2cbf8b0",
  "status": "started",
  "started": true
}

Editar sala

Altere o modo de uma sala AP ainda aberta.

POST/v1/rooms/{session_id}/editAtivo

Parâmetro de caminho

session_idstringobrigatório
Sessão retornada na criação da sala.

Corpo da requisição

config_typestringobrigatório
Novo template AP: ap_padrao, gelo_inf, tatico, ap_fullcapa, capa_3, ap_uxd ou ap_7r.
passwordstring
Nova senha, de 1 a 16 caracteres. Se omitida, mantém a atual.
carregamentoboolean
Ativa carregamento no novo template. Padrão: false.
1500_ouroboolean
Ativa 1500 de ouro no primeiro round. Padrão: false.
curl --request POST "$NEXA_API_URL/rooms/f6c87a7a2df44a21b4b8a4d2d2cbf8b0/edit" \
  --header "Authorization: Bearer $NEXA_API_KEY" \
  --header "Content-Type: application/json" \
  --data '{
  "config_type": "ap_uxd",
  "carregamento": false,
  "1500_ouro": false
}'
Resposta de exemplo200 OK
{
  "session_id": "f6c87a7a2df44a21b4b8a4d2d2cbf8b0",
  "config_type": "ap_uxd",
  "edited": true
}

Remover jogador

Expulse um jogador da sua sala ativa.

POST/v1/rooms/{session_id}/kickAtivo

Parâmetro de caminho

session_idstringobrigatório
Sessão retornada na criação da sala.

Corpo da requisição

player_uidstringobrigatório
UID numérico do jogador retornado em /members. O dono da sala não pode ser expulso.
curl --request POST "$NEXA_API_URL/rooms/f6c87a7a2df44a21b4b8a4d2d2cbf8b0/kick" \
  --header "Authorization: Bearer $NEXA_API_KEY" \
  --header "Content-Type: application/json" \
  --data '{
  "player_uid": "15076661321"
}'
Resposta de exemplo200 OK
{
  "session_id": "f6c87a7a2df44a21b4b8a4d2d2cbf8b0",
  "player_uid": "15076661321",
  "kicked": true
}

Consultar resultado

Acompanhe a disponibilidade do resultado após a partida.

GET/v1/rooms/{session_id}/resultAtivo

Parâmetro de caminho

session_idstringobrigatório
Sessão retornada na criação da sala.
curl --request GET "$NEXA_API_URL/rooms/f6c87a7a2df44a21b4b8a4d2d2cbf8b0/result" \
  --header "Authorization: Bearer $NEXA_API_KEY"
Resposta de exemplo200 OK
{
  "session_id": "f6c87a7a2df44a21b4b8a4d2d2cbf8b0",
  "status": "jogando",
  "poll_after_seconds": 12,
  "winner_team": null,
  "teams": []
}

Liberar sala

Encerre a espera de uma sala que não será utilizada.

POST/v1/rooms/{session_id}/releaseAtivo

Parâmetro de caminho

session_idstringobrigatório
Sessão retornada na criação da sala.
curl --request POST "$NEXA_API_URL/rooms/f6c87a7a2df44a21b4b8a4d2d2cbf8b0/release" \
  --header "Authorization: Bearer $NEXA_API_KEY"
Resposta de exemplo200 OK
{
  "session_id": "f6c87a7a2df44a21b4b8a4d2d2cbf8b0",
  "released": true,
  "reason": "manual_release"
}

Estatísticas de jogadores

Consulte estatísticas TC para até 20 UIDs em uma chamada.

GET/v1/stats/tc?ids=1705236910,15076661321Ativo
curl --request GET "$NEXA_API_URL/stats/tc?ids=1705236910,15076661321" \
  --header "Authorization: Bearer $NEXA_API_KEY"
Resposta de exemplo200 OK
{
  "results": [
    {
      "account_id": 1705236910,
      "matches": 33,
      "wins": 23,
      "kills": 5,
      "mvp": 27
    }
  ]
}

Consultar saldo

Veja o saldo e a assinatura da sua própria conta Nexa.

GET/v1/balanceAtivo
curl --request GET "$NEXA_API_URL/balance" \
  --header "Authorization: Bearer $NEXA_API_KEY"
Resposta de exemplo200 OK
{
  "plan_type": "credit",
  "credit": {
    "balance": 6,
    "total_spent": 0,
    "total_purchased": 0,
    "total_granted": 6
  },
  "subscription": {
    "active": false,
    "activated_at": null,
    "expires_at": null
  }
}

Créditos e assinatura

Duas formas de planejar o uso da Nexa.

Recarga: valor provisório de R$ 0,02 por sala, com recarga mínima de R$ 6,00. O painel tem sugestões de R$ 20, R$ 50, R$ 100, R$ 200, R$ 500 e R$ 1.000.

Assinatura mensal: valor provisório de R$ 1.000 por 30 dias, com proposta de salas ilimitadas durante o período.

O saldo e a assinatura já são aplicados na criação de salas. O Pix ainda não foi integrado: os botões de pagamento estão desativados. Por enquanto, o administrador pode conceder créditos ou ativar 30 dias manualmente.

Erros e limites

Prepare sua integração para respostas previsíveis e falhas temporárias.

Trate o status HTTP antes de ler os dados. Erros da Nexa têm um campo error com uma mensagem legível. Não tome decisões automáticas com base apenas no texto da mensagem.

A criação aceita até 10 tentativas por minuto por conta; consultas e outras ações têm limites próprios. Se receber 429, aguarde antes de tentar novamente.

Em falhas de rede, não repita indiscriminadamente ações de criação, início ou remoção. Confirme o estado da sala antes de executar uma ação novamente.

StatusSituaçãoComo tratar
400 / 422Dados inválidosConfira o formato e os campos da requisição.
401Não autenticadoConfira a chave e o cabeçalho Authorization.
403Sem permissãoA sala não pertence à sua conta.
402Crédito necessárioAdicione saldo Nexa ou ative uma assinatura.
404Não encontradoConfira o identificador do recurso.
409Conflito ou criação pendenteAtualize o estado da sala. Se uma criação ficou pendente, procure o suporte antes de repetir.
429Limite de requisiçõesAguarde antes de tentar novamente.
500 / 503Falha no serviçoAguarde e confirme o estado antes de repetir uma ação.
Resposta de exemplo404 Not Found
{
  "error": "Sala não encontrada."
}

Ajuda e suporte

As informações certas ajudam a encontrar o problema mais rápido.

Antes de pedir ajuda, confira se está no ambiente correto. Chaves individuais, saldo e operações de sala estão ativos. Uma criação exige saldo ou assinatura Nexa; o Pix ainda não está ativo.

Ao relatar um problema, envie o horário, a tela ou o endpoint usado, o status HTTP e os passos para reproduzir. Remova chaves, cookies e dados pessoais das capturas e dos trechos de código.

O canal oficial de suporte da Nexa ainda será informado. Não compartilhe credenciais em servidores ou canais das referências usadas no design.

  1. O Discord não abre?

    Confira se o endereço de retorno do aplicativo Discord corresponde ao endereço publicado da Nexa.

  2. A sala não foi criada?

    Confira seu saldo ou assinatura em Planos. Durante os testes, o administrador pode conceder crédito ou 30 dias manualmente.

  3. O botão de pagamento não gera uma cobrança?

    Os pagamentos estão em configuração. Não há cobrança ou ativação de assinatura nesta versão.

Voltar ao dashboard