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

Official libraries

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

Community libraries

There are also several community-maintained libraries for different languages. These libraries are not maintained by exaroton and may not be feature complete, but can still be useful to get started:

You can also use our OpenAPI spec to generate clients for a large variety of programming languages.

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}}

management

The management stream can be used to interact with the server using the Minecraft server management protocol introduced in 1.21.9. This protocol allows controlling various server settings without restarting the server and notifies clients of events happening on the server. Configuring the management server in the server.properties is not necessary, as this is automatically handled by exaroton.

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

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

You can unsubscribe by sending a stop message:

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

Management requests can be sent by sending a request message. A request consists of the method you would like to call, its optional parameters and a unique id to identify the response.

{"stream":"management","type":"request","data":{"id":"unique-id","method":"minecraft:server/status", "params":{}}}

started

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

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

response

Responses to request messages have the same id provided by the client and the response data from the server.

{"stream":"management","type":"response","data":{"id":"unique-id","data":{"started":true,"version":{"name":"1.21.9 Release Candidate 1","protocol":1073742097}}}}

notification

Notifications are sent by the server when certain events happen. The notification type is included in the name property.

{"stream":"management","type":"notification","data":{"name":"minecraft:notification/allowlist/added","data":[{"id":"22c777bb-e823-4ab8-b17b-acd3eef0b597","name":"exaroton"}]}}

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
9  = TRANSFERRING
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": null,
  "data": {
    "id": "EwYiY9IAMtQBTb6s",
    "name": "example",
    "email": "[email protected]",
    "maxServers": 10,
    "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": {
        "id": {
          "type": "string",
          "description": "Unique account ID"
        },
        "name": {
          "type": "string"
        },
        "email": {
          "type": "string"
        },
        "maxServers": {
          "type": "number",
          "description": "Maximum number of servers this account can own"
        },
        "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.20.4",
        "type": "vanilla",
        "launcher": "CurseForge"
      },
      "shared": false,
      "permissions": []
    }
  ]
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "success": {
      "type": "boolean"
    },
    "error": {
      "type": [
        "string",
        "null"
      ]
    },
    "data": {
      "type": [
        "array",
        "null"
      ]
    }
  }
}

Create a server
POST/servers/

Creates a new server owned by your account. If your account has reached its server limit (see maxServers in /account/), the request fails with status code 413.

Example URI

POST https://api.exaroton.com/v1/servers/
Request
HideShow
Headers
Content-Type: application/json
Authorization: Bearer {token}
Body
{
  "name": "example",
  "software": "wdZhC3v1udSOxR1d",
  "softwareType": "vanilla",
  "motd": "My cool server!",
  "timezone": "Europe/Berlin",
  "region": "eu"
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "description": "Preferred name to use for the server. If this is taken, a random name will be generated based on your input. For example the input `example` could result in the server address `example.exaroton.me` if it's available or `example-qf4H.exaroton.me` if it's not."
    },
    "software": {
      "type": "string",
      "description": "ID of the software to install on the server. See `/software/` for your options. You have to provide either this or `softwareType`. If both are set, this takes precedence."
    },
    "softwareType": {
      "type": "string",
      "description": "If you want to automatically select the latest version of a specific software type, you can use this instead of `software`. See `/software/` for your options."
    },
    "motd": {
      "type": "string",
      "description": "The MOTD of the server. If not set, a default MOTD will be generated for you."
    },
    "timezone": {
      "type": "string",
      "description": "The timezone to use for the server. This must be a valid IANA Time Zone identifier. Defaults to UTC if not set."
    },
    "region": {
      "type": "string",
      "description": "The region to create the server in (`eu` or `na`). If not set or invalid, the region is chosen automatically based on the timezone."
    }
  }
}
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.20.4",
      "type": "vanilla",
      "launcher": "CurseForge"
    },
    "shared": false,
    "permissions": []
  }
}
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; 9 = TRANSFERRING; 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": "Display name of the software"
            },
            "version": {
              "type": "string",
              "description": "Software version"
            },
            "type": {
              "type": "string",
              "description": "Software type"
            },
            "launcher": {
              "type": [
                "string",
                "null"
              ],
              "description": "Launcher this software belongs to, only set for modpacks/plugins that require a specific launcher"
            }
          },
          "description": "Information about the installed server software"
        },
        "shared": {
          "type": "boolean",
          "description": "Whether the server is accessed via the Share Access feature"
        },
        "permissions": {
          "type": [
            "array",
            "null"
          ],
          "description": "The permissions your account has on this server via the Share Access feature. Always `null` if you are the owner of the server."
        }
      }
    }
  }
}

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.20.4",
      "type": "vanilla",
      "launcher": "CurseForge"
    },
    "shared": false,
    "permissions": []
  }
}
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; 9 = TRANSFERRING; 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": "Display name of the software"
            },
            "version": {
              "type": "string",
              "description": "Software version"
            },
            "type": {
              "type": "string",
              "description": "Software type"
            },
            "launcher": {
              "type": [
                "string",
                "null"
              ],
              "description": "Launcher this software belongs to, only set for modpacks/plugins that require a specific launcher"
            }
          },
          "description": "Information about the installed server software"
        },
        "shared": {
          "type": "boolean",
          "description": "Whether the server is accessed via the Share Access feature"
        },
        "permissions": {
          "type": [
            "array",
            "null"
          ],
          "description": "The permissions your account has on this server via the Share Access feature. Always `null` if you are the owner of the server."
        }
      }
    }
  }
}

