v2.3.27OpenAPI 3.0.3

Fornex Public API

Authentication

Access to the API requires an API key. Pass it in the HTTP header of every request.

Authorization: Api-Key <key>

Create an API key in the client area

Account

#

Account balance

Returns current account balance

get/account/balance

Responses

  • 200application/json
    balancenumber (double)Required
    currencystringRequired
Fornex API Key
curl -X GET \
  -H "Content-Type: application/json" \
  -H "Authorization: Api-Key $FORNEX_API_KEY" \
  "https://fornex.com/api/account/balance"
Response200
{
  "balance": 10,
  "currency": "EUR"
}
#

Info

get/account/info

Responses

  • 200application/json
    emailstring (email)max length: 254
    namestringRequired
Fornex API Key
curl -X GET \
  -H "Content-Type: application/json" \
  -H "Authorization: Api-Key $FORNEX_API_KEY" \
  "https://fornex.com/api/account/info"
Response200
{
  "email": "example@fornex.com",
  "name": "Example Account"
}
#

Invoices

Returns the number and total amount of unpaid invoices.

get/account/invoices

Responses

  • 200application/json
    unpaid_invoices_countintegerRequired
    unpaid_invoices_amountnumber (double)Required
    currencystringRequired
Fornex API Key
curl -X GET \
  -H "Content-Type: application/json" \
  -H "Authorization: Api-Key $FORNEX_API_KEY" \
  "https://fornex.com/api/account/invoices"
Response200
{
  "unpaid_invoices_count": 1,
  "unpaid_invoices_amount": 100,
  "currency": "EUR"
}

Plans

#

Backups

get/plans/backups

Responses

  • 200application/json
    array object[]BackupTariff[]
    spaceintegerRequired
    pricenumber (double)Required
    unitsstringread-onlyRequireddefault: GB
Fornex API Key
curl -X GET \
  -H "Content-Type: application/json" \
  -H "Authorization: Api-Key $FORNEX_API_KEY" \
  "https://fornex.com/api/plans/backups"
Response200
[
  {
    "price": 3,
    "space": 100,
    "units": "GB"
  }
]
#

Dedicated servers

get/plans/dedicated

Responses

  • 200application/json
    array object[]DedicatedTariff[]
    idintegerread-onlyRequired
    namestringmax length: 128Required

    The plan name appears on invoices, so it should be short and written in Latin characters — for example, Cloud NVMe 1.

    cpu_modelstringread-onlyRequired
    cpu_countintegermin: 0max: 65535
    ramstringRequired
    diskstringRequired
    bandwidthstringRequired
    pricenumber (double)Required
    locationsarray array[]Required
Fornex API Key
curl -X GET \
  -H "Content-Type: application/json" \
  -H "Authorization: Api-Key $FORNEX_API_KEY" \
  "https://fornex.com/api/plans/dedicated"
Response200
[
  {
    "id": 101,
    "name": "DS XeonSAS",
    "price": 198,
    "bandwidth": "1 Gbit/s",
    "cpu_model": "Intel Xeon E3-1270 (4×3.4Ghz)",
    "cpu_count": 1,
    "disk": "4 × 300 GB SAS 15k",
    "ram": "16 GB",
    "locations": [
      [
        "DE",
        "Германия"
      ]
    ]
  }
]
#

Web Hosting

get/plans/hosting

Responses

  • 200application/json
    array object[]VHTariff[]
    idintegerread-onlyRequired
    namestringmax length: 128Required

    The plan name appears on invoices, so it should be short and written in Latin characters — for example, Cloud NVMe 1.

    sitesintegermin: 0max: 65535nullable
    pricenumber (double)Required
    cpu_coresintegermin: 0max: 65535nullable
    hdd_spaceinteger (int64)min: 0max: 4294967295nullable

    GB

    available_locationsarray string[]read-onlyRequired
Fornex API Key
curl -X GET \
  -H "Content-Type: application/json" \
  -H "Authorization: Api-Key $FORNEX_API_KEY" \
  "https://fornex.com/api/plans/hosting"
Response200
[
  {
    "id": 33,
    "name": "VH-SSD-2",
    "price": 1,
    "sites": 2,
    "cpu_cores": 1,
    "hdd_space": 1,
    "available_locations": [
      "DE",
      "RU"
    ]
  }
]
#

VPS

get/plans/vps

Responses

  • 200application/json
    array object[]VpsTariff[]
    idintegerread-onlyRequired
    namestringmax length: 128Required

    The plan name appears on invoices, so it should be short and written in Latin characters — for example, Cloud NVMe 1.

    cpu_countintegerRequired
    ramstringRequired
    diskstringRequired
    bandwidthstringRequired
    pricenumber (double)Required
    disk_classVpsDiskClassRequired
Fornex API Key
curl -X GET \
  -H "Content-Type: application/json" \
  -H "Authorization: Api-Key $FORNEX_API_KEY" \
  "https://fornex.com/api/plans/vps"
Response200
[
  {
    "id": 433,
    "name": "SSD Cloud 1GB",
    "cpu_count": 1,
    "ram": "1 GB",
    "bandwidth": "100 Mbit/s",
    "disk": "10 GB",
    "price": 5,
    "disk_class": null
  }
]

Projects

#

Project list

get/project/

Query Parameters

  • pageinteger

    A page number within the paginated result set.

    default: 1
  • page_sizeinteger

    Number of results to return per page.

    default: 10

Responses

  • 200application/json
    countintegerRequiredexample: 123
    nextstring (uri)nullableexample: http://api.example.org/accounts/?page=4
    previousstring (uri)nullableexample: http://api.example.org/accounts/?page=2
    resultsarray object[]Project[]Required
Fornex API Key
curl -X GET \
  -H "Content-Type: application/json" \
  -H "Authorization: Api-Key $FORNEX_API_KEY" \
  "https://fornex.com/api/project/"
Response200
{
  "type": "object",
  "required": [
    "count",
    "results"
  ],
  "properties": {
    "count": {
      "type": "integer",
      "example": 123
    },
    "next": {
      "type": "string",
      "nullable": true,
      "format": "uri",
      "example": "http://api.example.org/accounts/?page=4"
    },
    "previous": {
      "type": "string",
      "nullable": true,
      "format": "uri",
      "example": "http://api.example.org/accounts/?page=2"
    },
    "results": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "readOnly": true
          },
          "name": {
            "type": "string",
            "maxLength": 40
          },
          "comment": {
            "type": "string",
            "maxLength": 256
          },
          "logo": {
            "type": "string",
            "format": "uri",
            "readOnly": true
          }
        },
        "required": [
          "id",
          "logo",
          "name"
        ]
      }
    }
  }
}
#

Create project

post/project/

Body

Required
namestringlength 1…40Required
commentstringmax length: 256

Responses

  • 201application/json
    idintegerread-onlyRequired
    namestringmax length: 40Required
    commentstringmax length: 256
    logostring (uri)read-onlyRequired
Fornex API Key
curl -X POST \
  -H "Content-Type: application/json" \
  -H "Authorization: Api-Key $FORNEX_API_KEY" \
  --data '{"name":"string","comment":"string"}' \
  "https://fornex.com/api/project/"
Response201
{
  "type": "object",
  "properties": {
    "id": {
      "type": "integer",
      "readOnly": true
    },
    "name": {
      "type": "string",
      "maxLength": 40
    },
    "comment": {
      "type": "string",
      "maxLength": 256
    },
    "logo": {
      "type": "string",
      "format": "uri",
      "readOnly": true
    }
  },
  "required": [
    "id",
    "logo",
    "name"
  ]
}
#

Project details

get/project/{id}/

Path Parameters

  • idintegerRequired

    A unique integer value identifying this project.

Responses

  • 200application/json
    idintegerread-onlyRequired
    namestringmax length: 40Required
    commentstringmax length: 256
    logostring (uri)read-onlyRequired
Fornex API Key
ID='1'

curl -X GET \
  -H "Content-Type: application/json" \
  -H "Authorization: Api-Key $FORNEX_API_KEY" \
  "https://fornex.com/api/project/$ID/"
Response200
{
  "type": "object",
  "properties": {
    "id": {
      "type": "integer",
      "readOnly": true
    },
    "name": {
      "type": "string",
      "maxLength": 40
    },
    "comment": {
      "type": "string",
      "maxLength": 256
    },
    "logo": {
      "type": "string",
      "format": "uri",
      "readOnly": true
    }
  },
  "required": [
    "id",
    "logo",
    "name"
  ]
}
#

Edit project

patch/project/{id}/

Path Parameters

  • idintegerRequired

    A unique integer value identifying this project.

Body

namestringlength 1…40
commentstringmax length: 256

Responses

  • 200application/json
    idintegerread-onlyRequired
    namestringmax length: 40Required
    commentstringmax length: 256
    logostring (uri)read-onlyRequired
Fornex API Key
ID='1'

curl -X PATCH \
  -H "Content-Type: application/json" \
  -H "Authorization: Api-Key $FORNEX_API_KEY" \
  --data '{"name":"string","comment":"string"}' \
  "https://fornex.com/api/project/$ID/"
Response200
{
  "type": "object",
  "properties": {
    "id": {
      "type": "integer",
      "readOnly": true
    },
    "name": {
      "type": "string",
      "maxLength": 40
    },
    "comment": {
      "type": "string",
      "maxLength": 256
    },
    "logo": {
      "type": "string",
      "format": "uri",
      "readOnly": true
    }
  },
  "required": [
    "id",
    "logo",
    "name"
  ]
}
#

Remove project

delete/project/{id}/

Path Parameters

  • idintegerRequired

    A unique integer value identifying this project.

Responses

  • 204

    No response body

Fornex API Key
ID='1'

curl -X DELETE \
  -H "Content-Type: application/json" \
  -H "Authorization: Api-Key $FORNEX_API_KEY" \
  "https://fornex.com/api/project/$ID/"
#

Add order

Request to add an order from Project.

post/project/{id}/add_orders/

Path Parameters

  • idintegerRequired

    A unique integer value identifying this project.

Body

Required
ordersarray string[]write-onlyRequired

Responses

  • 200

    No response body

Fornex API Key
ID='1'

curl -X POST \
  -H "Content-Type: application/json" \
  -H "Authorization: Api-Key $FORNEX_API_KEY" \
  --data '{"orders":["string"]}' \
  "https://fornex.com/api/project/$ID/add_orders/"
#

Edit logo

Request to edit a logo of the Project.

put/project/{id}/edit_logo/

Path Parameters

  • idintegerRequired

    A unique integer value identifying this project.

Body

multipart/form-data
logostring (binary)

Path to file.

Responses

  • 200application/json
    logostring (uri)

    Path to file.

Fornex API Key
ID='1'

curl -X PUT \
  -H "Content-Type: multipart/form-data" \
  -H "Authorization: Api-Key $FORNEX_API_KEY" \
  -F "logo=@\"path/to/file\"" \
  "https://fornex.com/api/project/$ID/edit_logo/"
Response200
{
  "type": "object",
  "properties": {
    "logo": {
      "type": "string",
      "format": "uri",
      "description": "Path to file."
    }
  }
}
#

Remove order

Request to remove an order from the Project.

post/project/{id}/remove_orders/

Path Parameters

  • idintegerRequired

    A unique integer value identifying this project.

Body

Required
ordersarray string[]write-onlyRequired

Responses

  • 200

    No response body

Fornex API Key
ID='1'

curl -X POST \
  -H "Content-Type: application/json" \
  -H "Authorization: Api-Key $FORNEX_API_KEY" \
  --data '{"orders":["string"]}' \
  "https://fornex.com/api/project/$ID/remove_orders/"

Orders

An order is an internal entity of our system, which is created together with a service and contains a list of its properties (e.g. cost, location, etc). For example, a VPS is the service itself (virtual machine), and a VPS order is a list of its associated properties. Therefore, to create an order, make a service create request in the corresponding API section, e.g. Create VPS. And for further work with any order use methods from this section.

Find below the API requests that allow you to deal with orders of any type, in particular, to get the order details, edit or cancel it.

#

List of orders

List all available orders. Information about the parameters or each order will also be included in the response.

get/orders/

Query Parameters

  • cancel_markboolean

    Filter the orders that will be canceled.

  • orderingstring

    Field used to order the results.

    default: id
    expiredid
  • pageinteger

    A page number within the paginated result set.

    default: 1
  • page_sizeinteger

    Number of results to return per page.

    default: 10

Responses

  • 200application/json
    countintegerRequiredexample: 123
    nextstring (uri)nullableexample: http://api.example.org/accounts/?page=4
    previousstring (uri)nullableexample: http://api.example.org/accounts/?page=2
    resultsarray object[]Order[]Required
Fornex API Key
curl -X GET \
  -H "Content-Type: application/json" \
  -H "Authorization: Api-Key $FORNEX_API_KEY" \
  "https://fornex.com/api/orders/"
Response200
{
  "count": 123,
  "next": "http://api.example.org/accounts/?page=4",
  "previous": "http://api.example.org/accounts/?page=2",
  "results": [
    {
      "id": "34-1234",
      "name": "DB Host",
      "tariff": "VPS Master",
      "tariff_price": 140,
      "type": "vps",
      "hostname": "srv-123.fornex.org",
      "ipaddress_set": [
        "123.123.123.123"
      ],
      "status": "active",
      "cost_month": 148,
      "expiration_date": "2015-12-18T17:21:46",
      "tags": [
        "Database"
      ]
    }
  ]
}
#

Order details

Get all available data about the order by it's ID.

get/orders/{order_id}/

Path Parameters

  • order_idstringRequired

    Order ID in the format NN-NNNNN. The prefix may vary depending on the order type.

Responses

  • 200application/json
    idstringread-onlyRequired
    namestringmax length: 64
    tariffstringread-onlyRequired
    tariff_pricenumber (double)nullableread-onlyRequired
    typestringread-onlyRequired
    hostnamestringnullableread-onlyRequired
    ipaddress_setarray string[]nullableread-onlyRequired
    statusstringread-onlyRequired
    values
    • unpaid
    • pending
    • active
    • expired
    • disabled
    • canceled
    • blocked
    • noprolong
    cost_monthnumber (double)read-onlyRequired
    expiration_datestring (date-time)read-onlyRequired
    tagsarray string[]Required
    cancel_markbooleanread-onlyRequired

    A mark indicating that the order will be canceled.

    projectobjectnullableread-onlyRequired
