Back to top

exaroton API

exaroton offers a public API that allows you to integrate your server into your programs and apps. Currently, only some basic features can be used via the API.

Packages and libraries

To easily access our API, you can use on of these libraries:

Authentication

To authenticate your requests, you need a valid API token. This token can be generated in your exaroton account settings and needs to be sent in the Authorization HTTP header with every request you make.

Authorization: Bearer {token}

Websocket API

The websocket API allows a constant connection to our websocket service to receive events in real time without polling (e.g. trying to get the server status every few seconds).

You can use our Node.js library as a reference implementation.

https://api.exaroton.com/v1/servers/{server}/websocket

Basic messages

All messages received from or sent to the websocket are JSON strings. Every JSON object has a type property, and may additionally have a data and a stream property.

ready

{"type":"ready","data":"6L5WWSK73YnWGHQE"}

Sent after opening a websocket connection. data is the ID of the server you connected to. Before this message is received, no messages should be sent to the websocket.

connected

{"type":"connected"}

Sent when a connection to a running game server is established.

disconnected

{"type":"disconnected","data":"invalid-status"}

Sent when a connection to a game server failed or was lost. data includes the reason for the disconnect.

keep-alive

{"type":"keep-alive"}

Sent when if no other messages were sent for a longer period of time. This message can be ignored.

Streams

Messages that include a stream property are a part of a specific data stream. There are 5 different data streams available in our WebSocket API:

status

By default, you are always subscribed to server status changes. The only message type in this stream is status

status

{
  "stream": "status",
  "type": "status",
  "data": {
    "id": "EwYiY9IAMtQBTb6U",
    "name": "example",
    "address": "example.exaroton.me",
    "motd": "Welcome to the server of example!",
    "status": 2,
    "players": {
      "max": 20,
      "count": 0,
      "list": []
    },
    "host": "gibberfish.exaroton.host",
    "port": 48249,
    "software": {
      "id": "kb4p09ABvLjxzedx",
      "name": "Vanilla",
      "version": "1.16.5"
    },
    "shared": false
  }
}

The data field of this message is a regular API server object.

console

The console stream can be used to receive a live feed of the server’s console output. Note that this is the server’s raw console output, so it might contain both ANSI escape codes and control characters.

You can subscribe to the console stream by sending a start message while the server is running:

{"stream":"console","type":"start","data":{"tail":0}}

The tail option can be used to receive up to 500 lines from the previous console output.

You can unsubscribe by sending a stop message:

{"stream":"console","type":"stop"}

Additional to receiving console output, this stream can also be used as a faster way of sending commands to the server:

{"stream":"console","type":"command","data":"say Hello World!"}

started

A started messages is sent when the stream was started successfully.

{"stream":"console","type":"started"}

line

Console line messages include a line of console output.

{"stream":"console","type":"line","data":"[14:20:56] [Server thread/INFO]: [Server] test"}

tick

The tick stream provides information about the servers current in-game tick speed. Note that this stream is only available for Minecraft Java Edition 1.16+.

You can subscribe to the tick stream by sending a start message while the server is online:

{"stream":"tick","type":"start"}

You can unsubscribe by sending a stop message:

{"stream":"tick","type":"stop"}

started

A started messages is sent when the stream was started successfully.

{"stream":"console","type":"started"}

tick

tick messages include the current average tick time (in ms).

{"stream":"tick","type":"tick","data":{"averageTickTime":8.7218612}}

stats

The stats stream provides information about server stats (currently only memory usage).

You can subscribe to the stats stream by sending a start message while the server is online:

{"stream":"stats","type":"start"}

You can unsubscribe by sending a stop message:

{"stream":"stats","type":"stop"}

started

A started messages is sent when the stream was started successfully.

{"stream":"stats","type":"started"}

stats

stats messages include the current memory usage.

{"stream":"stats","type":"stats","data":{"memory":{"percent":38.49,"usage":1983938560}}}

heap

The heap stream is a much more accurate way of determining a server’s RAM usage. It is, however, only availabe for Java-based server software.

You can subscribe to the heap stream by sending a start message while the server is online:

{"stream":"heap","type":"start"}

You can unsubscribe by sending a stop message:

