Skip to content
GAMPEONCreate
New project

Get a join token for a server

POST
/v1/servers/{id}/join
curl --request POST \
--url https://api.gampeon.com/v1/servers/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/join \
--header 'Authorization: Bearer <token>'

The launcher calls this right before it starts the game client and passes the token to the client in the environment variable GAMPEON_JOIN_TOKEN. The client sends it to the game server when it connects, and the game server checks it with POST /v1/servers/{id}/join/verify. Valid for 10 minutes, once, and only for this server.

If the server runs game packages of its project, packages lists their files and packageGrant allows downloading them with GET /v1/packages/files/{sha256} for 60 minutes. The launcher downloads missing files, checks their SHA-256 and starts the client with them.

Not available with access tokens.

Rate limit: 30 per 10 minutes per account.

id
required
string format: uuid

Server ID

Join token

Media typeapplication/json
object
token
required

Join token, 43 characters

string
address
required

Host name or IP of the server

string
port
required
integer
expiresAt
required

Unix time in milliseconds

integer format: int64
packages
required

Game packages the server needs (empty without packages)

Array<object>
object
name
required
string
version
required
string
engine
required

GAMPEON version the package needs

string
size
required

Bytes of all files

integer
files
required
Array<object>
object
path
required

Path inside the package, such as GamCity.uplugin, Content/Paks/WindowsClient/GamCity….pak or Nui/icons/cash.png

string
size
required

Bytes

integer
>= 1
sha256
required

SHA-256, 64 hex characters

string
packageGrant

Download grant for packages, only when there are packages

string
packageGrantExpiresAt

Unix time in milliseconds

integer format: int64

Example generated

{
"token": "example",
"address": "example",
"port": 1,
"expiresAt": 1,
"packages": [
{
"name": "example",
"version": "example",
"engine": "example",
"size": 1,
"files": [
{
"path": "example",
"size": 1,
"sha256": "example"
}
]
}
],
"packageGrant": "example",
"packageGrantExpiresAt": 1
}

Error codes: unauthorized

Media typeapplication/json
object
error
required

Machine-readable error code, for example not_found or rate_limited.

string
message

Human-readable detail. Only present for some errors.

string

Example generated

{
"error": "example",
"message": "example"
}

Error codes: token_not_allowed

Media typeapplication/json
object
error
required

Machine-readable error code, for example not_found or rate_limited.

string
message

Human-readable detail. Only present for some errors.

string

Example generated

{
"error": "example",
"message": "example"
}

Error codes: not_found

Media typeapplication/json
object
error
required

Machine-readable error code, for example not_found or rate_limited.

string
message

Human-readable detail. Only present for some errors.

string

Example generated

{
"error": "example",
"message": "example"
}

Error codes: server_offline, server_full, package_unavailable

Media typeapplication/json
object
error
required

Machine-readable error code, for example not_found or rate_limited.

string
message

Human-readable detail. Only present for some errors.

string

Example generated

{
"error": "example",
"message": "example"
}

Limit: 30 per 10 minutes per account. Error codes: rate_limited

Media typeapplication/json
object
error
required

Machine-readable error code, for example not_found or rate_limited.

string
message

Human-readable detail. Only present for some errors.

string

Example generated

{
"error": "example",
"message": "example"
}

Report a problem with this pageOther ways to give feedback