List members of a group — one endpoint for every type, so consumers never
branch. Rows share the {profile_id, record_type, record} shape:
curl --request GET \
--url https://api.{tenant}.getomneo.com/api/v3/groups/definitions/{group}/profilesimport requests
url = "https://api.{tenant}.getomneo.com/api/v3/groups/definitions/{group}/profiles"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.{tenant}.getomneo.com/api/v3/groups/definitions/{group}/profiles', 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.{tenant}.getomneo.com/api/v3/groups/definitions/{group}/profiles",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$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.{tenant}.getomneo.com/api/v3/groups/definitions/{group}/profiles"
req, _ := http.NewRequest("GET", url, nil)
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.{tenant}.getomneo.com/api/v3/groups/definitions/{group}/profiles")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.{tenant}.getomneo.com/api/v3/groups/definitions/{group}/profiles")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body{
"data": [
{
"profile_id": "<string>",
"record_type": "group_profile",
"record": {
"id": "<string>",
"added_at": "<string>",
"expires_at": "<string>",
"removed_at": "<string>",
"removed_reason": "<string>",
"added_by_profile_id": "<string>",
"removed_by_profile_id": "<string>",
"source_type": "<string>",
"source_id": "<string>",
"meta": "<string>"
}
}
]
}{
"message": "<string>"
}{
"message": "<string>"
}{
"message": "<string>"
}Group Profile
List members of a group — one endpoint for every type, so consumers never branch. Rows share the {profile_id, record_type, record} shape:
static → group_profiles rows (active by default; ?include_removed=1 for history) dynamic → the latest COMPLETED snapshot’s matched work items (empty until a snapshot completes — snapshots stay internal) favourite → active connections across all owners (one row per owner-member edge)
GET
/
v3
/
groups
/
definitions
/
{group}
/
profiles
List members of a group — one endpoint for every type, so consumers never
branch. Rows share the {profile_id, record_type, record} shape:
curl --request GET \
--url https://api.{tenant}.getomneo.com/api/v3/groups/definitions/{group}/profilesimport requests
url = "https://api.{tenant}.getomneo.com/api/v3/groups/definitions/{group}/profiles"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.{tenant}.getomneo.com/api/v3/groups/definitions/{group}/profiles', 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.{tenant}.getomneo.com/api/v3/groups/definitions/{group}/profiles",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$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.{tenant}.getomneo.com/api/v3/groups/definitions/{group}/profiles"
req, _ := http.NewRequest("GET", url, nil)
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.{tenant}.getomneo.com/api/v3/groups/definitions/{group}/profiles")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.{tenant}.getomneo.com/api/v3/groups/definitions/{group}/profiles")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body{
"data": [
{
"profile_id": "<string>",
"record_type": "group_profile",
"record": {
"id": "<string>",
"added_at": "<string>",
"expires_at": "<string>",
"removed_at": "<string>",
"removed_reason": "<string>",
"added_by_profile_id": "<string>",
"removed_by_profile_id": "<string>",
"source_type": "<string>",
"source_id": "<string>",
"meta": "<string>"
}
}
]
}{
"message": "<string>"
}{
"message": "<string>"
}{
"message": "<string>"
}Filtering
This endpoint accepts
filter and sort query parameters. See Filtering, sorting, and search for paging and for the shared search_with, custom_field, and json_contains filters.GroupProfile, Connection, GroupSnapshotProfile, and an attribute only filters the record type that declares it.
Examples
curl -X GET "https://api.[tenant].getomneo.com/api/v3/groups/definitions/{group}/profiles?filter[external_id]={external_id}" \
-H "Authorization: Bearer ${TOKEN}"
curl -X GET "https://api.[tenant].getomneo.com/api/v3/groups/definitions/{group}/profiles?filter[added_at][gte]=2026-01-01&filter[added_at][lt]=2026-02-01" \
-H "Authorization: Bearer ${TOKEN}"
Operators
| Operator | Meaning | Example |
|---|---|---|
eq | Equal to. Applied when you give no operator. | filter[external_id]={external_id} |
ne | Not equal to. | filter[external_id][ne]={external_id} |
gt | Greater than. | filter[added_at][gt]=2026-01-01 |
gte | Greater than or equal to. | filter[added_at][gte]=2026-01-01 |
lt | Less than. | filter[added_at][lt]=2026-02-01 |
lte | Less than or equal to. | filter[added_at][lte]=2026-02-01 |
in | Matches any value in a comma separated list. | filter[id][in]=123,456 |
not_in | Excludes every value in a comma separated list. | filter[id][not_in]=123,456 |
nullable | 1 returns records where the attribute is empty. Any other value returns records where it is set. | filter[expires_at][nullable]=1 |
not_has operator applies to related attributes, which this endpoint does not have.
Filter attributes
| Attribute | Attribute | Attribute |
|---|---|---|
id | group_definition_id | profile_id |
added_at | expires_at | removed_at |
removed_reason | source_type | source_id |
added_by_profile_id | removed_by_profile_id | name |
description | status | connected_at |
disconnected_at | disconnected_by | connection_definition_id |
is_published | is_default | is_archived |
is_invalid | is_primary | sort_order |
external_id | external_id_type | meta |
notes | group_snapshot_id | processing_status |
result_status | excluded_by_group_rule_id |
sort key, for example ?sort=-added_at for descending order.