The server model
A server is one isolated Minecraft instance: its own data volume, its own RAM/CPU allocation, its own public address. You create it once and drive its whole lifecycle over the API.
Identity
When you create a server from a name, three identifiers are derived deterministically:
| Field | Example | Notes |
|---|---|---|
id | my-smp | DNS-safe slug of the name; the handle you use in every endpoint path |
hostname | my-smp.truetick.gg | Where players connect (port 25565). EU servers use *.eu.truetick.gg |
container | mc_my-smp | Internal container name |
My SMP → id my-smp → hostname my-smp.truetick.gg. The SDK and CLI compute these for you; with
raw curl you pass them explicitly (see the Quickstart).
Shape
A GET /v1/servers/{id} returns the full server object. The fields you'll work with most:
| Field | Meaning |
|---|---|
id, hostname | Identity (above) |
state | Lifecycle state — see Lifecycle |
ramMb | Allocated RAM in MB. This is guaranteed, not oversold |
type | Server core: PAPER, PURPUR, VANILLA, FABRIC, FORGE, NEOFORGE, … |
version | Minecraft version, e.g. 1.21.1 |
region | na or eu — see Regions |
plan | metered (default) or flat — see Billing |
motd | Message of the day shown in the server list |
properties | A subset of server.properties you can set via the API |
idleTimeoutMinutes | How long empty before scale-to-zero hibernation |
lastActiveAt, bakedAt | Activity / readiness timestamps |
installError | Set when a modpack pre-install failed (see Mods) |
No hidden overselling — the honesty moat. ramMb and the CPU allotment for its tier are
reserved for the server while it's awake. We don't pack more guaranteed load onto a box than it can
honestly serve. That's why TPS/MSPT are real numbers you can read back — see
Honesty metrics.
Creating a server
Required inputs: name, ramMb, and (recommended) type + version. Optional: region, plan,
and modpack fields. RAM tiers run from 2 GB upward; modded cores require at least 4 GB. Omitting
type/version falls back to platform defaults.
const server = await client.servers.create({
name: "My SMP",
ramMb: 4096,
type: "PAPER",
version: "1.21.1",
region: "na", // optional
plan: "metered", // optional; default
});Creation is cheap and does not start the server — it lands stopped and costs nothing until you
wake it. To start from a preset instead of bare inputs, use
templates (client.templates.list() → client.servers.createFromTemplate(...)).
Configuring a server
Most settings are individual write endpoints (all under servers:write):
updateVersion(id, { type, version })— change core/version (server must be stopped)setProperties(id, { properties, idleTimeoutMinutes })— patchserver.propertieskeys + idle timeoutsetMotd(id, motd)— set the MOTD- Mods, backups, files, and console are covered in their own sections.
Listing & deleting
const servers = await client.servers.list(); // your account's servers
await client.servers.delete("my-smp"); // permanent — removes dataDeleting is irreversible and removes the data volume. Take a backup first if you might want the world back.