# ISN Cloud API > API REST da ISN Cloud para controlar bots do Discord e aplicações Python/Node.js hospedadas. Respostas em JSON. ## Autenticação Crie uma chave em Painel > Chaves de API. Envie em todas as requisições: Authorization: Bearer isn_<48 hex> Base URL: https://insanecloud.store/api/public/v1 ## Endpoints ### GET /apps Listar aplicações. Retorna todas as aplicações da conta dona da chave. Exemplo de resposta: { "apps": [{ "id": "uuid", "name": "meu-bot", "runtime": "python", "ram_mb": 256, "status": "running" }] } ### GET /apps/{id}/status Status em tempo real. CPU, RAM, uptime e se a aplicação está rodando. Exemplo de resposta: { "running": true, "cpu": "0.5%", "ram": "45MB", "uptime": 1731430000000 } ### GET /apps/{id}/logs Logs. Últimas linhas do console da aplicação. Exemplo de resposta: { "logs": "[INFO] Bot online..." } ### POST /apps/{id}/start Iniciar. Liga a aplicação. Exige plano ativo. Exemplo de resposta: { "ok": true } ### POST /apps/{id}/restart Reiniciar. Reinicia a aplicação. Exige plano ativo. Exemplo de resposta: { "ok": true } ### POST /apps/{id}/stop Parar. Desliga a aplicação. Exemplo de resposta: { "ok": true } ### GET /admin/billing?days=30 Faturamento (admin). Somente chaves de administradores. MRR, receita, assinantes, apps, receita diária e últimos pagamentos. Exemplo de resposta: { "mrrCents": 15800, "revenuePeriodCents": 23700, "activeSubscribers": 12, "daily": [...], "payments": [...] } ## Erros - 401: Chave ausente ou inválida - 402: Plano inativo ou vencido - 403: Sem permissão (ex.: chave não-admin) - 404: Aplicação ou ação não encontrada - 405: Método HTTP errado - 409: Aplicação sem código enviado Corpo de erro: { "error": "mensagem" } ## Exemplo (Python) import requests H = {"Authorization": "Bearer isn_..."} apps = requests.get("https://insanecloud.store/api/public/v1/apps", headers=H).json()["apps"] requests.post(f"https://insanecloud.store/api/public/v1/apps/{apps[0]['id']}/restart", headers=H) ## Exemplo (Node.js) const H = { Authorization: "Bearer isn_..." }; const { apps } = await fetch("https://insanecloud.store/api/public/v1/apps", { headers: H }).then(r => r.json());