---
title: "Create a simulation group"
method: POST
path: "/v1/simulation/group"
tags: ["Simulation"]
---

# Create a simulation group

`POST /v1/simulation/group`

## Request

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

Saves a named set of plans to run together, again and again. Nothing runs yet:
POST /v1/simulation/group/{groupId}/run starts one run of every plan and groups them
into a run group with one combined report.

Slack channels need Slack connected to the project. Email is on by default.

## Request body

- CreateSimulationGroupInput: A saved set of plans to run together, again and again.
  - `name` string, required: What to call the group.
  - `description` string, nullable: What the group is for.
  - `simulationRunPlanIds` string[], required: The plans to run together, in run order (2 to 20). Duplicates are dropped.
  - `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 `201`

The saved 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`: A plan was not found in this project
- `429`: Too Many Requests
- `500`: Internal Server Error

## Changes

> 187 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/post.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)
