curl --request POST \
--url https://api.select.dev/v2/usage-group-sets \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'x-tenant-id: <x-tenant-id>' \
--data '
{
"name": "<string>",
"order": 1,
"team_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"public": false
}
'import requests
url = "https://api.select.dev/v2/usage-group-sets"
payload = {
"name": "<string>",
"order": 1,
"team_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"public": False
}
headers = {
"x-tenant-id": "<x-tenant-id>",
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'x-tenant-id': '<x-tenant-id>',
Authorization: 'Bearer <token>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
name: '<string>',
order: 1,
team_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
public: false
})
};
fetch('https://api.select.dev/v2/usage-group-sets', 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.select.dev/v2/usage-group-sets",
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([
'name' => '<string>',
'order' => 1,
'team_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'public' => false
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json",
"x-tenant-id: <x-tenant-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.select.dev/v2/usage-group-sets"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"order\": 1,\n \"team_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"public\": false\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-tenant-id", "<x-tenant-id>")
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.select.dev/v2/usage-group-sets")
.header("x-tenant-id", "<x-tenant-id>")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\",\n \"order\": 1,\n \"team_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"public\": false\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.select.dev/v2/usage-group-sets")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-tenant-id"] = '<x-tenant-id>'
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"<string>\",\n \"order\": 1,\n \"team_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"public\": false\n}"
response = http.request(request)
puts response.read_body{
"name": "<string>",
"order": 1,
"id": "<string>",
"etag": "<string>",
"version": 123,
"insights_sync_pending": true,
"team_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"public": false
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}Create a usage group set
curl --request POST \
--url https://api.select.dev/v2/usage-group-sets \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'x-tenant-id: <x-tenant-id>' \
--data '
{
"name": "<string>",
"order": 1,
"team_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"public": false
}
'import requests
url = "https://api.select.dev/v2/usage-group-sets"
payload = {
"name": "<string>",
"order": 1,
"team_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"public": False
}
headers = {
"x-tenant-id": "<x-tenant-id>",
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'x-tenant-id': '<x-tenant-id>',
Authorization: 'Bearer <token>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
name: '<string>',
order: 1,
team_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
public: false
})
};
fetch('https://api.select.dev/v2/usage-group-sets', 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.select.dev/v2/usage-group-sets",
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([
'name' => '<string>',
'order' => 1,
'team_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'public' => false
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json",
"x-tenant-id: <x-tenant-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.select.dev/v2/usage-group-sets"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"order\": 1,\n \"team_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"public\": false\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-tenant-id", "<x-tenant-id>")
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.select.dev/v2/usage-group-sets")
.header("x-tenant-id", "<x-tenant-id>")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\",\n \"order\": 1,\n \"team_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"public\": false\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.select.dev/v2/usage-group-sets")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-tenant-id"] = '<x-tenant-id>'
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"<string>\",\n \"order\": 1,\n \"team_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"public\": false\n}"
response = http.request(request)
puts response.read_body{
"name": "<string>",
"order": 1,
"id": "<string>",
"etag": "<string>",
"version": 123,
"insights_sync_pending": true,
"team_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"public": false
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}Authorizations
Organization API key (sl_…).
Headers
The organization ID the request is scoped to.
Body
Name of the usage group set. Must be less than 200 characters, and unique within the organization, ignoring case and surrounding whitespace.
199Display order; lower values appear first.
x >= 0Whether the set is visible to all org members for filtering.
Response
Successful Response
Name of the usage group set. Must be less than 200 characters, and unique within the organization, ignoring case and surrounding whitespace.
199Display order; lower values appear first.
x >= 0The unique identifier of the usage group set.
Opaque strong ETag for optimistic concurrency.
Number of committed versions (snapshots). Increment it by one in a PATCH to snapshot the current groups as a new version; ordinary group edits mutate the current version in place and leave it unchanged.
Whether this set changed after the nightly job last synced usage groups onto insights — insight rows may not reflect the current definitions until the next sync (up to ~36 hours).
Whether the set is visible to all org members for filtering.

