Update Credential Group
curl --request POST \
--url https://api.thehyperstack.com/v1/group/update/{group_key} \
--header 'Content-Type: application/json' \
--data '
{
"title": "<string>",
"description": "<string>",
"certificate_template": "<string>",
"badge_template": "<string>",
"url": "<string>",
"tags": {},
"group_code": "<string>",
"does_expire": true,
"validity": 123,
"blockchain": true
}
'import requests
url = "https://api.thehyperstack.com/v1/group/update/{group_key}"
payload = {
"title": "<string>",
"description": "<string>",
"certificate_template": "<string>",
"badge_template": "<string>",
"url": "<string>",
"tags": {},
"group_code": "<string>",
"does_expire": True,
"validity": 123,
"blockchain": True
}
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({
title: '<string>',
description: '<string>',
certificate_template: '<string>',
badge_template: '<string>',
url: '<string>',
tags: {},
group_code: '<string>',
does_expire: true,
validity: 123,
blockchain: true
})
};
fetch('https://api.thehyperstack.com/v1/group/update/{group_key}', 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.thehyperstack.com/v1/group/update/{group_key}",
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([
'title' => '<string>',
'description' => '<string>',
'certificate_template' => '<string>',
'badge_template' => '<string>',
'url' => '<string>',
'tags' => [
],
'group_code' => '<string>',
'does_expire' => true,
'validity' => 123,
'blockchain' => true
]),
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://api.thehyperstack.com/v1/group/update/{group_key}"
payload := strings.NewReader("{\n \"title\": \"<string>\",\n \"description\": \"<string>\",\n \"certificate_template\": \"<string>\",\n \"badge_template\": \"<string>\",\n \"url\": \"<string>\",\n \"tags\": {},\n \"group_code\": \"<string>\",\n \"does_expire\": true,\n \"validity\": 123,\n \"blockchain\": true\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://api.thehyperstack.com/v1/group/update/{group_key}")
.header("Content-Type", "application/json")
.body("{\n \"title\": \"<string>\",\n \"description\": \"<string>\",\n \"certificate_template\": \"<string>\",\n \"badge_template\": \"<string>\",\n \"url\": \"<string>\",\n \"tags\": {},\n \"group_code\": \"<string>\",\n \"does_expire\": true,\n \"validity\": 123,\n \"blockchain\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.thehyperstack.com/v1/group/update/{group_key}")
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 \"title\": \"<string>\",\n \"description\": \"<string>\",\n \"certificate_template\": \"<string>\",\n \"badge_template\": \"<string>\",\n \"url\": \"<string>\",\n \"tags\": {},\n \"group_code\": \"<string>\",\n \"does_expire\": true,\n \"validity\": 123,\n \"blockchain\": true\n}"
response = http.request(request)
puts response.read_body{
"success": true
}
{
"success": false,
"error": "Invalid Badge Template",
"error_code": "invalid_badge_template"
}
{
"success": false,
"error": "Group Not Found",
"error_code": "not_found"
}
{
"detail": "Invalid token or organization not found"
}
Credential Groups
Update Credential Group
POST
/
v1
/
group
/
update
/
{group_key}
Update Credential Group
curl --request POST \
--url https://api.thehyperstack.com/v1/group/update/{group_key} \
--header 'Content-Type: application/json' \
--data '
{
"title": "<string>",
"description": "<string>",
"certificate_template": "<string>",
"badge_template": "<string>",
"url": "<string>",
"tags": {},
"group_code": "<string>",
"does_expire": true,
"validity": 123,
"blockchain": true
}
'import requests
url = "https://api.thehyperstack.com/v1/group/update/{group_key}"
payload = {
"title": "<string>",
"description": "<string>",
"certificate_template": "<string>",
"badge_template": "<string>",
"url": "<string>",
"tags": {},
"group_code": "<string>",
"does_expire": True,
"validity": 123,
"blockchain": True
}
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({
title: '<string>',
description: '<string>',
certificate_template: '<string>',
badge_template: '<string>',
url: '<string>',
tags: {},
group_code: '<string>',
does_expire: true,
validity: 123,
blockchain: true
})
};
fetch('https://api.thehyperstack.com/v1/group/update/{group_key}', 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.thehyperstack.com/v1/group/update/{group_key}",
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([
'title' => '<string>',
'description' => '<string>',
'certificate_template' => '<string>',
'badge_template' => '<string>',
'url' => '<string>',
'tags' => [
],
'group_code' => '<string>',
'does_expire' => true,
'validity' => 123,
'blockchain' => true
]),
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://api.thehyperstack.com/v1/group/update/{group_key}"
payload := strings.NewReader("{\n \"title\": \"<string>\",\n \"description\": \"<string>\",\n \"certificate_template\": \"<string>\",\n \"badge_template\": \"<string>\",\n \"url\": \"<string>\",\n \"tags\": {},\n \"group_code\": \"<string>\",\n \"does_expire\": true,\n \"validity\": 123,\n \"blockchain\": true\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://api.thehyperstack.com/v1/group/update/{group_key}")
.header("Content-Type", "application/json")
.body("{\n \"title\": \"<string>\",\n \"description\": \"<string>\",\n \"certificate_template\": \"<string>\",\n \"badge_template\": \"<string>\",\n \"url\": \"<string>\",\n \"tags\": {},\n \"group_code\": \"<string>\",\n \"does_expire\": true,\n \"validity\": 123,\n \"blockchain\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.thehyperstack.com/v1/group/update/{group_key}")
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 \"title\": \"<string>\",\n \"description\": \"<string>\",\n \"certificate_template\": \"<string>\",\n \"badge_template\": \"<string>\",\n \"url\": \"<string>\",\n \"tags\": {},\n \"group_code\": \"<string>\",\n \"does_expire\": true,\n \"validity\": 123,\n \"blockchain\": true\n}"
response = http.request(request)
puts response.read_body{
"success": true
}
{
"success": false,
"error": "Invalid Badge Template",
"error_code": "invalid_badge_template"
}
{
"success": false,
"error": "Group Not Found",
"error_code": "not_found"
}
{
"detail": "Invalid token or organization not found"
}
Description
This endpoint allows you to update an existing credential group in Hyperstack. The group key is passed as a URL path parameter. Only the fields provided in the request body will be updated.Headers
Bearer YOUR_API_TOKEN — obtainable from Hyperstack Dashboard → Settings → API Access
Path Parameters
Unique key of the credential group to update.
Body Parameters
Updated title of the credential group.
Updated description of the credential group.
New certificate template key.
New badge template key.
Updated external URL associated with the credential group.
Updated tags for the credential group.
Updated human-readable code for the group. Alphanumeric, hyphens, and spaces only.
Indicates whether credentials in this group expire.
Validity period (in years) if
does_expire is true.Enable/disable decentralized blockchain anchoring for credentials.
Success Response Fields
Indicates whether the group update was successful. Always
true for a 200 response.Responses
{
"success": true
}
{
"success": false,
"error": "Invalid Badge Template",
"error_code": "invalid_badge_template"
}
{
"success": false,
"error": "Group Not Found",
"error_code": "not_found"
}
{
"detail": "Invalid token or organization not found"
}
curl -X POST "https://api.thehyperstack.com/v1/group/update/unique_group_id_12345" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"title": "Updated Course Certificate",
"description": "Updated course description",
"tags": ["updated", "certificate"],
"does_expire": true,
"validity": 2
}'
Last modified on February 22, 2026
Was this page helpful?
⌘I

