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

Read Your Bandwidth Graphs and Transfer Totals: Portal and API

Sep 15, 2026 6 min read

A bare-metal server shows the traffic on its switch port: what it is doing right now, what it averaged and peaked at, its 95th percentile, and the total moved in and out over the period. A cloud instance shows what the hypervisor sees instead: CPU, memory, network and disk activity over time. Both are in the portal and in the API; what follows is where to look and how to read the numbers.

Two conventions to keep straight:

  • Rates are in bits per second (Mbps, Gbps). A 10 Gbps port moves at most 10 gigabits, which is 1.25 gigabytes, per second.
  • Totals are in bytes (GB, TB). This is the unit your plan is written in. Only outbound transfer counts on a metered plan; inbound is free. See bandwidth explained for how metered and unmetered plans work.

Method 1: In the portal

Bare-metal servers: the Graphs tab

  1. Log in at amoni.app, open Servers, click the server, then the Graphs tab.
  2. If the server has more than one connected port, pick it from the buttons at the top right. The line under the heading names the port, its type, link speed and whether it is up.
  3. The three tiles are live: Link speed, Inbound and Outbound as of the last poll.
  4. The table gives, for the selected period and each direction: Now, Avg, Max, 95th % (all rates), and Total (bytes moved). The note beneath says since when statistics exist for this port; a young collection covers less than the period you picked.
  5. The graph draws the same period. Switch between Day, Week, Month and Year at the bottom; the table follows.
The Graphs tab of a bare-metal server in the Amóni portal: link speed, live inbound and outbound tiles, a table with now, average, maximum, 95th percentile and total per direction, a 24-hour traffic graph, and Day, Week, Month and Year buttons
Live rates, period statistics and the graph for one port. Total is what moved; the 95th percentile is what the port was busy at.

Reading the 95th percentile. Take every five-minute sample in the period, sort them, and discard the top 5%. The highest remaining sample is the 95th percentile: a picture of sustained load that ignores short bursts. It is the figure to compare against a port speed when you wonder whether to upgrade; a 95th percentile near the link speed means the port is saturated for real, not just spiking.

Cloud instances: the Insights tab

  1. Open Virtual Machines, click the instance, then Insights.
  2. Pick a window: Hour, Day, Week, Month or Year.
  3. Four charts share the same clock: CPU (percent of the allocated cores), Memory (used, against the allocation in the title), Network (in and out, bits per second) and Disk I/O (read and write, bytes per second).
The Insights tab of a cloud instance in the Amóni portal with four charts over one day: CPU percentage, memory used against 8 GiB allocated, network in and out, and disk read and write
The hypervisor's view. A gap in a line means the instance was off, not idle.

These are hypervisor metrics, so they need nothing installed in the guest, and they are what we would look at if you opened a ticket about performance. A gap in a line is time the instance was powered off. A flat line at zero is an instance that was on and doing nothing.

Method 2: With the API

All of this is readable with the read scope. Reference: api.amoni.app/v1/docs.

Bare metal

1. Find the port. Each connected interface carries a port_id; that is what the other two calls take.

curl -s https://api.amoni.app/v1/servers/955/bandwidth -H "Authorization: Bearer nr_live_..."
{ "success": true, "data": [ {
  "id": 1, "interface_name": "eth0", "type": "ethernet", "speed": 10000, "status": "up",
  "port_name": "Ethernet12", "port_id": 5011, "in_bps": 412300000, "out_bps": 168000000 } ] }

2. Period statistics for that port. period is day (default), week, month or year.

curl -s "https://api.amoni.app/v1/servers/955/bandwidth/stats?interface=5011&period=month" \
  -H "Authorization: Bearer nr_live_..."
{
  "success": true,
  "data": {
    "period": "month",
    "samples": 8640,
    "covered_from": "2026-08-16 00:00:00",
    "in_bps":  { "now": 412300000, "avg": 361800000, "max": 703200000, "p95": 598400000 },
    "out_bps": { "now": 168000000, "avg": 151900000, "max": 302600000, "p95": 259100000 },
    "total_in_bytes": 117240000000000,
    "total_out_bytes": 49200000000000
  }
}

Rates are bits per second; totals are bytes. samples and covered_from tell you how much of the period the numbers really cover. A monthly egress check for a metered plan, in terabytes:

curl -s "https://api.amoni.app/v1/servers/955/bandwidth/stats?interface=5011&period=month" \
  -H "Authorization: Bearer nr_live_..." | jq '.data.total_out_bytes / 1e12'

3. The graph itself, as an image you can embed in your own dashboard:

curl -s "https://api.amoni.app/v1/servers/955/bandwidth/graph?interface=5011&period=week" \
  -H "Authorization: Bearer nr_live_..." -o web1-week.png

The response is the image (PNG or SVG, per the Content-Type), not JSON.

Cloud instances

The Insights metrics are available in the portal only for now; the public API does not yet expose them (it is on the list). When it does, the call will be:

curl -s "https://api.amoni.app/v1/vms/990204/411/insights?timeframe=day" \
  -H "Authorization: Bearer nr_live_..."
{ "success": true, "data": { "timeframe": "day", "points": [
  { "t": 1757900100, "cpu_pct": 23.4, "mem_bytes": 4563402752, "maxmem_bytes": 8589934592,
    "net_in_bps": 21300000, "net_out_bps": 61800000, "disk_read_bps": 480000, "disk_write_bps": 1310000 },
  { "t": 1757900400, "cpu_pct": null, "mem_bytes": null, "maxmem_bytes": null,
    "net_in_bps": null, "net_out_bps": null, "disk_read_bps": null, "disk_write_bps": null } ] } }

timeframe is hour, day, week, month or year. A point with null values is a moment the instance was off; do not treat it as zero. Results are cached for a minute per instance and window.

What the API will tell you

Status Meaning
200 Data as above; for the graph, an image body.
401 / 403 Bad key, or a key without read.
404 No such server on your account, or a port_id that does not belong to this server ({"success": false, "error": "Server not found"}).
422 Unknown period, or interface missing, in the framework shape: {"message": "The selected period is invalid.", "errors": {"period": ["…"]}}.
200 with [] Interfaces: the server has no port linked to monitoring yet. Open a ticket to have it linked.

Troubleshooting

  • The Graphs tab says no graphable interface, or the graph area is empty. The server's port is not yet linked to our monitoring. Open a ticket with the server; linking it takes minutes and history starts from then.
  • The totals look too small for the period. Read the “statistics collected since” note (or covered_from in the API). A port linked two days ago cannot show a month.
  • My invoice says something else. Billing counts outbound bytes on the switch port over the calendar month; the Day, Week and Month periods here are rolling windows ending now. Pick Month at the start of a new month and the two are close, never identical.
  • Inbound looks “wrong way round”. Inbound is traffic to your server (downloads, uploads from users). Outbound is what your server sends (page views, downloads served). A web server is outbound-heavy.
  • The 95th percentile is higher than the average by a lot. Normal for bursty traffic. It is the average that tells you total use, the 95th that tells you how busy the port gets.
  • Insights shows gaps. The instance was off for those minutes. Gaps in every chart at the same time are a stop or a rebuild; the Activity tab has the timestamps.

Still stuck?

Open a support ticket with the machine selected and the period you are looking at. We read the same graphs, so a screenshot of what you see goes a long way.

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.