Skip to content
Coritan Docs

How free servers work

How a free server that a brand sells sleeps when empty and wakes when someone joins, what it leaves out, and what the API answers for it.

View as Markdown

coritan.com sells no free server. Every server you order here is billed by what it uses, and an order for the free plan answers This plan is not sold here. (What you pay for on the Free plan). A free server is unmetered: no memory, CPU or disk meter counts it, it never needs Server access, and the time it runs costs the account nothing.

A free server is a game server on the free plan, which an organization can sell on its own storefront once Coritan allows it (Set up products and pricing). The servers its customers order run on the Coritan account of the organization's owner. The owner sees them on the App Deployment page, and can reach them through the API on this page. A free server runs only while someone uses it: it goes to sleep when nobody is playing, and starts again when a player joins or when someone wakes it.

A free server stops after a set number of minutes without players. The default is 10 minutes, and it can be shorter while the machine is busy; the line under This server is asleep on the Console tab gives the current figure. A boost level can make the wait longer (What boosts add); while the machine is busy, a boosted server waits the default 10 minutes instead. A server that someone has just woken stays up for at least 10 minutes, so there is time to join. Stopping frees the memory for other servers, and the files stay where they are.

To start it again, open the server's Console tab and select Wake server, or join it from the game. Start does not work on a free server that is down: it answers Free servers must be started via the wake endpoint, not a direct power start/restart. Restart works while the server runs.

A wake goes through a start queue, so the machine is never asked to start more servers than it has room for:

  • Waiting for room to start means the start is queued. The banner shows the position, such as Position 2 of 5 in the start queue., and the page updates by itself.
  • Starting your server means its turn has come and the server is booting.
  • When the machine is full, the banner says so, and the start waits in the queue until there is room.
  • A wake that comes while the server is still stopping keeps its place in the queue, and the server starts once the stop has finished.
  • A server that was running in the last hour does not wait in the queue. When you stop or restart a server you are working on, a wake starts it as soon as the machine has room for it, ahead of servers that have been asleep longer.
  • A wake you start with Wake server keeps its place until its turn comes. A wake from a player's join keeps its place while players keep trying to join; when nobody has tried for 5 minutes, it leaves the queue.
  • In the Minecraft server list, a sleeping server shows two lines. The first line is your While the server is offline text when you set one on the join address or your organization sets one, and otherwise the first line of the MOTD your server showed the last time it was online, cut to 100 characters. The second line says what is happening: Asleep. Join to start the server, Starting up. Rejoin in a moment or, in the Java list, Queued to start: position 2. A server that has never been online shows the second line alone. The platform sets the three second lines. You cannot change them.
  • If your server stops while starting three times in a row with the same error, we stop trying, and the banner on the Console tab shows the error. Fix it, then select Wake server. Until then a player's join does not start it; after a day, a join tries again. A stop that someone asks for once the server has started, such as stop typed in its console, does not count as a failed start.

If the account has hit a start limit, the banner asks for a verification check before Wake server works.

A free server has no IP address or port of its own. Players join at its join address, a hostname that works for Java and Bedrock with no port to type. The Network card on the server's Settings tab shows it (Change the join address), and the API returns it in join_address.

Feature On a free server
Backups Not included. Download the world from the file manager instead.
Automatic backups Not included.
Databases Not included, unless a boost level unlocks them.
Schedules Not included, unless a boost level unlocks them. Then they run while the server is online and never start it.
Add-ons A brand's customer portal sells them for a free server, billed on their own. coritan.com's own pages refuse them.
Snapshots Included, with room for one snapshot.
Snapshot download Not included, unless a boost level unlocks it. Otherwise restore the snapshot onto another server, or download files from the file manager.
Unused chunks Always removed while the world sleeps: we delete chunks no player has ever visited, and the ground regenerates the same way if anyone goes there. A world that would lose more than 75% of its chunks is left untouched, because that usually means builds we cannot see, such as a world built elsewhere and uploaded. What a run removes is kept for 3 days in the .coritan-trim folder of your server's files, so a world it damaged can be put back. A paid plan can turn this off.
The file the server runs Cannot be uploaded, overwritten or renamed, for example server.jar. Archives that hold it cannot be extracted, and archives over 1 GB cannot be extracted in the file manager.

An action the plan leaves out answers 403 with upgrade_required set to true and a message that names the feature, such as Databases are not included on the free plan. Upgrade to a paid plan to run plugins that need one. The Port slots used figure on the server's Ports tab shows how many ports are in use out of how many the plan allows.

