---
title: "Update a credential template"
method: PATCH
path: "/v1/groups/{id}"
tags: ["Credential Templates"]
---

# Update a credential template

`PATCH /v1/groups/{id}`

Updates the specified credential template (group) by setting the values of the parameters passed. Any parameters not provided will be left unchanged.

<Callout title="Naming update" type="warn">
Groups are being renamed to Credential Templates to better reflect their purpose. This is a **naming update only** — all functionality remains the same.

During the transition, you may still see both terms used interchangeably across the API, app, and existing integrations.
</Callout>

<Callout title="Legacy request shape" type="warn">
For backward compatibility, this endpoint still accepts the legacy `certificateDesignId` and `badgeDesignId` request fields for the time being. Those fields are deprecated, intentionally omitted from the request schema below, and may be removed without notice. Do not send both `designIds` and the legacy fields in the same request.

If you use the legacy request shape, the response will also temporarily include legacy `certificateDesignId` and `badgeDesignId` fields for compatibility.
</Callout>

## Path parameters

- `id` string, required — The unique ID of the credential template (group).

## Headers

- `Certifier-Version` string, required — API version header. Required for all requests.

## Request body

- UpdateGroup
  - `name` string — The name of the credential template (group) that is used as [group.name] attribute later on
  - `designIds` string[] — Replaces the ordered list of design template IDs associated with the credential template.
  - `learningEventUrl` string, uri — The learning event's URL that is shown in the digital wallet

## Response `200`

Credential template (group) updated successfully

- Group
  - `id` string, required — The unique identifier of the credential template (group).
  - `name` string, required — The name of the credential template (group) that is used as [group.name] attribute later on
  - `learningEventUrl` string, uri, nullable, required — The learning event's URL that is shown in the digital wallet
  - `designIds` string[], required — The ordered list of design template IDs associated with this credential template.
  - `certificateDesignId` string, nullable, required — Legacy field, to be removed. Returns the first ordered certificate design ID from designIds, or null when no certificate design is associated. Present only when the legacy request shape was used.
  - `badgeDesignId` string, nullable, required — Legacy field, to be removed. Returns the first ordered badge design ID from designIds, or null when no badge design is associated. Present only when the legacy request shape was used.
  - `createdAt` string, date-time, required — The date and time when this credential template (group) was created. Formatted as an ISO 8601 date and time string
  - `updatedAt` string, date-time, required — The date and time when this credential template (group) was updated. Formatted as an ISO 8601 date and time string

## Other responses

- `400` — Bad Request - Missing version, invalid version, invalid JSON, or validation error
- `401` — Unauthorized - Invalid or missing authentication token
- `402` — Payment Required - Feature requires premium subscription
- `404` — Not Found - Resource does not exist
- `429` — Rate Limited - Too many requests
- `500` — Internal Server Error - Problem on Certifier's end

---

[API](https://skmtc.dev/certifier/apis/certifier-api.md) · [All operations](https://skmtc.dev/certifier/apis/certifier-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/certifier/certifier-api/revisions/a84fb47b7f6f/schema)
