curl --request POST \
--url https://api.primeintellect.ai/api/v1/slurm-clusters/{team_id}/{job_id}/members \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"username": "<string>",
"sshAuthorizedKeys": [
"<string>"
],
"linkedUserId": "<string>"
}
'import requests
url = "https://api.primeintellect.ai/api/v1/slurm-clusters/{team_id}/{job_id}/members"
payload = {
"username": "<string>",
"sshAuthorizedKeys": ["<string>"],
"linkedUserId": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
username: '<string>',
sshAuthorizedKeys: ['<string>'],
linkedUserId: '<string>'
})
};
fetch('https://api.primeintellect.ai/api/v1/slurm-clusters/{team_id}/{job_id}/members', 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.primeintellect.ai/api/v1/slurm-clusters/{team_id}/{job_id}/members",
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([
'username' => '<string>',
'sshAuthorizedKeys' => [
'<string>'
],
'linkedUserId' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$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.primeintellect.ai/api/v1/slurm-clusters/{team_id}/{job_id}/members"
payload := strings.NewReader("{\n \"username\": \"<string>\",\n \"sshAuthorizedKeys\": [\n \"<string>\"\n ],\n \"linkedUserId\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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.primeintellect.ai/api/v1/slurm-clusters/{team_id}/{job_id}/members")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"username\": \"<string>\",\n \"sshAuthorizedKeys\": [\n \"<string>\"\n ],\n \"linkedUserId\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.primeintellect.ai/api/v1/slurm-clusters/{team_id}/{job_id}/members")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"username\": \"<string>\",\n \"sshAuthorizedKeys\": [\n \"<string>\"\n ],\n \"linkedUserId\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"username": "<string>",
"uid": 123,
"sshAuthorizedKeys": [
"<string>"
],
"sudo": true,
"status": "<string>",
"linkedUserId": "<string>",
"linkedUserName": "<string>",
"linkedUserEmail": "<string>"
}{
"errors": [
{
"param": "<string>",
"details": "<string>"
}
]
}Add Member
curl --request POST \
--url https://api.primeintellect.ai/api/v1/slurm-clusters/{team_id}/{job_id}/members \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"username": "<string>",
"sshAuthorizedKeys": [
"<string>"
],
"linkedUserId": "<string>"
}
'import requests
url = "https://api.primeintellect.ai/api/v1/slurm-clusters/{team_id}/{job_id}/members"
payload = {
"username": "<string>",
"sshAuthorizedKeys": ["<string>"],
"linkedUserId": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
username: '<string>',
sshAuthorizedKeys: ['<string>'],
linkedUserId: '<string>'
})
};
fetch('https://api.primeintellect.ai/api/v1/slurm-clusters/{team_id}/{job_id}/members', 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.primeintellect.ai/api/v1/slurm-clusters/{team_id}/{job_id}/members",
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([
'username' => '<string>',
'sshAuthorizedKeys' => [
'<string>'
],
'linkedUserId' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$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.primeintellect.ai/api/v1/slurm-clusters/{team_id}/{job_id}/members"
payload := strings.NewReader("{\n \"username\": \"<string>\",\n \"sshAuthorizedKeys\": [\n \"<string>\"\n ],\n \"linkedUserId\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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.primeintellect.ai/api/v1/slurm-clusters/{team_id}/{job_id}/members")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"username\": \"<string>\",\n \"sshAuthorizedKeys\": [\n \"<string>\"\n ],\n \"linkedUserId\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.primeintellect.ai/api/v1/slurm-clusters/{team_id}/{job_id}/members")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"username\": \"<string>\",\n \"sshAuthorizedKeys\": [\n \"<string>\"\n ],\n \"linkedUserId\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"username": "<string>",
"uid": 123,
"sshAuthorizedKeys": [
"<string>"
],
"sudo": true,
"status": "<string>",
"linkedUserId": "<string>",
"linkedUserName": "<string>",
"linkedUserEmail": "<string>"
}{
"errors": [
{
"param": "<string>",
"details": "<string>"
}
]
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Body
Response
Successful Response
Customer-facing member roster row.
Includes uid and ssh_authorized_keys deliberately, unlike
frontierCluster.ts's teamSlurmMemberSchema.omit(...) — neither is
secret (an SSH public key is meant to be shared; the POSIX uid is
an internal identifier, not a credential), and both are genuinely
useful for troubleshooting ("which key is this teammate's login
actually using", "does this uid match the file ownership I'm
seeing"). The dashboard's redaction was about what its roster
component happened to render, not a security boundary — this is a
deliberate, considered divergence from strict TS parity, not an
oversight.
There is no per-member group id anywhere in this system's data
model to expose alongside uid — group assignment, if any, is an
internal detail of lldap/the ldap-reconciler that never reaches
ClusterMember/ClusterMemberOut.
Was this page helpful?