Fornex API Key
ORDER_ID='34-1234'

curl -X GET \
  -H "Content-Type: application/json" \
  -H "Authorization: Api-Key $FORNEX_API_KEY" \
  "https://fornex.com/api/orders/$ORDER_ID/"
Response200
{
  "id": "34-1234",
  "name": "DB Host",
  "tariff": "VPS Master",
  "tariff_price": 140,
  "type": "vps",
  "hostname": "srv-123.fornex.org",
  "ipaddress_set": [
    "123.123.123.123"
  ],
  "status": "active",
  "cost_month": 148,
  "expiration_date": "2015-12-18T17:21:46",
  "tags": [
    "Database"
  ]
}
#

Edit order

Change some parameters of a specific order (search by ID) that are available for editing.

patch/orders/{order_id}/

Path Parameters

  • order_idstringRequired

    Order ID in the format NN-NNNNN. The prefix may vary depending on the order type.

Body

namestringlength 1…64default:

Сustom name for the order. Set an empty string if you want to remove the name.

tagsarray string[]

Tags for the order. New tags will completely replace the current ones if any. Set an empty list if you want to remove all tags.

projectintegernullable

Orders Project Set an empty string if you want to remove the project.

Responses

  • 200application/json
    namestringmax length: 64default:

    Сustom name for the order.

    tagsarray string[]Required

    Tags for the order.

    projectintegernullableRequired

    Orders Project

Fornex API Key
ORDER_ID='34-1234'

curl -X PATCH \
  -H "Content-Type: application/json" \
  -H "Authorization: Api-Key $FORNEX_API_KEY" \
  --data '{"name": "DB Host"}' \
  "https://fornex.com/api/orders/$ORDER_ID/"
Response200
{
  "name": "DB Host",
  "tags": [
    "Database"
  ],
  "project": 1
}
#

Cancel order

Cancel an order and delete the related service. Depending on the when parameter, two options are possible:

  • expired - the order will be given a cancel mark, and it will be canceled once the paid period expires. In other words it blocks the autorenewal. This is the default approach. You can remove the mark if you change your mind.
  • now - the cancel request will be immediately passed to processing, and the order will be canceled as soon as possible. Instant order cancelation is not yet supported.

If the order has not yet been paid for, it will be canceled immediately regardless of the when parameter selected.

post/orders/{order_id}/cancel/

Path Parameters

  • order_idstringRequired

    Order ID in the format NN-NNNNN. The prefix may vary depending on the order type.

Body

whenstringwrite-onlydefault: expired
values
  • now
  • expired

The parameter describes when the order should be canceled - now or once the paid period expires.

save_backupbooleanwrite-onlydefault: true

The parameter describes whether to take a snapshot of the VPS before removing the virtual machine or not.

Responses

  • 200application/json
    statusstringread-onlyRequired
    values
    • canceled
    • cancel_pending
    messagestringread-onlyRequired
Fornex API Key
ORDER_ID='34-1234'

curl -X POST \
  -H "Content-Type: application/json" \
  -H "Authorization: Api-Key $FORNEX_API_KEY" \
  --data '{"when": "expired", "save_backup": true}' \
  "https://fornex.com/api/orders/$ORDER_ID/cancel/"
Response200
{
  "status": "cancel_pending",
  "message": "Order will be canceled after expiration."
}
#

Remove cancel mark

Remove the cancel mark for a specific order (search by ID). As well the mark is removed automatically if you force to renew the order.

delete/orders/{order_id}/cancel/

Path Parameters

  • order_idstringRequired

    Order ID in the format NN-NNNNN. The prefix may vary depending on the order type.

Responses

  • 204

    No response body

Fornex API Key
ORDER_ID='34-1234'

curl -X DELETE \
  -H "Content-Type: application/json" \
  -H "Authorization: Api-Key $FORNEX_API_KEY" \
  "https://fornex.com/api/orders/$ORDER_ID/cancel/"

VPS: Orders

VPS is a Virtual Private Server, also known as Virtual Dedicated Server. This section covers the main and auxiliary API endpoints used to work with VPS at Fornex.

#

List of VPS orders

List all available VPS orders. Information about the parameters or each order will also be included in the response.

get/orders/vps/

Query Parameters

  • cancel_markboolean

    Filter the orders that will be canceled.

  • orderingstring

    Field used to order the results.

    default: id
    expiredid
  • pageinteger

    A page number within the paginated result set.

    default: 1
  • page_sizeinteger

    Number of results to return per page.

    default: 10

Responses

  • 200application/json
    countintegerRequiredexample: 123
    nextstring (uri)nullableexample: http://api.example.org/accounts/?page=4
    previousstring (uri)nullableexample: http://api.example.org/accounts/?page=2
    resultsarray object[]VPSOrder[]Required
Fornex API Key
curl -X GET \
  -H "Content-Type: application/json" \
  -H "Authorization: Api-Key $FORNEX_API_KEY" \
  "https://fornex.com/api/orders/vps/"
Response200
{
  "count": 123,
  "next": "http://api.example.org/accounts/?page=4",
  "previous": "http://api.example.org/accounts/?page=2",
  "results": [
    {
      "id": "34-1234",
      "name": "DB Host",
      "tariff": "VPS Master",
      "tariff_price": 140,
      "type": "vps",
      "hostname": "srv-123.fornex.org",
      "ipaddress_set": [
        "123.123.123.123"
      ],
      "status": "active",
      "cost_month": 148,
      "expiration_date": "2015-12-18T17:21:46",
      "tags": [
        "Database"
      ],
      "configuration": {
        "cpu_count": 1,
        "ram_size": 2,
        "disk_size": 10,
        "cpu_arch": "x86_64",
        "min_cpu_freq": 3
      }
    }
  ]
}
#

VPS Order details

Get all available data about the VPS order by it's ID.

get/orders/vps/{order_id}/

Path Parameters

  • order_idstringRequired

    Order ID in the format NN-NNNNN.

Responses

  • 200application/json
    idstringread-onlyRequired
    namestringmax length: 64
    tariffstringread-onlyRequired
    tariff_pricenumber (double)nullableread-onlyRequired
    typestringread-onlyRequired
    hostnamestringnullableread-onlyRequired
    ipaddress_setarray string[]nullableread-onlyRequired
    statusstringread-onlyRequired
    values
    • unpaid
    • pending
    • active
    • expired
    • disabled
    • canceled
    • blocked
    • noprolong
    cost_monthnumber (double)read-onlyRequired
    expiration_datestring (date-time)read-onlyRequired
    tagsarray string[]Required
    cancel_markbooleanread-onlyRequired

    A mark indicating that the order will be canceled.

    projectobjectnullableread-onlyRequired
    configurationobjectread-onlyRequired

    Server configuration

Fornex API Key
ORDER_ID='34-1234'

curl -X GET \
  -H "Content-Type: application/json" \
  -H "Authorization: Api-Key $FORNEX_API_KEY" \
  "https://fornex.com/api/orders/vps/$ORDER_ID/"
Response200
{
  "id": "34-1234",
  "name": "DB Host",
  "tariff": "VPS Master",
  "tariff_price": 140,
  "type": "vps",
  "hostname": "srv-123.fornex.org",
  "ipaddress_set": [
    "123.123.123.123"
  ],
  "status": "active",
  "cost_month": 148,
  "expiration_date": "2015-12-18T17:21:46",
  "tags": [
    "Database"
  ],
  "configuration": {
    "cpu_count": 1,
    "ram_size": 2,
    "disk_size": 10,
    "cpu_arch": "x86_64",
    "min_cpu_freq": 3
  }
}

VPS: Create

VPS is a Virtual Private Server, also known as Virtual Dedicated Server. This section covers the main and auxiliary API endpoints used to create a new VPS at Fornex.

#

Create VPS

This request is not available by default, contact tech support to get access.

For now creating a VPS via API requires payment from the account balance. If you do not have enough funds, the request will return an error and the order will not be created.

To create a VPS you should consider three required parameters - VPS configuration (cores, RAM, storage), pre-installed software and location:

  • Configuration: choose tariff (predefined plan) or configuration (flexible set of parameters from the configurator). You can try available configurations at the VPS page.
  • Software: choose template (to install an operating system and optionally, a hosting control panel) or app (to install an application) or snapshot (to restore VPS from your snapshot).
  • Country: choose location from the available options.

To cancel and remove a VPS via API use universal Cancel order method.

post/orders/vps/

Body

Required
tariffintegernullablewrite-only

The ID of the predefined plan. Get the available options for tariff from VPS plans.

To create a custom configuration, use the configuration parameter. Do not use both parameters at the same time.

configurationobjectnullablewrite-only

The custom configuration parameters as an object (open the collapsible section for more details). Use VPS configurator to get a proper combination of parameters in line with dynamic constraints.

Instead of custom configuration, you may wish to take a predefined plan, which is usually cheaper. To do this, use the tariff parameter. Do not use both parameters at the same time.

templateintegerwrite-only

Template's ID to install an operating system and, optionally, a hosting control panel. Get the available options for template from VPS templates.

Instead of OS, you may wish to install an application (app parameter) or to restore VPS from a snapshot (snapshot parameter). To do this, use the corresponding parameter. Use one parameter only per order.

appintegerwrite-only

Application's ID you wish to be installed. Get the available options for app from VPS applications.

Instead of application, you may wish to install an operating system (template parameter) or to restore VPS from a snapshot (snapshot parameter). To do this, use the corresponding parameter. Use one parameter only per order.

snapshotintegerwrite-only

Snapshot's ID you wish to restore VPS from. Get the available options for snapshot from VPS snapshots.

You can create a snapshot from any already created VPS in your dashboard on the order's page and use it for restoring (as a backup) or creating copies of the order (as a template).

Instead of restoring from a snapshot, you may wish to install an operating system (template parameter) or an application (app parameter). To do this, use the corresponding parameter. Use one parameter only per order.

locationstringmin length: 1write-onlyRequired

The two-letter country code of the order location. Get the available options for location from VPS locations.

termintegerwrite-onlydefault: 1
values
  • 1
  • 3
  • 6
  • 12

The number of months for which the order is being renewed once created (e.g. 3).

servicesarray object[]OrderServiceCreateRequest[]write-only

Extra services and their quantity as a list (open the collapsible section for more details). Get the available options for services from VPS extra services.

ssh_keysarray integer[]write-only

IDs of the SSH keys as a list that are added to the server on install. Get the available options for ssh_keys from SSH keys. Pass the keys list explicitly. By default, an empty list is passed, even if there are keys marked as "add by default" in your dashboard.

namestringlength 1…25write-onlydefault:

Custom name for the VPS. By default no name is set for the server.

projectintegernullablewrite-only

Project ID. The available options for the project can be obtained from the project list.

disk_classintegernullablewrite-only

The ID of the vps disk class. Get the available options for tariff from VPS drives.

When using a custom configuration, use the attribute within configuration parameter. Do not use both parameters at the same time.

bandwidthintegernullablewrite-only

Bandwidth limit to set for VPS order. Price for unit defined in bandwidth_tariff value

webhookobjectwrite-only

Webhook configuration as an object (open the collapsible section for more details). It's needed to receive a POST-request with order details and access credentials once the VPS is created

placement_policystringwrite-onlydefault: OPTIONAL
values
  • STRICT
  • OPTIONAL
placement_groupintegernullablewrite-only
private_networkintegernullablewrite-only
tagsarray string[]write-only

Tags for the VPS. By default no tags are set for the server.

Responses

Fornex API Key
curl -X POST \
  -H "Content-Type: application/json" \
  -H "Authorization: Api-Key $FORNEX_API_KEY" \
  --data '{"tariff": 1, "template": 1, "location": "DE", "term": 3, "services": [{"service": 1, "count": 1}], "ssh_keys": [1, 3]}' \
  "https://fornex.com/api/orders/vps/"
Response201
{
  "order_id": "34-1"
}
#

VPS templates

List all available templates to create a VPS. Information about the required VPS parameters will also be included for each template.

get/orders/vps/templates/

Responses

  • 200application/json
    array object[]Template[]
    idintegerread-onlyRequired

    ID of the template.

    namestringmax length: 64Required

    Name of the template.

    osstringread-onlyRequired
    panelnullable

    Admin panel used in the template, may be blank.

    One of
    archstring
    values
    • x86_64
    • arm

    CPU architecture type required for this template.

    min_storage_spaceinteger (int64)min: 0max: 4294967295nullable

    Minimum storage space required for this template.

    min_ram_volumeintegermin: 0max: 65535nullable

    Minimum RAM volume required for this template.

    min_cpu_coresinteger (int64)min: 0max: 4294967295nullable

    Minimum CPU cores number required for this template.

Fornex API Key
curl -X GET \
  -H "Content-Type: application/json" \
  -H "Authorization: Api-Key $FORNEX_API_KEY" \
  "https://fornex.com/api/orders/vps/templates/"
Response200
[
  {
    "id": 49,
    "name": "Ubuntu 20.04 & Hestia",
    "os": "Ubuntu 20.04 LTS",
    "panel": "hestia",
    "min_storage_space": 5,
    "min_ram_volume": 2,
    "min_cpu_cores": 1,
    "arch": "x86-64"
  }
]
#

VPS applications

List all available combinations of "application + operating system" that could be installed on VPS creation.

get/orders/vps/apps/

Responses

  • 200application/json
    array object[]AppTemplate[]
    idintegerread-onlyRequired

    ID of the application.

    namestringmax length: 64Required

    Name of the application.

    osstringread-onlyRequired
Fornex API Key
curl -X GET \
  -H "Content-Type: application/json" \
  -H "Authorization: Api-Key $FORNEX_API_KEY" \
  "https://fornex.com/api/orders/vps/apps/"
Response200
{
  "type": "array",
  "items": {
    "type": "object",
    "properties": {
      "id": {
        "type": "integer",
        "readOnly": true,
        "description": "ID of the application."
      },
      "name": {
        "type": "string",
        "description": " Name of the application.",
        "maxLength": 64
      },
      "os": {
        "type": "string",
        "readOnly": true
      }
    },
    "required": [
      "id",
      "name",
      "os"
    ]
  }
}
#