Game settings a new free server starts with

Section titled Game settings a new free server starts with

A free server shares its machine's processor with other servers, so a new free Java Minecraft server starts with three lighter values in server.properties:

Setting A new free server The game's default What it does
simulation-distance 6 10 How many chunks around each player the game keeps running: mobs, crops and redstone.
view-distance 8 10 How many chunks around each player the server sends.
pause-when-empty-seconds 30 60 How long the game keeps running the world after the last player leaves.

We write them once, when the server is first installed. They are yours to change: edit server.properties in the file manager, or send PATCH /api/v1/client/servers/{uuid}/software/game-settings with {"values": {"view-distance": 10}}, then restart the server. A reinstall, or a change of software that keeps your files, leaves your server.properties as it is. A free server installed before these values were introduced keeps the values it has. A paid server starts with the game's defaults, and a free server that moves to a paid plan keeps its values until you change them. Minecraft versions before 1.18 ignore simulation-distance, and versions before 1.21.2 ignore pause-when-empty-seconds. Bedrock and Pumpkin servers, and proxies, are not changed.

An organization that runs a Medal quest lets players boost a server for free: they sign up for Medal with the organization's referral link (a Medal account made any other way cannot boost), clip Minecraft and enter the server's join address in the quest. A server holds up to 10 boosts, each with its own end date, and its level is how many it holds. The organization decides what each level gives a free server, from:

  • more memory, CPU and disk;
  • a longer wait before the server sleeps when nobody is playing;
  • MySQL databases, schedules and snapshot download;
  • no "Hosted by" message in the game chat;
  • first place in the start queue on its machine;
  • keeping the world from the cleanup below while it is boosted.

A Java memory setting left at its default follows the boosted memory after a restart. When a boost ends the level drops: memory and CPU go back when the server next stops, disk never drops below what the world uses, and the rest ends at once. Databases already made keep working. Each item in entitlements carries boost_unlocks_at, the level that unlocks it, or null.

We check every new order for the free plan before we create the server. The checks apply to new orders only, and never change a free server that exists. Every free server gets the same plan, whoever orders it.

  • An order from a hosting, VPN, proxy or Tor network needs a Discord account linked to the customer's account that is at least 30 days old. We read the Discord account's age from its ID, so a new Discord account counts once it is 30 days old. Coritan can instead refuse every free order from these networks, and then no Discord account lets one through. An order from a home or mobile connection needs no Discord account.
  • One address can order at most 10 free servers in 24 hours, counted across every brand and every account. For IPv6, the address is its /64 network.
  • Coritan can block an email domain, a network or a server name that abuses the free plan. An account on a blocked email domain cannot order a free server, and cannot sign up in the first place (Blocked email domains).

POST /api/v1/orgs/{org_slug}/storefront/order refuses an order that fails a check, with detail.error and a message your storefront can show:

detail.error Status Message
free_network_not_allowed 403 Free servers can't be created from a VPN, proxy or hosting network unless a Discord account at least 30 days old is linked to your account. Link Discord on your account page, or turn off the VPN and try again.
free_ip_limit_reached 429 Your network has reached today's limit of free servers. Try again later.
free_network_blocked 403 Free servers can't be created from this network.
email_domain_blocked 403 Free servers aren't available for accounts on this email domain.
server_name_blocked 422 Choose a different server name.

Every free_network_not_allowed carries ip_kind, the kind of network the address belongs to (hosting, vpn, proxy or tor), and min_account_age_days, how old a linked Discord account must be. It comes in three forms:

  • With no Discord account that counts linked, the message is the one in the table, and requires is "discord": linking a Discord account old enough lets the order through. Your storefront can read requires to offer a button that links Discord beside the message.
  • When the customer's linked Discord account is too new, requires is "discord" as well, discord_qualifies_on is the time the account turns old enough (ISO 8601 in UTC), and the message is Free servers can't be created from a VPN, proxy or hosting network until your linked Discord account is 30 days old. Turn off the VPN and try again, or wait. Your linked Discord account counts from 2026-10-12., ending with that day in UTC. It asks the customer to wait or to turn off the VPN, so a storefront that shows it has no reason to offer the link button too.
  • When Coritan refuses these networks outright, the message is Free servers can't be created from a VPN, proxy or hosting network. Turn off the VPN and try again., and there is no requires and no Discord step.

