NEW Bare Metal Servers with 20G Dedicated Unmetered Bandwidth 20G Dedicated Unmetered Servers Read more STATUS

Reboot, Shut Down or Power Cycle Your Server: Portal and API

Sep 15, 2026 7 min read

Each bare-metal server and cloud instance on your account comes with its own power controls. You can reboot, shut down, hard-stop and start a machine yourself, day or night, with no ticket involved. On bare metal the commands go through the server's management controller, and on a cloud instance through the hypervisor. Either way it takes seconds.

Pick the right control before you click, because they don't all treat your data the same way:

Control What happens Use it when
Shutdown (bare metal) Asks the operating system to stop, like pressing the power button on a desktop. Filesystems get flushed. A hung OS may ignore it. You want the machine off, cleanly.
Stop Cuts the power without asking the operating system first. Whatever hasn't reached the disk yet is gone. The OS is hung and Shutdown had no effect.
Reboot Bare metal: a power cycle (off, then on again) that doesn't consult the OS. Cloud: a reset, which is the same thing done at the hypervisor. The machine has stopped answering over the network.
Start Turns a stopped machine back on. Once a Stop or Shutdown has finished.
Status (bare metal) Asks the management controller for the live power state. It changes nothing. The badge says Unknown, or you want proof an action went through.

Want a clean restart of a machine that still responds? Log in over SSH and run reboot yourself. The portal's Reboot is the blunt instrument on purpose. It's there for when SSH has stopped working.

Method 1: In the portal

Bare-metal servers

  1. Log in at amoni.app and open Servers in the left-hand menu.
  2. Click the server. You'll find the power controls at the top right, beside the Running / Stopped badge. As the page loads, the portal fetches the live state from the management controller, so the badge reads checking for a moment first.
  3. Pick a control from the table above:
    • Shutdown and Reboot run the moment you click.
    • Stop wants a confirmation first, since it throws away unsaved data. The same card reminds you that a stopped server is still billed.
    • If the server is already stopped, you'll see Start in that row instead.
  4. Give it a few seconds, then click Status for the new state. A reboot lasts as long as the machine's own POST and boot, which on bare metal is usually one to three minutes.
A bare-metal server page in the Amóni portal: the Running badge next to the hostname, and the Shutdown, Stop, Reboot, Status and Console buttons at the top right
Power controls on a running bare-metal server. When the network is down, the Console button beside them still gets you in.
The Hard Stop Server confirmation card in the Amóni portal, warning that power is cut immediately, unsaved data is lost, and billing continues
Stop checks with you first. Shutdown and Reboot don't.

Cloud instances

  1. Open Virtual Machines in the left-hand menu and click the instance.
  2. The header shows the live state. A running VM gets Console, Reboot and Stop; a stopped one gets Start. To re-read the state from the hypervisor, click the small refresh icon beside the badge.
  3. Click the action. A confirmation shows up at the top of the page and the badge tracks the machine from there. A stop can take up to half a minute, because the hypervisor waits for the guest. A reboot goes through Stopped on its way back up.
A cloud instance page in the Amóni portal showing the Running badge, hostname, primary IP and the Console, Reboot and Stop buttons
The controls on a cloud instance. Console works whatever the power state.

Each power action lands on the Activity page, along with who clicked it and when.

Method 2: With the API

You need an API key with the Servers scope (servers.write) for bare metal, or the VMs scope (vms.write) for cloud instances. Create it under Account → API Keys and copy it right away, because it's only shown once. Full reference: api.amoni.app/v1/docs.

Bare metal

Look up the server id in GET /v1/servers and post the action to it. There are four actions: status, start, shutdown and powercycle.

curl -s -X POST https://api.amoni.app/v1/servers/955/power \
  -H "Authorization: Bearer nr_live_..." \
  -H "Content-Type: application/json" \
  -d '{"action": "powercycle"}'
{ "success": true, "data": { "state": "on", "status": "on" } }