VPS snapshots

List all snapshots available on your account that could be used to create a VPS.

get/orders/vps/snapshots/

Responses

  • 200application/json
    array object[]Snapshot[]
    idintegerread-onlyRequired

    ID of the snapshot.

    namestringmax length: 64Required

    Name of the snapshot.

    size_gbnumber (double)read-onlyRequired

    Size of the snapshot in GB.

    created_atstring (date-time)Required
Fornex API Key
curl -X GET \
  -H "Content-Type: application/json" \
  -H "Authorization: Api-Key $FORNEX_API_KEY" \
  "https://fornex.com/api/orders/vps/snapshots/"
Response200
{
  "type": "array",
  "items": {
    "type": "object",
    "properties": {
      "id": {
        "type": "integer",
        "readOnly": true,
        "description": "ID of the snapshot."
      },
      "name": {
        "type": "string",
        "description": " Name of the snapshot.",
        "maxLength": 64
      },
      "size_gb": {
        "type": "number",
        "format": "double",
        "readOnly": true,
        "description": "Size of the snapshot in GB."
      },
      "created_at": {
        "type": "string",
        "format": "date-time"
      }
    },
    "required": [
      "created_at",
      "id",
      "name",
      "size_gb"
    ]
  }
}
#

VPS locations

List all datacenters where the VPS services are available.

get/orders/vps/locations/

Responses

  • 200application/json
    array object[]VpsLocation[]
    valuestringRequired
    labelstringRequired
    location_os_typesarray string[]Required
    bandwidth_tariffobjectnullable
    disabled_by_slotsbooleandefault: true
    disabled_by_cpu_freqbooleandefault: true
    disabled_by_osbooleandefault: false
    disabled_by_cpu_typebooleandefault: false
    available_frequenciesobjectRequired
Fornex API Key
curl -X GET \
  -H "Content-Type: application/json" \
  -H "Authorization: Api-Key $FORNEX_API_KEY" \
  "https://fornex.com/api/orders/vps/locations/"
Response200
[
  {
    "value": "DE",
    "label": "Germany",
    "location_os_types": [
      "linux",
      "windows-trial"
    ],
    "available_frequencies": {
      "x86_64": [
        "2.1",
        "3.8"
      ],
      "arm": [
        "1"
      ]
    }
  }
]
#

VPS Drives

List all disk options available for a VPS.

get/orders/vps/disks/

Responses

  • 200application/json
    array object[]VpsDiskClass[]
    idintegerread-onlyRequired
    namestringmax length: 64Required
    limit_total_mbytes_secintegermin: 0max: 65535Required

    Мb/sec

    limit_read_iops_secintegermin: 0max: 65535Required

    Op/sec

    limit_write_iops_secintegermin: 0max: 65535Required

    Op/sec

    price_per_gbstring (decimal)^-?\d{0,2}(?:\.\d{0,4})?$Required

    Cost per 1 GB

    disk_typeDiskTypeEnum
    values
    • hdd
    • nvme
    • ssd
    • sas
    disk_type_displaystringRequired
Fornex API Key
curl -X GET \
  -H "Content-Type: application/json" \
  -H "Authorization: Api-Key $FORNEX_API_KEY" \
  "https://fornex.com/api/orders/vps/disks/"
Response200
[
  {
    "id": 1,
    "name": "Optimal",
    "limit_total_mbytes_sec": 250,
    "limit_read_iops_sec": 9000,
    "limit_write_iops_sec": 7000,
    "price_per_gb": "0.0300",
    "disk_type": "ssd",
    "disk_type_display": "SSD"
  }
]
#

VPS extra services

List all extra services available for a VPS.

get/orders/vps/services/

Responses

  • 200application/json
    array object[]Service[]
    idintegerread-onlyRequired

    ID of the service.

    namestringmax length: 128Required

    Name of the service.

    descriptionstringmax length: 255

    Description of the service.

    pricestring (decimal)^-?\d{0,8}(?:\.\d{0,2})?$Required

    Price of the service.

    billing_typestringRequired
    values
    • single
    • periodic

    One-time or monthly cost.

Fornex API Key
curl -X GET \
  -H "Content-Type: application/json" \
  -H "Authorization: Api-Key $FORNEX_API_KEY" \
  "https://fornex.com/api/orders/vps/services/"
Response200
{
  "type": "array",
  "items": {
    "type": "object",
    "properties": {
      "id": {
        "type": "integer",
        "readOnly": true,
        "description": "ID of the service."
      },
      "name": {
        "type": "string",
        "description": " Name of the service.",
        "maxLength": 128
      },
      "description": {
        "type": "string",
        "description": "Description of the service.",
        "maxLength": 255
      },
      "price": {
        "type": "string",
        "format": "decimal",
        "pattern": "^-?\\d{0,8}(?:\\.\\d{0,2})?$",
        "description": "Price of the service."
      },
      "billing_type": {
        "allOf": [
          {
            "enum": [
              "single",
              "periodic"
            ],
            "type": "string"
          }
        ],
        "description": "One-time or monthly cost."
      }
    },
    "required": [
      "billing_type",
      "id",
      "name",
      "price"
    ]
  }
}

VPS: Reinstall

Reinstall the operating system on your VPS while keeping the existing order and configuration. This section covers the API endpoints used to retrieve available installation targets — such as clean OS templates, pre-configured applications, or existing snapshots — and trigger the reinstallation process.

#

VPS reinstall templates

List all available templates to reinstall the VPS. Information about the required VPS parameters will also be included for each template.

get/vps/{order_id}/reinstall/templates/

Path Parameters

  • order_idstringRequired

    Order ID (including prefix 34-...)

Query Parameters

  • pageinteger

    A page number within the paginated result set.

    default: 1
  • page_sizeinteger

    Number of results to return per page.

    default: 10

Responses

  • 200application/json
    countintegerRequiredexample: 123
    nextstring (uri)nullableexample: http://api.example.org/accounts/?page=4
    previousstring (uri)nullableexample: http://api.example.org/accounts/?page=2
    resultsarray object[]Template[]Required
Fornex API Key
ORDER_ID='34-1234'

curl -X GET \
  -H "Content-Type: application/json" \
  -H "Authorization: Api-Key $FORNEX_API_KEY" \
  "https://fornex.com/api/vps/$ORDER_ID/reinstall/templates/"
Response200
{
  "count": 123,
  "next": "http://api.example.org/accounts/?page=4",
  "previous": "http://api.example.org/accounts/?page=2",
  "results": [
    {
      "id": 49,
      "name": "Ubuntu 20.04 & Hestia",
      "os": "Ubuntu 20.04 LTS",
      "panel": "hestia",
      "min_storage_space": 5,
      "min_ram_volume": 2,
      "min_cpu_cores": 1,
      "arch": "x86-64"
    }
  ]
}
#

VPS reinstall applications

List all available combinations of "application + operating system" that could be installed on VPS reinstall.

get/vps/{order_id}/reinstall/apps/

Path Parameters

  • order_idstringRequired

    Order ID (including prefix 34-...)

Query Parameters

  • pageinteger

    A page number within the paginated result set.

    default: 1
  • page_sizeinteger

    Number of results to return per page.

    default: 10

Responses

  • 200application/json
    countintegerRequiredexample: 123
    nextstring (uri)nullableexample: http://api.example.org/accounts/?page=4
    previousstring (uri)nullableexample: http://api.example.org/accounts/?page=2
    resultsarray object[]AppTemplate[]Required
Fornex API Key
ORDER_ID='34-1234'

curl -X GET \
  -H "Content-Type: application/json" \
  -H "Authorization: Api-Key $FORNEX_API_KEY" \
  "https://fornex.com/api/vps/$ORDER_ID/reinstall/apps/"
Response200
{
  "type": "object",
  "required": [
    "count",
    "results"
  ],
  "properties": {
    "count": {
      "type": "integer",
      "example": 123
    },
    "next": {
      "type": "string",
      "nullable": true,
      "format": "uri",
      "example": "http://api.example.org/accounts/?page=4"
    },
    "previous": {
      "type": "string",
      "nullable": true,
      "format": "uri",
      "example": "http://api.example.org/accounts/?page=2"
    },
    "results": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "readOnly": true,
            "description": "ID of the application."
          },
          "name": {
            "type": "string",
            "description": " Name of the application.",
            "maxLength": 64
          },
          "os": {
            "type": "string",
            "readOnly": true
          }
        },
        "required": [
          "id",
          "name",
          "os"
        ]
      }
    }
  }
}
#

VPS reinstall snapshots

List all snapshots available on your account that could be used to reinstall the VPS.

get/vps/{order_id}/reinstall/snapshots/

Path Parameters

  • order_idstringRequired

    Order ID (including prefix 34-...)

Query Parameters

  • pageinteger

    A page number within the paginated result set.

    default: 1
  • page_sizeinteger

    Number of results to return per page.

    default: 10

Responses

  • 200application/json
    countintegerRequiredexample: 123
    nextstring (uri)nullableexample: http://api.example.org/accounts/?page=4
    previousstring (uri)nullableexample: http://api.example.org/accounts/?page=2
    resultsarray object[]Snapshot[]Required
Fornex API Key
ORDER_ID='34-1234'

curl -X GET \
  -H "Content-Type: application/json" \
  -H "Authorization: Api-Key $FORNEX_API_KEY" \
  "https://fornex.com/api/vps/$ORDER_ID/reinstall/snapshots/"
Response200
{
  "type": "object",
  "required": [
    "count",
    "results"
  ],
  "properties": {
    "count": {
      "type": "integer",
      "example": 123
    },
    "next": {
      "type": "string",
      "nullable": true,
      "format": "uri",
      "example": "http://api.example.org/accounts/?page=4"
    },
    "previous": {
      "type": "string",
      "nullable": true,
      "format": "uri",
      "example": "http://api.example.org/accounts/?page=2"
    },
    "results": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "readOnly": true,
            "description": "ID of the snapshot."
          },
          "name": {
            "type": "string",
            "description": " Name of the snapshot.",
            "maxLength": 64
          },
          "size_gb": {
            "type": "number",
            "format": "double",
            "readOnly": true,
            "description": "Size of the snapshot in GB."
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "created_at",
          "id",
          "name",
          "size_gb"
        ]
      }
    }
  }
}
#

Reinstall VPS

Starts the reinstallation process for the VPS. You must provide either an VPS template ID or an application ID for a clean setup, or a snapshot ID to restore the server to a previous state.

Warning: This action is destructive. All current data on the server will be permanently deleted and replaced by the selected image.

post/vps/{order_id}/reinstall/reinstall/

Path Parameters

  • order_idstringRequired

    Order ID (including prefix 34-...)

Body

Public API version: exposes template instead of ostemplate.

appintegernullablewrite-only
templateintegerwrite-only
snapshotintegernullablewrite-only

Responses

  • 200application/json

    Public API version: exposes template instead of ostemplate.

    display_namestringread-onlyRequired
    statusstringread-onlyRequired
    datestring (date-time)read-onlyRequired
Fornex API Key
ORDER_ID='34-1234'

curl -X POST \
  -H "Content-Type: application/json" \
  -H "Authorization: Api-Key $FORNEX_API_KEY" \
  --data '{"template":0}' \
  "https://fornex.com/api/vps/$ORDER_ID/reinstall/reinstall/"
Response200
{
  "type": "object",
  "description": "Public API version: exposes ``template`` instead of ``ostemplate``.",
  "properties": {
    "display_name": {
      "type": "string",
      "readOnly": true
    },
    "status": {
      "type": "string",
      "readOnly": true
    },
    "date": {
      "type": "string",
      "format": "date-time",
      "readOnly": true
    }
  },
  "required": [
    "date",
    "display_name",
    "status"
  ]
}

VPS: Controls

A Virtual Private Server on Fornex supports remote control requests. This section covers the API endpoints used to start, stop or reset your VPS at Fornex, as well as other options.

#

VPS Status

get/vps/{order_id}/status/

Path Parameters

  • order_idstringRequired

    Order ID (including prefix 34-...)

Responses

  • 200application/json
    statusstringRequired

    on | off | unknown

Fornex API Key
ORDER_ID='34-1234'

curl -X GET \
  -H "Content-Type: application/json" \
  -H "Authorization: Api-Key $FORNEX_API_KEY" \
  "https://fornex.com/api/vps/$ORDER_ID/status/"
Response200
{
  "status": "on"
}
#

Start VPS

post/vps/{order_id}/start/

Path Parameters

  • order_idstringRequired

    Order ID (including prefix 34-...)

Responses

  • 200application/json
    pkintegerread-onlyRequired
    actionstringread-onlyRequired
    notestringread-onlyRequired
    userstringread-onlyRequired
    timestring (date-time)read-onlyRequired
    completedbooleanread-onlyRequired
    job_statestringread-onlyRequired
    values
    • ready
    • error
    • done
    job_actionstringread-onlyRequired
Fornex API Key
ORDER_ID='34-1234'

curl -X POST \
  -H "Content-Type: application/json" \
  -H "Authorization: Api-Key $FORNEX_API_KEY" \
  "https://fornex.com/api/vps/$ORDER_ID/start/"
Response200
{
  "pk": 1,
  "action": "Launch",
  "note": "Launching server",
  "user": "username@example.com",
  "time": "2024-02-15T11:12:11+02:00",
  "completed": false,
  "job_state": "ready",
  "job_action": "start"
}
#

Stop VPS

post/vps/{order_id}/stop/

Path Parameters

  • order_idstringRequired

    Order ID (including prefix 34-...)

Responses

  • 200application/json
    pkintegerread-onlyRequired
    actionstringread-onlyRequired
    notestringread-onlyRequired
    userstringread-onlyRequired
    timestring (date-time)read-onlyRequired
    completedbooleanread-onlyRequired
    job_statestringread-onlyRequired
    values
    • ready
    • error
    • done
    job_actionstringread-onlyRequired
Fornex API Key
ORDER_ID='34-1234'

curl -X POST \
  -H "Content-Type: application/json" \
  -H "Authorization: Api-Key $FORNEX_API_KEY" \
  "https://fornex.com/api/vps/$ORDER_ID/stop/"
