/healthHealth check
Confirma que a API HTTP está respondendo.
{"status":"ok"}const response = await fetch('https://runixcloud.online/health', {
method: 'GET',
});
console.log(await response.text());Integre autenticação, projetos, pool de recursos, arquivos, métricas e recursos administrativos ao seu próprio fluxo com exemplos prontos em quatro linguagens.
https://runixcloud.online/apiQuando o projeto estiver publicado em outro domínio, utilize a origem configurada para a sua instalação. Em desenvolvimento, o proxy local usa http://localhost:3000/api.
Authorization: Bearer <token>Registro e login são públicos. Os demais recursos da API exigem o token retornado pela autenticação; endpoints administrativos exigem uma conta admin.
Na criação de projeto você escolhe nome, runtime, versão e a parcela de RAM, CPU e disco reservada no pool da conta. O deploy por ZIP é feito em seguida pelo endpoint dedicado.
Pesquise por recurso, filtre por categoria e troque a linguagem dos exemplos sem sair da página.
/healthConfirma que a API HTTP está respondendo.
{"status":"ok"}const response = await fetch('https://runixcloud.online/health', {
method: 'GET',
});
console.log(await response.text());/api/auth/registerCria uma conta no plano inicial disponível.
{
"email": "user@example.com",
"password": "password123"
}{"token":"<jwt>"}const response = await fetch('https://runixcloud.online/api/auth/register', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
"email": "user@example.com",
"password": "password123"
})
});
console.log(await response.text());/api/auth/loginValida email/senha e devolve JWT e role.
{
"email": "user@example.com",
"password": "password123"
}{"token":"<jwt>","role":"user"}const response = await fetch('https://runixcloud.online/api/auth/login', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
"email": "user@example.com",
"password": "password123"
})
});
console.log(await response.text());/api/meRetorna identidade, role, suspensão e plano.
{"id":"<uuid>","email":"user@example.com","role":"user","suspended":false,"plan":"Pro"}const response = await fetch('https://runixcloud.online/api/me', {
method: 'GET',
headers: {
'Authorization': 'Bearer ' + TOKEN
},
});
console.log(await response.text());/api/poolCapacidade total, reservada e livre da conta. Projetos reservam recursos deste pool.
{"plan":"Pro","memory_mb":4096,"used_memory_mb":1280,"free_memory_mb":2816,"cpu":4,"used_cpu":2,"free_cpu":2,"disk_mb":20480,"used_disk_mb":3072,"free_disk_mb":17408,"max_servers":10,"used_servers":2,"free_servers":8}const response = await fetch('https://runixcloud.online/api/pool', {
method: 'GET',
headers: {
'Authorization': 'Bearer ' + TOKEN
},
});
console.log(await response.text());/api/accountRetorna perfil, Discord conectado e prefixo da API key.
const response = await fetch('https://runixcloud.online/api/account', {
method: 'GET',
headers: {
'Authorization': 'Bearer ' + TOKEN
},
});
console.log(await response.text());/api/accountAtualiza nome de exibição e avatar.
{
"username": "Samuel",
"avatar": "https://example.com/avatar.png"
}const response = await fetch('https://runixcloud.online/api/account', {
method: 'PUT',
headers: {
'Authorization': 'Bearer ' + TOKEN,
'Content-Type': 'application/json'
},
body: JSON.stringify({
"username": "Samuel",
"avatar": "https://example.com/avatar.png"
})
});
console.log(response.status);/api/account/passwordTroca a senha local da conta.
{
"password": "uma-senha-forte"
}const response = await fetch('https://runixcloud.online/api/account/password', {
method: 'POST',
headers: {
'Authorization': 'Bearer ' + TOKEN,
'Content-Type': 'application/json'
},
body: JSON.stringify({
"password": "uma-senha-forte"
})
});
console.log(response.status);/api/account/apikeySubstitui a chave de API e exibe o segredo uma única vez.
const response = await fetch('https://runixcloud.online/api/account/apikey', {
method: 'POST',
headers: {
'Authorization': 'Bearer ' + TOKEN
},
});
console.log(await response.text());/api/account/apikeyRevoga a chave de API atual.
const response = await fetch('https://runixcloud.online/api/account/apikey', {
method: 'DELETE',
headers: {
'Authorization': 'Bearer ' + TOKEN
},
});
console.log(response.status);/api/plansLista planos públicos, recursos, preços e disponibilidade de checkout.
const response = await fetch('https://runixcloud.online/api/plans', {
method: 'GET',
});
console.log(await response.text());/api/billingRetorna plano atual, vigência e histórico recente de cobranças.
const response = await fetch('https://runixcloud.online/api/billing', {
method: 'GET',
headers: {
'Authorization': 'Bearer ' + TOKEN
},
});
console.log(await response.text());/api/billing/coupons/previewValida um cupom no servidor e retorna valor original, desconto e total final. Cupons recorrentes ativos também podem ser aplicados automaticamente.
{
"plan_id": "uuid-do-plano",
"cycle": "monthly",
"code": "RUNIX20"
}const response = await fetch('https://runixcloud.online/api/billing/coupons/preview', {
method: 'POST',
headers: {
'Authorization': 'Bearer ' + TOKEN,
'Content-Type': 'application/json'
},
body: JSON.stringify({
"plan_id": "uuid-do-plano",
"cycle": "monthly",
"code": "RUNIX20"
})
});
console.log(await response.text());/api/billing/checkout/:planIdCria uma preferência no Mercado Pago e uma ordem local vinculada ao usuário.
{
"cycle": "monthly"
}const response = await fetch('https://runixcloud.online/api/billing/checkout/:planId', {
method: 'POST',
headers: {
'Authorization': 'Bearer ' + TOKEN,
'Content-Type': 'application/json'
},
body: JSON.stringify({
"cycle": "monthly"
})
});
console.log(await response.text());/api/billing/orders/:idConsulta o estado da ordem local. Pagamentos aprovados em espera podem ser reconciliados novamente.
const response = await fetch('https://runixcloud.online/api/billing/orders/SERVER_ID', {
method: 'GET',
headers: {
'Authorization': 'Bearer ' + TOKEN
},
});
console.log(await response.text());/api/webhooks/mercadopagoRecebe eventos de pagamento, valida X-Signature e consulta o pagamento no Mercado Pago antes de entregar o plano.
const response = await fetch('https://runixcloud.online/api/webhooks/mercadopago', {
method: 'POST',
});
console.log(await response.text());/api/runtimesCatálogo real de runtimes e versões aceitas.
{"node":{"name":"Node.js","versions":["20","22","24"]},"python":{"name":"Python","versions":["3.11","3.12","3.13"]},"java":{"name":"Java","versions":["17","21","25"]},"rust":{"name":"Rust","versions":["stable"]}}const response = await fetch('https://runixcloud.online/api/runtimes', {
method: 'GET',
headers: {
'Authorization': 'Bearer ' + TOKEN
},
});
console.log(await response.text());/api/serversLista os projetos e suas reservas individuais.
[{"id":"<uuid>","name":"api","runtime":"node","version":"22","status":"online","memory_mb":256,"cpu":1,"disk_mb":512,"start_command":"node index.js"}]const response = await fetch('https://runixcloud.online/api/servers', {
method: 'GET',
headers: {
'Authorization': 'Bearer ' + TOKEN
},
});
console.log(await response.text());/api/serversReserva recursos do pool e cria um container parado, pronto para receber o deploy.
{
"name": "api",
"runtime": "node",
"version": "22",
"memory_mb": 256,
"cpu": 1,
"disk_mb": 512,
"start_command": "node index.js"
}{"id":"<uuid>","status":"offline"}const response = await fetch('https://runixcloud.online/api/servers', {
method: 'POST',
headers: {
'Authorization': 'Bearer ' + TOKEN,
'Content-Type': 'application/json'
},
body: JSON.stringify({
"name": "api",
"runtime": "node",
"version": "22",
"memory_mb": 256,
"cpu": 1,
"disk_mb": 512,
"start_command": "node index.js"
})
});
console.log(await response.text());/api/servers/:id/deployExtrai um pacote .zip diretamente em /workspace. Se houver uma única pasta raiz, ela é removida automaticamente.
{"status":"deployed"}import { readFile } from 'node:fs/promises';
const form = new FormData();
form.append('file', new Blob([await readFile('./project.zip')]), 'project.zip');
const response = await fetch('https://runixcloud.online/api/servers/SERVER_ID/deploy', {
method: 'POST',
headers: { 'Authorization': 'Bearer ' + TOKEN },
body: form
});
console.log(response.status, await response.text());/api/servers/:id/redeployValida o ZIP, substitui todo o /workspace e preserva o estado do serviço. Se estava online, reinicia após a publicação; se estava parado, permanece parado.
{"status":"redeployed","restarted":true}import { readFile } from 'node:fs/promises';
const form = new FormData();
form.append('file', new Blob([await readFile('./project.zip')]), 'project.zip');
const response = await fetch('https://runixcloud.online/api/servers/SERVER_ID/redeploy', {
method: 'POST',
headers: { 'Authorization': 'Bearer ' + TOKEN },
body: form
});
console.log(response.status, await response.text());/api/servers/:idRetorna runtime, estado, comando e recursos reservados.
{"id":"<uuid>","name":"api","status":"online","memory_mb":256,"cpu":1,"disk_mb":512,"start_command":"node index.js"}const response = await fetch('https://runixcloud.online/api/servers/SERVER_ID', {
method: 'GET',
headers: {
'Authorization': 'Bearer ' + TOKEN
},
});
console.log(await response.text());/api/servers/:idAltera nome e/ou redistribui RAM, CPU e disco sem ultrapassar o pool da conta.
{
"name": "api-prod",
"memory_mb": 512,
"cpu": 1,
"disk_mb": 1024
}const response = await fetch('https://runixcloud.online/api/servers/SERVER_ID', {
method: 'PATCH',
headers: {
'Authorization': 'Bearer ' + TOKEN,
'Content-Type': 'application/json'
},
body: JSON.stringify({
"name": "api-prod",
"memory_mb": 512,
"cpu": 1,
"disk_mb": 1024
})
});
console.log(response.status);/api/servers/:idRemove o container e devolve os recursos reservados ao pool.
const response = await fetch('https://runixcloud.online/api/servers/SERVER_ID', {
method: 'DELETE',
headers: {
'Authorization': 'Bearer ' + TOKEN
},
});
console.log(response.status);/api/servers/:id/startExecuta start no container. Stop/restart/kill persistem um snapshot de logs antes da ação.
{"status":"online"}const response = await fetch('https://runixcloud.online/api/servers/SERVER_ID/start', {
method: 'POST',
headers: {
'Authorization': 'Bearer ' + TOKEN
},
});
console.log(await response.text());/api/servers/:id/stopExecuta stop no container. Stop/restart/kill persistem um snapshot de logs antes da ação.
{"status":"offline"}const response = await fetch('https://runixcloud.online/api/servers/SERVER_ID/stop', {
method: 'POST',
headers: {
'Authorization': 'Bearer ' + TOKEN
},
});
console.log(await response.text());/api/servers/:id/restartExecuta restart no container. Stop/restart/kill persistem um snapshot de logs antes da ação.
{"status":"online"}const response = await fetch('https://runixcloud.online/api/servers/SERVER_ID/restart', {
method: 'POST',
headers: {
'Authorization': 'Bearer ' + TOKEN
},
});
console.log(await response.text());/api/servers/:id/killExecuta kill no container. Stop/restart/kill persistem um snapshot de logs antes da ação.
{"status":"killed"}const response = await fetch('https://runixcloud.online/api/servers/SERVER_ID/kill', {
method: 'POST',
headers: {
'Authorization': 'Bearer ' + TOKEN
},
});
console.log(await response.text());/api/servers/:id/logsRetorna as últimas 500 linhas de stdout/stderr, com timestamps.
{"logs":"..."}const response = await fetch('https://runixcloud.online/api/servers/SERVER_ID/logs', {
method: 'GET',
headers: {
'Authorization': 'Bearer ' + TOKEN
},
});
console.log(await response.text());/api/servers/:id/log-historyRetorna até 10 snapshots persistidos das execuções anteriores.
{"items":[{"id":"<uuid>","reason":"stop","logs":"...","created_at":"<timestamp>"}]}const response = await fetch('https://runixcloud.online/api/servers/SERVER_ID/log-history', {
method: 'GET',
headers: {
'Authorization': 'Bearer ' + TOKEN
},
});
console.log(await response.text());/api/servers/:id/statsSnapshot de CPU e memória direto do Docker.
{"cpu_percent":1.25,"memory_usage":104857600,"memory_limit":268435456}const response = await fetch('https://runixcloud.online/api/servers/SERVER_ID/stats', {
method: 'GET',
headers: {
'Authorization': 'Bearer ' + TOKEN
},
});
console.log(await response.text());/api/servers/:id/filesLista um nível de /workspace usando a API de archive do Docker; funciona também com container parado.
path=/workspace{"files":[{"name":"index.js","type":"f","size":"124"}]}const response = await fetch('https://runixcloud.online/api/servers/SERVER_ID/files?path=/workspace', {
method: 'GET',
headers: {
'Authorization': 'Bearer ' + TOKEN
},
});
console.log(await response.text());/api/servers/:id/files/contentLê até 32 MB de um arquivo do workspace.
path=/workspace/index.jsconst response = await fetch('https://runixcloud.online/api/servers/SERVER_ID/files/content?path=/workspace/index.js', {
method: 'GET',
headers: {
'Authorization': 'Bearer ' + TOKEN
},
});
console.log(await response.text());/api/servers/:id/filesCria ou sobrescreve conteúdo textual.
{
"path": "/workspace/index.js",
"content": "console.log(\"RunixCloud\")\n"
}const response = await fetch('https://runixcloud.online/api/servers/SERVER_ID/files', {
method: 'POST',
headers: {
'Authorization': 'Bearer ' + TOKEN,
'Content-Type': 'application/json'
},
body: JSON.stringify({
"path": "/workspace/index.js",
"content": "console.log(\"RunixCloud\")\n"
})
});
console.log(response.status);/api/servers/:id/files/uploadEnvia um arquivo binário para o diretório informado.
path=/workspace{"name":"logo.png","path":"/workspace/logo.png","size":12345}import { readFile } from 'node:fs/promises';
const form = new FormData();
form.append('file', new Blob([await readFile('./arquivo.bin')]), 'arquivo.bin');
const response = await fetch('https://runixcloud.online/api/servers/SERVER_ID/files/upload?path=/workspace', {
method: 'POST',
headers: { 'Authorization': 'Bearer ' + TOKEN },
body: form
});
console.log(response.status, await response.text());/api/servers/:id/files/downloadBaixa um arquivo como application/octet-stream.
path=/workspace/logo.pngconst response = await fetch('https://runixcloud.online/api/servers/SERVER_ID/files/download?path=/workspace/logo.png', {
method: 'GET',
headers: {
'Authorization': 'Bearer ' + TOKEN
},
});
console.log(await response.text());/api/servers/:id/foldersCria diretório no workspace.
{
"path": "/workspace/src"
}const response = await fetch('https://runixcloud.online/api/servers/SERVER_ID/folders', {
method: 'POST',
headers: {
'Authorization': 'Bearer ' + TOKEN,
'Content-Type': 'application/json'
},
body: JSON.stringify({
"path": "/workspace/src"
})
});
console.log(await response.text());/api/servers/:id/filesRemove recursivamente dentro do workspace. A operação requer o container em execução porque utiliza exec.
path=/workspace/oldconst response = await fetch('https://runixcloud.online/api/servers/SERVER_ID/files?path=/workspace/old', {
method: 'DELETE',
headers: {
'Authorization': 'Bearer ' + TOKEN
},
});
console.log(response.status);/api/servers/:id/networkRetorna subdomínio, porta da aplicação, porta publicada e URL pública.
const response = await fetch('https://runixcloud.online/api/servers/SERVER_ID/network', {
method: 'GET',
headers: {
'Authorization': 'Bearer ' + TOKEN
},
});
console.log(await response.text());/api/servers/:id/networkAtualiza o subdomínio único associado ao projeto.
{
"subdomain": "meu-app"
}const response = await fetch('https://runixcloud.online/api/servers/SERVER_ID/network', {
method: 'PUT',
headers: {
'Authorization': 'Bearer ' + TOKEN,
'Content-Type': 'application/json'
},
body: JSON.stringify({
"subdomain": "meu-app"
})
});
console.log(response.status);/api/servers/:id/envRetorna as variáveis gerenciadas pelo painel.
const response = await fetch('https://runixcloud.online/api/servers/SERVER_ID/env', {
method: 'GET',
headers: {
'Authorization': 'Bearer ' + TOKEN
},
});
console.log(await response.text());/api/servers/:id/envSalva variáveis e informa se o projeto precisa ser reiniciado.
{
"variables": {
"NODE_ENV": "production"
}
}const response = await fetch('https://runixcloud.online/api/servers/SERVER_ID/env', {
method: 'PUT',
headers: {
'Authorization': 'Bearer ' + TOKEN,
'Content-Type': 'application/json'
},
body: JSON.stringify({
"variables": {
"NODE_ENV": "production"
}
})
});
console.log(await response.text());/api/servers/:id/backupsLista backups persistidos do workspace.
const response = await fetch('https://runixcloud.online/api/servers/SERVER_ID/backups', {
method: 'GET',
headers: {
'Authorization': 'Bearer ' + TOKEN
},
});
console.log(await response.text());/api/servers/:id/backupsGera um backup do workspace atual.
{
"name": "antes-da-atualizacao"
}const response = await fetch('https://runixcloud.online/api/servers/SERVER_ID/backups', {
method: 'POST',
headers: {
'Authorization': 'Bearer ' + TOKEN,
'Content-Type': 'application/json'
},
body: JSON.stringify({
"name": "antes-da-atualizacao"
})
});
console.log(await response.text());/api/servers/:id/backups/:backupId/restoreRestaura o workspace a partir de um backup existente.
const response = await fetch('https://runixcloud.online/api/servers/SERVER_ID/backups/:backupId/restore', {
method: 'POST',
headers: {
'Authorization': 'Bearer ' + TOKEN
},
});
console.log(await response.text());/api/servers/:id/backups/:backupIdRemove o arquivo e o registro do backup.
const response = await fetch('https://runixcloud.online/api/servers/SERVER_ID/backups/:backupId', {
method: 'DELETE',
headers: {
'Authorization': 'Bearer ' + TOKEN
},
});
console.log(response.status);/api/servers/:id/backups/:backupId/downloadBaixa o arquivo de backup.
const response = await fetch('https://runixcloud.online/api/servers/SERVER_ID/backups/:backupId/download', {
method: 'GET',
headers: {
'Authorization': 'Bearer ' + TOKEN
},
});
console.log(await response.text());/api/metrics/services/:idRetorna amostras históricas de CPU e memória.
hours=72const response = await fetch('https://runixcloud.online/api/metrics/services/SERVER_ID?hours=72', {
method: 'GET',
headers: {
'Authorization': 'Bearer ' + TOKEN
},
});
console.log(await response.text());/api/servers/:id/reinstallLimpa os arquivos do workspace mantendo recursos, rede e registro do projeto.
const response = await fetch('https://runixcloud.online/api/servers/SERVER_ID/reinstall', {
method: 'POST',
headers: {
'Authorization': 'Bearer ' + TOKEN
},
});
console.log(await response.text());/api/minecraftReserva recursos do pool e cria um servidor Minecraft gerenciado.
{
"name": "survival",
"software": "paper",
"version": "1.21.4",
"memory_mb": 1024,
"cpu": 1,
"disk_mb": 4096,
"eula": true
}const response = await fetch('https://runixcloud.online/api/minecraft', {
method: 'POST',
headers: {
'Authorization': 'Bearer ' + TOKEN,
'Content-Type': 'application/json'
},
body: JSON.stringify({
"name": "survival",
"software": "paper",
"version": "1.21.4",
"memory_mb": 1024,
"cpu": 1,
"disk_mb": 4096,
"eula": true
})
});
console.log(await response.text());/api/minecraft/jarsLista versões disponíveis para um software Minecraft.
software=paperconst response = await fetch('https://runixcloud.online/api/minecraft/jars?software=paper', {
method: 'GET',
});
console.log(await response.text());/api/minecraft/:id/eulaRetorna se a EULA foi aceita.
const response = await fetch('https://runixcloud.online/api/minecraft/SERVER_ID/eula', {
method: 'GET',
headers: {
'Authorization': 'Bearer ' + TOKEN
},
});
console.log(await response.text());/api/minecraft/:id/eulaRegistra a aceitação e aplica ao servidor.
const response = await fetch('https://runixcloud.online/api/minecraft/SERVER_ID/eula', {
method: 'POST',
headers: {
'Authorization': 'Bearer ' + TOKEN
},
});
console.log(await response.text());/api/minecraft/:id/propertiesLê propriedades gerenciáveis do servidor.
const response = await fetch('https://runixcloud.online/api/minecraft/SERVER_ID/properties', {
method: 'GET',
headers: {
'Authorization': 'Bearer ' + TOKEN
},
});
console.log(await response.text());/api/minecraft/:id/propertiesAtualiza propriedades e prepara o servidor para o próximo start.
const response = await fetch('https://runixcloud.online/api/minecraft/SERVER_ID/properties', {
method: 'PUT',
headers: {
'Authorization': 'Bearer ' + TOKEN
},
});
console.log(await response.text());/api/minecraft/:id/versionAltera software/versão do servidor e pode reiniciar o container.
{
"software": "paper",
"version": "1.21.4",
"restart": true
}const response = await fetch('https://runixcloud.online/api/minecraft/SERVER_ID/version', {
method: 'PUT',
headers: {
'Authorization': 'Bearer ' + TOKEN,
'Content-Type': 'application/json'
},
body: JSON.stringify({
"software": "paper",
"version": "1.21.4",
"restart": true
})
});
console.log(await response.text());/api/minecraft/:id/addonsLista plugins ou mods instalados.
type=pluginsconst response = await fetch('https://runixcloud.online/api/minecraft/SERVER_ID/addons?type=plugins', {
method: 'GET',
headers: {
'Authorization': 'Bearer ' + TOKEN
},
});
console.log(await response.text());/api/minecraft/:id/addons/uploadEnvia um arquivo .jar para plugins ou mods.
type=pluginsimport { readFile } from 'node:fs/promises';
const form = new FormData();
form.append('file', new Blob([await readFile('./arquivo.bin')]), 'arquivo.bin');
const response = await fetch('https://runixcloud.online/api/minecraft/SERVER_ID/addons/upload?type=plugins', {
method: 'POST',
headers: { 'Authorization': 'Bearer ' + TOKEN },
body: form
});
console.log(response.status, await response.text());/api/minecraft/:id/addonsRemove plugin ou mod informado.
const response = await fetch('https://runixcloud.online/api/minecraft/SERVER_ID/addons', {
method: 'DELETE',
headers: {
'Authorization': 'Bearer ' + TOKEN
},
});
console.log(response.status);/api/minecraft/:id/commandExecuta comando do jogo via RCON; não expõe shell do host.
{
"command": "say Olá"
}const response = await fetch('https://runixcloud.online/api/minecraft/SERVER_ID/command', {
method: 'POST',
headers: {
'Authorization': 'Bearer ' + TOKEN,
'Content-Type': 'application/json'
},
body: JSON.stringify({
"command": "say Olá"
})
});
console.log(await response.text());/api/ticketsLista chamados da conta.
const response = await fetch('https://runixcloud.online/api/tickets', {
method: 'GET',
headers: {
'Authorization': 'Bearer ' + TOKEN
},
});
console.log(await response.text());/api/ticketsCria um chamado de suporte.
{
"subject": "Ajuda no deploy",
"category": "technical",
"priority": "normal",
"message": "Descrição do problema"
}const response = await fetch('https://runixcloud.online/api/tickets', {
method: 'POST',
headers: {
'Authorization': 'Bearer ' + TOKEN,
'Content-Type': 'application/json'
},
body: JSON.stringify({
"subject": "Ajuda no deploy",
"category": "technical",
"priority": "normal",
"message": "Descrição do problema"
})
});
console.log(await response.text());/api/tickets/:id/replyAdiciona mensagem do cliente ao chamado.
{
"message": "Informações adicionais"
}const response = await fetch('https://runixcloud.online/api/tickets/SERVER_ID/reply', {
method: 'POST',
headers: {
'Authorization': 'Bearer ' + TOKEN,
'Content-Type': 'application/json'
},
body: JSON.stringify({
"message": "Informações adicionais"
})
});
console.log(await response.text());/api/workspacesLista espaços de equipe acessíveis à conta.
const response = await fetch('https://runixcloud.online/api/workspaces', {
method: 'GET',
headers: {
'Authorization': 'Bearer ' + TOKEN
},
});
console.log(await response.text());/api/workspacesCria um espaço de colaboração.
{
"name": "Equipe principal",
"description": "Projetos compartilhados"
}const response = await fetch('https://runixcloud.online/api/workspaces', {
method: 'POST',
headers: {
'Authorization': 'Bearer ' + TOKEN,
'Content-Type': 'application/json'
},
body: JSON.stringify({
"name": "Equipe principal",
"description": "Projetos compartilhados"
})
});
console.log(await response.text());/api/workspaces/:id/inviteGera convite para um email e uma função.
{
"email": "dev@example.com",
"role": "developer"
}const response = await fetch('https://runixcloud.online/api/workspaces/SERVER_ID/invite', {
method: 'POST',
headers: {
'Authorization': 'Bearer ' + TOKEN,
'Content-Type': 'application/json'
},
body: JSON.stringify({
"email": "dev@example.com",
"role": "developer"
})
});
console.log(await response.text());/api/workspaces/accept/:tokenAceita um convite válido de workspace.
const response = await fetch('https://runixcloud.online/api/workspaces/accept/:token', {
method: 'POST',
headers: {
'Authorization': 'Bearer ' + TOKEN
},
});
console.log(await response.text());/api/servers/:id/execEndpoint avançado mantido para automações; o painel web não oferece terminal interativo.
{
"command": "node --version"
}{"output":"v22.x.x\n","exit_code":0}const response = await fetch('https://runixcloud.online/api/servers/SERVER_ID/exec', {
method: 'POST',
headers: {
'Authorization': 'Bearer ' + TOKEN,
'Content-Type': 'application/json'
},
body: JSON.stringify({
"command": "node --version"
})
});
console.log(await response.text());/api/ws/server/:id/consoleCompatibilidade da Engine: recebe um comando e devolve output/exit_code. Não é usado pelo Console visual do painel.
envia {"command":"pwd"} · recebe {"output":"/workspace\n","exit_code":0}import WebSocket from 'ws';
const ws = new WebSocket(
'wss://runixcloud.online/api/ws/server/SERVER_ID/console',
{ headers: { Authorization: 'Bearer ' + TOKEN } }
);
ws.on('open', () => ws.send(JSON.stringify({ command: 'pwd' })));
ws.on('message', data => console.log(JSON.parse(data.toString())));/api/admin/dashboardTotais de contas/projetos e recursos reservados e contratados.
const response = await fetch('https://runixcloud.online/api/admin/dashboard', {
method: 'GET',
headers: {
'Authorization': 'Bearer ' + TOKEN
},
});
console.log(await response.text());/api/admin/usersLista plano atual e consumo agregado de RAM/CPU/disco/projetos por conta.
const response = await fetch('https://runixcloud.online/api/admin/users', {
method: 'GET',
headers: {
'Authorization': 'Bearer ' + TOKEN
},
});
console.log(await response.text());/api/admin/users/:idAltera suspensão, role, senha e/ou plano. Impede downgrade abaixo dos recursos já reservados.
{
"plan_id": "<uuid>",
"suspended": false,
"billing_exempt": false
}const response = await fetch('https://runixcloud.online/api/admin/users/SERVER_ID', {
method: 'PATCH',
headers: {
'Authorization': 'Bearer ' + TOKEN,
'Content-Type': 'application/json'
},
body: JSON.stringify({
"plan_id": "<uuid>",
"suspended": false,
"billing_exempt": false
})
});
console.log(response.status);/api/admin/users/:idExclui a conta respeitando a proteção do último admin.
const response = await fetch('https://runixcloud.online/api/admin/users/SERVER_ID', {
method: 'DELETE',
headers: {
'Authorization': 'Bearer ' + TOKEN
},
});
console.log(response.status);/api/admin/serversProjetos de todas as contas com recursos e proprietário.
const response = await fetch('https://runixcloud.online/api/admin/servers', {
method: 'GET',
headers: {
'Authorization': 'Bearer ' + TOKEN
},
});
console.log(await response.text());/api/admin/plansCapacidades dos pools.
const response = await fetch('https://runixcloud.online/api/admin/plans', {
method: 'GET',
headers: {
'Authorization': 'Bearer ' + TOKEN
},
});
console.log(await response.text());/api/admin/plansCria um plano.
{
"Name": "Core",
"MemoryMB": 1024,
"CPU": 2,
"DiskMB": 10240,
"MaxServers": 3,
"MonthlyPriceCents": 890,
"AnnualPriceCents": 9078,
"Currency": "BRL",
"BillingEnabled": true,
"IsPublic": true,
"Description": "Plano principal",
"Highlighted": true
}const response = await fetch('https://runixcloud.online/api/admin/plans', {
method: 'POST',
headers: {
'Authorization': 'Bearer ' + TOKEN,
'Content-Type': 'application/json'
},
body: JSON.stringify({
"Name": "Core",
"MemoryMB": 1024,
"CPU": 2,
"DiskMB": 10240,
"MaxServers": 3,
"MonthlyPriceCents": 890,
"AnnualPriceCents": 9078,
"Currency": "BRL",
"BillingEnabled": true,
"IsPublic": true,
"Description": "Plano principal",
"Highlighted": true
})
});
console.log(await response.text());/api/admin/plans/:idSubstitui capacidades do plano.
{
"Name": "Core",
"MemoryMB": 2048,
"CPU": 2,
"DiskMB": 20480,
"MaxServers": 5,
"MonthlyPriceCents": 1090,
"AnnualPriceCents": 11118,
"Currency": "BRL",
"BillingEnabled": true,
"IsPublic": true,
"Description": "Plano atualizado",
"Highlighted": true
}const response = await fetch('https://runixcloud.online/api/admin/plans/SERVER_ID', {
method: 'PATCH',
headers: {
'Authorization': 'Bearer ' + TOKEN,
'Content-Type': 'application/json'
},
body: JSON.stringify({
"Name": "Core",
"MemoryMB": 2048,
"CPU": 2,
"DiskMB": 20480,
"MaxServers": 5,
"MonthlyPriceCents": 1090,
"AnnualPriceCents": 11118,
"Currency": "BRL",
"BillingEnabled": true,
"IsPublic": true,
"Description": "Plano atualizado",
"Highlighted": true
})
});
console.log(response.status);/api/admin/plans/:idExclui somente plano sem usuários.
const response = await fetch('https://runixcloud.online/api/admin/plans/SERVER_ID', {
method: 'DELETE',
headers: {
'Authorization': 'Bearer ' + TOKEN
},
});
console.log(response.status);/api/admin/nodesLista nodes, heartbeat, capacidade e reservas usadas pelo scheduler.
const response = await fetch('https://runixcloud.online/api/admin/nodes', {
method: 'GET',
headers: {
'Authorization': 'Bearer ' + TOKEN
},
});
console.log(await response.text());/api/admin/nodesCadastra e testa um Docker Engine remoto. Em produção use HTTPS/TLS.
{
"Name": "node-1",
"Hostname": "node-1",
"Address": "https://10.0.0.2:2376",
"Port": 2376,
"Memory": 0,
"Disk": 102400,
"Weight": 100
}const response = await fetch('https://runixcloud.online/api/admin/nodes', {
method: 'POST',
headers: {
'Authorization': 'Bearer ' + TOKEN,
'Content-Type': 'application/json'
},
body: JSON.stringify({
"Name": "node-1",
"Hostname": "node-1",
"Address": "https://10.0.0.2:2376",
"Port": 2376,
"Memory": 0,
"Disk": 102400,
"Weight": 100
})
});
console.log(await response.text());/api/admin/nodes/:idExclui registro do node.
const response = await fetch('https://runixcloud.online/api/admin/nodes/SERVER_ID', {
method: 'DELETE',
headers: {
'Authorization': 'Bearer ' + TOKEN
},
});
console.log(response.status);/api/admin/nodes/:idAtualiza endpoint, peso, limites administrativos e habilitação do node.
const response = await fetch('https://runixcloud.online/api/admin/nodes/SERVER_ID', {
method: 'PATCH',
headers: {
'Authorization': 'Bearer ' + TOKEN
},
});
console.log(response.status);/api/admin/nodes/:id/testExecuta heartbeat imediato e atualiza a capacidade detectada.
const response = await fetch('https://runixcloud.online/api/admin/nodes/SERVER_ID/test', {
method: 'POST',
headers: {
'Authorization': 'Bearer ' + TOKEN
},
});
console.log(await response.text());/api/admin/servers/:id/moveCopia o workspace e recria o container no node de destino preservando configuração e reserva.
{
"node_id": "<uuid>"
}const response = await fetch('https://runixcloud.online/api/admin/servers/SERVER_ID/move', {
method: 'POST',
headers: {
'Authorization': 'Bearer ' + TOKEN,
'Content-Type': 'application/json'
},
body: JSON.stringify({
"node_id": "<uuid>"
})
});
console.log(await response.text());/api/admin/billingLista pagamentos recentes e totais processados pelo Mercado Pago.
const response = await fetch('https://runixcloud.online/api/admin/billing', {
method: 'GET',
headers: {
'Authorization': 'Bearer ' + TOKEN
},
});
console.log(await response.text());/api/admin/couponsLista cupons, usos confirmados, reservas e vínculos de desconto automático.
const response = await fetch('https://runixcloud.online/api/admin/coupons', {
method: 'GET',
headers: {
'Authorization': 'Bearer ' + TOKEN
},
});
console.log(await response.text());/api/admin/ticketsLista tickets de todas as contas.
const response = await fetch('https://runixcloud.online/api/admin/tickets', {
method: 'GET',
headers: {
'Authorization': 'Bearer ' + TOKEN
},
});
console.log(await response.text());/api/admin/tickets/:idAtualiza status/prioridade e pode enviar resposta de suporte.
const response = await fetch('https://runixcloud.online/api/admin/tickets/SERVER_ID', {
method: 'PUT',
headers: {
'Authorization': 'Bearer ' + TOKEN
},
});
console.log(await response.text());/api/admin/settingsRetorna settings persistentes e status seguro das integrações, sem expor segredos.
const response = await fetch('https://runixcloud.online/api/admin/settings', {
method: 'GET',
headers: {
'Authorization': 'Bearer ' + TOKEN
},
});
console.log(await response.text());/api/admin/settingsAtualiza configurações operacionais persistentes.
const response = await fetch('https://runixcloud.online/api/admin/settings', {
method: 'PUT',
headers: {
'Authorization': 'Bearer ' + TOKEN
},
});
console.log(response.status);/api/admin/auditLista até 200 registros de audit_logs.
const response = await fetch('https://runixcloud.online/api/admin/audit', {
method: 'GET',
headers: {
'Authorization': 'Bearer ' + TOKEN
},
});
console.log(await response.text());/api/admin/orphansContainers runix.managed sem registro correspondente.
const response = await fetch('https://runixcloud.online/api/admin/orphans', {
method: 'GET',
headers: {
'Authorization': 'Bearer ' + TOKEN
},
});
console.log(await response.text());Este endpoint permanece disponível para integrações e automações compatíveis com a Engine. O Console visual da RunixCloud não envia comandos: ele exibe somente stdout/stderr atuais.
Clientes Node.js, Python, Java e Rust podem autenticar o WebSocket com o header Authorization. O protocolo recebe {"command":"..."} e devolve saída e código de saída.