{"stream":"heap","type":"stop"}

started

A started messages is sent when the stream was started successfully.

{"stream":"heap","type":"started"}

heap

heap messages include the current memory usage.

{"stream":"heap","type":"heap","data":{"usage":1225721600}}

Server status

Servers can have different numeric status codes. Depending on a server’s status, only certain features might be available.

0  = OFFLINE
1  = ONLINE
2  = STARTING
3  = STOPPING
4  = RESTARTING
5  = SAVING
6  = LOADING
7  = CRASHED
8  = PENDING
10 = PREPARING

Resource Group

Account

Get account info
GET/account/

Example URI

GET https://api.exaroton.com/v1/account/
Request
HideShow
Headers
Authorization: Bearer {apitoken}
Response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "success": true,
  "error": "Hello, world!",
  "data": {
    "name": "example",
    "email": "[email protected]",
    "verified": true,
    "credits": 42
  }
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "success": {
      "type": "boolean"
    },
    "error": {
      "type": [
        "string",
        "null"
      ]
    },
    "data": {
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "name": {
          "type": "string"
        },
        "email": {
          "type": "string"
        },
        "verified": {
          "type": "boolean"
        },
        "credits": {
          "type": "number"
        }
      }
    }
  }
}

Servers

List servers
GET/servers/

Example URI

GET https://api.exaroton.com/v1/servers/
Request
HideShow
Headers
Authorization: Bearer {api-token}
Response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "success": true,
  "error": null,
  "data": [
    {
      "id": "EwYiY9IAMtQBTb6U",
      "name": "example",
      "address": "example.exaroton.me",
      "motd": "Welcome to the server of example!",
      "status": 0,
      "host": null,
      "port": null,
      "players": {
        "max": 20,
        "count": 0,
        "list": []
      },
      "software": {
        "id": "kb4p09ABvLjxzedx",
        "name": "Vanilla",
        "version": "1.16.5"
      },
      "shared": false
    }
  ]
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "success": {
      "type": "boolean"
    },
    "error": {
      "type": [
        "string",
        "null"
      ]
    },
    "data": {
      "type": [
        "array",
        "null"
      ]
    }
  }
}

Get a server
GET/servers/{server}

Example URI

GET https://api.exaroton.com/v1/servers/server
URI Parameters
HideShow
server
ServerID (required) 

Unique server ID

Request
HideShow
Headers
Authorization: Bearer {token}
Response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "success": true,
  "error": null,
  "data": {
    "id": "EwYiY9IAMtQBTb6U",
    "name": "example",
    "address": "example.exaroton.me",
    "motd": "Welcome to the server of example!",
    "status": 0,
    "host": null,
    "port": null,
    "players": {
      "max": 20,
      "count": 0,
      "list": []
    },
    "software": {
      "id": "kb4p09ABvLjxzedx",
      "name": "Vanilla",
      "version": "1.16.5"
    },
    "shared": false
  }
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "success": {
      "type": "boolean"
    },
    "error": {
      "type": [
        "string",
        "null"
      ]
    },
    "data": {
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "id": {
          "type": "string",
          "description": "Unique server ID"
        },
        "name": {
          "type": "string",
          "description": "Server name"
        },
        "address": {
          "type": "string",
          "description": "Full server address (e.g. example.exaroton.me)"
        },
        "motd": {
          "type": "string"
        },
        "status": {
          "type": "number",
          "description": "0 = OFFLINE; 1 = ONLINE; 2 = STARTING; 3 = STOPPING; 4 = RESTARTING; 5 = SAVING; 6 = LOADING; 7 = CRASHED; 8 = PENDING; 10 = PREPARING;"
        },
        "host": {
          "type": [
            "string",
            "null"
          ],
          "description": "Host machine the server is running on, only available if the server is online"
        },
        "port": {
          "type": [
            "number",
            "null"
          ],
          "description": "Port the server is listening on, only available if the server is online"
        },
        "players": {
          "type": "object",
          "properties": {
            "max": {
              "type": "number",
              "description": "Maximum player count (slots)"
            },
            "count": {
              "type": "number",
              "description": "Current player count"
            },
            "list": {
              "type": "array",
              "description": "Current player list (not always available)"
            }
          }
        },
        "software": {
          "type": [
            "object",
            "null"
          ],
          "properties": {
            "id": {
              "type": "string",
              "description": "Unique software ID"
            },
            "name": {
              "type": "string",
              "description": "Software name"
            },
            "version": {
              "type": "string",
              "description": "Software version"
            }
          },
          "description": "Information about the installed server software"
        },
        "shared": {
          "type": "boolean",
          "description": "Whether the server is accessed via the Share Access feature"
        }
      }
    }
  }
}

