curl --request POST \
--url https://api.gominerva.com/tenant-config/v1/profile-groups \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"name": "High Risk",
"description": "Enhanced diligence customers requiring the most frequent monitoring.",
"priority": 100,
"monitoringFeedFrequencies": {
"Sanctions": "deltas",
"PEP": "weekly",
"News": "weekly"
}
}
'import requests
url = "https://api.gominerva.com/tenant-config/v1/profile-groups"
payload = {
"name": "High Risk",
"description": "Enhanced diligence customers requiring the most frequent monitoring.",
"priority": 100,
"monitoringFeedFrequencies": {
"Sanctions": "deltas",
"PEP": "weekly",
"News": "weekly"
}
}
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: 'High Risk',
description: 'Enhanced diligence customers requiring the most frequent monitoring.',
priority: 100,
monitoringFeedFrequencies: {Sanctions: 'deltas', PEP: 'weekly', News: 'weekly'}
})
};
fetch('https://api.gominerva.com/tenant-config/v1/profile-groups', 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.gominerva.com/tenant-config/v1/profile-groups",
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' => 'High Risk',
'description' => 'Enhanced diligence customers requiring the most frequent monitoring.',
'priority' => 100,
'monitoringFeedFrequencies' => [
'Sanctions' => 'deltas',
'PEP' => 'weekly',
'News' => 'weekly'
]
]),
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.gominerva.com/tenant-config/v1/profile-groups"
payload := strings.NewReader("{\n \"name\": \"High Risk\",\n \"description\": \"Enhanced diligence customers requiring the most frequent monitoring.\",\n \"priority\": 100,\n \"monitoringFeedFrequencies\": {\n \"Sanctions\": \"deltas\",\n \"PEP\": \"weekly\",\n \"News\": \"weekly\"\n }\n}")
req, _ := http.NewRequest("POST", 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.post("https://api.gominerva.com/tenant-config/v1/profile-groups")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"High Risk\",\n \"description\": \"Enhanced diligence customers requiring the most frequent monitoring.\",\n \"priority\": 100,\n \"monitoringFeedFrequencies\": {\n \"Sanctions\": \"deltas\",\n \"PEP\": \"weekly\",\n \"News\": \"weekly\"\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.gominerva.com/tenant-config/v1/profile-groups")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"High Risk\",\n \"description\": \"Enhanced diligence customers requiring the most frequent monitoring.\",\n \"priority\": 100,\n \"monitoringFeedFrequencies\": {\n \"Sanctions\": \"deltas\",\n \"PEP\": \"weekly\",\n \"News\": \"weekly\"\n }\n}"
response = http.request(request)
puts response.read_body{
"message": "Profile Group Retrieved Successfully",
"result": {
"profileGroup": {
"id": "665f0d4c2d2f7c2b2f2f2f31",
"tenantId": "tenant_123",
"workspaceId": "workspace_live",
"key": "high-risk",
"name": "High Risk",
"priority": 100,
"archived": false,
"_v": 1,
"created": "2026-05-30T14:20:00Z",
"updatedAt": "2026-05-30T14:25:00Z",
"description": "Enhanced diligence customers requiring the most frequent monitoring.",
"archivedAt": null,
"monitoringFeedFrequencies": {
"Sanctions": "daily",
"PEP": "monthly",
"News": "monthly"
}
}
}
}Create Profile Group
Create a workspace-scoped profile group for dynamic customer segmentation. The API key determines the tenant and workspace; profile group IDs and keys are generated by Minerva.
curl --request POST \
--url https://api.gominerva.com/tenant-config/v1/profile-groups \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"name": "High Risk",
"description": "Enhanced diligence customers requiring the most frequent monitoring.",
"priority": 100,
"monitoringFeedFrequencies": {
"Sanctions": "deltas",
"PEP": "weekly",
"News": "weekly"
}
}
'import requests
url = "https://api.gominerva.com/tenant-config/v1/profile-groups"
payload = {
"name": "High Risk",
"description": "Enhanced diligence customers requiring the most frequent monitoring.",
"priority": 100,
"monitoringFeedFrequencies": {
"Sanctions": "deltas",
"PEP": "weekly",
"News": "weekly"
}
}
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: 'High Risk',
description: 'Enhanced diligence customers requiring the most frequent monitoring.',
priority: 100,
monitoringFeedFrequencies: {Sanctions: 'deltas', PEP: 'weekly', News: 'weekly'}
})
};
fetch('https://api.gominerva.com/tenant-config/v1/profile-groups', 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.gominerva.com/tenant-config/v1/profile-groups",
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' => 'High Risk',
'description' => 'Enhanced diligence customers requiring the most frequent monitoring.',
'priority' => 100,
'monitoringFeedFrequencies' => [
'Sanctions' => 'deltas',
'PEP' => 'weekly',
'News' => 'weekly'
]
]),
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.gominerva.com/tenant-config/v1/profile-groups"
payload := strings.NewReader("{\n \"name\": \"High Risk\",\n \"description\": \"Enhanced diligence customers requiring the most frequent monitoring.\",\n \"priority\": 100,\n \"monitoringFeedFrequencies\": {\n \"Sanctions\": \"deltas\",\n \"PEP\": \"weekly\",\n \"News\": \"weekly\"\n }\n}")
req, _ := http.NewRequest("POST", 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.post("https://api.gominerva.com/tenant-config/v1/profile-groups")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"High Risk\",\n \"description\": \"Enhanced diligence customers requiring the most frequent monitoring.\",\n \"priority\": 100,\n \"monitoringFeedFrequencies\": {\n \"Sanctions\": \"deltas\",\n \"PEP\": \"weekly\",\n \"News\": \"weekly\"\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.gominerva.com/tenant-config/v1/profile-groups")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"High Risk\",\n \"description\": \"Enhanced diligence customers requiring the most frequent monitoring.\",\n \"priority\": 100,\n \"monitoringFeedFrequencies\": {\n \"Sanctions\": \"deltas\",\n \"PEP\": \"weekly\",\n \"News\": \"weekly\"\n }\n}"
response = http.request(request)
puts response.read_body{
"message": "Profile Group Retrieved Successfully",
"result": {
"profileGroup": {
"id": "665f0d4c2d2f7c2b2f2f2f31",
"tenantId": "tenant_123",
"workspaceId": "workspace_live",
"key": "high-risk",
"name": "High Risk",
"priority": 100,
"archived": false,
"_v": 1,
"created": "2026-05-30T14:20:00Z",
"updatedAt": "2026-05-30T14:25:00Z",
"description": "Enhanced diligence customers requiring the most frequent monitoring.",
"archivedAt": null,
"monitoringFeedFrequencies": {
"Sanctions": "daily",
"PEP": "monthly",
"News": "monthly"
}
}
}
}Authorizations
The Minerva API key used for this integration. Manage API keys in the Minerva dashboard under Administration > Developers.
Body
Profile group creation request
Customer-facing profile group label.
"High Risk"
Non-negative priority used to resolve profiles assigned to multiple groups. Active groups in the same workspace must use unique priorities.
x >= 0100
Optional description of the population this group represents.
"Enhanced diligence customers requiring the most frequent monitoring."
Optional monitoring cadence overrides for profiles assigned to this group. Omitted feed keys inherit the workspace-level cadence.
Show child attributes
Show child attributes
{
"Sanctions": "daily",
"PEP": "monthly",
"News": "monthly"
}