Response200
{
  "pk": 1,
  "action": "Launch",
  "note": "Launching server",
  "user": "username@example.com",
  "time": "2024-02-15T11:12:11+02:00",
  "completed": false,
  "job_state": "ready",
  "job_action": "start"
}
#

Reboot VPS

post/vps/{order_id}/restart/

Path Parameters

  • order_idstringRequired

    Order ID (including prefix 34-...)

Responses

  • 200application/json
    pkintegerread-onlyRequired
    actionstringread-onlyRequired
    notestringread-onlyRequired
    userstringread-onlyRequired
    timestring (date-time)read-onlyRequired
    completedbooleanread-onlyRequired
    job_statestringread-onlyRequired
    values
    • ready
    • error
    • done
    job_actionstringread-onlyRequired
Fornex API Key
ORDER_ID='34-1234'

curl -X POST \
  -H "Content-Type: application/json" \
  -H "Authorization: Api-Key $FORNEX_API_KEY" \
  "https://fornex.com/api/vps/$ORDER_ID/restart/"
Response200
{
  "pk": 1,
  "action": "Launch",
  "note": "Launching server",
  "user": "username@example.com",
  "time": "2024-02-15T11:12:11+02:00",
  "completed": false,
  "job_state": "ready",
  "job_action": "start"
}
#

Start Rescue Mode

post/vps/{order_id}/rescue_mode/

Path Parameters

  • order_idstringRequired

    Order ID (including prefix 34-...)

Responses

  • 200application/json
    pkintegerread-onlyRequired
    actionstringread-onlyRequired
    notestringread-onlyRequired
    userstringread-onlyRequired
    timestring (date-time)read-onlyRequired
    completedbooleanread-onlyRequired
    job_statestringread-onlyRequired
    values
    • ready
    • error
    • done
    job_actionstringread-onlyRequired
Fornex API Key
ORDER_ID='34-1234'

curl -X POST \
  -H "Content-Type: application/json" \
  -H "Authorization: Api-Key $FORNEX_API_KEY" \
  "https://fornex.com/api/vps/$ORDER_ID/rescue_mode/"
Response200
{
  "pk": 1,
  "action": "Launch",
  "note": "Launching server",
  "user": "username@example.com",
  "time": "2024-02-15T11:12:11+02:00",
  "completed": false,
  "job_state": "ready",
  "job_action": "start"
}
#

Stop Rescue Mode

post/vps/{order_id}/stop_rescue_mode/

Path Parameters

  • order_idstringRequired

    Order ID (including prefix 34-...)

Responses

  • 200application/json
    pkintegerread-onlyRequired
    actionstringread-onlyRequired
    notestringread-onlyRequired
    userstringread-onlyRequired
    timestring (date-time)read-onlyRequired
    completedbooleanread-onlyRequired
    job_statestringread-onlyRequired
    values
    • ready
    • error
    • done
    job_actionstringread-onlyRequired
Fornex API Key
ORDER_ID='34-1234'

curl -X POST \
  -H "Content-Type: application/json" \
  -H "Authorization: Api-Key $FORNEX_API_KEY" \
  "https://fornex.com/api/vps/$ORDER_ID/stop_rescue_mode/"
Response200
{
  "pk": 1,
  "action": "Launch",
  "note": "Launching server",
  "user": "username@example.com",
  "time": "2024-02-15T11:12:11+02:00",
  "completed": false,
  "job_state": "ready",
  "job_action": "start"
}
#

Hard reset VPS

You can perform a hard reset, aka hard reboot, to restore the VPS performance.

A reset signal will be sent to the virtual machine, which will reboot it without first preparing it for the shutdown procedure.

Note that most file systems that use deferred write may come to an «unclean» state after a hard reboot. After that, an automatic file system check is usually run, after which the virtual machine will be able to work normally, but some data may still be lost.

post/vps/{order_id}/hard_reset/

Path Parameters

  • order_idstringRequired

    Order ID (including prefix 34-...)

Responses

  • 200application/json
    pkintegerread-onlyRequired
    actionstringread-onlyRequired
    notestringread-onlyRequired
    userstringread-onlyRequired
    timestring (date-time)read-onlyRequired
    completedbooleanread-onlyRequired
    job_statestringread-onlyRequired
    values
    • ready
    • error
    • done
    job_actionstringread-onlyRequired
Fornex API Key
ORDER_ID='34-1234'

curl -X POST \
  -H "Content-Type: application/json" \
  -H "Authorization: Api-Key $FORNEX_API_KEY" \
  "https://fornex.com/api/vps/$ORDER_ID/hard_reset/"
Response200
{
  "pk": 1,
  "action": "Launch",
  "note": "Launching server",
  "user": "username@example.com",
  "time": "2024-02-15T11:12:11+02:00",
  "completed": false,
  "job_state": "ready",
  "job_action": "start"
}
#

Reset root password

post/vps/{order_id}/passwd_reset/

Path Parameters

  • order_idstringRequired

    Order ID (including prefix 34-...)

Responses

  • 200application/json
    passwdstringread-onlyRequired

    Your new password.

    resp_idintegerread-onlyRequired

    ID of the operation to check its status, for more details see. vps_log_details

Fornex API Key
ORDER_ID='34-1234'

curl -X POST \
  -H "Content-Type: application/json" \
  -H "Authorization: Api-Key $FORNEX_API_KEY" \
  "https://fornex.com/api/vps/$ORDER_ID/passwd_reset/"
Response200
{
  "type": "object",
  "properties": {
    "passwd": {
      "type": "string",
      "readOnly": true,
      "description": "Your new password."
    },
    "resp_id": {
      "type": "integer",
      "readOnly": true,
      "description": "ID of the operation to check its status, for more details see. [vps_log_details](#operation/vps_log_details_retrieve)"
    }
  },
  "required": [
    "passwd",
    "resp_id"
  ]
}
#

Request Status

get/vps/{order_id}/log_details/{log_id}/

Path Parameters

  • log_idintegerRequired

    record ID

  • order_idstringRequired

    Order ID (including prefix 34-...)

Responses

  • 200application/json
    pkintegerread-onlyRequired
    actionstringread-onlyRequired
    notestringread-onlyRequired
    userstringread-onlyRequired
    timestring (date-time)read-onlyRequired
    completedbooleanread-onlyRequired
    job_statestringread-onlyRequired
    values
    • ready
    • error
    • done
    job_actionstringread-onlyRequired
Fornex API Key
LOG_ID='1'
ORDER_ID='34-1234'

curl -X GET \
  -H "Content-Type: application/json" \
  -H "Authorization: Api-Key $FORNEX_API_KEY" \
  "https://fornex.com/api/vps/$ORDER_ID/log_details/$LOG_ID/"
Response200
{
  "pk": 1,
  "action": "Launch",
  "note": "Launching server",
  "user": "username@example.com",
  "time": "2024-02-15T11:12:11+02:00",
  "completed": false,
  "job_state": "ready",
  "job_action": "start"
}

VPS: Settings

You can remotely modify settings on a Fornex virtual server. This section includes API requests for performing these changes.

#

Adjust VPS settings

Adjust various VPS parameters.

patch/vps/{order_id}/

Path Parameters

  • order_idstringRequired

    Order ID (including prefix 34-...)

Body

private_network_enabledboolean

Connect the order to a private network. This will enable direct data exchange with other orders in the same network, improving speed and security. At the moment, only one private network is created per account.

Responses

  • 200application/json
    private_network_enabledbooleanRequired

    Connect the order to a private network. This will enable direct data exchange with other orders in the same network, improving speed and security. At the moment, only one private network is created per account.

Fornex API Key
ORDER_ID='34-1234'

curl -X PATCH \
  -H "Content-Type: application/json" \
  -H "Authorization: Api-Key $FORNEX_API_KEY" \
  --data '{"private_network_enabled":false}' \
  "https://fornex.com/api/vps/$ORDER_ID/"
Response200
{
  "type": "object",
  "properties": {
    "private_network_enabled": {
      "type": "boolean",
      "description": "Connect the order to a private network. This will enable direct data exchange with other orders in the same network, improving speed and security. At the moment, only one private network is created per account."
    }
  },
  "required": [
    "private_network_enabled"
  ]
}

VPS: Statistics

At Fornex we collect statistics on your Virtual Private Server performance and resource utilization. This section covers the API endpoint used to request that statistics.

#

VPS Statistics

The series field contains a list of value pairs (timestamp * 1000, float value).

get/vps/{order_id}/stats/{field}/

Path Parameters

  • fieldstringRequired

    Statistics field

    cpudiskiomemorytraffic
  • order_idstringRequired

    Order ID (including prefix 34-...)

Query Parameters

  • endstring

    Period end (default - now)

  • startstring

    Period start (default - -1h)

Responses

Fornex API Key
FIELD='traffic'
ORDER_ID='34-1234'

curl -X GET \
  -H "Content-Type: application/json" \
  -H "Authorization: Api-Key $FORNEX_API_KEY" \
  "https://fornex.com/api/vps/$ORDER_ID/stats/$FIELD/"
Response200
{
  "series": [
    {
      "color": "#60B5FF",
      "data": [
        [
          1677628800000,
          0.09553581192531
        ],
        [
          1677629088000,
          0.09553581192531
        ],
        [
          1677629376000,
          0.09916645151423
        ]
      ],
      "name": "Incoming"
    },
    {
      "color": "#61D561",
      "data": [
        [
          1677628800000,
          4585.9263464
        ],
        [
          1677629088000,
          4575.14841552
        ],
        [
          1677629376000,
          4636.41519648
        ]
      ],
      "name": "Outgoing",
      "type": "areaspline"
    }
  ],
  "subtitle": "November 16, 2015, 17:18 - November 17, 2015, 17:18 (Europe / Moscow)"
}

VPS: Private Network

Private Network management for VPS.

#

List of networks

get/private-network/

Query Parameters

  • pageinteger

    A page number within the paginated result set.

    default: 1
  • page_sizeinteger

    Number of results to return per page.

    default: 10

Responses

  • 200application/json
    countintegerRequiredexample: 123
    nextstring (uri)nullableexample: http://api.example.org/accounts/?page=4
    previousstring (uri)nullableexample: http://api.example.org/accounts/?page=2
    resultsarray object[]PrivateNetwork[]Required
Fornex API Key
curl -X GET \
  -H "Content-Type: application/json" \
  -H "Authorization: Api-Key $FORNEX_API_KEY" \
  "https://fornex.com/api/private-network/"
Response200
{
  "type": "object",
  "required": [
    "count",
    "results"
  ],
  "properties": {
    "count": {
      "type": "integer",
      "example": 123
    },
    "next": {
      "type": "string",
      "nullable": true,
      "format": "uri",
      "example": "http://api.example.org/accounts/?page=4"
    },
    "previous": {
      "type": "string",
      "nullable": true,
      "format": "uri",
      "example": "http://api.example.org/accounts/?page=2"
    },
    "results": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "readOnly": true
          }
        },
        "required": [
          "id"
        ]
      }
    }
  }
}
#

Create network

post/private-network/

Responses

Fornex API Key
curl -X POST \
  -H "Content-Type: application/json" \
  -H "Authorization: Api-Key $FORNEX_API_KEY" \
  "https://fornex.com/api/private-network/"
Response201
{
  "type": "object",
  "properties": {
    "id": {
      "type": "integer",
      "readOnly": true
    }
  },
  "required": [
    "id"
  ]
}
#

Supported locations

get/private-network/locations/

Query Parameters

  • pageinteger

    A page number within the paginated result set.

    default: 1
  • page_sizeinteger

    Number of results to return per page.

    default: 10

Responses

  • 200application/json
    countintegerRequiredexample: 123
    nextstring (uri)nullableexample: http://api.example.org/accounts/?page=4
    previousstring (uri)nullableexample: http://api.example.org/accounts/?page=2
    resultsarray object[]PrivateNetworkLocation[]Required
Fornex API Key
curl -X GET \
  -H "Content-Type: application/json" \
  -H "Authorization: Api-Key $FORNEX_API_KEY" \
  "https://fornex.com/api/private-network/locations/"
Response200
{
  "type": "object",
  "required": [
    "count",
    "results"
  ],
  "properties": {
    "count": {
      "type": "integer",
      "example": 123
    },
    "next": {
      "type": "string",
      "nullable": true,
      "format": "uri",
      "example": "http://api.example.org/accounts/?page=4"
    },
    "previous": {
      "type": "string",
      "nullable": true,
      "format": "uri",
      "example": "http://api.example.org/accounts/?page=2"
    },
    "results": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "readOnly": true
          },
          "location": {
            "type": "object",
            "properties": {
              "value": {
                "type": "string"
              },
              "label": {
                "type": "string"
              },
              "icon": {
                "type": "string"
              }
            },
            "required": [
              "icon",
              "label",
              "value"
            ]
          }
        },
        "required": [
          "id",
          "location"
        ]
      }
    }
  }
}
#

Delete network

delete/private-network/{id}/

Path Parameters

  • idintegerRequired

    A unique integer value identifying this User VNI.

Responses

  • 204

    No response body

Fornex API Key
ID='1'

curl -X DELETE \
  -H "Content-Type: application/json" \
  -H "Authorization: Api-Key $FORNEX_API_KEY" \
  "https://fornex.com/api/private-network/$ID/"

Dedicated Order

#

DS orders list

List all available DS orders. Information about the parameters or each order will also be included in the response

get/orders/ds/

Query Parameters

  • cancel_markboolean

    Filter the orders that will be canceled.

  • orderingstring

    Field used to order the results.

    default: id
    expiredid
  • pageinteger

    A page number within the paginated result set.

    default: 1
  • page_sizeinteger

    Number of results to return per page.

    default: 10

Responses

  • 200application/json
    countintegerRequiredexample: 123
    nextstring (uri)nullableexample: http://api.example.org/accounts/?page=4
    previousstring (uri)nullableexample: http://api.example.org/accounts/?page=2
    resultsarray object[]DSOrder[]Required
Fornex API Key
curl -X GET \
  -H "Content-Type: application/json" \
  -H "Authorization: Api-Key $FORNEX_API_KEY" \
  "https://fornex.com/api/orders/ds/"
