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
string
required
Bearer YOUR_API_TOKEN — obtainable from Hyperstack Dashboard → Settings → API Access
Path Parameters
string
required
Unique key of the credential group to update.
Body Parameters
string
required
Updated title of the credential group.
string
required
Updated description of the credential group.
string
required
New certificate template key.
string
required
New badge template key.
string
required
Updated external URL associated with the credential group.
array[string]
required
Updated tags for the credential group.
string
required
Updated human-readable code for the group. Alphanumeric, hyphens, and spaces only.
boolean
required
Indicates whether credentials in this group expire.
number
required
Validity period (in years) if
does_expire is true.boolean
required
Enable/disable decentralized blockchain anchoring for credentials.
Success Response Fields
boolean
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

