// /src/app/api/ptero/send-command/route.ts import { NextResponse } from 'next/server' const PANEL = process.env.PTERODACTYL_PANEL_URL! const KEY = process.env.PTERODACTYL_CLIENT_API! const SID = process.env.PTERO_SERVER_ID! export async function POST(req: Request) { if (!PANEL || !KEY || !SID) { return NextResponse.json({ error: 'Pterodactyl env missing' }, { status: 500 }) } try { const { command } = (await req.json()) as { command?: string } if (!command || typeof command !== 'string') { return NextResponse.json({ error: 'command required' }, { status: 400 }) } const r = await fetch(`${PANEL}/api/client/servers/${SID}/command`, { method: 'POST', headers: { Authorization: `Bearer ${KEY}`, 'Content-Type': 'application/json', Accept: 'application/json', }, body: JSON.stringify({ command }), cache: 'no-store', }) if (!r.ok) { const msg = await r.text().catch(() => '') return NextResponse.json( { error: 'Pterodactyl error', details: msg }, { status: r.status }, ) } return NextResponse.json({ ok: true }) } catch (e: unknown) { const message = e instanceof Error ? e.message : typeof e === 'string' ? e : 'unknown error' return NextResponse.json({ error: message }, { status: 500 }) } }