With free_ip_limit_reached, limit is the number of free servers one address may order in 24 hours, and retry_after_seconds and the Retry-After header say when the address can order again. The other refusals carry error and message only.

Files a free server may not run

Section titled Files a free server may not run

We check what free servers run, including the jar a server starts with, which a free server may not replace. A free server that runs a file we have listed as abusive, such as a crypto miner, can be deleted at once, and the account that owns it suspended while we review it: its sessions end and its other servers are suspended too. An account that pays for another service is not suspended; our team reviews it first. A free server whose startup jar is not the one we installed can be locked (The server is locked). To ask about a deleted server or a suspended account, contact support.

By default, we reclaim a free server that nobody joins or starts for three weeks:

  • After 7 days without activity, we email the owner. The email's Keep this server button resets the count.
  • After 14 days without activity, we take a snapshot of the server and suspend it. A suspended server cannot be started from the dashboard.
  • After 21 days without activity, we delete it.

Joining the server, starting it or boosting it resets the count, and a boost level that keeps the world takes the server out of the count while it lasts. To bring back a suspended free server before it is deleted, contact support. After deletion, the snapshot is the way back: restore it onto another server.

The two routes below are the Client API's, so they answer for a free server on your own account: on coritan.com, one that your organization's customers ordered. A storefront calls the portal's routes for its customers instead (Wake a free server).

GET /api/v1/client/servers/{uuid}/sleep returns the sleep state in sleep and the plan's features in entitlements. For a paid server that does not sleep, sleep is {"policy": "none", "phase": "awake"}. For a paid server that sleeps when empty, policy is idle and idle_timeout_seconds is the wait its owner chose.

Shell
curl https://api.coritan.com/api/v1/client/servers/$SERVER/sleep \
  -H "Authorization: Bearer $CORITAN_TOKEN"

In sleep, the fields you need are:

phase
awake, asleep, queued or starting, or the server's status (installing, transferring, install_failed or suspended) when that stops it from running.
idle_timeout_seconds
How long the server waits without players before it sleeps.
sleeps_at
When the server will sleep if nobody joins, once that is certain; otherwise null.
queue
While a wake is queued or starting, the position, the total in the queue and the status; otherwise null. When the server stopped while starting three times in a row with the same error, status is failed, phase is asleep, position is null, reason holds the error and failed_boots the count. A wake starts it again.
capacity_available
Whether a start would be admitted right now. When it is false, capacity_reason says why.
challenge_required
Whether a wake needs a verification token.

Each item in entitlements has a feature, allowed, limit, reason, summary, detail and boost_unlocks_at (the boost level that unlocks a feature the plan leaves out, or null). For a free server, the item whose feature is direct_endpoint names the join address in its summary and detail.

POST /api/v1/client/servers/{uuid}/wake asks for a sleeping free server to start. Send an empty body, or {"turnstile_token": "..."} when challenge_required is true. The response is the new sleep state.

Shell
curl -X POST https://api.coritan.com/api/v1/client/servers/$SERVER/wake \
  -H "Authorization: Bearer $CORITAN_TOKEN"

A server that does not sleep answers 409 with This server does not sleep; use the power action to start it. A paid server that sleeps when empty can be woken here too: it needs no challenge, and its start waits only for room on its host, not behind the free servers. A server that is installing, moving, suspended or whose install failed answers 409 with its status. While a software change runs on the server, a wake answers 409 with A software change is running on this server. Start it again when the change finishes. While a file import is queued, copying or stopping, a wake answers 409 with A file import is running on this server. Start it again when the import finishes. A start already in the wake queue waits for the import to end and keeps its place. Wakes are limited to 48 per server in 60 seconds.

Other routes refuse a free server with messages of their own: Free servers do not have automatic backups., Free servers do not take add-ons. Add them to a paid server., Free servers cannot modify or upload core server executables. … and Free servers can extract archives of up to 1 GB through the panel, …. An archive that ends early answers This archive looks damaged or incomplete. Upload it again. The world_optimization_enabled setting of PATCH /api/v1/client/servers/{uuid}/settings can be turned on for a free server, but not off.

API operations on this page

MethodPathWhat it does
GET/api/v1/client/servers/{uuid}/sleepSleep and start-queue state for a free server
POST/api/v1/client/servers/{uuid}/wakeAsk for a sleeping free server to be started