Logs

Get a server log
GET/servers/{server}/logs/

Example URI

GET https://api.exaroton.com/v1/servers/server/logs/
URI Parameters
HideShow
server
ServerID (required) 

Unique server ID

Request
HideShow
Headers
Authorization: Bearer {token}
Response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "success": true,
  "error": "Hello, world!",
  "data": {
    "content": "[16:14:36] [main/INFO]: Environment: authHost='https://authserver.mojang.com',..."
  }
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "success": {
      "type": "boolean"
    },
    "error": {
      "type": [
        "string",
        "null"
      ]
    },
    "data": {
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "content": {
          "type": [
            "string",
            "null"
          ]
        }
      }
    }
  }
}

Upload a server log to mclo.gs
GET/servers/{server}/logs/share/

Example URI

GET https://api.exaroton.com/v1/servers/server/logs/share/
URI Parameters
HideShow
server
ServerID (required) 

Unique server ID

Request
HideShow
Headers
Authorization: Bearer {token}
Response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "success": true,
  "error": "Hello, world!",
  "data": {
    "id": "zCcf8T5",
    "url": "https://mclo.gs/zCcf8T5",
    "raw": "https://api.mclo.gs/1/raw/zCcf8T5"
  }
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "success": {
      "type": "boolean"
    },
    "error": {
      "type": [
        "string",
        "null"
      ]
    },
    "data": {
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "id": {
          "type": "string"
        },
        "url": {
          "type": "string"
        },
        "raw": {
          "type": "string"
        }
      }
    }
  }
}

RAM

Get server RAM
GET/servers/{server}/options/ram/

Example URI

GET https://api.exaroton.com/v1/servers/server/options/ram/
URI Parameters
HideShow
server
ServerID (required) 

Unique server ID

Request
HideShow
Headers
Authorization: Bearer {token}
Response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "success": true,
  "error": "Hello, world!",
  "data": {
    "ram": 7
  }
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "success": {
      "type": "boolean"
    },
    "error": {
      "type": [
        "string",
        "null"
      ]
    },
    "data": {
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "ram": {
          "type": "number"
        }
      }
    }
  }
}

Change server RAM
POST/servers/{server}/options/ram/

Example URI

POST https://api.exaroton.com/v1/servers/server/options/ram/
URI Parameters
HideShow
server
ServerID (required) 

Unique server ID

Request
HideShow
Headers
Content-Type: application/json
Authorization: Bearer {token}
Body
{
  "ram": 8
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "ram": {
      "type": "number"
    }
  }
}
Response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "success": true,
  "error": "Hello, world!",
  "data": {
    "ram": 7
  }
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "success": {
      "type": "boolean"
    },
    "error": {
      "type": [
        "string",
        "null"
      ]
    },
    "data": {
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "ram": {
          "type": "number"
        }
      }
    }
  }
}

MOTD

Get server MOTD
GET/servers/{server}/options/motd/

Example URI

GET https://api.exaroton.com/v1/servers/server/options/motd/
URI Parameters
HideShow
server
ServerID (required) 

Unique server ID

Request
HideShow
Headers
Authorization: Bearer {token}
Response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "success": true,
  "error": "Hello, world!",
  "data": {
    "motd": "\"Welcome to my server!\""
  }
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "success": {
      "type": "boolean"
    },
    "error": {
      "type": [
        "string",
        "null"
      ]
    },
    "data": {
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "motd": {
          "type": "string"
        }
      }
    }
  }
}

Change server MOTD
POST/servers/{server}/options/motd/

Example URI

POST https://api.exaroton.com/v1/servers/server/options/motd/
URI Parameters
HideShow
server
ServerID (required) 