Response200
{
  "count": 123,
  "next": "http://api.example.org/accounts/?page=4",
  "previous": "http://api.example.org/accounts/?page=2",
  "results": [
    {
      "id": "34-1234",
      "name": "DB Host",
      "tariff": "VPS Master",
      "tariff_price": 140,
      "type": "vps",
      "hostname": "srv-123.fornex.org",
      "ipaddress_set": [
        "123.123.123.123"
      ],
      "status": "active",
      "cost_month": 148,
      "expiration_date": "2015-12-18T17:21:46",
      "tags": [
        "Database"
      ],
      "configuration": {
        "cpu_count": 1,
        "cpu": "Intel Xeon Silver 4110 (8×2.1Ghz)",
        "motherboard": "Supermicro X9SCM-F",
        "chassis": "(1U) Supermicro U1 (BP:no, hdd-3.5x4) (4x 3.5)",
        "bandwidth": 1024,
        "memory": 16
      }
    }
  ]
}
#

DS order detail

Get all available data about the order by it's ID.

get/orders/ds/{order_id}/

Path Parameters

  • order_idstringRequired

    Order ID in the format NN-NNNNNNN.

Responses

  • 200application/json
    idstringread-onlyRequired
    namestringmax length: 64
    tariffstringread-onlyRequired
    tariff_pricenumber (double)nullableread-onlyRequired
    typestringread-onlyRequired
    hostnamestringnullableread-onlyRequired
    ipaddress_setarray string[]nullableread-onlyRequired
    statusstringread-onlyRequired
    values
    • unpaid
    • pending
    • active
    • expired
    • disabled
    • canceled
    • blocked
    • noprolong
    cost_monthnumber (double)read-onlyRequired
    expiration_datestring (date-time)read-onlyRequired
    tagsarray string[]Required
    cancel_markbooleanread-onlyRequired

    A mark indicating that the order will be canceled.

    projectobjectnullableread-onlyRequired
    configurationobjectread-onlyRequired

    Server configuration

Fornex API Key
ORDER_ID='34-123456'

curl -X GET \
  -H "Content-Type: application/json" \
  -H "Authorization: Api-Key $FORNEX_API_KEY" \
  "https://fornex.com/api/orders/ds/$ORDER_ID/"
Response200
{
  "id": "34-1234",
  "name": "DB Host",
  "tariff": "VPS Master",
  "tariff_price": 140,
  "type": "vps",
  "hostname": "srv-123.fornex.org",
  "ipaddress_set": [
    "123.123.123.123"
  ],
  "status": "active",
  "cost_month": 148,
  "expiration_date": "2015-12-18T17:21:46",
  "tags": [
    "Database"
  ],
  "configuration": {
    "cpu_count": 1,
    "cpu": "Intel Xeon Silver 4110 (8×2.1Ghz)",
    "motherboard": "Supermicro X9SCM-F",
    "chassis": "(1U) Supermicro U1 (BP:no, hdd-3.5x4) (4x 3.5)",
    "bandwidth": 1024,
    "memory": 16
  }
}
#

Traffic

Get traffic data for order

get/orders/ds/{order_id}/traffic/

Path Parameters

  • order_idstringRequired

    Order ID (including prefix 34-...)

Query Parameters

  • periodstring

    Period for displaying statistics

    default: month
    monthyear
  • portinteger

    Sequential port number

    default: 0

Responses

  • 200application/json
    dataarrayRequired
    orderstringRequired
    periodstringRequired
Fornex API Key
ORDER_ID='34-1234'

curl -X GET \
  -H "Content-Type: application/json" \
  -H "Authorization: Api-Key $FORNEX_API_KEY" \
  "https://fornex.com/api/orders/ds/$ORDER_ID/traffic/"
Response200
{
  "data": [
    [
      "2015-11-11",
      {
        "input": 41348840999.42331,
        "output": 969929788001.3163
      }
    ],
    [
      "2015-11-12",
      {
        "input": 44384423647.10196,
        "output": 1019910108491.1565
      }
    ]
  ],
  "order": "34-1234 DS HyperXeon (example.net)",
  "period": "month"
}
#

Traffic limits

get/orders/ds/{order_id}/traffic_used/

Path Parameters

  • order_idintegerRequired

    A unique integer value identifying this DS order.

Responses

  • 200application/json
    orderstringRequired
    limitintegerRequired
    range_startstring (date)Required
    range_endstring (date)Required
    usedintegerRequired
    used_ratenumber (double)Required
Fornex API Key
ORDER_ID='1'

curl -X GET \
  -H "Content-Type: application/json" \
  -H "Authorization: Api-Key $FORNEX_API_KEY" \
  "https://fornex.com/api/orders/ds/$ORDER_ID/traffic_used/"
Response200
{
  "limit": 14293651161088,
  "order": "34-1234 DS XeonNeon (example.net)",
  "range_end": "2015-11-21",
  "range_start": "2015-10-21",
  "used": 3508146044885.079,
  "used_rate": 0.24543386468220252
}

Domain

#

Domain list

get/dns/domain/

Query Parameters

  • pageinteger

    A page number within the paginated result set.

    default: 1
  • page_sizeinteger

    Number of results to return per page.

    default: 10
  • qstring

    search by name or IP

  • tagstring

    filter by tag

Responses

  • 200application/json
    countintegerRequiredexample: 123
    nextstring (uri)nullableexample: http://api.example.org/accounts/?page=4
    previousstring (uri)nullableexample: http://api.example.org/accounts/?page=2
    resultsarray object[]Domain[]Required
Fornex API Key
curl -X GET \
  -H "Content-Type: application/json" \
  -H "Authorization: Api-Key $FORNEX_API_KEY" \
  "https://fornex.com/api/dns/domain/"
Response200
{
  "count": 123,
  "next": "http://api.example.org/accounts/?page=4",
  "previous": "http://api.example.org/accounts/?page=2",
  "results": [
    {
      "name": "example.com",
      "created": "2024-02-05T21:41:25",
      "updated": "2024-02-05T21:41:25",
      "entry_set": [
        {
          "host": "",
          "id": 366182,
          "type": "A",
          "ttl": null,
          "value": "192.0.2.1"
        }
      ],
      "tags": []
    }
  ]
}
#

Add domain

The ability to add domains via the API is disabled by default for account security reasons. If you'd like to use this feature — contact support.

post/dns/domain/

Body

Required
namestringlength 1…128Required
ipstring (ipv4)min length: 1write-onlyRequired

Responses

  • 201application/json
    namestringmax length: 128Required
    createdstring (date-time)read-onlyRequired
    updatedstring (date-time)read-onlyRequired
    tagsarray string[]read-onlyRequired
    entry_setarray object[]Entry[]read-onlyRequired
Fornex API Key
curl -X POST \
  -H "Content-Type: application/json" \
  -H "Authorization: Api-Key $FORNEX_API_KEY" \
  --data '{"name": "example.com", "ip": "192.0.2.1"}' \
  "https://fornex.com/api/dns/domain/"
Response201
{
  "name": "example.com",
  "created": "2024-02-05T21:41:25",
  "updated": "2024-02-05T21:41:25",
  "entry_set": [
    {
      "host": "",
      "id": 366182,
      "type": "A",
      "ttl": null,
      "value": "192.0.2.1"
    }
  ],
  "tags": []
}
#

Delete domain

delete/dns/domain/{name}/

Path Parameters

  • namestringRequired

    Domain name

Responses

  • 204

    No response body

Fornex API Key
NAME='example.com'

curl -X DELETE \
  -H "Content-Type: application/json" \
  -H "Authorization: Api-Key $FORNEX_API_KEY" \
  "https://fornex.com/api/dns/domain/$NAME/"
#

Zone file

get/dns/domain/{name}/zone_file/

Path Parameters

  • namestringRequired

    Domain name

Responses

  • 200text/plain

    Zone file content (BIND format)

    string
Fornex API Key
NAME='example.com'

curl -X GET \
  -H "Content-Type: application/json" \
  -H "Authorization: Api-Key $FORNEX_API_KEY" \
  "https://fornex.com/api/dns/domain/$NAME/zone_file/"
Response200
"$TTL 21600\n@\tIN\tSOA\tns1.fornex.com. hostmaster.fornex.com. (\n...\n"
#

Update tags

put/dns/domain/{name}/tags/

Path Parameters

  • namestringRequired

    Domain name

Body

Required
tagsarray string[]Required

Responses

  • 200application/json
    tagsarray string[]Required
Fornex API Key
NAME='example.com'

curl -X PUT \
  -H "Content-Type: application/json" \
  -H "Authorization: Api-Key $FORNEX_API_KEY" \
  --data '{"tags": ["example"]}' \
  "https://fornex.com/api/dns/domain/$NAME/tags/"
Response200
{
  "tags": [
    "example"
  ]
}

Domain: Entry

#

Entry list

get/dns/domain/{name}/entry_set/

Path Parameters

  • namestringRequired

    Domain name

Query Parameters

  • qstring

    record filter

  • typestring
    AAAAACAACNAMEMXNSSRVTXTnull

Responses

  • 200application/json
    array object[]Entry[]
    idintegerread-onlyRequired
    hoststringmax length: 255default:

    Record hostname: '@, *, subdomain'

    typestringRequired
    values
    • A
    • AAAA
    • TXT
    • CNAME
    • NS
    • MX
    • SRV
    • CAA

    Record type

    priointeger (int64)min: 0max: 4294967295nullable

    Priority, used only for SRV and MX

    valuestringmax length: 1024Required

    Record value according to type, for example IP for A records

    ttlnullable

    Record TTL (optional, default: 3600 sec.)

    One of
Fornex API Key
NAME='example.com'

curl -X GET \
  -H "Content-Type: application/json" \
  -H "Authorization: Api-Key $FORNEX_API_KEY" \
  "https://fornex.com/api/dns/domain/$NAME/entry_set/"
Response200
[
  {
    "id": 1,
    "host": "www",
    "type": "A",
    "ttl": null,
    "value": "10.10.10.18"
  }
]
#

Add record

post/dns/domain/{name}/entry_set/

Path Parameters

  • namestringRequired

    Domain name

Body

Required
hoststringmax length: 255default:

Record hostname: '@, *, subdomain'

typestringRequired
values
  • A
  • AAAA
  • TXT
  • CNAME
  • NS
  • MX
  • SRV
  • CAA

Record type

priointeger (int64)min: 0max: 4294967295nullable

Priority, used only for SRV and MX

valuestringlength 1…1024Required

Record value according to type, for example IP for A records

ttlnullable

Record TTL (optional, default: 3600 sec.)

One of

Responses

  • 201application/json
    idintegerread-onlyRequired
    hoststringmax length: 255default:

    Record hostname: '@, *, subdomain'

    typestringRequired
    values
    • A
    • AAAA
    • TXT
    • CNAME
    • NS
    • MX
    • SRV
    • CAA

    Record type

    priointeger (int64)min: 0max: 4294967295nullable

    Priority, used only for SRV and MX

    valuestringmax length: 1024Required

    Record value according to type, for example IP for A records

    ttlnullable

    Record TTL (optional, default: 3600 sec.)

    One of
Fornex API Key
NAME='example.com'

curl -X POST \
  -H "Content-Type: application/json" \
  -H "Authorization: Api-Key $FORNEX_API_KEY" \
  --data '{"host": "www", "type": "A", "ttl": null, "value": "10.10.10.18"}' \
  "https://fornex.com/api/dns/domain/$NAME/entry_set/"
Response201
{
  "id": 1,
  "host": "www",
  "type": "A",
  "ttl": null,
  "value": "10.10.10.18"
}
#

Update record

put/dns/domain/{name}/entry_set/{id}/

Path Parameters

  • idintegerRequired

    A unique integer value identifying this DNS record.

  • namestringRequired

    Domain name

Body

Required
hoststringmax length: 255default:

Record hostname: '@, *, subdomain'

typestringRequired
values
  • A
  • AAAA
  • TXT
  • CNAME
  • NS
  • MX
  • SRV
  • CAA

Record type

priointeger (int64)min: 0max: 4294967295nullable

Priority, used only for SRV and MX

valuestringlength 1…1024Required

Record value according to type, for example IP for A records

ttlnullable

Record TTL (optional, default: 3600 sec.)

One of

Responses

  • 200application/json
    idintegerread-onlyRequired
    hoststringmax length: 255default:

    Record hostname: '@, *, subdomain'

    typestringRequired
    values
    • A
    • AAAA
    • TXT
    • CNAME
    • NS
    • MX
    • SRV
    • CAA

    Record type

    priointeger (int64)min: 0max: 4294967295nullable

    Priority, used only for SRV and MX

    valuestringmax length: 1024Required

    Record value according to type, for example IP for A records

    ttlnullable

    Record TTL (optional, default: 3600 sec.)

    One of
Fornex API Key
ID='1'
NAME='example.com'

curl -X PUT \
  -H "Content-Type: application/json" \
  -H "Authorization: Api-Key $FORNEX_API_KEY" \
  --data '{"host": "www", "type": "A", "ttl": null, "value": "10.10.10.18"}' \
  "https://fornex.com/api/dns/domain/$NAME/entry_set/$ID/"
Response200
{
  "id": 1,
  "host": "www",
  "type": "A",
  "ttl": null,
  "value": "10.10.10.18"
}
#

Delete record

delete/dns/domain/{name}/entry_set/{id}/

Path Parameters

  • idintegerRequired

    A unique integer value identifying this DNS record.

  • namestringRequired

    Domain name

Responses

  • 204

    No response body

Fornex API Key
ID='1'
NAME='example.com'

curl -X DELETE \
  -H "Content-Type: application/json" \
  -H "Authorization: Api-Key $FORNEX_API_KEY" \
  "https://fornex.com/api/dns/domain/$NAME/entry_set/$ID/"

Domain Order

#

Change NS

Request to change Nameservers for Domain order.

post/dns/order/{order_id}/change_ns/

Path Parameters

  • order_idstringRequired

    order number

Body

Required
nssstringmin length: 1Required

list of NS, separated by comma

Responses

Fornex API Key
ORDER_ID='375-13'

