Skip to content
Home
Business OS Blog How it works Hosting Compare
Language
العربية Coming soon
বাংলা Coming soon
Dansk Coming soon
Deutsch Coming soon
Español Coming soon
Suomi Coming soon
Français Coming soon
עברית Coming soon
हिन्दी Coming soon
Magyar Coming soon
Bahasa Indonesia Coming soon
Italiano Coming soon
한국어 Coming soon
Latviešu Coming soon
Nederlands Coming soon
Norsk Coming soon
Polski Coming soon
Português Coming soon
Српски Coming soon
Svenska Coming soon
Türkçe Coming soon
Українська Coming soon
中文 Coming soon
Currency

Hosting services

Hosting plans bought from the shop (a VPS, a game server) that are not a business. Each one is also held to the switches on its own service page.

List a folder

GET/services/{service}/files

The entries in one folder.

Needs the files:read scope.

Parameters

service integer, in path, required
The hosting service id, from GET /services.
path string, in query
Defaults to /.
curl "https://helstify.com/api/v1/services/311/files?path=%2Fpublic" \
  -H "Authorization: Bearer $HELSTIFY_KEY"
const res = await fetch("https://helstify.com/api/v1/services/311/files?path=%2Fpublic", {
  method: "GET",
  headers: {
    Authorization: `Bearer ${process.env.HELSTIFY_KEY}`,
  },
});
const data = await res.json();
import os, requests

res = requests.get(
    "https://helstify.com/api/v1/services/311/files",
    headers={"Authorization": f"Bearer {os.environ['HELSTIFY_KEY']}"},
    params={"path":"/public"},
)
print(res.json())
Response200
{
    "ok": true,
    "service": "Minecraft · Paper",
    "entries": [
        {
            "name": "server.properties",
            "type": "file",
            "size": 1402,
            "modified": 1794150000,
            "mode": "-rw-r--r--"
        }
    ]
}

Read a file

GET/services/{service}/file

One file's contents.

Needs the files:read scope.

Parameters

service integer, in path, required
The hosting service id, from GET /services.
path string, in query, required
The file.
curl "https://helstify.com/api/v1/services/311/file?path=%2Fpublic" \
  -H "Authorization: Bearer $HELSTIFY_KEY"
const res = await fetch("https://helstify.com/api/v1/services/311/file?path=%2Fpublic", {
  method: "GET",
  headers: {
    Authorization: `Bearer ${process.env.HELSTIFY_KEY}`,
  },
});
const data = await res.json();
import os, requests

res = requests.get(
    "https://helstify.com/api/v1/services/311/file",
    headers={"Authorization": f"Bearer {os.environ['HELSTIFY_KEY']}"},
    params={"path":"/public"},
)
print(res.json())
Response200
{
    "ok": true,
    "service": "Minecraft · Paper",
    "contents": "motd=Welcome\nmax-players=40\n",
    "truncated": false
}

Write a file

PUT/services/{service}/file

Create or replace one file.

Needs the files:write scope.

Parameters

service integer, in path, required
The hosting service id, from GET /services.

Body

path string
For example /server.properties
contents string
For example motd=Welcome back
curl -X PUT "https://helstify.com/api/v1/services/311/file" \
  -H "Authorization: Bearer $HELSTIFY_KEY" \
  -H "Content-Type: application/json" \
  -d '{"path":"/server.properties","contents":"motd=Welcome back\n"}'