Unique server ID

Request
HideShow
Headers
Content-Type: application/json
Authorization: Bearer {token}
Body
{
  "motd": "\"Welcome to my server!\""
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "motd": {
      "type": "string"
    }
  }
}
Response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "success": true,
  "error": "Hello, world!",
  "data": {
    "motd": "\"Welcome to my server!\""
  }
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "success": {
      "type": "boolean"
    },
    "error": {
      "type": [
        "string",
        "null"
      ]
    },
    "data": {
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "motd": {
          "type": "string"
        }
      }
    }
  }
}

Server actions

Start a server
GET/servers/{server}/start/

Example URI

GET https://api.exaroton.com/v1/servers/server/start/
URI Parameters
HideShow
server
ServerID (required) 

Unique server ID

Request
HideShow
Headers
Authorization: Bearer {token}
Response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "success": true,
  "error": "Hello, world!",
  "data": "Hello, world!"
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "success": {
      "type": "boolean"
    },
    "error": {
      "type": [
        "string",
        "null"
      ]
    },
    "data": {
      "type": [
        "string",
        "null"
      ]
    }
  }
}

Start a server with own credits
POST/servers/{server}/start/

When starting a server that you have shared access to, you can use your own credits to pay for the server by setting the useOwnCredits attribute to true.

Example URI

POST https://api.exaroton.com/v1/servers/server/start/
URI Parameters
HideShow
server
ServerID (required) 

Unique server ID

Request
HideShow
Headers
Authorization: Bearer {token}
Body
{
  "useOwnCredits": true
}
Schema
{
  "type": "object",
  "properties": {
    "useOwnCredits": {
      "type": "boolean"
    }
  },
  "$schema": "http://json-schema.org/draft-04/schema#"
}
Response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "success": true,
  "error": "Hello, world!",
  "data": "Hello, world!"
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "success": {
      "type": "boolean"
    },
    "error": {
      "type": [
        "string",
        "null"
      ]
    },
    "data": {
      "type": [
        "string",
        "null"
      ]
    }
  }
}

Stop a server
GET/servers/{server}/stop/

Example URI

GET https://api.exaroton.com/v1/servers/server/stop/
URI Parameters
HideShow
server
ServerID (required) 

Unique server ID

Request
HideShow
Headers
Authorization: Bearer {token}
Response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "success": true,
  "error": "Hello, world!",
  "data": "Hello, world!"
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "success": {
      "type": "boolean"
    },
    "error": {
      "type": [
        "string",
        "null"
      ]
    },
    "data": {
      "type": [
        "string",
        "null"
      ]
    }
  }
}

Restart a server
GET/servers/{server}/restart/

Example URI

GET https://api.exaroton.com/v1/servers/server/restart/
URI Parameters
HideShow
server
ServerID (required) 

Unique server ID

Request
HideShow
Headers
Authorization: Bearer {token}
Response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "success": true,
  "error": "Hello, world!",
  "data": "Hello, world!"
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "success": {
      "type": "boolean"
    },
    "error": {
      "type": [
        "string",
        "null"
      ]
    },
    "data": {
      "type": [
        "string",
        "null"
      ]
    }
  }
}

Execute a server command
POST/servers/{server}/command/

Example URI

POST https://api.exaroton.com/v1/servers/server/command/
URI Parameters
HideShow
server
ServerID (required) 

Unique server ID

Request
HideShow
Headers
Content-Type: application/json
Authorization: Bearer {token}
Body
{
  "command": "say Hello World"
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "command": {
      "type": "string"
    }
  }
}
Response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "success": true,
  "error": "Hello, world!",
  "data": "Hello, world!"
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "success": {
      "type": "boolean"
    },
    "error": {
      "type": [
        "string",
        "null"
      ]
    },
    "data": {
      "type": [
        "string",
        "null"
      ]
    }
  }
}

Get available player lists

Get available player lists
GET/servers/{server}/playerlists/

Example URI

GET https://api.exaroton.com/v1/servers/server/playerlists/
URI Parameters
HideShow
server
ServerID (required) 

Unique server ID