curl -X POST \
  -H "Content-Type: application/json" \
  -H "Authorization: Api-Key $FORNEX_API_KEY" \
  --data '{"nss": "ns1.examle.com,ns2.example.com"}' \
  "https://fornex.com/api/dns/order/$ORDER_ID/change_ns/"
Response200
{
  "type": "object",
  "properties": {
    "nss": {
      "type": "string",
      "title": "Nameservers",
      "description": "list of NS, separated by comma"
    }
  },
  "required": [
    "nss"
  ]
}

SSH Keys

#

List of keys

get/ssh_keys/

Responses

  • 200application/json
    array object[]SshKey[]
    idintegerread-onlyRequired
    userstringread-onlyRequired
    keystringmax length: 16384Required

    Public key in plain text.

    titlestringmax length: 128Required
    datestring (date-time)read-onlyRequired
    defaultboolean
Fornex API Key
curl -X GET \
  -H "Content-Type: application/json" \
  -H "Authorization: Api-Key $FORNEX_API_KEY" \
  "https://fornex.com/api/ssh_keys/"
Response200
[
  {
    "id": 1,
    "key": "ssh-rsa tt3BPrBTUCGXsCXmiF03LD/f9 test@test",
    "title": "Dev Laptop",
    "date": "2019-08-24T14:15:22Z",
    "default": true
  }
]
#

Add key

When adding a new key, it will be automatically linked to all of your VPS. The key is only added directly to the VPS on create or reinstall.

post/ssh_keys/

Body

Required
keystringlength 1…16384Required

Public key in plain text.

titlestringlength 1…128Required
defaultboolean

Responses

  • 201application/json
    idintegerread-onlyRequired
    userstringread-onlyRequired
    keystringmax length: 16384Required

    Public key in plain text.

    titlestringmax length: 128Required
    datestring (date-time)read-onlyRequired
    defaultboolean
Fornex API Key
curl -X POST \
  -H "Content-Type: application/json" \
  -H "Authorization: Api-Key $FORNEX_API_KEY" \
  --data '{"key": "ssh-rsa tt3BPrBTUCGXsCXmiF03LD/f9 test@test", "title": "Dev Laptop", "default": true}' \
  "https://fornex.com/api/ssh_keys/"
Response201
{
  "id": 1,
  "key": "ssh-rsa tt3BPrBTUCGXsCXmiF03LD/f9 test@test",
  "title": "Dev Laptop",
  "date": "2019-08-24T14:15:22Z",
  "default": true
}
#

Delete key

delete/ssh_keys/{key_id}/

Path Parameters

  • key_idintegerRequired

    A unique integer value identifying this user ssh key.

Responses

  • 204

    No response body

Fornex API Key
KEY_ID='1'

curl -X DELETE \
  -H "Content-Type: application/json" \
  -H "Authorization: Api-Key $FORNEX_API_KEY" \
  "https://fornex.com/api/ssh_keys/$KEY_ID/"

VPS SSH Keys

#

List of order keys

get/vps/{order_id}/ssh_keys/

Path Parameters

  • order_idstringRequired

    Order ID (including prefix 34-...)

Responses

  • 200application/json
    array object[]SshKey[]
    idintegerread-onlyRequired
    userstringread-onlyRequired
    keystringmax length: 16384Required

    Public key in plain text.

    titlestringmax length: 128Required
    datestring (date-time)read-onlyRequired
    defaultboolean
Fornex API Key
ORDER_ID='34-1234'

curl -X GET \
  -H "Content-Type: application/json" \
  -H "Authorization: Api-Key $FORNEX_API_KEY" \
  "https://fornex.com/api/vps/$ORDER_ID/ssh_keys/"
Response200
[
  {
    "id": 1,
    "key": "ssh-rsa tt3BPrBTUCGXsCXmiF03LD/f9 test@test",
    "title": "Dev Laptop",
    "date": "2019-08-24T14:15:22Z",
    "default": true
  }
]
#

Add key to order

post/vps/{order_id}/ssh_keys/add/

Path Parameters

  • order_idstringRequired

    Order ID (including prefix 34-...)

Body

Required
key_pkintegerwrite-onlyRequired

Responses

  • 200

    No response body

Fornex API Key
ORDER_ID='34-1234'

curl -X POST \
  -H "Content-Type: application/json" \
  -H "Authorization: Api-Key $FORNEX_API_KEY" \
  --data '{"key_pk": 1}' \
  "https://fornex.com/api/vps/$ORDER_ID/ssh_keys/add/"
#

Delete order key

post/vps/{order_id}/ssh_keys/delete/

Path Parameters

  • order_idstringRequired

    Order ID (including prefix 34-...)

Body

Required
key_pkintegerwrite-onlyRequired

Responses

  • 200

    No response body

Fornex API Key
ORDER_ID='34-1234'

curl -X POST \
  -H "Content-Type: application/json" \
  -H "Authorization: Api-Key $FORNEX_API_KEY" \
  --data '{"key_pk": 1}' \
  "https://fornex.com/api/vps/$ORDER_ID/ssh_keys/delete/"

S3 Storage

#

S3 orders list

List all available S3 orders. Information about the parameters or each order will also be included in the response

get/orders/s3/

Query Parameters

  • cancel_markboolean

    Filter the orders that will be canceled.

  • orderingstring

    Field used to order the results.

    default: id
    expiredid
  • pageinteger

    A page number within the paginated result set.

    default: 1
  • page_sizeinteger

    Number of results to return per page.

    default: 10

Responses

  • 200application/json
    countintegerRequiredexample: 123
    nextstring (uri)nullableexample: http://api.example.org/accounts/?page=4
    previousstring (uri)nullableexample: http://api.example.org/accounts/?page=2
    resultsarray object[]S3Order[]Required
Fornex API Key
curl -X GET \
  -H "Content-Type: application/json" \
  -H "Authorization: Api-Key $FORNEX_API_KEY" \
  "https://fornex.com/api/orders/s3/"
Response200
{
  "count": 123,
  "next": "http://api.example.org/accounts/?page=4",
  "previous": "http://api.example.org/accounts/?page=2",
  "results": [
    {
      "id": "34-1234",
      "name": "DB Host",
      "hostname": "srv-123.fornex.org",
      "status": "active",
      "cost_month": 148,
      "expiration_date": "2015-12-18T17:21:46",
      "tags": [
        "Database"
      ],
      "access_key": "user.8cab052ag4",
      "secret_key": "hisQNeOv2ZgjzSCSA1JJDLOhwAcA8s17",
      "bucket_name": "user.8cab052ag4.main",
      "space_used": "18"
    }
  ]
}
#

S3 order detail

Get all available data about the order by it's ID.

get/orders/s3/{order_id}/

Path Parameters

  • order_idstringRequired

    Order ID in the format NNN-NN.

Responses

  • 200application/json
    idstringread-onlyRequired
    namestringread-onlyRequired
    hostnamestringRequired
    access_keystringread-onlyRequired
    secret_keystringread-onlyRequired
    bucket_namestringread-onlyRequired
    space_usedintegerRequired
    cost_monthnumber (double)read-onlyRequired
    expiration_datestring (date-time)read-onlyRequired
    tagsarray string[]Required
    cancel_markbooleanread-onlyRequired

    A mark indicating that the order will be canceled.

    projectobjectnullableread-onlyRequired
Fornex API Key
ORDER_ID='664-7'

curl -X GET \
  -H "Content-Type: application/json" \
  -H "Authorization: Api-Key $FORNEX_API_KEY" \
  "https://fornex.com/api/orders/s3/$ORDER_ID/"
Response200
{
  "id": "34-1234",
  "name": "DB Host",
  "hostname": "srv-123.fornex.org",
  "status": "active",
  "cost_month": 148,
  "expiration_date": "2015-12-18T17:21:46",
  "tags": [
    "Database"
  ],
  "access_key": "user.8cab052ag4",
  "secret_key": "hisQNeOv2ZgjzSCSA1JJDLOhwAcA8s17",
  "bucket_name": "user.8cab052ag4.main",
  "space_used": "18"
}
#

S3 low-space notification limit

Set the free-space threshold at which a low-space warning is sent. Pass 0 to disable the notification.

put/orders/s3/{order_id}/notification_threshold/

Path Parameters

  • order_idintegerRequired

    A unique integer value identifying this S3 Order.

Body

Required
space_warning_notify_gbintegermin: 0Required

Responses

Fornex API Key
ORDER_ID='1'

curl -X PUT \
  -H "Content-Type: application/json" \
  -H "Authorization: Api-Key $FORNEX_API_KEY" \
  --data '{"space_warning_notify_gb":0}' \
  "https://fornex.com/api/orders/s3/$ORDER_ID/notification_threshold/"
Response200
{
  "type": "object",
  "properties": {
    "space_warning_notify_gb": {
      "type": "integer",
      "minimum": 0
    }
  },
  "required": [
    "space_warning_notify_gb"
  ]
}

IP Addresses

IP addresses assigned to your services.

#

List IP addresses

get/network/ip-address/

Query Parameters

  • orderingstring

    Which field to use when ordering the results.

  • searchstring
  • typestring

Responses

  • 200application/json
    idintegerread-onlyRequired
    ipstringRequired
    locationLocationChoiceRequired
    rdnsstringRequired
    orderobjectnullableread-onlyRequired
Fornex API Key
curl -X GET \
  -H "Content-Type: application/json" \
  -H "Authorization: Api-Key $FORNEX_API_KEY" \
  "https://fornex.com/api/network/ip-address/"
Response200
{
  "type": "array",
  "items": {
    "type": "object",
    "properties": {
      "id": {
        "type": "integer",
        "readOnly": true
      },
      "ip": {
        "type": "string",
        "title": "IP Address"
      },
      "location": {
        "type": "object",
        "properties": {
          "value": {
            "type": "string"
          },
          "label": {
            "type": "string"
          },
          "icon": {
            "type": "string"
          }
        },
        "required": [
          "icon",
          "label",
          "value"
        ]
      },
      "rdns": {
        "type": "string"
      },
      "order": {
        "allOf": [
          {
            "type": "object",
            "properties": {
              "id": {
                "type": "integer"
              },
              "name": {
                "type": "string"
              },
              "type": {
                "type": "string"
              },
              "link": {
                "type": "string",
                "readOnly": true
              },
              "unique_number": {
                "type": "string"
              }
            },
            "required": [
              "id",
              "link",
              "name",
              "type",
              "unique_number"
            ]
          }
        ],
        "nullable": true,
        "readOnly": true
      }
    },
    "required": [
      "id",
      "ip",
      "location",
      "order",
      "rdns"
    ]
  }
}

Tickets

This section describes API requests that allow you to set up remote operation with our ticketing system. This section covers the main and auxiliary API endpoints used to manage remote access to the Fornex ticket system.

#

Create ticket

To create a ticket, submit the subject and body of your inquiry. In addition, you may set the priority for your request, as well as the order which relates to it.

post/tickets/ticket/

Body

Required

Создание тикета пользователем

subjectstringlength 1…64Required

The main idea of your inquiry in short.

messagestringlength 1…49152Required

A detailed description of your issue and other details of the request.

priorityintegerdefault: 1
values
  • 0
  • 1
  • 2
  • 3
  • 4

One of the options which reflects the priority of your request:

  • 0 - Non-urgent (up to 24 hours)
  • 1 - Normal (up to 8 hours)
  • 2 - Important (up to 6 hours)
  • 3 - Urgent (up to 1 hour)
  • 4 - Very urgent (asap)

By default a ticket is created with normal priority.

Very urgent priority can be set only for orders with extended management service.

Please do not set the priority "very urgent" for requests that are not related to technical issues of your orders or any accident. As well, please do not intentionally increase the priority of a ticket if it is not necessary, it only complicates the processing of your requests.

orderstringmin length: 1nullable

ID of the order as "34-NNNN", which relates to your inquiry. For now one ticket can relate to one order only. By default a ticket is created with no related order.

credentialsobjectwrite-only

Responses

  • 201application/json

    Создание тикета пользователем

    subjectstringmax length: 64Required

    The main idea of your inquiry in short.

    messagestringmax length: 49152Required

    A detailed description of your issue and other details of the request.

    priorityintegerdefault: 1
    values
    • 0
    • 1
    • 2
    • 3
    • 4

    One of the options which reflects the priority of your request:

    • 0 - Non-urgent (up to 24 hours)
    • 1 - Normal (up to 8 hours)
    • 2 - Important (up to 6 hours)
    • 3 - Urgent (up to 1 hour)
    • 4 - Very urgent (asap)

    By default a ticket is created with normal priority.

    Very urgent priority can be set only for orders with extended management service.

    Please do not set the priority "very urgent" for requests that are not related to technical issues of your orders or any accident. As well, please do not intentionally increase the priority of a ticket if it is not necessary, it only complicates the processing of your requests.

    orderstringnullable

    ID of the order as "34-NNNN", which relates to your inquiry. For now one ticket can relate to one order only. By default a ticket is created with no related order.

    urlstringread-onlyRequired
    idstringread-onlyRequired
    statusstringread-onlyRequired
Fornex API Key
curl -X POST \
  -H "Content-Type: application/json" \
  -H "Authorization: Api-Key $FORNEX_API_KEY" \
  --data '{"subject": "Hello, we need some help", "message": "We need some help with updating software..."}' \
  "https://fornex.com/api/tickets/ticket/"
Response201
{
  "subject": "Hello, we need some help",
  "message": "We need some help with updating software...",
  "priority": 1,
  "order": null,
  "url": "https://fornex.com/my/tickets/66a8968a01027a2c2f241e6c/",
  "id": "66a8968a01027a2c2f241e6c",
  "status": "new"
}
#

Webhook status

get/tickets/webhook_info/

Responses

  • 200application/json
    urlstring (uri)max length: 512

    URL for submitting request, leave blank to deactivate

    last_error_datestring (date-time)nullableread-onlyRequired
    last_error_messagestringnullableread-onlyRequired
Fornex API Key
curl -X GET \
  -H "Content-Type: application/json" \
  -H "Authorization: Api-Key $FORNEX_API_KEY" \
  "https://fornex.com/api/tickets/webhook_info/"
Response200
{
  "last_error_date": null,
  "last_error_message": null,
  "url": "https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX"
}
#

Configure webhook

A POST request

ContentType: 'application/json'

