Create a content group
curl --request POST \
--url https://eu.phrase.com/control-hub/api/v1/public/groups \
--header 'Content-Type: application/json' \
--data '
{
"name": "<string>",
"description": "<string>"
}
'import requests
url = "https://eu.phrase.com/control-hub/api/v1/public/groups"
payload = {
"name": "<string>",
"description": "<string>"
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({name: '<string>', description: '<string>'})
};
fetch('https://eu.phrase.com/control-hub/api/v1/public/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://eu.phrase.com/control-hub/api/v1/public/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' => '<string>',
'description' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json"
],
]);
$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://eu.phrase.com/control-hub/api/v1/public/groups"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"description\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
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://eu.phrase.com/control-hub/api/v1/public/groups")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\",\n \"description\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://eu.phrase.com/control-hub/api/v1/public/groups")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"<string>\",\n \"description\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"id": "<string>",
"name": "<string>",
"createdAt": "<string>",
"updatedAt": "<string>",
"groupType": "SYSTEM",
"description": "<string>"
}{
"code": "NotBlank/NotFound/Error/...",
"message": "Organization UID cannot be null",
"args": {},
"errors": [
{
"message": "<string>",
"code": "<string>",
"args": {}
}
]
}{
"code": "NotBlank/NotFound/Error/...",
"message": "Organization UID cannot be null",
"args": {},
"errors": [
{
"message": "<string>",
"code": "<string>",
"args": {}
}
]
}{
"code": "NotBlank/NotFound/Error/...",
"message": "Organization UID cannot be null",
"args": {},
"errors": [
{
"message": "<string>",
"code": "<string>",
"args": {}
}
]
}{
"code": "NotBlank/NotFound/Error/...",
"message": "Organization UID cannot be null",
"args": {},
"errors": [
{
"message": "<string>",
"code": "<string>",
"args": {}
}
]
}Groups
Create a content group
POST
/
api
/
v1
/
public
/
groups
Create a content group
curl --request POST \
--url https://eu.phrase.com/control-hub/api/v1/public/groups \
--header 'Content-Type: application/json' \
--data '
{
"name": "<string>",
"description": "<string>"
}
'import requests
url = "https://eu.phrase.com/control-hub/api/v1/public/groups"
payload = {
"name": "<string>",
"description": "<string>"
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({name: '<string>', description: '<string>'})
};
fetch('https://eu.phrase.com/control-hub/api/v1/public/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://eu.phrase.com/control-hub/api/v1/public/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' => '<string>',
'description' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json"
],
]);
$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://eu.phrase.com/control-hub/api/v1/public/groups"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"description\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
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://eu.phrase.com/control-hub/api/v1/public/groups")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\",\n \"description\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://eu.phrase.com/control-hub/api/v1/public/groups")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"<string>\",\n \"description\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"id": "<string>",
"name": "<string>",
"createdAt": "<string>",
"updatedAt": "<string>",
"groupType": "SYSTEM",
"description": "<string>"
}{
"code": "NotBlank/NotFound/Error/...",
"message": "Organization UID cannot be null",
"args": {},
"errors": [
{
"message": "<string>",
"code": "<string>",
"args": {}
}
]
}{
"code": "NotBlank/NotFound/Error/...",
"message": "Organization UID cannot be null",
"args": {},
"errors": [
{
"message": "<string>",
"code": "<string>",
"args": {}
}
]
}{
"code": "NotBlank/NotFound/Error/...",
"message": "Organization UID cannot be null",
"args": {},
"errors": [
{
"message": "<string>",
"code": "<string>",
"args": {}
}
]
}{
"code": "NotBlank/NotFound/Error/...",
"message": "Organization UID cannot be null",
"args": {},
"errors": [
{
"message": "<string>",
"code": "<string>",
"args": {}
}
]
}Body
application/json
Response
Content group created
Unique identifier of the content group
Content group name (not required to be unique within the organization)
When the content group was created — timestamp (ISO-8601 format)
When the content group was last updated — timestamp (ISO-8601 format)
Whether the group is customer-created (USER) or a platform-managed system group (SYSTEM). Every organization has exactly one SYSTEM group, representing "applies to all content groups." SYSTEM groups are created automatically and cannot be created, updated, or deleted via the API — only USER groups can. Server-determined, never accepted on create/update requests.
Available options:
SYSTEM, USER Optional free-text description
Was this page helpful?
⌘I