Request
HideShow
Headers
Authorization: Bearer {token}
Response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "success": true,
  "error": "Hello, world!",
  "data": [
    "whitelist",
    "ops",
    "banned"
  ]
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "success": {
      "type": "boolean"
    },
    "error": {
      "type": [
        "string",
        "null"
      ]
    },
    "data": {
      "type": "array",
      "description": "players, banned-ips (array[string], nullable)"
    }
  }
}

Player lists

A player list is a list of players such as the whitelist, ops or bans. Player list entries are usually usernames, but might be something else, e.g. IPs in the banned-ips list. All player list operations are storage operations that might take a while, so try to reduce the amount of requests and combine actions when possible (e.g. adding/deleting multiple entries at once). Player lists are also cached and might not immediately return new results when changed through other methods.

Get player list contents
GET/servers/{server}/playerlists/{list}/

Example URI

GET https://api.exaroton.com/v1/servers/server/playerlists/list/
URI Parameters
HideShow
server
ServerID (required) 

Unique server ID

list
string (required) 

Player list name

Request
HideShow
Headers
Authorization: Bearer {token}
Response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "success": true,
  "error": "Hello, world!",
  "data": [
    "exaroton",
    "example"
  ]
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "success": {
      "type": "boolean"
    },
    "error": {
      "type": [
        "string",
        "null"
      ]
    },
    "data": {
      "type": [
        "array",
        "null"
      ]
    }
  }
}

Add entries to player list
PUT/servers/{server}/playerlists/{list}/

Example URI

PUT https://api.exaroton.com/v1/servers/server/playerlists/list/
URI Parameters
HideShow
server
ServerID (required) 

Unique server ID

list
string (required) 

Player list name

Request
HideShow
Headers
Authorization: Bearer {token}
Body
{
  "entries": [
    "player"
  ]
}
Schema
{
  "type": "object",
  "properties": {
    "entries": {
      "type": "array",
      "items": {
        "type": "string"
      }
    }
  },
  "$schema": "http://json-schema.org/draft-04/schema#"
}
Response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "success": true,
  "error": "Hello, world!",
  "data": [
    "exaroton",
    "example",
    "player"
  ]
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "success": {
      "type": "boolean"
    },
    "error": {
      "type": [
        "string",
        "null"
      ]
    },
    "data": {
      "type": [
        "array",
        "null"
      ]
    }
  }
}

Remove entries from player list
DELETE/servers/{server}/playerlists/{list}/

Example URI

DELETE https://api.exaroton.com/v1/servers/server/playerlists/list/
URI Parameters
HideShow
server
ServerID (required) 

Unique server ID

list
string (required) 

Player list name

Request
HideShow
Headers
Authorization: Bearer {token}
Body
{
  "entries": [
    "player"
  ]
}
Schema
{
  "type": "object",
  "properties": {
    "entries": {
      "type": "array",
      "items": {
        "type": "string"
      }
    }
  },
  "$schema": "http://json-schema.org/draft-04/schema#"
}
Response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "success": true,
  "error": "Hello, world!",
  "data": [
    "exaroton",
    "example"
  ]
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "success": {
      "type": "boolean"
    },
    "error": {
      "type": [
        "string",
        "null"
      ]
    },
    "data": {
      "type": [
        "array",
        "null"
      ]
    }
  }
}

File info

Get file information
GET/servers/{server}/files/info/{path}/

Example URI

GET https://api.exaroton.com/v1/servers/server/files/info/path/
URI Parameters
HideShow
server
ServerID (required) 

Unique server ID

path
string (required) 

File path

Request
HideShow
Headers
Authorization: Bearer {token}
Response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "success": true,
  "error": null,
  "data": {
    "path": "world/playerdata",
    "name": "playerdata",
    "isTextFile": false,
    "isConfigFile": false,
    "isDirectory": true,
    "isLog": false,
    "isReadable": false,
    "isWritable": false,
    "size": 4096,
    "children": [
      {}
    ]
  }
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "success": {
      "type": "boolean"
    },
    "error": {
      "type": [
        "string",
        "null"
      ]
    },
    "data": {
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "path": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "isTextFile": {
          "type": "boolean"
        },
        "isConfigFile": {
          "type": "boolean"
        },
        "isDirectory": {
          "type": "boolean"
        },
        "isLog": {
          "type": "boolean"
        },
        "isReadable": {
          "type": "boolean"
        },
        "isWritable": {
          "type": "boolean"
        },
        "size": {
          "type": "number"
        },
        "children": {
          "type": [
            "array",
            "null"
          ]
        }
      }
    }
  }
}

