Teams
Update team members
Applies a strict merge-patch to team members. Omit memberIds to keep current members, or provide an empty list to clear all members.
PATCH
/
v1
/
public
/
teams
/
{id}
/
members
Update team members
curl --request PATCH \
--url https://api.agile-tools.io/v1/public/teams/{id}/members \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"memberIds": [
"318a0ed7-7d0f-45cc-b09e-a3c22cccb6ca",
"2f6db7d4-6e6c-4d4f-90f2-cbaac8441f7b"
]
}
'import requests
url = "https://api.agile-tools.io/v1/public/teams/{id}/members"
payload = { "memberIds": ["318a0ed7-7d0f-45cc-b09e-a3c22cccb6ca", "2f6db7d4-6e6c-4d4f-90f2-cbaac8441f7b"] }
headers = {
"X-API-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {'X-API-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
memberIds: ['318a0ed7-7d0f-45cc-b09e-a3c22cccb6ca', '2f6db7d4-6e6c-4d4f-90f2-cbaac8441f7b']
})
};
fetch('https://api.agile-tools.io/v1/public/teams/{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.agile-tools.io/v1/public/teams/{id}/members",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'memberIds' => [
'318a0ed7-7d0f-45cc-b09e-a3c22cccb6ca',
'2f6db7d4-6e6c-4d4f-90f2-cbaac8441f7b'
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-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"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.agile-tools.io/v1/public/teams/{id}/members"
payload := strings.NewReader("{\n \"memberIds\": [\n \"318a0ed7-7d0f-45cc-b09e-a3c22cccb6ca\",\n \"2f6db7d4-6e6c-4d4f-90f2-cbaac8441f7b\"\n ]\n}")
req, _ := http.NewRequest("PATCH", url, payload)
req.Header.Add("X-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.patch("https://api.agile-tools.io/v1/public/teams/{id}/members")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"memberIds\": [\n \"318a0ed7-7d0f-45cc-b09e-a3c22cccb6ca\",\n \"2f6db7d4-6e6c-4d4f-90f2-cbaac8441f7b\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.agile-tools.io/v1/public/teams/{id}/members")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["X-API-Key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"memberIds\": [\n \"318a0ed7-7d0f-45cc-b09e-a3c22cccb6ca\",\n \"2f6db7d4-6e6c-4d4f-90f2-cbaac8441f7b\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"data": {
"id": "6b9a8462-e58f-4697-a725-f55bb86e3b2d",
"memberIds": [
"318a0ed7-7d0f-45cc-b09e-a3c22cccb6ca"
],
"memberNames": [
"Daphne Anderson"
],
"deleted": false
},
"meta": {
"requestId": "f056699e-497d-41d9-a877-d7c862de6587",
"timestamp": "2026-04-03T12:08:00Z"
}
}Authorizations
Owner-typed API key (ORGANIZATION, PERSON, VALUE_UNIT). Manage org-scoped lifecycle with /v1/public-api-keys; cross-org governance is restricted to /v1/sys/public-api-keys.
Path Parameters
Body
application/json
Merge-patch payload for team members. Omit memberIds to keep current members or use an empty list to clear all members.
Member person ids in the authenticated organization. Omit to keep current members or provide an empty list to clear all members.
⌘I
Update team members
curl --request PATCH \
--url https://api.agile-tools.io/v1/public/teams/{id}/members \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"memberIds": [
"318a0ed7-7d0f-45cc-b09e-a3c22cccb6ca",
"2f6db7d4-6e6c-4d4f-90f2-cbaac8441f7b"
]
}
'import requests
url = "https://api.agile-tools.io/v1/public/teams/{id}/members"
payload = { "memberIds": ["318a0ed7-7d0f-45cc-b09e-a3c22cccb6ca", "2f6db7d4-6e6c-4d4f-90f2-cbaac8441f7b"] }
headers = {
"X-API-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {'X-API-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
memberIds: ['318a0ed7-7d0f-45cc-b09e-a3c22cccb6ca', '2f6db7d4-6e6c-4d4f-90f2-cbaac8441f7b']
})
};
fetch('https://api.agile-tools.io/v1/public/teams/{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.agile-tools.io/v1/public/teams/{id}/members",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'memberIds' => [
'318a0ed7-7d0f-45cc-b09e-a3c22cccb6ca',
'2f6db7d4-6e6c-4d4f-90f2-cbaac8441f7b'
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-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"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.agile-tools.io/v1/public/teams/{id}/members"
payload := strings.NewReader("{\n \"memberIds\": [\n \"318a0ed7-7d0f-45cc-b09e-a3c22cccb6ca\",\n \"2f6db7d4-6e6c-4d4f-90f2-cbaac8441f7b\"\n ]\n}")
req, _ := http.NewRequest("PATCH", url, payload)
req.Header.Add("X-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.patch("https://api.agile-tools.io/v1/public/teams/{id}/members")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"memberIds\": [\n \"318a0ed7-7d0f-45cc-b09e-a3c22cccb6ca\",\n \"2f6db7d4-6e6c-4d4f-90f2-cbaac8441f7b\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.agile-tools.io/v1/public/teams/{id}/members")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["X-API-Key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"memberIds\": [\n \"318a0ed7-7d0f-45cc-b09e-a3c22cccb6ca\",\n \"2f6db7d4-6e6c-4d4f-90f2-cbaac8441f7b\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"data": {
"id": "6b9a8462-e58f-4697-a725-f55bb86e3b2d",
"memberIds": [
"318a0ed7-7d0f-45cc-b09e-a3c22cccb6ca"
],
"memberNames": [
"Daphne Anderson"
],
"deleted": false
},
"meta": {
"requestId": "f056699e-497d-41d9-a877-d7c862de6587",
"timestamp": "2026-04-03T12:08:00Z"
}
}
