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:
Libraries maintained by exaroton:
Third party libraries not officially supported by exaroton:
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}/websocketBasic 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 = PREPARINGResource Group ¶
Account ¶
Get account infoGET/account/
Example URI
Headers
Authorization: Bearer {apitoken}200Headers
Content-Type: application/jsonBody
{
  "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 serversGET/servers/
Example URI
Headers
Authorization: Bearer {api-token}200Headers
Content-Type: application/jsonBody
{
  "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 serverGET/servers/{server}
Example URI
- server
- ServerID(required)- Unique server ID 
Headers
Authorization: Bearer {token}200Headers
Content-Type: application/jsonBody
{
  "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 logGET/servers/{server}/logs/
Example URI
- server
- ServerID(required)- Unique server ID 
Headers
Authorization: Bearer {token}200Headers
Content-Type: application/jsonBody
{
  "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.gsGET/servers/{server}/logs/share/
Example URI
- server
- ServerID(required)- Unique server ID 
Headers
Authorization: Bearer {token}200Headers
Content-Type: application/jsonBody
{
  "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 RAMGET/servers/{server}/options/ram/
Example URI
- server
- ServerID(required)- Unique server ID 
Headers
Authorization: Bearer {token}200Headers
Content-Type: application/jsonBody
{
  "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 RAMPOST/servers/{server}/options/ram/
Example URI
- server
- ServerID(required)- Unique server ID 
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"
    }
  }
}200Headers
Content-Type: application/jsonBody
{
  "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 MOTDGET/servers/{server}/options/motd/
Example URI
- server
- ServerID(required)- Unique server ID 
Headers
Authorization: Bearer {token}200Headers
Content-Type: application/jsonBody
{
  "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 MOTDPOST/servers/{server}/options/motd/
Example URI
- server
- ServerID(required)- Unique server ID 
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"
    }
  }
}200Headers
Content-Type: application/jsonBody
{
  "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 serverGET/servers/{server}/start/
Example URI
- server
- ServerID(required)- Unique server ID 
Headers
Authorization: Bearer {token}200Headers
Content-Type: application/jsonBody
{
  "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 creditsPOST/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
- server
- ServerID(required)- Unique server ID 
Headers
Authorization: Bearer {token}Body
{
  "useOwnCredits": true
}Schema
{
  "type": "object",
  "properties": {
    "useOwnCredits": {
      "type": "boolean"
    }
  },
  "$schema": "http://json-schema.org/draft-04/schema#"
}200Headers
Content-Type: application/jsonBody
{
  "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 serverGET/servers/{server}/stop/
Example URI
- server
- ServerID(required)- Unique server ID 
Headers
Authorization: Bearer {token}200Headers
Content-Type: application/jsonBody
{
  "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 serverGET/servers/{server}/restart/
Example URI
- server
- ServerID(required)- Unique server ID 
Headers
Authorization: Bearer {token}200Headers
Content-Type: application/jsonBody
{
  "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 commandPOST/servers/{server}/command/
Example URI
- server
- ServerID(required)- Unique server ID 
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"
    }
  }
}200Headers
Content-Type: application/jsonBody
{
  "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 timerPOST/servers/{server}/extend-time/
Example URI
- server
- ServerID(required)- Unique server ID 
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#"
}200Headers
Content-Type: application/jsonBody
{
  "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 listsGET/servers/{server}/playerlists/
Example URI
- server
- ServerID(required)- Unique server ID 
Headers
Authorization: Bearer {token}200Headers
Content-Type: application/jsonBody
{
  "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 contentsGET/servers/{server}/playerlists/{list}/
Example URI
- server
- ServerID(required)- Unique server ID 
- list
- string(required)- Player list name 
Headers
Authorization: Bearer {token}200Headers
Content-Type: application/jsonBody
{
  "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 listPUT/servers/{server}/playerlists/{list}/
Example URI
- server
- ServerID(required)- Unique server ID 
- list
- string(required)- Player list name 
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#"
}200Headers
Content-Type: application/jsonBody
{
  "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 listDELETE/servers/{server}/playerlists/{list}/
Example URI
- server
- ServerID(required)- Unique server ID 
- list
- string(required)- Player list name 
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#"
}200Headers
Content-Type: application/jsonBody
{
  "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 informationGET/servers/{server}/files/info/{path}/
Example URI
- server
- ServerID(required)- Unique server ID 
- path
- string(required)- File path 
Headers
Authorization: Bearer {token}200Headers
Content-Type: application/jsonBody
{
  "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 dataGET/servers/{server}/files/data/{path}/
Example URI
- server
- ServerID(required)- Unique server ID 
- path
- string(required)- File path 
Headers
Authorization: Bearer {token}200Headers
Content-Type: application/octet-streamWrite file dataPUT/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
- server
- ServerID(required)- Unique server ID 
- path
- string(required)- File path 
Headers
Content-Type: application/octet-stream
Authorization: Bearer {token}200Headers
Content-Type: application/jsonBody
{
  "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 fileDELETE/servers/{server}/files/data/{path}/
Example URI
- server
- ServerID(required)- Unique server ID 
- path
- string(required)- File path 
Headers
Authorization: Bearer {token}200Headers
Content-Type: application/jsonBody
{
  "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 optionsGET/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
- server
- ServerID(required)- Unique server ID 
- path
- string(required)- File path 
Headers
Authorization: Bearer {token}200Headers
Content-Type: application/jsonBody
{
  "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 optionsPOST/servers/{server}/files/config/{path}/
Config options to update can be sent as a JSON object in the request body.
Example URI
- server
- ServerID(required)- Unique server ID 
- path
- string(required)- File path 
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"
    }
  }
}200Headers
Content-Type: application/jsonBody
{
  "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 poolsGET/billing/pools/
Example URI
Headers
Authorization: Bearer {apitoken}200Headers
Content-Type: application/jsonBody
{
  "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 poolGET/billing/pools/{pool}
Example URI
- pool
- PoolID(required)- Unique pool ID 
Headers
Authorization: Bearer {apitoken}200Headers
Content-Type: application/jsonBody
{
  "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 membersGET/billing/pools/{pool}/members/
Example URI
- pool
- PoolID(required)- Unique pool ID 
Headers
Authorization: Bearer {apitoken}200Headers
Content-Type: application/jsonBody
{
  "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 serversGET/billing/pools/{pool}/servers/
Example URI
- pool
- PoolID(required)- Unique pool ID 
Headers
Authorization: Bearer {apitoken}200Headers
Content-Type: application/jsonBody
{
  "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"
      ]
    }
  }
}