curl --request POST \
--url https://api.computeflow.cloud/api/v3/lobbies/{config}/join \
--header 'Content-Type: application/json' \
--header 'api-key: <api-key>' \
--header 'x-player-id: <x-player-id>' \
--data '
{
"lobbyId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"code": "<string>",
"state": {}
}
'import requests
url = "https://api.computeflow.cloud/api/v3/lobbies/{config}/join"
payload = {
"lobbyId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"code": "<string>",
"state": {}
}
headers = {
"x-player-id": "<x-player-id>",
"api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'x-player-id': '<x-player-id>',
'api-key': '<api-key>',
'Content-Type': 'application/json'
},
body: JSON.stringify({lobbyId: '3c90c3cc-0d44-4b50-8888-8dd25736052a', code: '<string>', state: {}})
};
fetch('https://api.computeflow.cloud/api/v3/lobbies/{config}/join', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.computeflow.cloud/api/v3/lobbies/{config}/join",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'lobbyId' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'code' => '<string>',
'state' => [
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"api-key: <api-key>",
"x-player-id: <x-player-id>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.computeflow.cloud/api/v3/lobbies/{config}/join"
payload := strings.NewReader("{\n \"lobbyId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"code\": \"<string>\",\n \"state\": {}\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-player-id", "<x-player-id>")
req.Header.Add("api-key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.computeflow.cloud/api/v3/lobbies/{config}/join")
.header("x-player-id", "<x-player-id>")
.header("api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"lobbyId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"code\": \"<string>\",\n \"state\": {}\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.computeflow.cloud/api/v3/lobbies/{config}/join")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-player-id"] = '<x-player-id>'
request["api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"lobbyId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"code\": \"<string>\",\n \"state\": {}\n}"
response = http.request(request)
puts response.read_body{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"code": "<string>",
"config": "<string>",
"status": "waiting",
"host": "<string>",
"maxPlayers": 123,
"currentPlayers": 123,
"region": "<string>",
"isPrivate": true,
"allowLateJoin": true,
"settings": {},
"players": [
{
"id": "<string>",
"state": {},
"isHost": true
}
],
"server": {
"instance_id": "<string>",
"name": "<string>",
"status": "launching",
"network_ports": [
{
"name": "<string>",
"internal_port": 123,
"external_port": 123,
"protocol": "udp",
"host": "<string>",
"tls_enabled": true
}
],
"startup_args": "<string>",
"service_type": "match_based",
"compute_size": "<string>",
"region": "<string>",
"version_tag": "<string>",
"version": 123,
"started_at": "2023-11-07T05:31:56Z",
"stopped_at": "2023-11-07T05:31:56Z",
"auto_restart": true,
"custom_data": {},
"ttl": 123,
"is_pool_server": true,
"pool_claimed_at": "2023-11-07T05:31:56Z",
"match_id": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z"
},
"matchmaking": {
"mode": "<string>",
"startedAt": "<string>",
"queueStats": {
"playersSearching": 123,
"lobbiesInQueue": 123,
"avgWaitSeconds": 123
},
"confirmation": {
"deadline": "<string>",
"confirmed": true
}
},
"createdAt": "<string>",
"updatedAt": "<string>",
"matchmakingError": "<string>"
}{
"error": "<string>",
"status": 123,
"detail": "<string>"
}{
"error": "<string>",
"status": 123,
"detail": "<string>"
}{
"error": "<string>",
"status": 123,
"detail": "<string>"
}Join a lobby
Joins an existing lobby by its ID or invite code. The caller is identified by x-player-id.
By ID: Set lobbyId to the UUID from the browse or create response.
By invite code: Set code to the invite code shared by the host (e.g. "MEOW-42").
Exactly one of lobbyId or code must be provided.
Player state: Optionally pass state to set initial player state on join.
Errors:
404— Lobby not found or invalid invite code400— Lobby is full or not accepting players409— Player is already in a lobby for this config
curl --request POST \
--url https://api.computeflow.cloud/api/v3/lobbies/{config}/join \
--header 'Content-Type: application/json' \
--header 'api-key: <api-key>' \
--header 'x-player-id: <x-player-id>' \
--data '
{
"lobbyId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"code": "<string>",
"state": {}
}
'import requests
url = "https://api.computeflow.cloud/api/v3/lobbies/{config}/join"
payload = {
"lobbyId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"code": "<string>",
"state": {}
}
headers = {
"x-player-id": "<x-player-id>",
"api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'x-player-id': '<x-player-id>',
'api-key': '<api-key>',
'Content-Type': 'application/json'
},
body: JSON.stringify({lobbyId: '3c90c3cc-0d44-4b50-8888-8dd25736052a', code: '<string>', state: {}})
};
fetch('https://api.computeflow.cloud/api/v3/lobbies/{config}/join', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.computeflow.cloud/api/v3/lobbies/{config}/join",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'lobbyId' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'code' => '<string>',
'state' => [
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"api-key: <api-key>",
"x-player-id: <x-player-id>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.computeflow.cloud/api/v3/lobbies/{config}/join"
payload := strings.NewReader("{\n \"lobbyId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"code\": \"<string>\",\n \"state\": {}\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-player-id", "<x-player-id>")
req.Header.Add("api-key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.computeflow.cloud/api/v3/lobbies/{config}/join")
.header("x-player-id", "<x-player-id>")
.header("api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"lobbyId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"code\": \"<string>\",\n \"state\": {}\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.computeflow.cloud/api/v3/lobbies/{config}/join")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-player-id"] = '<x-player-id>'
request["api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"lobbyId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"code\": \"<string>\",\n \"state\": {}\n}"
response = http.request(request)
puts response.read_body{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"code": "<string>",
"config": "<string>",
"status": "waiting",
"host": "<string>",
"maxPlayers": 123,
"currentPlayers": 123,
"region": "<string>",
"isPrivate": true,
"allowLateJoin": true,
"settings": {},
"players": [
{
"id": "<string>",
"state": {},
"isHost": true
}
],
"server": {
"instance_id": "<string>",
"name": "<string>",
"status": "launching",
"network_ports": [
{
"name": "<string>",
"internal_port": 123,
"external_port": 123,
"protocol": "udp",
"host": "<string>",
"tls_enabled": true
}
],
"startup_args": "<string>",
"service_type": "match_based",
"compute_size": "<string>",
"region": "<string>",
"version_tag": "<string>",
"version": 123,
"started_at": "2023-11-07T05:31:56Z",
"stopped_at": "2023-11-07T05:31:56Z",
"auto_restart": true,
"custom_data": {},
"ttl": 123,
"is_pool_server": true,
"pool_claimed_at": "2023-11-07T05:31:56Z",
"match_id": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z"
},
"matchmaking": {
"mode": "<string>",
"startedAt": "<string>",
"queueStats": {
"playersSearching": 123,
"lobbiesInQueue": 123,
"avgWaitSeconds": 123
},
"confirmation": {
"deadline": "<string>",
"confirmed": true
}
},
"createdAt": "<string>",
"updatedAt": "<string>",
"matchmakingError": "<string>"
}{
"error": "<string>",
"status": 123,
"detail": "<string>"
}{
"error": "<string>",
"status": 123,
"detail": "<string>"
}{
"error": "<string>",
"status": 123,
"detail": "<string>"
}Authorizations
Headers
Unique player identifier for the joining player.
Path Parameters
Lobby configuration name or ID.
Body
Response
Successfully joined the lobby. The response includes the full lobby state with all players.
Full lobby state including players, server, and matchmaking info.
Lobby ID.
Invite code for joining (null if private mode is disabled).
Lobby config name.
Current lobby status.
waiting, in_queue, starting, matched, match_found, in_game Player ID of the host.
Maximum player capacity.
Current number of players.
Preferred game server region.
Whether the lobby is hidden from browsing.
Whether players can join mid-game.
Custom game settings.
Show child attributes
Show child attributes
Players in the lobby with their state.
Show child attributes
Show child attributes
Game server info (null when no game running).
Show child attributes
Show child attributes
Matchmaking info (null when not searching).
Show child attributes
Show child attributes
ISO 8601 creation timestamp.
ISO 8601 last update timestamp.
Set when a queue entry was failed after repeated server-create failures. Explains why the match never formed; the lobby is returned to waiting so the player can retry.