const res = await fetch("https://helstify.com/api/v1/services/311/file", {
  method: "PUT",
  headers: {
    Authorization: `Bearer ${process.env.HELSTIFY_KEY}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
      "path": "/server.properties",
      "contents": "motd=Welcome back\n"
  }),
});
const data = await res.json();
import os, requests

res = requests.put(
    "https://helstify.com/api/v1/services/311/file",
    headers={"Authorization": f"Bearer {os.environ['HELSTIFY_KEY']}"},
    json={
        "path": "/server.properties",
        "contents": "motd=Welcome back\n"
    },
)
print(res.json())
Response200
{
    "ok": true,
    "service": "Minecraft · Paper",
    "written": "/server.properties",
    "bytes": 18
}

Delete a file

DELETE/services/{service}/file

Delete one file or folder.

Needs the files:write scope.

Parameters

service integer, in path, required
The hosting service id, from GET /services.
path string, in query, required
What to delete.
curl -X DELETE "https://helstify.com/api/v1/services/311/file?path=%2Fpublic" \
  -H "Authorization: Bearer $HELSTIFY_KEY"
const res = await fetch("https://helstify.com/api/v1/services/311/file?path=%2Fpublic", {
  method: "DELETE",
  headers: {
    Authorization: `Bearer ${process.env.HELSTIFY_KEY}`,
  },
});
const data = await res.json();
import os, requests

res = requests.delete(
    "https://helstify.com/api/v1/services/311/file",
    headers={"Authorization": f"Bearer {os.environ['HELSTIFY_KEY']}"},
    params={"path":"/public"},
)
print(res.json())
Response200
{
    "ok": true,
    "service": "Minecraft · Paper",
    "deleted": "/old-world"
}

Make a folder

POST/services/{service}/folder

Create a folder.

Needs the files:write scope.

Parameters

service integer, in path, required
The hosting service id, from GET /services.

Body

path string
For example /plugins/config
curl -X POST "https://helstify.com/api/v1/services/311/folder" \
  -H "Authorization: Bearer $HELSTIFY_KEY" \
  -H "Content-Type: application/json" \
  -d '{"path":"/plugins/config"}'
const res = await fetch("https://helstify.com/api/v1/services/311/folder", {
  method: "POST",
  headers: {
    Authorization: `Bearer ${process.env.HELSTIFY_KEY}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
      "path": "/plugins/config"
  }),
});
const data = await res.json();
import os, requests

res = requests.post(
    "https://helstify.com/api/v1/services/311/folder",
    headers={"Authorization": f"Bearer {os.environ['HELSTIFY_KEY']}"},
    json={
        "path": "/plugins/config"
    },
)
print(res.json())
Response200
{
    "ok": true,
    "service": "Minecraft · Paper",
    "created": "/plugins/config"
}

Rename or move

POST/services/{service}/rename

Rename a file or folder.

Needs the files:write scope.

Parameters

service integer, in path, required
The hosting service id, from GET /services.

Body

from string
For example /world
to string
For example /world-old
curl -X POST "https://helstify.com/api/v1/services/311/rename" \
  -H "Authorization: Bearer $HELSTIFY_KEY" \
  -H "Content-Type: application/json" \
  -d '{"from":"/world","to":"/world-old"}'
const res = await fetch("https://helstify.com/api/v1/services/311/rename", {
  method: "POST",
  headers: {
    Authorization: `Bearer ${process.env.HELSTIFY_KEY}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
      "from": "/world",
      "to": "/world-old"
  }),
});
const data = await res.json();
import os, requests

res = requests.post(
    "https://helstify.com/api/v1/services/311/rename",
    headers={"Authorization": f"Bearer {os.environ['HELSTIFY_KEY']}"},
    json={
        "from": "/world",
        "to": "/world-old"
    },
)
print(res.json())
Response200
{
    "ok": true,
    "service": "Minecraft · Paper",
    "from": "/world",
    "to": "/world-old"
}

Unpack an archive

POST/services/{service}/extract

Unpacks next to the archive.

Needs the files:write scope.

Parameters

service integer, in path, required
The hosting service id, from GET /services.

Body

path string
For example /world.zip
curl -X POST "https://helstify.com/api/v1/services/311/extract" \
  -H "Authorization: Bearer $HELSTIFY_KEY" \
  -H "Content-Type: application/json" \
  -d '{"path":"/world.zip"}'
const res = await fetch("https://helstify.com/api/v1/services/311/extract", {
  method: "POST",
  headers: {
    Authorization: `Bearer ${process.env.HELSTIFY_KEY}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
      "path": "/world.zip"
  }),
});
const data = await res.json();
import os, requests

