curl --request POST \ --url 'https://api.e2enetworks.com/myaccount/api/v1/nodes/?project_id=<PROJECT_ID>&apikey=<API_KEY>&location=<LOCATION>' \ --header 'Authorization: Bearer <API_TOKEN>' \ --header 'Content-Type: application/json' \ --data '{ "label": "default", "name": "E1LC-2-6GB-272", "plan": "E1-2vCPU-6RAM-0DISK-E1LC-Onetemplate-Ubuntu24.04-Delhi", "image": "Ubuntu-24.04-Distro", "image_id": 12345, "is_saved_image": false, "saved_image_template_id": null, "ssh_keys": [ "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAI... your_email@example.com" ], "start_scripts": [ "sudo apt-get update\nsudo apt-get install nginx -y" ], "disable_password": true, "disk": 250, "backups": true, "is_encryption_required": false, "isEncryptionEnabled": true, "encryption_passphrase": "ApiAuto@123", "enable_bitninja": false, "security_group_id": 12345, "vpc_id": 12345, "subnet_id": "282", "default_public_ip": false, "reserve_ip": "1.2.3.4", "is_ipv6_availed": true, "is_private": false, "ngc_container_id": null, "number_of_instances": 1}'import requests
response = requests.post( "https://api.e2enetworks.com/myaccount/api/v1/nodes/", params={"project_id": "<PROJECT_ID>", "apikey": "<API_KEY>", "location": "<LOCATION>"}, headers={"Authorization": "Bearer <API_TOKEN>"}, json={ "label": "default", "name": "E1LC-2-6GB-272", "plan": "E1-2vCPU-6RAM-0DISK-E1LC-Onetemplate-Ubuntu24.04-Delhi", "image": "Ubuntu-24.04-Distro", "image_id": 12345, "is_saved_image": False, "saved_image_template_id": None, "ssh_keys": [ "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAI... your_email@example.com", ], "start_scripts": [ "sudo apt-get update\nsudo apt-get install nginx -y", ], "disable_password": True, "disk": 250, "backups": True, "is_encryption_required": False, "isEncryptionEnabled": True, "encryption_passphrase": "ApiAuto@123", "enable_bitninja": False, "security_group_id": 12345, "vpc_id": 12345, "subnet_id": "282", "default_public_ip": False, "reserve_ip": "1.2.3.4", "is_ipv6_availed": True, "is_private": False, "ngc_container_id": None, "number_of_instances": 1, },)print(response.json())const url = new URL("https://api.e2enetworks.com/myaccount/api/v1/nodes/");url.search = new URLSearchParams({ project_id: "<PROJECT_ID>", apikey: "<API_KEY>", location: "<LOCATION>" });
const response = await fetch(url, { method: "POST", headers: { "Authorization": "Bearer <API_TOKEN>", "Content-Type": "application/json" }, body: JSON.stringify({ "label": "default", "name": "E1LC-2-6GB-272", "plan": "E1-2vCPU-6RAM-0DISK-E1LC-Onetemplate-Ubuntu24.04-Delhi", "image": "Ubuntu-24.04-Distro", "image_id": 12345, "is_saved_image": false, "saved_image_template_id": null, "ssh_keys": [ "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAI... your_email@example.com" ], "start_scripts": [ "sudo apt-get update\nsudo apt-get install nginx -y" ], "disable_password": true, "disk": 250, "backups": true, "is_encryption_required": false, "isEncryptionEnabled": true, "encryption_passphrase": "ApiAuto@123", "enable_bitninja": false, "security_group_id": 12345, "vpc_id": 12345, "subnet_id": "282", "default_public_ip": false, "reserve_ip": "1.2.3.4", "is_ipv6_availed": true, "is_private": false, "ngc_container_id": null, "number_of_instances": 1 }),});console.log(await response.json());Creates one or more nodes. For a committed node, use the Committed node body and set cn_id to a committed plan from OS Plans.
Parameters
Section titled “Parameters”Query Parameters
Section titled “Query Parameters”Identifier of the project to scope the request to. Required integer project ID.
Example
<PROJECT_ID>API key for authenticating the create node request
Example
<API_KEY>Location identifier for the node
Example
<LOCATION>Request Body
Section titled “Request Body”object
Free-form label applied to the node. Used to organize nodes in the console and in resource filtering. Use "default" if you have no labelling scheme.
Example
defaultHuman-readable identifier for the node. Appears in the dashboard, billing reports, and as the hostname on the provisioned VM. Must be unique within the project.
Example
E1LC-2-6GB-272Plan SKU that selects vCPU, RAM, disk, and instance series. Plan identifiers are returned by the plans API and follow the convention <series>-<vCPU>vCPU-<RAM>RAM-<DISK>DISK-<series>-<template>-<image>-<region>.
Example
E1-2vCPU-6RAM-0DISK-E1LC-Onetemplate-Ubuntu24.04-DelhiOS image name to install on the node. Use the OS plans API to list supported images for a given plan/region.
Example
Ubuntu-24.04-DistroNumeric image identifier corresponding to image. Provide this in addition to image for deterministic image selection (avoids ambiguity when an image name maps to multiple internal records). Cannot be combined with multi-node create - omit when number_of_instances > 1.
Example
12345Set true to provision from a previously saved image template (a snapshot the user has captured and saved). When true, saved_image_template_id must be supplied.
Example
falseIdentifier of the saved-image template to clone from. Required when is_saved_image is true, otherwise must be null.
Example
nullSSH public keys to inject into the node’s authorized_keys. Provide at least one key - password authentication is disabled by default. Keys are added for the OS’s default admin user (e.g. ubuntu, centos).
Shell scripts to execute via cloud-init the first time the node boots. Run sequentially as root. Use to install packages, fetch config, or register the node with an orchestrator.
Disable password authentication for the default OS user. Strongly recommended for production nodes. SSH key authentication continues to work.
Example
trueRoot disk size in GB. Only honored for E1-series plans (other plan series include a fixed root disk and ignore this field). To extend the root disk after creation, use the increase-root-storage endpoint.
Example
250Enable CDP backups on the node from creation. CDP creates continuous block-level backups. Billed separately - see the CDP backup plans API.
Example
trueReserved for compliance use cases that require a record of whether encryption was mandated for the workload. Independent of whether encryption is actually enabled (isEncryptionEnabled).
Example
falseEnable LUKS encryption on the node’s root volume. When true, encryption_passphrase must be supplied. The passphrase cannot be recovered if lost.
Example
trueLUKS passphrase used to encrypt the root volume. Required when isEncryptionEnabled is true. Stored encrypted; cannot be retrieved or reset afterwards.
Example
ApiAuto@123Install and activate BitNinja server-side security on first boot (Linux only). BitNinja provides WAF, malware scanning, and DoS protection. Adds a per-node fee - see License Management.
Example
falseID of the security group to attach at creation. If omitted, the project’s default security group is used. Use the security groups API to look up IDs.
Example
12345ID of the VPC the node should join. When omitted, the project’s default VPC for the region is used. Must be paired with subnet_id.
Example
12345ID of the subnet within vpc_id where the node’s primary network interface will be placed. Passed as a string for compatibility with legacy callers.
Example
282Assign an auto-allocated public IPv4 to the node. Set to false if you supply reserve_ip (you cannot have both - the reserved IP would be unused).
Example
falseExisting reserved public IPv4 address to attach as the node’s primary public IP. Get one from the Reserve IP API. Mutually exclusive with default_public_ip: true and with multi-node create.
Example
1.2.3.4Attach an IPv6 address to the node at creation. Region must support IPv6 - check the network capabilities endpoint.
Example
trueProvision the node on a private (dedicated) cluster instead of the shared public cluster. Requires the project to be entitled to a private cluster; additional private-cluster fields may be needed.
Example
falseNVIDIA GPU Cloud (NGC) container template ID to launch on the node. Only applicable to GPU plans. Leave null for general- purpose nodes.
Example
nullNumber of identical nodes to provision in this request. Setting this above 1 disables reserve_ip and image_id - those flows are reserved for single-node create.
Example
1object
Free-form label applied to the node. Used to organize nodes in the console and in resource filtering. Use "default" if you have no labelling scheme.
Example
defaultHuman-readable identifier for the node. Appears in the dashboard, billing reports, and as the hostname on the provisioned VM. Must be unique within the project.
Example
E1LC-2-6GB-272Plan SKU that selects vCPU, RAM, disk, and instance series. Plan identifiers are returned by the plans API and follow the convention <series>-<vCPU>vCPU-<RAM>RAM-<DISK>DISK-<series>-<template>-<image>-<region>.
Example
E1-2vCPU-6RAM-0DISK-E1LC-Onetemplate-Ubuntu24.04-DelhiOS image name to install on the node. Use the OS plans API to list supported images for a given plan/region.
Example
Ubuntu-24.04-DistroNumeric image identifier corresponding to image. Provide this in addition to image for deterministic image selection (avoids ambiguity when an image name maps to multiple internal records). Cannot be combined with multi-node create - omit when number_of_instances > 1.
Example
12345Set true to provision from a previously saved image template (a snapshot the user has captured and saved). When true, saved_image_template_id must be supplied.
Example
falseIdentifier of the saved-image template to clone from. Required when is_saved_image is true, otherwise must be null.
Example
nullSSH public keys to inject into the node’s authorized_keys. Provide at least one key - password authentication is disabled by default. Keys are added for the OS’s default admin user (e.g. ubuntu, centos).
Shell scripts to execute via cloud-init the first time the node boots. Run sequentially as root. Use to install packages, fetch config, or register the node with an orchestrator.
Disable password authentication for the default OS user. Strongly recommended for production nodes. SSH key authentication continues to work.
Example
trueRoot disk size in GB. Only honored for E1-series plans (other plan series include a fixed root disk and ignore this field). To extend the root disk after creation, use the increase-root-storage endpoint.
Example
250Enable CDP backups on the node from creation. CDP creates continuous block-level backups. Billed separately - see the CDP backup plans API.
Example
trueReserved for compliance use cases that require a record of whether encryption was mandated for the workload. Independent of whether encryption is actually enabled (isEncryptionEnabled).
Example
falseEnable LUKS encryption on the node’s root volume. When true, encryption_passphrase must be supplied. The passphrase cannot be recovered if lost.
Example
trueLUKS passphrase used to encrypt the root volume. Required when isEncryptionEnabled is true. Stored encrypted; cannot be retrieved or reset afterwards.
Example
ApiAuto@123Install and activate BitNinja server-side security on first boot (Linux only). BitNinja provides WAF, malware scanning, and DoS protection. Adds a per-node fee - see License Management.
Example
falseID of the security group to attach at creation. If omitted, the project’s default security group is used. Use the security groups API to look up IDs.
Example
12345ID of the VPC the node should join. When omitted, the project’s default VPC for the region is used. Must be paired with subnet_id.
Example
12345ID of the subnet within vpc_id where the node’s primary network interface will be placed. Passed as a string for compatibility with legacy callers.
Example
282Assign an auto-allocated public IPv4 to the node. Set to false if you supply reserve_ip (you cannot have both - the reserved IP would be unused).
Example
falseExisting reserved public IPv4 address to attach as the node’s primary public IP. Get one from the Reserve IP API. Mutually exclusive with default_public_ip: true and with multi-node create.
Example
1.2.3.4Attach an IPv6 address to the node at creation. Region must support IPv6 - check the network capabilities endpoint.
Example
trueProvision the node on a private (dedicated) cluster instead of the shared public cluster. Requires the project to be entitled to a private cluster; additional private-cluster fields may be needed.
Example
falseNVIDIA GPU Cloud (NGC) container template ID to launch on the node. Only applicable to GPU plans. Leave null for general- purpose nodes.
Example
nullNumber of identical nodes to provision in this request. Setting this above 1 disables reserve_ip and image_id - those flows are reserved for single-node create.
Example
1What happens when the committed period ends: auto_renew (the default) renews it, hourly_billing moves the node to hourly billing.
Example
auto_renewResponses
Section titled “Responses”Successful response
object
HTTP status code returned for the Create Node operation
object
Unique identifier of the created node
Unique identifier of the created node
Identifier of the created virtual machine
Timestamp when the node was created
The public IPv4 address assigned to the created node.
The private IPv4 address assigned to the node.
Indicates whether a backup was created for the node
Disk size specification for the node
Current status of the node creation process
Number of virtual CPUs allocated to the node
Amount of memory allocated to the node
Identifier of the node’s plan
Geographic region identifier for the created node
Indicates whether the newly created node is locked
Zabbix host identifier associated with the created node
Zabbix host identifier for the created node
Identifier of the GPU assigned to the node
Pricing string with currency and billing period
Human-readable name of the created node
object
Label identifying the SSH key
SSH public key string for the node
Indicates whether the created node is active
Identifier of the scaler associated with the node
object
Operating system name
Operating system version string
Operating system category name
Operating system full name string
Indicates whether the node is being monitored.
object
Current backup status of the node
Human-readable status detail of the backup operation
Identifier of the created node
Indicates whether backup encryption is enabled.
City name where the node is located
object
Current monitoring status of the node
Human-readable explanation for the monitor status
object
Indicates whether BitNinja details are displayed
Cost associated with BitNinja service
Indicates whether the BitNinja license is active.
object
Indicates whether a license is attached to the created node
Message returned after a license deletion attempt
Indicates whether a Microsoft SQL Server license is attached to the node.
Indicates whether the node creation has been committed
Human-readable message describing the audit log entry
Indicates whether the monitoring tab is enabled for the created node.
Indicates if the CDP tab is enabled for the node.
Indicates whether the alert tab is enabled for the node.
Discount percentage applied by BitNinja
Indicates whether the node’s image was deleted.
Indicates if the node has VPC enabled
Indicates if snapshots are permitted for the created node.
Indicates whether the node is a FortiGate virtual machine.
Indicates whether rescue mode is enabled for the node.
Indicates if the created node can be upgraded.
Indicates if the created node is flagged for abuse
Three-letter ISO 4217 currency code of the node
Type identifier of the created virtual machine
Indicates if accidental protection is enabled for the created node
Name of the project associated with the created node
The type of resource associated with the created node.
Identifier of the label associated with the created node
object
Result message indicating the outcome of the node creation request
Example
{ "code": 200, "data": { "id": 12345, "name": "C3-8GB-627", "vm_id": 12345, "created_at": "2025-09-04T06:17:21.574517Z", "public_ip_address": "1.2.3.4", "private_ip_address": "10.15.160.6", "backup": false, "disk": "100 GB", "status": "Creating", "vcpus": "4", "memory": "8 GB", "plan": "C3.8GB", "is_locked": false, "gpu": "", "price": "Rs. 3.1/Hour or Rs. 2263.0 Monthly", "label": "Default", "ssh_keys": [ { "label": "your_email@example.com", "ssh_key": "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAI... your_email@example.com" } ], "is_active": true, "os_info": { "name": "Ubuntu", "version": "24.04", "category": "Linux Virtual Node", "full_name": "Ubuntu 24.04 x86_64" }, "is_monitored": false, "backup_status": { "status": "backup_not_activated", "detail": "Not Activated", "node_id": 12345, "is_encryption_enabled": false }, "location": "Delhi", "monitor_status": { "status": "not_activated", "reason": "" }, "enable_bitninja_details": { "show_bitninja": true, "bitninja_cost": 760 }, "is_bitninja_license_active": false, "any_license_attached": { "is_license_attached": false, "license_deletion_message": "", "mssql_license_attached": false }, "is_committed": false, "monitoring_tab_enabled": true, "cdp_tab_enabled": true, "alert_tab_enabled": true, "bitninja_discount_percentage": 0, "is_image_deleted": false, "vpc_enabled": false, "is_snapshot_allowed": true, "is_fortigate_vm": false, "rescue_mode_status": "Disabled", "is_upgradable": true, "abuse_flag": false, "currency": "INR", "vm_type": "vm", "is_accidental_protection": false, "project_name": "default-project-35027" }, "message": "Success"}