curl --request POST \
--url https://api.vomo.org/v1/groups \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "Morning Crew",
"description": "A group for the morning crew to organize",
"member_moniker": "Member",
"subgroup_moniker": "Subgroup",
"created_by_user_id": "1",
"parent_id": "1",
"members": [
"1"
]
}
'const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: 'Morning Crew',
description: 'A group for the morning crew to organize',
member_moniker: 'Member',
subgroup_moniker: 'Subgroup',
created_by_user_id: '1',
parent_id: '1',
members: ['1']
})
};
fetch('https://api.vomo.org/v1/groups', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.vomo.org/v1/groups"
payload = {
"name": "Morning Crew",
"description": "A group for the morning crew to organize",
"member_moniker": "Member",
"subgroup_moniker": "Subgroup",
"created_by_user_id": "1",
"parent_id": "1",
"members": ["1"]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)using RestSharp;
var options = new RestClientOptions("https://api.vomo.org/v1/groups");
var client = new RestClient(options);
var request = new RestRequest("");
request.AddHeader("Authorization", "Bearer <token>");
request.AddJsonBody("{\n \"name\": \"Morning Crew\",\n \"description\": \"A group for the morning crew to organize\",\n \"member_moniker\": \"Member\",\n \"subgroup_moniker\": \"Subgroup\",\n \"created_by_user_id\": \"1\",\n \"parent_id\": \"1\",\n \"members\": [\n \"1\"\n ]\n}", false);
var response = await client.PostAsync(request);
Console.WriteLine("{0}", response.Content);
<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.vomo.org/v1/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' => 'Morning Crew',
'description' => 'A group for the morning crew to organize',
'member_moniker' => 'Member',
'subgroup_moniker' => 'Subgroup',
'created_by_user_id' => '1',
'parent_id' => '1',
'members' => [
'1'
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}HttpResponse<String> response = Unirest.post("https://api.vomo.org/v1/groups")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"Morning Crew\",\n \"description\": \"A group for the morning crew to organize\",\n \"member_moniker\": \"Member\",\n \"subgroup_moniker\": \"Subgroup\",\n \"created_by_user_id\": \"1\",\n \"parent_id\": \"1\",\n \"members\": [\n \"1\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.vomo.org/v1/groups")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"Morning Crew\",\n \"description\": \"A group for the morning crew to organize\",\n \"member_moniker\": \"Member\",\n \"subgroup_moniker\": \"Subgroup\",\n \"created_by_user_id\": \"1\",\n \"parent_id\": \"1\",\n \"members\": [\n \"1\"\n ]\n}"
response = http.request(request)
puts response.read_bodyconst url = 'https://api.vomo.org/v1/groups';
const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: 'Morning Crew',
description: 'A group for the morning crew to organize',
member_moniker: 'Member',
subgroup_moniker: 'Subgroup',
created_by_user_id: '1',
parent_id: '1',
members: ['1']
})
};
fetch(url, options)
.then(res => res.json())
.then(json => console.log(json))
.catch(err => console.error(err));{
"data": {
"id": 604,
"name": "Weekend Warriors",
"description": "Volunteers available on weekends.",
"parent_id": null,
"has_subgroups": false,
"created_at": "2025-11-21T09:00:00+00:00",
"updated_at": "2025-11-21T09:00:00+00:00"
}
}{
"error": {
"code": 401,
"message": "No API key provided"
}
}{
"message": "The given data was invalid.",
"errors": {
"name": [
"The name field is required."
]
}
}{
"message": "Too Many Attempts."
}{
"message": "Server Error"
}Create New Group
Creates a new group within your organization. Supply a name for the group. Optionally provide created_by_user_id (the VOMO user ID of the group owner, who must be a member of your organization), a parent_id to nest the group under an existing group, and a members array of user IDs to immediately add members upon creation.
curl --request POST \
--url https://api.vomo.org/v1/groups \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "Morning Crew",
"description": "A group for the morning crew to organize",
"member_moniker": "Member",
"subgroup_moniker": "Subgroup",
"created_by_user_id": "1",
"parent_id": "1",
"members": [
"1"
]
}
'const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: 'Morning Crew',
description: 'A group for the morning crew to organize',
member_moniker: 'Member',
subgroup_moniker: 'Subgroup',
created_by_user_id: '1',
parent_id: '1',
members: ['1']
})
};
fetch('https://api.vomo.org/v1/groups', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.vomo.org/v1/groups"
payload = {
"name": "Morning Crew",
"description": "A group for the morning crew to organize",
"member_moniker": "Member",
"subgroup_moniker": "Subgroup",
"created_by_user_id": "1",
"parent_id": "1",
"members": ["1"]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)using RestSharp;
var options = new RestClientOptions("https://api.vomo.org/v1/groups");
var client = new RestClient(options);
var request = new RestRequest("");
request.AddHeader("Authorization", "Bearer <token>");
request.AddJsonBody("{\n \"name\": \"Morning Crew\",\n \"description\": \"A group for the morning crew to organize\",\n \"member_moniker\": \"Member\",\n \"subgroup_moniker\": \"Subgroup\",\n \"created_by_user_id\": \"1\",\n \"parent_id\": \"1\",\n \"members\": [\n \"1\"\n ]\n}", false);
var response = await client.PostAsync(request);
Console.WriteLine("{0}", response.Content);
<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.vomo.org/v1/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' => 'Morning Crew',
'description' => 'A group for the morning crew to organize',
'member_moniker' => 'Member',
'subgroup_moniker' => 'Subgroup',
'created_by_user_id' => '1',
'parent_id' => '1',
'members' => [
'1'
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}HttpResponse<String> response = Unirest.post("https://api.vomo.org/v1/groups")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"Morning Crew\",\n \"description\": \"A group for the morning crew to organize\",\n \"member_moniker\": \"Member\",\n \"subgroup_moniker\": \"Subgroup\",\n \"created_by_user_id\": \"1\",\n \"parent_id\": \"1\",\n \"members\": [\n \"1\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.vomo.org/v1/groups")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"Morning Crew\",\n \"description\": \"A group for the morning crew to organize\",\n \"member_moniker\": \"Member\",\n \"subgroup_moniker\": \"Subgroup\",\n \"created_by_user_id\": \"1\",\n \"parent_id\": \"1\",\n \"members\": [\n \"1\"\n ]\n}"
response = http.request(request)
puts response.read_bodyconst url = 'https://api.vomo.org/v1/groups';
const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: 'Morning Crew',
description: 'A group for the morning crew to organize',
member_moniker: 'Member',
subgroup_moniker: 'Subgroup',
created_by_user_id: '1',
parent_id: '1',
members: ['1']
})
};
fetch(url, options)
.then(res => res.json())
.then(json => console.log(json))
.catch(err => console.error(err));{
"data": {
"id": 604,
"name": "Weekend Warriors",
"description": "Volunteers available on weekends.",
"parent_id": null,
"has_subgroups": false,
"created_at": "2025-11-21T09:00:00+00:00",
"updated_at": "2025-11-21T09:00:00+00:00"
}
}{
"error": {
"code": 401,
"message": "No API key provided"
}
}{
"message": "The given data was invalid.",
"errors": {
"name": [
"The name field is required."
]
}
}{
"message": "Too Many Attempts."
}{
"message": "Server Error"
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Body
Group to create
Request body for creating or updating a group.
The name of the group
"Morning Crew"
A description for the group
"A group for the morning crew to organize"
A word describing a group member
"Member"
A word describing subgroups
"Subgroup"
Optional. If provided, must be an existing user who is a member of the organization.
"1"
The VOMO Group ID to set as the parent group of the newly created group
"1"
User IDs to set as the group's membership. On create (POST), these become the initial members. On update (PUT), this replaces the existing membership — any current member omitted from the array is removed from the group. Pass an empty array to clear all members.
Response
Returns the newly created group record. Note: on success this endpoint returns 200 OK, not 201 Created.
List of Groups
Show child attributes
Show child attributes
Was this page helpful?