curl --request GET \
--url https://api.computeflow.cloud/api/v3/servers/{instance_id}/roster \
--header 'api-key: <api-key>'import requests
url = "https://api.computeflow.cloud/api/v3/servers/{instance_id}/roster"
headers = {"api-key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'api-key': '<api-key>'}};
fetch('https://api.computeflow.cloud/api/v3/servers/{instance_id}/roster', 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/servers/{instance_id}/roster",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"api-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.computeflow.cloud/api/v3/servers/{instance_id}/roster"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("api-key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.computeflow.cloud/api/v3/servers/{instance_id}/roster")
.header("api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.computeflow.cloud/api/v3/servers/{instance_id}/roster")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["api-key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"match_id": "<string>",
"instance_id": "<string>",
"status": "in_game",
"capacity": 123,
"current_players": 123,
"backfill_open": true,
"backfill_deadline": "2023-11-07T05:31:56Z",
"roster_version": 123,
"teams": {},
"roster": [
{
"playerId": "<string>",
"team": "<string>",
"lobbyId": "<string>",
"joinedAt": "2023-11-07T05:31:56Z"
}
]
}{
"error": "<string>",
"status": 123,
"detail": "<string>"
}Get the authoritative match roster
Returns the authoritative roster of players admitted to the match backing this server. Game servers call this (with their server API key and their own INSTANCE_ID) to know exactly which players to admit — this is the source of truth for admission and fixes reconnect / “denied by proxy” edge cases.
The response includes per-team slots, total capacity, current_players, backfill state, and a monotonically increasing roster_version. Poll roster_version cheaply to detect roster changes (e.g., when a backfill joiner is admitted).
Only available for servers that back a match (created through matchmaking/lobbies).
curl --request GET \
--url https://api.computeflow.cloud/api/v3/servers/{instance_id}/roster \
--header 'api-key: <api-key>'import requests
url = "https://api.computeflow.cloud/api/v3/servers/{instance_id}/roster"
headers = {"api-key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'api-key': '<api-key>'}};
fetch('https://api.computeflow.cloud/api/v3/servers/{instance_id}/roster', 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/servers/{instance_id}/roster",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"api-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.computeflow.cloud/api/v3/servers/{instance_id}/roster"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("api-key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.computeflow.cloud/api/v3/servers/{instance_id}/roster")
.header("api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.computeflow.cloud/api/v3/servers/{instance_id}/roster")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["api-key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"match_id": "<string>",
"instance_id": "<string>",
"status": "in_game",
"capacity": 123,
"current_players": 123,
"backfill_open": true,
"backfill_deadline": "2023-11-07T05:31:56Z",
"roster_version": 123,
"teams": {},
"roster": [
{
"playerId": "<string>",
"team": "<string>",
"lobbyId": "<string>",
"joinedAt": "2023-11-07T05:31:56Z"
}
]
}{
"error": "<string>",
"status": 123,
"detail": "<string>"
}Response
Authoritative roster for the match backing this server.
Authoritative roster for a running match. Game servers poll this (by instance_id, with a server API key) to know which players to admit.