Skip to main content

Overview

Places (also known as games) are user-created game servers. These endpoints handle viewing, managing, and joining places.

Get Place Details

Retrieve detailed information about a specific place.

Request

GET /place/{id}/{name}
id
number
required
Place asset ID
name
string
required
URL-encoded place name (used for SEO-friendly URLs)
privateServer
string
Private server ticket for accessing private places
Valid session cookie

Response

id
number
Place asset ID
name
string
Place name
slug
string
URL-safe encoded name
description
object
Place description
  • text: Description content
  • updated: Last update timestamp
ownerUser
BasicUser
Place owner information
ownerUsername
string
Owner’s username
created
string
Creation timestamp
updated
Date
Last update timestamp
maxPlayers
number
Maximum player capacity
privateServer
boolean
Whether this is a private server
privateTicket
string
Private server access ticket (if applicable)
serverTicket
string
Server connection ticket (empty unless user is owner with permission level 5)
likeCount
number
Number of likes
dislikeCount
number
Number of dislikes
likes
boolean
Whether current user likes this place
dislikes
boolean
Whether current user dislikes this place
players
array
Current players:
  • username: Player username
  • status: “Playing”
serverPing
number
Server ping/latency
hosting
boolean
Whether game server hosting is enabled
scheme
string
Custom URI scheme for launcher integration
orbiterURL
string
Orbiter server URL for game connections
thumbnails
array
Array of thumbnail indices

Errors

  • 404 Not Found: Place doesn’t exist or private server ticket invalid
  • 302 Redirect: Name mismatch (redirects to correct URL)
Source: Site/src/routes/(main)/place/[id=asset]/[name]/+page.server.ts:45-80

Join Place

Generate a ticket to join a game server.

Request

POST /place/{id}/{name}?/join
Content-Type: application/x-www-form-urlencoded
id
number
required
Place asset ID
name
string
required
Place name
privateTicket
string
Private server ticket (if joining private server)
Valid session cookie

Response

ticket
string
Game session ticket for connecting to the server

Implementation Details

This endpoint:
  1. Validates the place exists and user has access
  2. Checks if user is moderated (banned from playing)
  3. Invalidates any existing game sessions for the user
  4. Creates a new playing session with a unique ticket
  5. Returns the ticket for client connection

Errors

  • 403 Forbidden: “You cannot currently play games” - User is moderated
  • 404 Not Found: Place doesn’t exist or invalid private ticket
Source: Site/src/routes/(main)/place/[id=asset]/[name]/+page.server.ts:116-127

Start Dedicated Server

Start a dedicated game server for a place.

Request

POST /place/{id}/{name}?/start
Content-Type: application/x-www-form-urlencoded
id
number
required
Place asset ID
privateTicket
string
Private server ticket (if applicable)
Valid session cookie

Response

Returns empty response on success.

Rate Limiting

This endpoint is rate-limited to 20 requests per IP address.

Implementation Details

  1. Verifies user is not moderated
  2. Validates place exists and user has access
  3. Checks for place file existence in ../data/places/{id}
  4. Sends request to Orbiter to start the game server

Errors

  • 403 Forbidden: User is moderated
  • 404 Not Found: Place file not found
  • 500 Internal Server Error: “Failed to start dedicated server”
Source: Site/src/routes/(main)/place/[id=asset]/[name]/+page.server.ts:129-153

Close Dedicated Server

Stop a running dedicated game server.

Request

POST /place/{id}/{name}?/close
Content-Type: application/x-www-form-urlencoded
id
number
required
Place asset ID
privateTicket
string
Private server ticket (if applicable)
Valid session cookie

Response

Returns empty response on success.

Authorization

User must be either:
  • The place owner, OR
  • Have permission level 4 or higher (moderator/admin)

Errors

  • 403 Forbidden: “You do not have permission to close this server.”
  • 404 Not Found: Place doesn’t exist
  • 500 Internal Server Error: “Failed to close dedicated server”
Source: Site/src/routes/(main)/place/[id=asset]/[name]/+page.server.ts:155-169

Place Settings

Manage place configuration. All settings endpoints require the user to be the place owner or have permission level 4+.

Get Place Settings

GET /place/{id}/{name}/settings
id
number
required
Place asset ID
Valid session cookie

Response

Returns full place configuration including forms for each settings category.
name
string
Place name
description
object
Place description
dedicated
boolean
Whether this uses a dedicated server
serverAddress
string
Dedicated server IP address
serverPort
number
Dedicated server port
maxPlayers
number
Maximum player count
privateServer
boolean
Privacy setting
privateTicket
string
Private access ticket
serverTicket
string
Server authentication ticket
Source: Site/src/routes/(main)/place/[id=asset]/[name]/settings/+page.server.ts:69-90

Update View Settings

POST /place/{id}/{name}/settings?/view
Content-Type: multipart/form-data
name
string
required
Place name (max 100 characters)
description
string
Place description (max 1000 characters)
icon
File
Place icon image (max 1MB, resized to 270x270, converted to AVIF)
Response: “View settings updated successfully!” Errors:
  • icon: “Icon must be less than 1MB in size”
Source: Site/src/routes/(main)/place/[id=asset]/[name]/settings/+page.server.ts:103-134

Update Network Settings

POST /place/{id}/{name}/settings?/network
Content-Type: application/x-www-form-urlencoded
dedicated
boolean
required
Enable dedicated server mode
serverAddress
string
Dedicated server IP address
serverPort
number
Dedicated server port
maxPlayers
number
required
Maximum concurrent players
Response: “Network settings updated successfully!” Source: Site/src/routes/(main)/place/[id=asset]/[name]/settings/+page.server.ts:144-151

Update Privacy Settings

POST /place/{id}/{name}/settings?/privacy
Content-Type: application/x-www-form-urlencoded
privateServer
boolean
required
Enable private server mode
Response: “Privacy settings updated successfully!” Source: Site/src/routes/(main)/place/[id=asset]/[name]/settings/+page.server.ts:152-161

Regenerate Server Ticket

POST /place/{id}/{name}/settings?/ticket
Content-Type: application/x-www-form-urlencoded
Generates a new server authentication ticket. Response: “Regenerated!” Source: Site/src/routes/(main)/place/[id=asset]/[name]/settings/+page.server.ts:135-143
POST /place/{id}/{name}/settings?/privatelink
Content-Type: application/x-www-form-urlencoded
Generates a new private server access ticket. Response: “Regenerated!” Source: Site/src/routes/(main)/place/[id=asset]/[name]/settings/+page.server.ts:162-170

Upload Place Data

POST /place/{id}/{name}/settings?/data
Content-Type: multipart/form-data
file
File
required
Place data file (max 100MB)
Uploads the place game file to ../data/places/{id}. Response: “Place data updated successfully!” Errors:
  • file: “File must be less than 100MB in size”
Source: Site/src/routes/(main)/place/[id=asset]/[name]/settings/+page.server.ts:171-188

Build docs developers (and LLMs) love