Servers
The Servers resource provides access to all methods relating to Servers in Keystash.
List Servers
Path: /servers/list
Method: GET
Authentication: Bearer Token
| Key | Value | Required | 
| Accept-Encoding | gzip | optional | 
Request Parameters
None.
Request Body
None.
Example Request
curl --location --request GET 'https://app.keystash.io/api/v1/servers/list' \
--header 'Authorization: Bearer <token>'
Example Response
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
[
  {
    "id": "DmcEgixUXpWVv7tk",
    "hostname": "my-prod-host.hostingprovider.net",
    "description": "Prod Host 1",
    "server_group_id": "BD720EP87kNORRcH",
    "server_group_name": "Production Servers",
    "external_ip": "169.8.8.45",
    "internal_ip": "192.168.2.59, 192.168.122.1, 172.17.0.1, 172.27.0.1, 172.24.0.1, 172.18.0.1, 172.19.0.1, 100.115.147.29, 169.254.0.2, ::1, fe80::6742:801:812b:7096, fe80::42:90ff:fe30:f32e, fe80::42:2dff:fe65:89c5, fe80::42:daff:fe6d:6f31, fe80::c483:4bff:fee1:7f3a, fe80::7855:70ff:fe90:169a, fe80::70a9:deff:fe12:15ad",
    "location": "London, United Kingdom",
    "provider": "DigitalBitsHosting",
    "status": "Connected",
    "status_message": "",
    "agent_version": "1.4.25",
    "architecture": "x64",
    "os_release_name": "Debian GNU/Linux",
    "os_release_version": "12 (bookworm)",
    "cpu_cores": 2,
    "memory": 3658,
    "upgrade_available": true,
    "created": "2023-11-14 16:53:55",
    "modified": "2023-11-14 16:53:56"
  },
  {
    "id": "p8CduXmyw6n9dzdd",
    "hostname": "my-prod-arm64-host.hostingprovider.net",
    "description": "Ubuntu ARM64 host",
    "server_group_id": "BD720EP87kNORRcH",
    "server_group_name": "Production Servers",
    "external_ip": "169.8.8.46",
    "internal_ip": "192.168.1.71",
    "location": "London, United Kingdom",
    "provider": "DigitalBitsHosting",
    "status": "Disconnected",
    "status_message": "This server has not been seen in the last 5min.",
    "agent_version": "1.5.0",
    "architecture": "arm64",
    "os_release_name": "Ubuntu",
    "os_release_version": "22.04.3 LTS (Jammy Jellyfish)",
    "cpu_cores": 4,
    "memory": 3658,
    "upgrade_available": false,
    "created": "2024-02-20 17:46:57",
    "modified": "2024-02-20 17:46:59"
  }
]
Example Error Response
HTTP/1.1 403 Forbidden
Content-Type: application/json; charset=utf-8
{
  "error": {
    "code": "Forbidden",
    "message": "You do not have the required permission to access this path.",
    "details": [
      {
        "path": "/api/v1/servers/list"
      }
    ]
  }
}
View Server
Path: /servers/view
Method: GET
Authentication: Bearer Token
| Key | Value | Required | 
| Accept-Encoding | gzip | optional | 
Request Parameters
| Key | Data Type | Required | Notes | 
| id | string | required | The ID of the server to view | 
Request Body
None.
Example Request
curl --location --request GET 'https://app.keystash.io/api/v1/servers/view?id=DmcEgixUXpWVv7tk' \
--header 'Authorization: Bearer <token>'
Example Response
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
{
  "id": "DmcEgixUXpWVv7tk",
  "hostname": "my-prod-host.hostingprovider.net",
  "description": "Prod Host 1",
  "server_group_id": "BD720EP87kNORRcH",
  "server_group_name": "Production Servers",
  "external_ip": "169.8.8.45",
  "internal_ip": "192.168.2.59, 192.168.122.1, 172.17.0.1, 172.27.0.1, 172.24.0.1, 172.18.0.1, 172.19.0.1, 100.115.147.29, 169.254.0.2, ::1, fe80::6742:801:812b:7096, fe80::42:90ff:fe30:f32e, fe80::42:2dff:fe65:89c5, fe80::42:daff:fe6d:6f31, fe80::c483:4bff:fee1:7f3a, fe80::7855:70ff:fe90:169a, fe80::70a9:deff:fe12:15ad",
  "location": "London, United Kingdom",
  "provider": "DigitalBitsHosting",
  "status": "Connected",
  "status_message": "",
  "agent_version": "1.4.25",
  "architecture": "x64",
  "os_release_name": "Debian GNU/Linux",
  "os_release_version": "12 (bookworm)",
  "cpu_cores": 2,
  "memory": 3658,
  "upgrade_available": true,
  "created": "2023-11-14 16:53:55",
  "modified": "2023-11-14 16:53:56"
}
Example Error Response
HTTP/1.1 404 Not Found
Content-Type: application/json; charset=utf-8
{
  "error": {
    "code": "NotFound",
    "message": "Your request was successfully processed but there was no data to be returned.",
    "details": []
  }
}
Deploy Server Command
Path: /servers/deploy-server-command
Method: GET
Authentication: Bearer Token
| Key | Value | Required | 
| Accept-Encoding | gzip | optional | 
Request Parameters
| Key | Data Type | Required | Notes | 
| operating_system | string | required | Specifies the operating system for the server. The available options are: almalinux_8, almalinux_9, almalinux_10, amazonlinux_2, amazonlinux_2023, centos_7, centos_8, centos_9, centos_10, debian_10, debian_11, debian_12, debian_13, fedora_server_34, fedora_server_35, fedora_server_36, fedora_server_37, fedora_server_38, fedora_server_39, fedora_server_40, fedora_server_41, fedora_server_42, oraclelinux_7, oraclelinux_8, oraclelinux_9, oraclelinux_10, rhel_7, rhel_8, rhel_9, rhel_10, rockylinux_8, rockylinux_9, rockylinux_10, ubuntu_18, ubuntu_20, ubuntu_21, ubuntu_22, ubuntu_23, ubuntu_24, ubuntu_25 | 
| deployment_secret_id | string | required | The deployment secret ID to use for the server deployment | 
| server_group_id | string | required | The server group ID to deploy the server to | 
| proxy_server | string | optional | The proxy server to use for the deployment. Example: "https://my-proxy.example.com:8443" | 
Request Body
None.
Example Request
curl --location --request GET 'https://app.keystash.io/api/v1/servers/deploy-server-command?operating_system=rhel_10&deployment_secret_id=H6LPlSC081GIqzW0&server_group_id=DmcEgixUXpWVv7tk' \
--header 'Authorization: Bearer <token>'
Example Response
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
{
  "individual_commands": {
    "install": [
      "dnf install -y https://qa-download.keystash.io/keystash-repo-1.0-1.noarch.rpm",
      "dnf install -y keystash"
    ],
    "configuration": [
      "/opt/keystash/keystash-key-manager.bin --mode=config yNs8vQmT5z1HGn3Q CKnmk_crFvNZixAMIV-mlbVyzgIkYqwhpJKe G3PqRjmcBvave0BG"
    ],
    "service": [
      "systemctl start keystash",
      "systemctl enable keystash"
    ]
  },
  "raw_command": "dnf install -y https://qa-download.keystash.io/keystash-repo-1.0-1.noarch.rpm\ndnf install -y keystash\n/opt/keystash/keystash-key-manager.bin --mode=config yNs8vQmT5z1HGn3Q CKnmk_crFvNZixAMIV-mlbVyzgIkYqwhpJKe G3PqRjmcBvave0BG\nsystemctl start keystash\nsystemctl enable keystash"
}
Example Error Response
HTTP/1.1 400 Bad Request
Content-Type: application/json; charset=utf-8
{
  "error": {
    "code": "BadArgument",
    "message": "There was missing argument in your request. Please check your request and resubmit.",
    "details": [
      "Deployment Secret not found."
    ]
  }
}
Update Server
Path: /servers/update
Method: PATCH
Authentication: Bearer Token
| Key | Value | Required | 
| Content-Type | application/json | required | 
Request Parameters
None.
Request Body Parameters
| Key | Data Type | Required | Notes | 
| id | string | required | The ID of the server to update | 
| description | string | optional | New description for the server | 
| server_group_id | string | optional | ID of the new server group | 
Example Request Body
{
  "id": "3nfpkLHFYblvgnp8",
  "description": "Updated via API",
  "server_group_id": "Ejh15L6CEcDNDKri"
}
Example Request
curl --location --request PATCH 'https://app.keystash.io/api/v1/servers/update' \
--header 'Content-Type: application/json' \
--data-raw '{
    "id": "3nfpkLHFYblvgnp8",
    "description": "Updated via API",
    "server_group_id": "Ejh15L6CEcDNDKri"
}'
Example Response
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
{
  "result": "Server with ID 'nJvWmR2CoeQJ3IDO' was successfully updated."
}
Example Error Response
HTTP/1.1 400 Bad Request
Content-Type: application/json; charset=utf-8
{
  "error": {
    "code": "BadArgument",
    "message": "The Server Group could not be found or there was a problem selecting the Server Group.",
    "details": ["Please check your server_group_id field."]
  }
}
Delete Server
Path: /servers/delete
Method: DELETE
Authentication: Bearer Token
| Key | Value | Required | 
| Accept-Encoding | gzip | optional | 
Request Parameters
| Key | Data Type | Required | Notes | 
| id | string | required | The ID of the server to delete | 
Request Body
None.
Example Request
curl --location --request DELETE 'https://app.keystash.io/api/v1/servers/delete?id=DmcEgixUXpWVv7tk' \
--header 'Authorization: Bearer <token>'
Example Response
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
{
  "result": "Server with ID 'DmcEgixUXpWVv7tk' was successfully deleted."
}
Example Error Response
HTTP/1.1 404 Not Found
Content-Type: application/json; charset=utf-8
{
  "error": {
    "code": "NotFound",
    "message": "There was a problem retrieving the Server from the Database or the Server by the provided ID was not found.",
    "details": []
  }
}