File data

Get file data
GET/servers/{server}/files/data/{path}/

Example URI

GET https://api.exaroton.com/v1/servers/server/files/data/path/
URI Parameters
HideShow
server
ServerID (required) 

Unique server ID

path
string (required) 

File path

Request
HideShow
Headers
Authorization: Bearer {token}
Response  200
HideShow
Headers
Content-Type: application/octet-stream

Write file data
PUT/servers/{server}/files/data/{path}/

Files are written with a simple PUT request. If the destination file already exists, it will be overwritten, otherwise a new file will be created. Directories can be created by sending a write request with the inode/directory content type.

Example URI

PUT https://api.exaroton.com/v1/servers/server/files/data/path/
URI Parameters
HideShow
server
ServerID (required) 

Unique server ID

path
string (required) 

File path

Request
HideShow
Headers
Content-Type: application/octet-stream
Authorization: Bearer {token}
Response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "success": true,
  "error": "Hello, world!",
  "data": "Hello, world!"
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "success": {
      "type": "boolean"
    },
    "error": {
      "type": [
        "string",
        "null"
      ]
    },
    "data": {
      "type": [
        "string",
        "null"
      ]
    }
  }
}

Delete a file
DELETE/servers/{server}/files/data/{path}/

Example URI

DELETE https://api.exaroton.com/v1/servers/server/files/data/path/
URI Parameters
HideShow
server
ServerID (required) 

Unique server ID

path
string (required) 

File path

Request
HideShow
Headers
Authorization: Bearer {token}
Response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "success": true,
  "error": "Hello, world!",
  "data": "Hello, world!"
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "success": {
      "type": "boolean"
    },
    "error": {
      "type": [
        "string",
        "null"
      ]
    },
    "data": {
      "type": [
        "string",
        "null"
      ]
    }
  }
}

Config files

Get config options
GET/servers/{server}/files/config/{path}/

Each config option has a key, a label, a type and a value. Possible types are string, integer, float, boolean, multiselect, select. Additionally, multiselect and select options have an options array. Select options can only have a value from the options array, while multiselect options can also have custom values.

Example URI

GET https://api.exaroton.com/v1/servers/server/files/config/path/
URI Parameters
HideShow
server
ServerID (required) 

Unique server ID

path
string (required) 

File path

Request
HideShow
Headers
Authorization: Bearer {token}
Response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "success": true,
  "error": null,
  "data": [
    {
      "key": "gamemode",
      "value": "survival",
      "label": "Gamemode",
      "type": "select",
      "options": [
        "survival",
        "creative",
        "adventure",
        "spectator"
      ]
    }
  ]
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "success": {
      "type": "boolean"
    },
    "error": {
      "type": [
        "string",
        "null"
      ]
    },
    "data": {
      "type": [
        "array",
        "null"
      ]
    }
  }
}

Update config options
POST/servers/{server}/files/config/{path}/

Config options to update can be sent as a JSON object in the request body.

Example URI

POST https://api.exaroton.com/v1/servers/server/files/config/path/
URI Parameters
HideShow
server
ServerID (required) 

Unique server ID

path
string (required) 

File path

Request
HideShow
Headers
Content-Type: application/json
Authorization: Bearer {token}
Body
{
  "key1": "value1",
  "key2": "value2"
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "key1": {
      "type": "string"
    },
    "key2": {
      "type": "string"
    }
  }
}
Response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "success": true,
  "error": null,
  "data": [
    {
      "key": "gamemode",
      "value": "survival",
      "label": "Gamemode",
      "type": "select",
      "options": [
        "survival",
        "creative",
        "adventure",
        "spectator"
      ]
    }
  ]
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "success": {
      "type": "boolean"
    },
    "error": {
      "type": [
        "string",
        "null"
      ]
    },
    "data": {
      "type": [
        "array",
        "null"
      ]
    }
  }
}

