curl --request PUT \ --url 'https://api.e2enetworks.com/myaccount/api/v1/nodes/{node_id}/actions/?project_id=<PROJECT_ID>&apikey=<API_KEY>&location=<LOCATION>' \ --header 'Authorization: Bearer <API_TOKEN>' \ --header 'Content-Type: application/json' \ --data '{ "type": "power_off", "name": "my-saved-image"}'import requests
response = requests.put( "https://api.e2enetworks.com/myaccount/api/v1/nodes/{node_id}/actions/", params={"project_id": "<PROJECT_ID>", "apikey": "<API_KEY>", "location": "<LOCATION>"}, headers={"Authorization": "Bearer <API_TOKEN>"}, json={ "type": "power_off", "name": "my-saved-image", },)print(response.json())const url = new URL("https://api.e2enetworks.com/myaccount/api/v1/nodes/{node_id}/actions/");url.search = new URLSearchParams({ project_id: "<PROJECT_ID>", apikey: "<API_KEY>", location: "<LOCATION>" });
const response = await fetch(url, { method: "PUT", headers: { "Authorization": "Bearer <API_TOKEN>", "Content-Type": "application/json" }, body: JSON.stringify({ "type": "power_off", "name": "my-saved-image" }),});console.log(await response.json());curl --request PUT \ --url 'https://api.e2enetworks.com/myaccount/api/v1/nodes/{node_id}/actions/?project_id=<PROJECT_ID>&apikey=<API_KEY>&location=<LOCATION>' \ --header 'Authorization: Bearer <API_TOKEN>' \ --header 'Content-Type: application/json' \ --data '{ "ssh_keys": [ { "label": "your_email@example.com", "ssh_key": "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAI... your_email@example.com" } ], "type": "add_ssh_keys"}'import requests
response = requests.put( "https://api.e2enetworks.com/myaccount/api/v1/nodes/{node_id}/actions/", params={"project_id": "<PROJECT_ID>", "apikey": "<API_KEY>", "location": "<LOCATION>"}, headers={"Authorization": "Bearer <API_TOKEN>"}, json={ "ssh_keys": [ { "label": "your_email@example.com", "ssh_key": "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAI... your_email@example.com", }, ], "type": "add_ssh_keys", },)print(response.json())const url = new URL("https://api.e2enetworks.com/myaccount/api/v1/nodes/{node_id}/actions/");url.search = new URLSearchParams({ project_id: "<PROJECT_ID>", apikey: "<API_KEY>", location: "<LOCATION>" });
const response = await fetch(url, { method: "PUT", headers: { "Authorization": "Bearer <API_TOKEN>", "Content-Type": "application/json" }, body: JSON.stringify({ "ssh_keys": [ { "label": "your_email@example.com", "ssh_key": "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAI... your_email@example.com" } ], "type": "add_ssh_keys" }),});console.log(await response.json());curl --request PUT \ --url 'https://api.e2enetworks.com/myaccount/api/v1/nodes/{node_id}/actions/?project_id=<PROJECT_ID>&apikey=<API_KEY>&location=<LOCATION>' \ --header 'Authorization: Bearer <API_TOKEN>' \ --header 'Content-Type: application/json' \ --data '{ "type": "update_password", "password": "Hello@1234567890"}'import requests
response = requests.put( "https://api.e2enetworks.com/myaccount/api/v1/nodes/{node_id}/actions/", params={"project_id": "<PROJECT_ID>", "apikey": "<API_KEY>", "location": "<LOCATION>"}, headers={"Authorization": "Bearer <API_TOKEN>"}, json={ "type": "update_password", "password": "Hello@1234567890", },)print(response.json())const url = new URL("https://api.e2enetworks.com/myaccount/api/v1/nodes/{node_id}/actions/");url.search = new URLSearchParams({ project_id: "<PROJECT_ID>", apikey: "<API_KEY>", location: "<LOCATION>" });
const response = await fetch(url, { method: "PUT", headers: { "Authorization": "Bearer <API_TOKEN>", "Content-Type": "application/json" }, body: JSON.stringify({ "type": "update_password", "password": "Hello@1234567890" }),});console.log(await response.json());Performs a lifecycle, security, or rename action on a single node. The action is selected by the type field in the request body. Some actions require additional fields (see the type description below for the per-action contract).
All actions return the same response envelope - data.action_type echoes the action that was performed. Long-running actions (reinstall, save_images) return status: "done" immediately to indicate the request was accepted; the node will transition through the actual workflow asynchronously.
Perform Node Action, Add SSH Key and Update Password share this request; the body you send decides which one runs.
Parameters
Section titled “Parameters”Path Parameters
Section titled “Path Parameters”Path parameter node_id.
Query Parameters
Section titled “Query Parameters”Identifier of the project to scope the request to. Required integer project ID.
Example
<PROJECT_ID>API key used to authenticate the request
Example
<API_KEY>Region identifier for the target node
Example
<LOCATION>Request Body
Section titled “Request Body”object
Discriminator that selects which action to perform. Most actions require no additional fields; the two exceptions are save_images and rename, both of which require the name field below.
Supported values and their semantics:
-
power_off- gracefully shut down the node. -
power_on- boot a powered-off node. -
reboot- reboot the node (soft reboot via the guest OS where possible). -
reinstall- wipe the node and reinstall the same OS image. Destructive: all data on the root disk is lost. -
save_images- capture the current root disk as a saved image template. Requiresname. -
rename- change the node’s display name. Requiresname. -
enable_recovery_mode/disable_recovery_mode- toggle recovery-mode boot (mounts the root disk on a rescue image). -
lock_vm/unlock_vm- administrative lock that blocks further actions until unlocked. -
enable_accidental_protection/disable_accidental_protection- require an extra confirmation step before destructive actions. -
enable_node_compliance/disable_node_compliance- toggle security-compliance mode (hardens the node per the platform’s compliance baseline).
Example
power_offRequired when type is save_images (sets the name of the saved image template) or rename (sets the new node display name). Ignored for all other action types.
Example
my-saved-imageobject
object
User-defined name for the SSH key
Example
your_email@example.comSSH public key to add
Example
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAI... your_email@example.comIdentifier specifying the add SSH key operation
Example
add_ssh_keysobject
Action identifier for updating a password
Example
update_passwordNew password for the user
Example
Hello@1234567890Responses
Section titled “Responses”Successful response
object
HTTP status code. 200 indicates the action was accepted.
object
Unique identifier of the action record.
ISO 8601 timestamp when the action was created.
Action completion status. done indicates the request was accepted and synchronous work has finished. Long-running actions may also return pending.
Echo of the action that was performed. Usually matches the request’s type, but compound actions may report a related internal step - for example reinstall returns action_type: undeploy while the reinstall workflow runs.
Numeric identifier of the affected node (as a string).
Display name of the affected node.
Identifier of the saved image template. Only populated when action_type is save_images; empty string otherwise.
object
Human-readable status message.
Example
{ "code": 200, "data": { "id": 123456, "created_at": "2025-07-11T12:45:40.599874Z", "status": "done", "action_type": "power_off", "resource_id": "12345", "resource_name": "C3-8GB-784", "image_id": "" }, "message": "Success"}