GPU servers

A GPU server is ordered through the same POST /v1/servers as everything else. What differs is how it is sized: it comes as a ready package, and the package decides the card, the cores, the memory and the system disk together.

1. Find the type

curl -H "Authorization: Bearer $FBX_TOKEN" \
     https://api.fiberax.com/v1/server-types
{ "data": [
  { "id": 4, "name": "Cluster Server", "pricing_mode": "sliders", "gpu": false },
  { "id": 5, "name": "Solo Server",    "pricing_mode": "plans",   "gpu": false },
  { "id": 7, "name": "GPU Server",     "pricing_mode": "fixed",   "gpu": true,
    "description": "An NVIDIA L4 card reserved for your server alone. Fixed packages of CPU, RAM and disk." } ] }
Fields omitted for brevity.

"gpu": true marks a type with graphics cards, and "pricing_mode": "fixed" says it is bought as a package. The catalogue is the authority on what your project may order: a type it does not show answers 404 server_type_not_found if you name it anyway - the same code as a type that does not exist.

2. Read the packages

curl -H "Authorization: Bearer $FBX_TOKEN" \
     https://api.fiberax.com/v1/server-types/7/pricing
{ "data": { "server_type_id": 7, "pricing_mode": "fixed",
  "gpu_packages": [ { "key": "gpu-l4-24", "name": "GPU L4 24-core", "gpu_model": "L4",
                      "gpu_count": 1, "cores": 24, "memory_gb": 144, "disk_gb": 1600,
                      "price": 600, "backup_price": 100 } ] } }
Fields omitted for brevity.

Everything you need for the order is here: the key of the package, what it contains, and what it costs. Read the list rather than copying it - a package that is withdrawn simply stops appearing, and what is offered today may differ from this example. The numbers carry no currency or period of their own: price is the monthly price in the currency of your account, and backup_price is worth noticing - on this type backups are charged at a flat monthly price per server rather than by the gigabyte.

3. Pick an image

curl -H "Authorization: Bearer $FBX_TOKEN" \
     https://api.fiberax.com/v1/server-types/7/images

This type offers a small set, and one of the entries is an operating system with the graphics drivers already installed - on a GPU machine that is usually the one you want:

{ "data": [ { "id": "fcf9f69c...", "name": "Ubuntu 24.04",                  "type": "os" },
            { "id": "1ef98174...", "name": "Ubuntu 24.04 + NVIDIA drivers", "type": "os" },
            { "id": "eb0446da...", "name": "Windows Server 2025",           "type": "os" },
            { "id": "uiso-40",     "name": "your own ISO image",            "type": "useriso" } ] }
Fields omitted for brevity.

The entry with "type": "useriso" is your own uploaded ISO, and a server cannot be CREATED from it - such a request is refused with image_not_supported (422). An ISO installs a machine rather than builds one; insert it into the drive of an existing server instead (PUT /v1/servers/{id}/iso), which is allowed here as on any other type.

4. Order it

curl -X POST -H "Authorization: Bearer $FBX_TOKEN" \
     -H "Content-Type: application/json" \
     -H "Idempotency-Key: trainer-01-2026-09-16" \
     -d '{
       "name": "trainer-01",
       "server_type_id": 7,
       "gpu_package": "gpu-l4-24",
       "image": "1ef98174e466...",
       "public_ipv4": { "reuse": true },
       "ssh_keys": [13]
     }' \
     https://api.fiberax.com/v1/servers

One field carries the whole machine. Because the package already says how big the server is, cores, memory_mb, disk_gb and plan_id are refused next to it (resources_managed_by_package, 422) instead of being ignored. Leave the package out and you get gpu_package_required; name a key this type does not sell and you get gpu_package_not_found.

Such a machine is not resized afterwards, and its package is not swapped either: a different package is a different server.

Two more fields belong to other types and are refused here rather than ignored: gpus (this type does not let you pick cards one by one - the package names the card) is answered with gpus_not_supported, and disk_type is answered with disk_type_not_supported, because the storage class of the system disk is part of the package too. There are no ceilings to read for this type either: its pricing carries "limits": null.

5. When there is no capacity

A packaged GPU server takes a whole host together with its card, so the number of them is finite. When none is free:

{ "status": 409, "code": "no_gpu_capacity",
  "detail": "No host of this type has the requested cards free. The reason is worked out from the
             platform inventory as it reads at the moment of this answer; at the moment of the
             refusal it may have been another one." }

There is deliberately no Retry-After here: repeating the same request will not free a host. Wait and try later, or take a different type.

A refused request costs you nothing. If it asked for a new public address and the server was not created, that address is released again. An address you named yourself stays yours, as it was before the request.

6. What a GPU server does differently