Credit Pools

List credit pools
GET/billing/pools/

Example URI

GET https://api.exaroton.com/v1/billing/pools/
Request
HideShow
Headers
Authorization: Bearer {token}
Response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "success": true,
  "error": null,
  "data": [
    {
      "id": "X4iJREgqBGFSBtn0",
      "name": "example",
      "credits": 42,
      "servers": 1,
      "owner": "X4iJREgqBGFSBtn0",
      "isOwner": true,
      "members": 1,
      "ownShare": 1,
      "ownCredits": 42
    }
  ]
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "success": {
      "type": "boolean"
    },
    "error": {
      "type": [
        "string",
        "null"
      ]
    },
    "data": {
      "type": [
        "array",
        "null"
      ]
    }
  }
}

Get a credit pool
GET/billing/pools/{pool}

Example URI

GET https://api.exaroton.com/v1/billing/pools/pool
URI Parameters
HideShow
pool
PoolID (required) 

Unique pool ID

Request
HideShow
Headers
Authorization: Bearer {token}
Response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "success": true,
  "error": null,
  "data": {
    "id": "X4iJREgqBGFSBtn0",
    "name": "example",
    "credits": 42,
    "servers": 1,
    "owner": "X4iJREgqBGFSBtn0",
    "isOwner": true,
    "members": 1,
    "ownShare": 1,
    "ownCredits": 42
  }
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "success": {
      "type": "boolean"
    },
    "error": {
      "type": [
        "string",
        "null"
      ]
    },
    "data": {
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "id": {
          "type": "string",
          "description": "Unique pool ID"
        },
        "name": {
          "type": "string",
          "description": "Pool name"
        },
        "credits": {
          "type": "number",
          "description": "Pool credits"
        },
        "servers": {
          "type": "number",
          "description": "Number of servers in the pool"
        },
        "owner": {
          "type": "string",
          "description": "Unique account ID of the pool owner"
        },
        "isOwner": {
          "type": "boolean",
          "description": "Whether the current user is the owner of the pool"
        },
        "members": {
          "type": "number",
          "description": "Number of members in the pool"
        },
        "ownShare": {
          "type": "number",
          "description": "Share of the credits in this pool that are owned by the current user"
        },
        "ownCredits": {
          "type": "number",
          "description": "Number of credits in the pool that are owned by the current user"
        }
      }
    }
  }
}

List pool members
GET/billing/pools/{pool}/members/

Example URI

GET https://api.exaroton.com/v1/billing/pools/pool/members/
URI Parameters
HideShow
pool
PoolID (required) 

Unique pool ID

Request
HideShow
Headers
Authorization: Bearer {token}
Response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "success": true,
  "error": null,
  "data": [
    {
      "account": "X4iJREgqBGFSBtn0",
      "name": "example",
      "share": 1,
      "credits": 42,
      "isOwner": true
    }
  ]
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "success": {
      "type": "boolean"
    },
    "error": {
      "type": [
        "string",
        "null"
      ]
    },
    "data": {
      "type": [
        "array",
        "null"
      ]
    }
  }
}

List pool servers
GET/billing/pools/{pool}/servers/

Example URI

GET https://api.exaroton.com/v1/billing/pools/pool/servers/
URI Parameters
HideShow
pool
PoolID (required) 

Unique pool ID

Request
HideShow
Headers
Authorization: Bearer {token}
Response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "success": true,
  "error": null,
  "data": [
    {
      "id": "EwYiY9IAMtQBTb6U",
      "name": "example",
      "address": "example.exaroton.me",
      "motd": "Welcome to the server of example!",
      "status": 0,
      "host": null,
      "port": null,
      "players": {
        "max": 20,
        "count": 0,
        "list": []
      },
      "software": {
        "id": "kb4p09ABvLjxzedx",
        "name": "Vanilla",
        "version": "1.16.5"
      },
      "shared": false
    }
  ]
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "success": {
      "type": "boolean"
    },
    "error": {
      "type": [
        "string",
        "null"
      ]
    },
    "data": {
      "type": [
        "array",
        "null"
      ]
    }
  }
}

Generated by aglio on 31 Jan 2024