API REST
Endpoints REST do GBBOT pra integrações externas. Base URL https://gbbot.com.br/api. Respostas em JSON.
gbbot.com.br/apiAutenticação
token=<JWT>. Como obter:- Redirecione o user pra
https://gbbot.com.br/api/auth/login?returnTo=https://seuapp.com - User autoriza no Discord, cookie é setado em
.gbbot.com.br - Subdomínios (api.gbbot.com.br) recebem o cookie automaticamente
- Cross-domain? Use
credentials: 'include'+ CORS configurado
PÚBLICOS — sem autenticação
/api/healthSaúde do backend (uptime, memória).
curl https://gbbot.com.br/api/health{
"status": "online",
"bot": "GBBOT",
"timestamp": "2026-05-20T15:30:00.000Z",
"uptimeSeconds": 3600,
"memory": { "heapUsedMB": 128, "heapTotalMB": 256, "rssMB": 320 }
}/api/public-statusStatus agregado de bot + backend + site + lojas (cache 15s).
curl https://gbbot.com.br/api/public-status{
"bot": { "ok": true, "status": "online", "guilds": 120, "uptime": "2d 4h" },
"api": { "ok": true, "version": "1.0.0" },
"site": { "ok": true },
"lojas": { "ok": true, "published": 12 },
"checkedAt": "2026-05-20T15:30:00.000Z"
}/api/updatesHistórico de changelog público (cache 60s).
curl https://gbbot.com.br/api/updates[
{
"_id": "abc",
"version": "20-05-2026",
"title": "Update 20/05",
"content": "...",
"imageUrl": "https://i.imgur.com/xxx.gif",
"buttons": [{ "label": "...", "url": "..." }],
"publishedAt": "2026-05-20T20:22:19.319Z"
}
]/api/marketplace?sort=featured&page=1&limit=24&q=gaming&tag=pt-brLista de templates públicos do marketplace. Filtros opcionais.
curl 'https://gbbot.com.br/api/marketplace?sort=downloads&limit=10'{
"items": [
{
"slug": "setup-gaming-ptbr",
"name": "Setup Gaming PT-BR",
"description": "...",
"authorName": "fernandodoprado",
"icon": "gamepad2",
"tags": ["gaming", "pt-br"],
"downloads": 42,
"featured": true,
"createdAt": "..."
}
],
"total": 100,
"page": 1,
"limit": 10
}/api/marketplace/:slugDetalhe de um template (NÃO retorna config inteira; só metadados + seções).
curl https://gbbot.com.br/api/marketplace/setup-gaming-ptbrAUTENTICADOS — exigem cookie JWT (Discord OAuth)
/api/auth/meUser logado (perfil Discord, premium, owned guilds).
curl --cookie 'token=SEU_JWT' https://gbbot.com.br/api/auth/me/api/guildsLista de guildas que o user administra (com licenseInfo).
curl --cookie 'token=SEU_JWT' https://gbbot.com.br/api/guilds/api/guilds/:guildIdConfig completa de uma guilda (sem panelAccess.encryptedPassword).
/api/guilds/:guildId/channelsLista de canais da guilda (text + announcement + voice).
/api/guilds/:guildId/rolesLista de cargos da guilda (com hierarquia/posição).
/api/guilds/:guildId/export-configBaixa JSON da config inteira (whitelist segura — sem panelAccess/premium).
curl -L --cookie 'token=SEU_JWT' \
-o config.json \
https://gbbot.com.br/api/guilds/SEUID/export-config/api/guilds/:guildId/import-configAplica um JSON na config. Whitelist de seções permitidas.
curl -X POST --cookie 'token=SEU_JWT' \
-H 'Content-Type: application/json' \
--data @config.json \
https://gbbot.com.br/api/guilds/SEUID/import-config/api/guilds/:guildId/apply-templateAplica um template pré-configurado.
curl -X POST --cookie 'token=SEU_JWT' \
-H 'Content-Type: application/json' \
-d '{"templateId":"gaming"}' \
https://gbbot.com.br/api/guilds/SEUID/apply-template/api/guilds/:guildId/setup-templatesLista templates de Quick Setup disponíveis.
/api/guilds/:guildId/audit?limit=50Log de auditoria da guilda (TTL 180d).
/api/guilds/:guildId/webhooksLista webhooks configurados (sem expor secret).
/api/guilds/:guildId/webhooksCria webhook. **Retorna o secret APENAS aqui** — guarde imediatamente.
curl -X POST --cookie 'token=SEU_JWT' \
-H 'Content-Type: application/json' \
-d '{
"url": "https://meu-receiver.com/hook",
"label": "Meu n8n",
"events": ["raid.detected", "ticket.created"]
}' \
https://gbbot.com.br/api/guilds/SEUID/webhooks{
"ok": true,
"id": "...",
"secret": "abc123def456...",
"warning": "Anote agora — não mostramos de novo"
}/api/marketplace/publishPublica config da sua guilda como template público. Rate limit: 5min/user.
curl -X POST --cookie 'token=SEU_JWT' \
-H 'Content-Type: application/json' \
-d '{
"guildId": "SEUID",
"name": "Meu Setup",
"description": "Descrição com pelo menos 20 caracteres",
"tags": ["pt-br", "small"],
"icon": "star"
}' \
https://gbbot.com.br/api/marketplace/publish/api/marketplace/:slug/applyAplica template do marketplace no seu servidor.
/api/me/referralSeu código de afiliado + link + stats de conversões.
/api/me/referral/validateValida código de afiliado antes do checkout.
curl -X POST --cookie 'token=SEU_JWT' \
-H 'Content-Type: application/json' \
-d '{"code":"ABCD1234"}' \
https://gbbot.com.br/api/me/referral/validateINTERNOS — apenas serviços GBBOT (x-internal-secret)
/api/internal/feedbackBot encaminha reporte de /bug pra persistência.
/api/internal/webhook-fireBot dispara evento de webhook (não tem o model GuildWebhook, chama backend).
/api/internal/shop-create-orderBot cria pedido na loja virtual (Discord-side checkout flow).
Eventos do servidor
/api/guilds/:guildId/eventsLista eventos (todos os status).
/api/guilds/:guildId/eventsCria evento. Body: { title, description, startAt, durationMins, channelId, maxParticipants, xpReward }.
/api/guilds/:guildId/events/:idEdita evento. Re-publica embed no Discord.
/api/guilds/:guildId/events/:idCancela evento (soft-delete, status=cancelled).
Sugestões
/api/guilds/:guildId/suggestions?status=pending&limit=50Lista sugestões + stats por status.
/api/guilds/:guildId/suggestions/:idAtualiza status (pending/in_progress/approved/rejected) ou adminResponse.
/api/guilds/:guildId/suggestions/:idRemove sugestão do dashboard (não some do Discord).
Loja de Cargos XP
/api/guilds/:guildId/role-shopLista itens da loja (config admin).
/api/guilds/:guildId/role-shopCria item. Body: { roleId, name, priceXp, durationDays, maxStock, purchaseLimit }.
/api/guilds/:guildId/role-shop/salesHistórico de compras (últimas 100).
Marcos de membros
/api/guilds/:guildId/settings/milestonesConfigura: enabled, channelId, thresholds[], message, cardBackgroundUrl.
/api/guilds/:guildId/settings/milestones/reset-announcedReseta announced[] pra re-anunciar marcos atingidos.
Aniversários
/api/guilds/:guildId/birthday-configLê config (channelId, message, cardEnabled, cardBackgroundUrl).
/api/guilds/:guildId/birthday-configAtualiza config.
/api/guilds/:guildId/birthdaysLista aniversariantes ordenados por proximidade.
Plano Comandante (white-label)
/api/guilds/:guildId/comandanteInfo do bot dedicado atribuído (applicationId, status, customConfig).
/api/guilds/:guildId/comandante/customizationAtualiza nome/desc/avatar/banner/cor. Sync aplica em até 30 min via Discord REST.
Assistente IA
/api/ai-chatPergunta pro assistente. Body: { messages: [{role:"user", content:"..."}] }. Rate limit: 100/h + 50/dia por user.
Rate Limits
| Rota | Limite |
|---|---|
| /api/* | 100 req/min por IP |
| /api/auth/login | 5 req/min por IP |
| /api/newsletter/subscribe | 1 req/min por IP |
| /api/marketplace/publish | 1 a cada 5min por user |
| /api/shop/check-slug | limitador específico |
| /api/guilds/:id/settings | limitador específico |
Excedeu? Recebe 429 Too Many Requests. Espere e tente de novo.
Formato de erro
{ "error": "Mensagem amigável em português." }Faltou algo na doc?
Achou um endpoint que não documentei? Notou erro? Nos avisa.