res = requests.post(
    "https://helstify.com/api/v1/services/311/extract",
    headers={"Authorization": f"Bearer {os.environ['HELSTIFY_KEY']}"},
    json={
        "path": "/world.zip"
    },
)
print(res.json())
Response200
{
    "ok": true,
    "service": "Minecraft · Paper",
    "extracted": "/world.zip",
    "into": "/"
}

Read console output

GET/services/{service}/logs

The server's recent console output.

Needs the files:read scope.

Parameters

service integer, in path, required
The hosting service id, from GET /services.
curl "https://helstify.com/api/v1/services/311/logs" \
  -H "Authorization: Bearer $HELSTIFY_KEY"
const res = await fetch("https://helstify.com/api/v1/services/311/logs", {
  method: "GET",
  headers: {
    Authorization: `Bearer ${process.env.HELSTIFY_KEY}`,
  },
});
const data = await res.json();
import os, requests

res = requests.get(
    "https://helstify.com/api/v1/services/311/logs",
    headers={"Authorization": f"Bearer {os.environ['HELSTIFY_KEY']}"},
)
print(res.json())
Response200
{
    "ok": true,
    "service": "Minecraft · Paper",
    "lines": [
        "[08:40:02 INFO]: Done (4.1s)! For help, type \"help\""
    ]
}

Get server state

GET/services/{service}/state

running, starting, stopping or offline.

Needs the files:read scope.

Parameters

service integer, in path, required
The hosting service id, from GET /services.
curl "https://helstify.com/api/v1/services/311/state" \
  -H "Authorization: Bearer $HELSTIFY_KEY"
const res = await fetch("https://helstify.com/api/v1/services/311/state", {
  method: "GET",
  headers: {
    Authorization: `Bearer ${process.env.HELSTIFY_KEY}`,
  },
});
const data = await res.json();
import os, requests

res = requests.get(
    "https://helstify.com/api/v1/services/311/state",
    headers={"Authorization": f"Bearer {os.environ['HELSTIFY_KEY']}"},
)
print(res.json())
Response200
{
    "ok": true,
    "service": "Minecraft · Paper",
    "state": "running"
}

Send a console command

POST/services/{service}/console

Not a shell.

Needs the commands:run scope.

Parameters

service integer, in path, required
The hosting service id, from GET /services.

Body

command string
For example whitelist add Steve
curl -X POST "https://helstify.com/api/v1/services/311/console" \
  -H "Authorization: Bearer $HELSTIFY_KEY" \
  -H "Content-Type: application/json" \
  -d '{"command":"whitelist add Steve"}'
const res = await fetch("https://helstify.com/api/v1/services/311/console", {
  method: "POST",
  headers: {
    Authorization: `Bearer ${process.env.HELSTIFY_KEY}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
      "command": "whitelist add Steve"
  }),
});
const data = await res.json();
import os, requests

res = requests.post(
    "https://helstify.com/api/v1/services/311/console",
    headers={"Authorization": f"Bearer {os.environ['HELSTIFY_KEY']}"},
    json={
        "command": "whitelist add Steve"
    },
)
print(res.json())
Response200
{
    "ok": true,
    "service": "Minecraft · Paper",
    "sent": "whitelist add Steve"
}

Start, stop or restart

POST/services/{service}/power

start, stop, restart or kill.

Needs the power scope.

Parameters

service integer, in path, required
The hosting service id, from GET /services.

Body

signal string
For example start
curl -X POST "https://helstify.com/api/v1/services/311/power" \
  -H "Authorization: Bearer $HELSTIFY_KEY" \
  -H "Content-Type: application/json" \
  -d '{"signal":"start"}'
const res = await fetch("https://helstify.com/api/v1/services/311/power", {
  method: "POST",
  headers: {
    Authorization: `Bearer ${process.env.HELSTIFY_KEY}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
      "signal": "start"
  }),
});
const data = await res.json();
import os, requests

res = requests.post(
    "https://helstify.com/api/v1/services/311/power",
    headers={"Authorization": f"Bearer {os.environ['HELSTIFY_KEY']}"},
    json={
        "signal": "start"
    },
)
print(res.json())
Response200
{
    "ok": true,
    "service": "Minecraft · Paper",
    "signal": "start"
}