{"text": 'New comment added to the ticket...'}

will be sent to the specified URL. By default, it works with Slack, but you can specify your own webhook and process the notification on your own.

post/tickets/webhook_set/

Body

urlstring (uri)max length: 512

URL for submitting request, leave blank to deactivate

Responses

  • 201application/json
    urlstring (uri)max length: 512

    URL for submitting request, leave blank to deactivate

    last_error_datestring (date-time)nullableread-onlyRequired
    last_error_messagestringnullableread-onlyRequired
Fornex API Key
curl -X POST \
  -H "Content-Type: application/json" \
  -H "Authorization: Api-Key $FORNEX_API_KEY" \
  --data '{"last_error_date": null, "last_error_message": null, "url": "https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX"}' \
  "https://fornex.com/api/tickets/webhook_set/"
Response201
{
  "last_error_date": null,
  "last_error_message": null,
  "url": "https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX"
}

Schemas

#AccountBalance
object
balancenumber (double)Required
currencystringRequired
#AccountInfo
object
emailstring (email)max length: 254
namestringRequired
#AccountInvoices
object
unpaid_invoices_countintegerRequired
unpaid_invoices_amountnumber (double)Required
currencystringRequired
#AppTemplate
object
idintegerread-onlyRequired

ID of the application.

namestringmax length: 64Required

Name of the application.

osstringread-onlyRequired
#BackupTariff
object
spaceintegerRequired
pricenumber (double)Required
unitsstringread-onlyRequireddefault: GB
#BandwidthEnum
values
  • 10
  • 15
  • 20
  • 25
  • 40
#BillingTypeEnum
string
values
  • single
  • periodic
#BlankEnum
values
#CancelOrder
object
statusstringread-onlyRequired
values
  • canceled
  • cancel_pending
messagestringread-onlyRequired
#CancelOrderRequest
object
whenstringwrite-onlydefault: expired
values
  • now
  • expired

The parameter describes when the order should be canceled - now or once the paid period expires.

save_backupbooleanwrite-onlydefault: true

The parameter describes whether to take a snapshot of the VPS before removing the virtual machine or not.

#CancelOrderStatusEnum
string
values
  • canceled
  • cancel_pending
#CpuArchEnum
string
values
  • x86_64
  • arm
#DedicatedTariff
object
idintegerread-onlyRequired
namestringmax length: 128Required

The plan name appears on invoices, so it should be short and written in Latin characters — for example, Cloud NVMe 1.

cpu_modelstringread-onlyRequired
cpu_countintegermin: 0max: 65535
ramstringRequired
diskstringRequired
bandwidthstringRequired
pricenumber (double)Required
locationsarray array[]Required
#DiskTypeEnum
string
values
  • hdd
  • nvme
  • ssd
  • sas
#DnsOrderNameservers
object
nssstringRequired

list of NS, separated by comma

#DnsOrderNameserversRequest
object
nssstringmin length: 1Required

list of NS, separated by comma

#Domain
object
namestringmax length: 128Required
createdstring (date-time)read-onlyRequired
updatedstring (date-time)read-onlyRequired
tagsarray string[]read-onlyRequired
entry_setarray object[]Entry[]read-onlyRequired
#DomainRequest
object
namestringlength 1…128Required
ipstring (ipv4)min length: 1write-onlyRequired
#DomainTags
object
tagsarray string[]Required
#DomainTagsRequest
object
tagsarray string[]Required
#DSConfiguration
object
cpu_countintegermin: 0max: 65535
cpustringRequired
motherboardstringRequired
chassisstringRequired
raid_controllerstringRequired
network_adapterstringRequired
bandwidthnullable
One of
memoryinteger (int64)min: 0max: 4294967295Required
disksstringread-onlyRequired
#DSOrder
object
idstringread-onlyRequired
namestringmax length: 64
tariffstringread-onlyRequired
tariff_pricenumber (double)nullableread-onlyRequired
typestringread-onlyRequired
hostnamestringnullableread-onlyRequired
ipaddress_setarray string[]nullableread-onlyRequired
statusstringread-onlyRequired
values
  • unpaid
  • pending
  • active
  • expired
  • disabled
  • canceled
  • blocked
  • noprolong
cost_monthnumber (double)read-onlyRequired
expiration_datestring (date-time)read-onlyRequired
tagsarray string[]Required
cancel_markbooleanread-onlyRequired

A mark indicating that the order will be canceled.

projectobjectnullableread-onlyRequired
configurationobjectread-onlyRequired

Server configuration

#DSTraffic
object
dataarrayRequired
orderstringRequired
periodstringRequired
#DSTrafficUsed
object
orderstringRequired
limitintegerRequired
range_startstring (date)Required
range_endstring (date)Required
usedintegerRequired
used_ratenumber (double)Required
#Entry
object
idintegerread-onlyRequired
hoststringmax length: 255default:

Record hostname: '@, *, subdomain'

typestringRequired
values
  • A
  • AAAA
  • TXT
  • CNAME
  • NS
  • MX
  • SRV
  • CAA

Record type

priointeger (int64)min: 0max: 4294967295nullable

Priority, used only for SRV and MX

valuestringmax length: 1024Required

Record value according to type, for example IP for A records

ttlnullable

Record TTL (optional, default: 3600 sec.)

One of
#EntryRequest
object
hoststringmax length: 255default:

Record hostname: '@, *, subdomain'

typestringRequired
values
  • A
  • AAAA
  • TXT
  • CNAME
  • NS
  • MX
  • SRV
  • CAA

Record type

priointeger (int64)min: 0max: 4294967295nullable

Priority, used only for SRV and MX

valuestringlength 1…1024Required

Record value according to type, for example IP for A records

ttlnullable

Record TTL (optional, default: 3600 sec.)

One of
#JobStateEnum
string
values
  • ready
  • error
  • done
#LocationChoice
object
valuestringRequired
labelstringRequired
iconstringRequired
#NetworkOrder
object
idintegerRequired
namestringRequired
typestringRequired
linkstringread-onlyRequired
unique_numberstringRequired
#NullEnum
values
  • null
#Order
object
idstringread-onlyRequired
namestringmax length: 64
tariffstringread-onlyRequired
tariff_pricenumber (double)nullableread-onlyRequired
typestringread-onlyRequired
hostnamestringnullableread-onlyRequired
ipaddress_setarray string[]nullableread-onlyRequired
statusstringread-onlyRequired
values
  • unpaid
  • pending
  • active
  • expired
  • disabled
  • canceled
  • blocked
  • noprolong
cost_monthnumber (double)read-onlyRequired
expiration_datestring (date-time)read-onlyRequired
tagsarray string[]Required
cancel_markbooleanread-onlyRequired

A mark indicating that the order will be canceled.

projectobjectnullableread-onlyRequired
#OrderCredentials
object
usernamestring
passwordstring
commentstring
#OrderCredentialsRequest
object
usernamestringmin length: 1
passwordstringmin length: 1
commentstringmin length: 1
#OrderServiceCreate
object
serviceintegerRequired

The ID of the extra service.

countintegermin: 1default: 1

The quantity for this extra service.

#OrderServiceCreateRequest
object
serviceintegerRequired

The ID of the extra service.

countintegermin: 1default: 1

The quantity for this extra service.

#OrderSSHKeyAddRequest
object
key_pkintegerwrite-onlyRequired
#OrderSSHKeyRemoveRequest
object
key_pkintegerwrite-onlyRequired
#OrderStatus
string
values
  • unpaid
  • pending
  • active
  • expired
  • disabled
  • canceled
  • blocked
  • noprolong
#OrderUpdate
object
namestringmax length: 64default:

Сustom name for the order.

tagsarray string[]Required

Tags for the order.

projectintegernullableRequired

Orders Project

#PaginatedAppTemplateList
object
countintegerRequiredexample: 123
nextstring (uri)nullableexample: http://api.example.org/accounts/?page=4
previousstring (uri)nullableexample: http://api.example.org/accounts/?page=2
resultsarray object[]AppTemplate[]Required
#PaginatedDomainList
object
countintegerRequiredexample: 123
nextstring (uri)nullableexample: http://api.example.org/accounts/?page=4
previousstring (uri)nullableexample: http://api.example.org/accounts/?page=2
resultsarray object[]Domain[]Required
#PaginatedDSOrderList
object
countintegerRequiredexample: 123
nextstring (uri)nullableexample: http://api.example.org/accounts/?page=4
previousstring (uri)nullableexample: http://api.example.org/accounts/?page=2
resultsarray object[]DSOrder[]Required
#PaginatedOrderList
object
countintegerRequiredexample: 123
nextstring (uri)nullableexample: http://api.example.org/accounts/?page=4
previousstring (uri)nullableexample: http://api.example.org/accounts/?page=2
resultsarray object[]Order[]Required
#PaginatedPrivateNetworkList
object
countintegerRequiredexample: 123
nextstring (uri)nullableexample: http://api.example.org/accounts/?page=4
previousstring (uri)nullableexample: http://api.example.org/accounts/?page=2
resultsarray object[]PrivateNetwork[]Required
#PaginatedPrivateNetworkLocationList
object
countintegerRequiredexample: 123
nextstring (uri)nullableexample: http://api.example.org/accounts/?page=4
previousstring (uri)nullableexample: http://api.example.org/accounts/?page=2
resultsarray object[]PrivateNetworkLocation[]Required
#PaginatedProjectList
object
countintegerRequiredexample: 123
nextstring (uri)nullableexample: http://api.example.org/accounts/?page=4
previousstring (uri)nullableexample: http://api.example.org/accounts/?page=2
resultsarray object[]Project[]Required
#PaginatedS3OrderList
object
countintegerRequiredexample: 123
nextstring (uri)nullableexample: http://api.example.org/accounts/?page=4
previousstring (uri)nullableexample: http://api.example.org/accounts/?page=2
resultsarray object[]S3Order[]Required
#PaginatedSnapshotList
object
countintegerRequiredexample: 123
nextstring (uri)nullableexample: http://api.example.org/accounts/?page=4
previousstring (uri)nullableexample: http://api.example.org/accounts/?page=2
resultsarray object[]Snapshot[]Required
#PaginatedTemplateList
object
countintegerRequiredexample: 123
nextstring (uri)nullableexample: http://api.example.org/accounts/?page=4
previousstring (uri)nullableexample: http://api.example.org/accounts/?page=2
resultsarray object[]Template[]Required
#PaginatedVPSOrderList
object
countintegerRequiredexample: 123
nextstring (uri)nullableexample: http://api.example.org/accounts/?page=4
previousstring (uri)nullableexample: http://api.example.org/accounts/?page=2
resultsarray object[]VPSOrder[]Required
#PanelEnum
values
  • vesta
  • hestia
  • aapanel
  • brainycp
  • cloudpanel
  • cyberpanel
  • beadmin
  • openpanel
#PatchedOrderUpdateRequest
object
namestringlength 1…64default:

Сustom name for the order. Set an empty string if you want to remove the name.

tagsarray string[]

Tags for the order. New tags will completely replace the current ones if any. Set an empty list if you want to remove all tags.

projectintegernullable

Orders Project Set an empty string if you want to remove the project.

#PatchedProjectRequest
object
namestringlength 1…40
commentstringmax length: 256
#PatchedVpsUpdateRequest
object
private_network_enabledboolean

Connect the order to a private network. This will enable direct data exchange with other orders in the same network, improving speed and security. At the moment, only one private network is created per account.

#PlacementPolicyEnum
string
values
  • STRICT
  • OPTIONAL
#PriorityEnum
integer
values
  • 0
  • 1
  • 2
  • 3
  • 4
#PrivateNetwork
object
idintegerread-onlyRequired
#PrivateNetworkLocation
object
idintegerread-onlyRequired
locationLocationChoiceRequired
#Project
object
idintegerread-onlyRequired
namestringmax length: 40Required
commentstringmax length: 256
logostring (uri)read-onlyRequired
#ProjectAddOrdersRequest
object
ordersarray string[]write-onlyRequired
#ProjectLogoRequest
object
logostring (binary)

Path to file.

#ProjectRemoveOrdersRequest
object
ordersarray string[]write-onlyRequired
#ProjectRequest
object
namestringlength 1…40Required
commentstringmax length: 256
#PublicChart
object
seriesarray object[]PublicChartSeries[]Required
subtitlestringRequired
#PublicChartSeries
object
namestringRequired
dataarrayRequired
typestring
colorstring
#PublicNetworkAddress
object
idintegerread-onlyRequired
ipstringRequired
locationLocationChoiceRequired
rdnsstringRequired
orderobjectnullableread-onlyRequired
#PublicReinstallRequest
object

Public API version: exposes template instead of ostemplate.

display_namestringread-onlyRequired
statusstringread-onlyRequired
datestring (date-time)read-onlyRequired
#PublicReinstallRequestRequest
object

Public API version: exposes template instead of ostemplate.

appintegernullablewrite-only
templateintegerwrite-only
snapshotintegernullablewrite-only
#PublicTicket
object

Создание тикета пользователем

subjectstringmax length: 64Required

The main idea of your inquiry in short.

messagestringmax length: 49152Required

A detailed description of your issue and other details of the request.

priorityintegerdefault: 1
values
  • 0
  • 1
  • 2
  • 3
  • 4

One of the options which reflects the priority of your request:

  • 0 - Non-urgent (up to 24 hours)
  • 1 - Normal (up to 8 hours)
  • 2 - Important (up to 6 hours)
  • 3 - Urgent (up to 1 hour)
  • 4 - Very urgent (asap)

By default a ticket is created with normal priority.

Very urgent priority can be set only for orders with extended management service.

Please do not set the priority "very urgent" for requests that are not related to technical issues of your orders or any accident. As well, please do not intentionally increase the priority of a ticket if it is not necessary, it only complicates the processing of your requests.

orderstringnullable

ID of the order as "34-NNNN", which relates to your inquiry. For now one ticket can relate to one order only. By default a ticket is created with no related order.

urlstringread-onlyRequired
idstringread-onlyRequired
statusstringread-onlyRequired
#PublicTicketRequest
object

Создание тикета пользователем

subjectstringlength 1…64Required

The main idea of your inquiry in short.

messagestringlength 1…49152Required

A detailed description of your issue and other details of the request.

