Teams
Update team sprints
Applies a strict merge-patch to team sprints. Omit sprintIds to keep current sprints, or provide an empty list to clear all sprints.
PATCH
/
v1
/
public
/
teams
/
{id}
/
sprints
Update team sprints
curl --request PATCH \
--url https://api.agile-tools.io/v1/public/teams/{id}/sprints \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"sprintIds": [
"c2d6d7e8-9f10-4a2d-8d09-f9d01b874abc",
"7b17fb11-9e32-4f8f-9adf-6ee935aa0931"
]
}
'import requests
url = "https://api.agile-tools.io/v1/public/teams/{id}/sprints"
payload = { "sprintIds": ["c2d6d7e8-9f10-4a2d-8d09-f9d01b874abc", "7b17fb11-9e32-4f8f-9adf-6ee935aa0931"] }
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({
sprintIds: ['c2d6d7e8-9f10-4a2d-8d09-f9d01b874abc', '7b17fb11-9e32-4f8f-9adf-6ee935aa0931']
})
};
fetch('https://api.agile-tools.io/v1/public/teams/{id}/sprints', 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}/sprints",
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([
'sprintIds' => [
'c2d6d7e8-9f10-4a2d-8d09-f9d01b874abc',
'7b17fb11-9e32-4f8f-9adf-6ee935aa0931'
]
]),
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}/sprints"
payload := strings.NewReader("{\n \"sprintIds\": [\n \"c2d6d7e8-9f10-4a2d-8d09-f9d01b874abc\",\n \"7b17fb11-9e32-4f8f-9adf-6ee935aa0931\"\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}/sprints")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"sprintIds\": [\n \"c2d6d7e8-9f10-4a2d-8d09-f9d01b874abc\",\n \"7b17fb11-9e32-4f8f-9adf-6ee935aa0931\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.agile-tools.io/v1/public/teams/{id}/sprints")
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 \"sprintIds\": [\n \"c2d6d7e8-9f10-4a2d-8d09-f9d01b874abc\",\n \"7b17fb11-9e32-4f8f-9adf-6ee935aa0931\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"data": {
"id": "6b9a8462-e58f-4697-a725-f55bb86e3b2d",
"sprintIds": [
"7b17fb11-9e32-4f8f-9adf-6ee935aa0931"
],
"sprintNames": [
"Sprint 42"
],
"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 sprints. Omit sprintIds to keep current sprints or use an empty list to clear all sprints.
Sprint ids in the authenticated organization. Omit to keep current sprints or provide an empty list to clear all sprints.
⌘I
Update team sprints
curl --request PATCH \
--url https://api.agile-tools.io/v1/public/teams/{id}/sprints \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"sprintIds": [
"c2d6d7e8-9f10-4a2d-8d09-f9d01b874abc",
"7b17fb11-9e32-4f8f-9adf-6ee935aa0931"
]
}
'import requests
url = "https://api.agile-tools.io/v1/public/teams/{id}/sprints"
payload = { "sprintIds": ["c2d6d7e8-9f10-4a2d-8d09-f9d01b874abc", "7b17fb11-9e32-4f8f-9adf-6ee935aa0931"] }
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({
sprintIds: ['c2d6d7e8-9f10-4a2d-8d09-f9d01b874abc', '7b17fb11-9e32-4f8f-9adf-6ee935aa0931']
})
};
fetch('https://api.agile-tools.io/v1/public/teams/{id}/sprints', 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}/sprints",
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([
'sprintIds' => [
'c2d6d7e8-9f10-4a2d-8d09-f9d01b874abc',
'7b17fb11-9e32-4f8f-9adf-6ee935aa0931'
]
]),
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}/sprints"
payload := strings.NewReader("{\n \"sprintIds\": [\n \"c2d6d7e8-9f10-4a2d-8d09-f9d01b874abc\",\n \"7b17fb11-9e32-4f8f-9adf-6ee935aa0931\"\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}/sprints")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"sprintIds\": [\n \"c2d6d7e8-9f10-4a2d-8d09-f9d01b874abc\",\n \"7b17fb11-9e32-4f8f-9adf-6ee935aa0931\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.agile-tools.io/v1/public/teams/{id}/sprints")
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 \"sprintIds\": [\n \"c2d6d7e8-9f10-4a2d-8d09-f9d01b874abc\",\n \"7b17fb11-9e32-4f8f-9adf-6ee935aa0931\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"data": {
"id": "6b9a8462-e58f-4697-a725-f55bb86e3b2d",
"sprintIds": [
"7b17fb11-9e32-4f8f-9adf-6ee935aa0931"
],
"sprintNames": [
"Sprint 42"
],
"deleted": false
},
"meta": {
"requestId": "f056699e-497d-41d9-a877-d7c862de6587",
"timestamp": "2026-04-03T12:08:00Z"
}
}
