---
title: "Update a simulation group"
method: PUT
path: "/v1/simulation/group/{groupId}"
tags: ["Simulation"]
---

# Update a simulation group

`PUT /v1/simulation/group/{groupId}`

## Request

- Base URL: `https://api.roark.ai`
- URL: `https://api.roark.ai/v1/simulation/group/{groupId}`
- Auth: HTTP bearer

Edits a saved simulation group. Omitted fields keep their current value; `notifications`,
when sent, replaces the settings as a whole. Run groups it already started keep theirs.

A group managed by config as code (`configManaged: true`) returns 409: change it in the config file.

## Path parameters

- `groupId` string, uuid, required

## Request body

- UpdateSimulationGroupInput: Omitted fields keep their current value. Run groups the group already started keep theirs.
  - `name` string
  - `description` string, nullable: Send null to clear it.
  - `simulationRunPlanIds` string[]: Replaces the plans, in run order.
  - `notifications` SimulationGroupNotificationsInput: Where each run's group report announces itself once it is ready.
    - `email` object
      - `enabled` boolean, required: Whether each run's group report is emailed when it is ready.
      - `recipients` string[]: Addresses to email (at most 50), Roark users or not: the email attaches the report PDF. Empty emails every member of the project.
    - `slack` object[]: Channels in the project's connected Slack workspace to post the report to (at most 10). Slack must be connected to the project first.
      - `channelId` string, required: The Slack channel id
      - `channelName` string, required: The channel name, shown in Roark

## Response `200`

The updated group

- object
  - `data` SimulationGroup, required: A saved, repeatable set of plans that run together. Each run starts one run of every plan and groups them into a run group with one combined report.
    - `id` string, uuid, required
    - `name` string, required
    - `description` string, nullable, required
    - `configManaged` boolean, required: Whether this group is managed by config as code. A managed group can be run here, but PUT and DELETE on it return 409: change it in the config file.
    - `plans` object[], required: The plans in run order. A plan deleted since it was added is left out.
      - `id` string, uuid, required: The plan, readable at GET /v1/simulation/plan/{planId}
      - `name` string, required
    - `notifications` object, required: Where each run's group report announces itself once it is ready.
      - `email` object, required
        - `enabled` boolean, required
        - `recipients` string[], required
      - `slack` object[], required
        - `channelId` string, required
        - `channelName` string, required
    - `lastRunAt` string, nullable, required: ISO 8601. Null when it has never run.
    - `latestRunGroupId` string, uuid, nullable, required: The most recent run group it started, readable at GET /v1/simulation/run-group/{groupId}. Null when it has never run.
    - `createdAt` string, required: ISO 8601
    - `updatedAt` string, required: ISO 8601

## Other responses

- `400`: Invalid input, or Slack channels without Slack connected
- `401`: Unauthorized
- `403`: Forbidden
- `404`: Simulation group or a plan not found
- `409`: The group is managed by config as code
- `429`: Too Many Requests
- `500`: Internal Server Error

## Changes

> 188 revisions in range; 1 not diffed.

- **2026-10-14** `d88d1b582569`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/roarkhq/apis/roark-analytics-api/changes/v1/simulation/group/:groupId/put.md)

---

[API](https://skmtc.dev/roarkhq/apis/roark-analytics-api.md) - [All operations](https://skmtc.dev/roarkhq/apis/roark-analytics-api/llms.txt) - [OpenAPI document](https://skmtc.dev/roarkhq/apis/roark-analytics-api/revisions/1a91a5c90e44?raw)