priorityintegerdefault: 1
values
  • 0
  • 1
  • 2
  • 3
  • 4

One of the options which reflects the priority of your request:

  • 0 - Non-urgent (up to 24 hours)
  • 1 - Normal (up to 8 hours)
  • 2 - Important (up to 6 hours)
  • 3 - Urgent (up to 1 hour)
  • 4 - Very urgent (asap)

By default a ticket is created with normal priority.

Very urgent priority can be set only for orders with extended management service.

Please do not set the priority "very urgent" for requests that are not related to technical issues of your orders or any accident. As well, please do not intentionally increase the priority of a ticket if it is not necessary, it only complicates the processing of your requests.

orderstringmin length: 1nullable

ID of the order as "34-NNNN", which relates to your inquiry. For now one ticket can relate to one order only. By default a ticket is created with no related order.

credentialsobjectwrite-only
#S3NotificationThreshold
object
space_warning_notify_gbintegermin: 0Required
#S3NotificationThresholdRequest
object
space_warning_notify_gbintegermin: 0Required
#S3Order
object
idstringread-onlyRequired
namestringread-onlyRequired
hostnamestringRequired
access_keystringread-onlyRequired
secret_keystringread-onlyRequired
bucket_namestringread-onlyRequired
space_usedintegerRequired
cost_monthnumber (double)read-onlyRequired
expiration_datestring (date-time)read-onlyRequired
tagsarray string[]Required
cancel_markbooleanread-onlyRequired

A mark indicating that the order will be canceled.

projectobjectnullableread-onlyRequired
#ServerBandwidthTariff
object
min_valuestring (decimal)^-?\d{0,5}(?:\.\d{0,2})?$Required
max_valuestring (decimal)^-?\d{0,5}(?:\.\d{0,2})?$Required
stepstring (decimal)^-?\d{0,5}(?:\.\d{0,2})?$Required

Difference between two following bandwidth values

pricestring (decimal)^-?\d{0,5}(?:\.\d{0,2})?$Required
values
  • gbps
  • mbps
#Service
object
idintegerread-onlyRequired

ID of the service.

namestringmax length: 128Required

Name of the service.

descriptionstringmax length: 255

Description of the service.

pricestring (decimal)^-?\d{0,8}(?:\.\d{0,2})?$Required

Price of the service.

billing_typestringRequired
values
  • single
  • periodic

One-time or monthly cost.

#Snapshot
object
idintegerread-onlyRequired

ID of the snapshot.

namestringmax length: 64Required

Name of the snapshot.

size_gbnumber (double)read-onlyRequired

Size of the snapshot in GB.

created_atstring (date-time)Required
#SshKey
object
idintegerread-onlyRequired
userstringread-onlyRequired
keystringmax length: 16384Required

Public key in plain text.

titlestringmax length: 128Required
datestring (date-time)read-onlyRequired
defaultboolean
#SshKeyRequest
object
keystringlength 1…16384Required

Public key in plain text.

titlestringlength 1…128Required
defaultboolean
#Template
object
idintegerread-onlyRequired

ID of the template.

namestringmax length: 64Required

Name of the template.

osstringread-onlyRequired
panelnullable

Admin panel used in the template, may be blank.

One of
archstring
values
  • x86_64
  • arm

CPU architecture type required for this template.

min_storage_spaceinteger (int64)min: 0max: 4294967295nullable

Minimum storage space required for this template.

min_ram_volumeintegermin: 0max: 65535nullable

Minimum RAM volume required for this template.

min_cpu_coresinteger (int64)min: 0max: 4294967295nullable

Minimum CPU cores number required for this template.

#TermEnum
integer
values
  • 1
  • 3
  • 6
  • 12
#TicketsWebhook
object
urlstring (uri)max length: 512

URL for submitting request, leave blank to deactivate

last_error_datestring (date-time)nullableread-onlyRequired
last_error_messagestringnullableread-onlyRequired
#TicketsWebhookRequest
object
urlstring (uri)max length: 512

URL for submitting request, leave blank to deactivate

#TtlEnum
values
  • 120
  • 300
  • 600
  • 900
  • 1800
#TypeEnum
string
values
  • A
  • AAAA
  • TXT
  • CNAME
  • NS
  • MX
  • SRV
  • CAA
#UnitEnum
string
values
  • gbps
  • mbps
#VHTariff
object
idintegerread-onlyRequired
namestringmax length: 128Required

The plan name appears on invoices, so it should be short and written in Latin characters — for example, Cloud NVMe 1.

sitesintegermin: 0max: 65535nullable
pricenumber (double)Required
cpu_coresintegermin: 0max: 65535nullable
hdd_spaceinteger (int64)min: 0max: 4294967295nullable

GB

available_locationsarray string[]read-onlyRequired
#VpsConfiguration
object
cpu_countintegermin: 1max: 16

The number of cores.

ram_sizeintegermin: 2max: 32

The RAM volume in gigabytes (GB).

disk_classintegernullable

Disk class.

disk_sizeintegermin: 20max: 300

The storage volume in gigabytes (GB).

cpu_archstring
values
  • x86_64
  • arm

CPU architecture.

min_cpu_freqstring (decimal)^-?\d{0,2}(?:\.\d{0,1})?$

Minimum CPU core frequency in gigahertz (GHz). Affects the cost of the order (higher frequency - higher price) and the choice of hypervisor when creating a VPS. We recommend to set exact value from VPS configurator, because in case of mismatch the nearest higher frequency will be applied (for example, an order with 2.4 GHz will be processed as 3.0 GHz).

#VpsConfigurationRequest
object
cpu_countintegermin: 1max: 16

The number of cores.

ram_sizeintegermin: 2max: 32

The RAM volume in gigabytes (GB).

disk_classintegernullable

Disk class.

disk_sizeintegermin: 20max: 300

The storage volume in gigabytes (GB).

cpu_archstring
values
  • x86_64
  • arm

CPU architecture.

min_cpu_freqstring (decimal)^-?\d{0,2}(?:\.\d{0,1})?$

Minimum CPU core frequency in gigahertz (GHz). Affects the cost of the order (higher frequency - higher price) and the choice of hypervisor when creating a VPS. We recommend to set exact value from VPS configurator, because in case of mismatch the nearest higher frequency will be applied (for example, an order with 2.4 GHz will be processed as 3.0 GHz).

#VpsDiskClass
object
idintegerread-onlyRequired
namestringmax length: 64Required
limit_total_mbytes_secintegermin: 0max: 65535Required

Мb/sec

limit_read_iops_secintegermin: 0max: 65535Required

Op/sec

limit_write_iops_secintegermin: 0max: 65535Required

Op/sec

price_per_gbstring (decimal)^-?\d{0,2}(?:\.\d{0,4})?$Required

Cost per 1 GB

disk_typeDiskTypeEnum
values
  • hdd
  • nvme
  • ssd
  • sas
disk_type_displaystringRequired
#VpsLocation
object
valuestringRequired
labelstringRequired
location_os_typesarray string[]Required
bandwidth_tariffobjectnullable
disabled_by_slotsbooleandefault: true
disabled_by_cpu_freqbooleandefault: true
disabled_by_osbooleandefault: false
disabled_by_cpu_typebooleandefault: false
available_frequenciesobjectRequired
#VpsLogEntry
object
pkintegerread-onlyRequired
actionstringread-onlyRequired
notestringread-onlyRequired
userstringread-onlyRequired
timestring (date-time)read-onlyRequired
completedbooleanread-onlyRequired
job_statestringread-onlyRequired
values
  • ready
  • error
  • done
job_actionstringread-onlyRequired
#VPSOrder
object
idstringread-onlyRequired
namestringmax length: 64
tariffstringread-onlyRequired
tariff_pricenumber (double)nullableread-onlyRequired
typestringread-onlyRequired
hostnamestringnullableread-onlyRequired
ipaddress_setarray string[]nullableread-onlyRequired
statusstringread-onlyRequired
values
  • unpaid
  • pending
  • active
  • expired
  • disabled
  • canceled
  • blocked
  • noprolong
cost_monthnumber (double)read-onlyRequired
expiration_datestring (date-time)read-onlyRequired
tagsarray string[]Required
cancel_markbooleanread-onlyRequired

A mark indicating that the order will be canceled.

projectobjectnullableread-onlyRequired
configurationobjectread-onlyRequired

Server configuration

#VpsOrderCreate
object
order_idstringread-onlyRequired
#VpsOrderCreateRequest
object
tariffintegernullablewrite-only

The ID of the predefined plan. Get the available options for tariff from VPS plans.

To create a custom configuration, use the configuration parameter. Do not use both parameters at the same time.

configurationobjectnullablewrite-only

The custom configuration parameters as an object (open the collapsible section for more details). Use VPS configurator to get a proper combination of parameters in line with dynamic constraints.

Instead of custom configuration, you may wish to take a predefined plan, which is usually cheaper. To do this, use the tariff parameter. Do not use both parameters at the same time.

templateintegerwrite-only

Template's ID to install an operating system and, optionally, a hosting control panel. Get the available options for template from VPS templates.

Instead of OS, you may wish to install an application (app parameter) or to restore VPS from a snapshot (snapshot parameter). To do this, use the corresponding parameter. Use one parameter only per order.

appintegerwrite-only

Application's ID you wish to be installed. Get the available options for app from VPS applications.

Instead of application, you may wish to install an operating system (template parameter) or to restore VPS from a snapshot (snapshot parameter). To do this, use the corresponding parameter. Use one parameter only per order.

snapshotintegerwrite-only

Snapshot's ID you wish to restore VPS from. Get the available options for snapshot from VPS snapshots.

You can create a snapshot from any already created VPS in your dashboard on the order's page and use it for restoring (as a backup) or creating copies of the order (as a template).

Instead of restoring from a snapshot, you may wish to install an operating system (template parameter) or an application (app parameter). To do this, use the corresponding parameter. Use one parameter only per order.

locationstringmin length: 1write-onlyRequired

The two-letter country code of the order location. Get the available options for location from VPS locations.

termintegerwrite-onlydefault: 1
values
  • 1
  • 3
  • 6
  • 12

The number of months for which the order is being renewed once created (e.g. 3).

servicesarray object[]OrderServiceCreateRequest[]write-only

Extra services and their quantity as a list (open the collapsible section for more details). Get the available options for services from VPS extra services.

ssh_keysarray integer[]write-only

IDs of the SSH keys as a list that are added to the server on install. Get the available options for ssh_keys from SSH keys. Pass the keys list explicitly. By default, an empty list is passed, even if there are keys marked as "add by default" in your dashboard.

namestringlength 1…25write-onlydefault:

Custom name for the VPS. By default no name is set for the server.

projectintegernullablewrite-only

Project ID. The available options for the project can be obtained from the project list.

disk_classintegernullablewrite-only

The ID of the vps disk class. Get the available options for tariff from VPS drives.

When using a custom configuration, use the attribute within configuration parameter. Do not use both parameters at the same time.

bandwidthintegernullablewrite-only

Bandwidth limit to set for VPS order. Price for unit defined in bandwidth_tariff value

webhookobjectwrite-only

Webhook configuration as an object (open the collapsible section for more details). It's needed to receive a POST-request with order details and access credentials once the VPS is created

placement_policystringwrite-onlydefault: OPTIONAL
values
  • STRICT
  • OPTIONAL
placement_groupintegernullablewrite-only
private_networkintegernullablewrite-only
tagsarray string[]write-only

Tags for the VPS. By default no tags are set for the server.

#VpsOrderCreateWebhook
object
urlstring (uri)max length: 512Required

The URL to which the POST request is sent.

Full list of details is sent (like in Order Details method), but with extra field called credentials:

{
  "credentials": {
    "ip_address": "127.0.0.1",
    "username": "root",
    "password": "root_pass"
  }
}
secretstringmax length: 64Required

Secret phrase used for signing.

When processing a webhook request, use the "Fornex-Signature" header for validation.

Example in python:

import hmac
from hashlib import sha256
import json

from django.views.decorators.csrf import csrf_exempt
from django.http import HttpRequest, HttpResponse

@csrf_exempt
def webhook_handler(request: HttpRequest):
    signature = request.headers["Fornex-Signature"]
    secret = "secret"
    expected_signature = hmac.new(secret.encode(), request.body, sha256).hexdigest()
    if signature != expected_signature:
        raise ValueError("Invalid signature.")
    print(json.loads(request.body.decode()))
    return HttpResponse()
#VpsOrderCreateWebhookRequest
object
urlstring (uri)length 1…512Required

The URL to which the POST request is sent.

Full list of details is sent (like in Order Details method), but with extra field called credentials:

{
  "credentials": {
    "ip_address": "127.0.0.1",
    "username": "root",
    "password": "root_pass"
  }
}
secretstringlength 1…64Required

Secret phrase used for signing.

When processing a webhook request, use the "Fornex-Signature" header for validation.

Example in python:

import hmac
from hashlib import sha256
import json

from django.views.decorators.csrf import csrf_exempt
from django.http import HttpRequest, HttpResponse

@csrf_exempt
def webhook_handler(request: HttpRequest):
    signature = request.headers["Fornex-Signature"]
    secret = "secret"
    expected_signature = hmac.new(secret.encode(), request.body, sha256).hexdigest()
    if signature != expected_signature:
        raise ValueError("Invalid signature.")
    print(json.loads(request.body.decode()))
    return HttpResponse()
#VpsResetPassword
object
passwdstringread-onlyRequired

Your new password.

resp_idintegerread-onlyRequired

ID of the operation to check its status, for more details see. vps_log_details

#VpsStatus
object
statusstringRequired

on | off | unknown

#VpsTariff
object
idintegerread-onlyRequired
namestringmax length: 128Required

The plan name appears on invoices, so it should be short and written in Latin characters — for example, Cloud NVMe 1.

cpu_countintegerRequired
ramstringRequired
diskstringRequired
bandwidthstringRequired
pricenumber (double)Required
disk_classVpsDiskClassRequired
#VpsUpdate
object
private_network_enabledbooleanRequired

Connect the order to a private network. This will enable direct data exchange with other orders in the same network, improving speed and security. At the moment, only one private network is created per account.

#WhenEnum
string
values
  • now
  • expired