Delete a server
DELETE/servers/{server}

Permanently deletes a server including all of its files. This is only possible for the owner of the server (not via Share Access) and only while the server is offline or crashed.

Example URI

DELETE 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": "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"
      ]
    }
  }
}

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"
      ]
    }
  }
}

Extend server stop timer
POST/servers/{server}/extend-time/

Example URI

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

Unique server ID

Request
HideShow
Headers
Authorization: Bearer {token}
Body
{
  "time": 60
}
Schema
{
  "type": "object",
  "properties": {
    "time": {
      "type": "number",
      "description": "Additional time in seconds to add to the stop timer"
    }
  },
  "$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"
      ]
    }
  }
}

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. The value of multiselect options is an array of strings. Integer and float options have min, max and step values (each can be null). 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"
      ],
      "min": null,
      "max": null,
      "step": null
    }
  ]
}
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"
      ],
      "min": null,
      "max": null,
      "step": null
    }
  ]
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "success": {
      "type": "boolean"
    },
    "error": {
      "type": [
        "string",
        "null"
      ]
    },
    "data": {
      "type": [
        "array",
        "null"
      ]
    }
  }
}

Server software

Get server software details
GET/servers/{server}/software/{software}/

Returns details about the given software, including whether installing it on this server would require a reinstall (which deletes all existing server files).

Example URI

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

Unique server ID

software
string (required) 

Unique software ID

Request
HideShow
Headers
Authorization: Bearer {token}
Response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "success": true,
  "error": "Hello, world!",
  "data": {
    "id": "kb4p09ABvLjxzedx",
    "name": "Vanilla",
    "version": "1.20.4",
    "type": "vanilla",
    "launcher": "CurseForge"
  }
}
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 software ID"
        },
        "name": {
          "type": "string",
          "description": "Display name of the software"
        },
        "version": {
          "type": "string",
          "description": "Software version"
        },
        "type": {
          "type": "string",
          "description": "Software type"
        },
        "launcher": {
          "type": [
            "string",
            "null"
          ],
          "description": "Launcher this software belongs to, only set for modpacks/plugins that require a specific launcher"
        }
      }
    }
  }
}

Install a software on a server
POST/servers/{server}/software/{software}/

Installs the given software on the server. If switching to this software requires a reinstall (see the GET request above), you must set reinstall to true in the request body to confirm this - it will delete all existing server files.

Example URI

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

Unique server ID

software
string (required) 

Unique software ID

Request
HideShow
Headers
Content-Type: application/json
Authorization: Bearer {token}
Body
{
  "reinstall": false
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "reinstall": {
      "type": "boolean",
      "description": "Confirms that a reinstall (deleting all server files) is allowed, if required"
    }
  }
}
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"
      ]
    }
  }
}

Credit Pools

List credit pools
GET/billing/pools/

Example URI

GET https://api.exaroton.com/v1/billing/pools/
Request
HideShow
Headers
Authorization: Bearer {apitoken}
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 {apitoken}
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 {apitoken}
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 {apitoken}
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.20.4",
        "type": "vanilla",
        "launcher": "CurseForge"
      },
      "shared": false,
      "permissions": []
    }
  ]
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "success": {
      "type": "boolean"
    },
    "error": {
      "type": [
        "string",
        "null"
      ]
    },
    "data": {
      "type": [
        "array",
        "null"
      ]
    }
  }
}

Software

List available software
GET/software{?type,launcher}

Example URI

GET https://api.exaroton.com/v1/software?type=&launcher=
URI Parameters
HideShow
type
string (optional) 

Only show software options of a specific software type, e.g. vanilla

launcher
string (optional) 

Filter modpacks by their launcher, e.g. CurseForge

Request
HideShow
Headers
Authorization: Bearer {token}
Response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "success": true,
  "error": "Hello, world!",
  "data": [
    {
      "id": "kb4p09ABvLjxzedx",
      "name": "Vanilla",
      "version": "1.20.4",
      "type": "vanilla",
      "launcher": "CurseForge"
    }
  ]
}
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 22 Oct 2026