status in the response is normalized to on, off or null (the management controller didn't answer), while state keeps the controller's own wording. To read the state and change nothing:

curl -s -X POST https://api.amoni.app/v1/servers/955/power \
  -H "Authorization: Bearer nr_live_..." \
  -H "Content-Type: application/json" \
  -d '{"action": "status"}'

A powercycle returns the moment the controller accepts it, not once the machine is back up. If your script has to wait, poll status:

#!/usr/bin/env bash
KEY="nr_live_..."; ID=955
post() { curl -s -X POST "https://api.amoni.app/v1/servers/$ID/power" \
  -H "Authorization: Bearer $KEY" -H "Content-Type: application/json" -d "{\"action\": \"$1\"}"; }

post powercycle | jq -r '.data.state'
for i in $(seq 1 30); do
  sleep 10
  if nc -z -w 3 203.0.113.10 22; then echo "SSH is back"; break; fi
done

Cloud instances

You address a VM by its billing account id plus its VM id. GET /v1/vms gives you both:

curl -s https://api.amoni.app/v1/vms -H "Authorization: Bearer nr_live_..." \
  | jq '.data.accounts[] | {account_id, vms: [.vms[] | {id, hostname, status}]}'
{ "account_id": 990204, "vms": [ { "id": 411, "hostname": "app1.example.com", "status": "running" } ] }

Next, post start, stop or reset. Be aware that stop is not a graceful shutdown.

curl -s -X POST https://api.amoni.app/v1/vms/990204/411/power \
  -H "Authorization: Bearer nr_live_..." \
  -H "Content-Type: application/json" \
  -d '{"action": "reset"}'

For the live state, straight from the hypervisor instead of our cached inventory:

curl -s https://api.amoni.app/v1/vms/990204/411/status \
  -H "Authorization: Bearer nr_live_..."
{ "success": true, "data": { "status": "running", "live": true } }

live: false means the hypervisor didn't respond, so what you see is the last state we recorded.

What the API will tell you

Status code Meaning
200 none The action was accepted by the controller or hypervisor.
401 invalid_api_key The key is wrong, has expired, or was revoked.
403 insufficient_scope The key is missing servers.write or vms.write. The required_scope field tells you which.
404 none Your account has no server or VM with that id. Body: {"success": false, "error": "Not found"}.
422 none action isn't one of the allowed values: {"message": "The selected action is invalid.", "errors": {"action": ["…"]}}.
429 none Rate limit: 120 requests a minute per key. Wait as long as Retry-After says.
500 none / power_failed Bare metal: we couldn't reach the controller (“The action could not be completed right now. Please try again shortly or contact support.”). Cloud: code: power_failed, “Power action failed. Please try again or contact support.” Try once more, and if that fails, open a ticket.

About 422s: when the endpoint checks a rule itself (a weak password, a duplicate key, a layout you may not use), the answer comes in the usual envelope. A field that fails basic validation still answers in the framework's own shape for now, {"message": "…", "errors": {"field": ["…"]}}, with no success or code. For those, branch on the HTTP status. We're extending the envelope to cover them.

Troubleshooting

  • The badge says Unknown. The management controller didn't reply within the time the page allows. Click Status. If it's still unknown, the controller itself may be unreachable. Power actions can still work in that state, and a ticket gets someone to look at it.
  • Shutdown did nothing. A hung operating system will ignore the request. Use Stop or Reboot instead, since neither one needs the OS to cooperate.
  • It rebooted but does not come back. Open the remote console and watch where the boot stops. When the disk or boot loader is at fault, rescue mode is how you fix it.
  • "Power action failed." The controller either refused or couldn't be reached. Wait a minute and try one more time. If it fails again, open a ticket and include the time of the attempt, so we can find it in the controller's log.
  • The cloud VM still shows Running after Stop. The hypervisor waits for the guest to acknowledge, and the portal only keeps watching for about thirty seconds. Click the refresh icon beside the badge, or read /status from the API.
  • Reboot on a bare-metal server is a power cycle. If there's a large write cache or a database in the middle of a transaction, you can lose data. As long as SSH works, running reboot inside the OS is the safer way to restart.
  • Billing continues while a machine is stopped. A stop changes the power state. It doesn't cancel anything. To end a service, go to the Orders or Billing pages.

Still stuck?

Open a support ticket from the portal, choose the server in the “related server” field, and tell us which control you used and when. The action shows up in your Activity log and in ours, so we can find it fast.

Built for production

Why teams stay with Netrouting

We connect you to the Internet using network engineers (and not order takers) and hardware and infrastructure that is built to last, so we can pick up where you left off when you need us.

  • Expert-Level Support Our staff is available 24 hours a day, 7 days a week to handle network administration and systems management issues as they occur.
  • Scalable Solutions Build whatever depth or breadth your infrastructure needs and then scale as required.
  • Enhanced Security Enable 2-factor authentication and also limit by IP address from the control panel to secure your account.
  • Cost-Efficient Infrastructure You will always receive the best value from your investment as you will be optimized for budget without any compromise on Quality.