> ## Documentation Index
> Fetch the complete documentation index at: https://docs.roark.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Create a simulation group

> 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.



## OpenAPI

````yaml /api-reference/openapi.documented.json post /v1/simulation/group
openapi: 3.1.0
info:
  title: Roark Analytics API
  description: >-
    The Roark Analytics API gives you access to the same API that powers the
    award winning Roark Analytics platform.
  version: 1.0.0
servers:
  - description: Production
    url: https://api.roark.ai
security:
  - Bearer: []
tags:
  - name: Agent
  - name: Agent Endpoint
  - name: Call
  - name: Chat
  - name: Metric
  - name: Metric Policy
  - name: Metric Collection Job
  - name: Customer Flow
  - name: Customer Flow Edge Case
  - name: Simulation
  - name: Simulation Persona
  - name: Simulation Environment
  - name: Simulation Scenario
  - name: Simulation Run Plan
  - name: Simulation Template
  - name: Simulation Run Plan Job
  - name: Simulation Job
  - name: HTTP Request Definition
  - name: Webhook
  - name: Issue
  - name: Autoimprove
  - name: Agent Config
  - name: Knowledge Base
  - name: Config
  - name: Organization Project
  - name: Organization Project Member
  - name: Organization Project API Key
  - name: Organization Config
  - name: CLI Auth
  - name: Me
  - name: Project
  - name: Usage
  - name: Benchmark
  - name: Health
  - name: Prospect Simulation
paths:
  /v1/simulation/group:
    post:
      tags:
        - Simulation
      summary: Create a simulation group
      description: >-
        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.
      operationId: postV1SimulationGroup
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateSimulationGroupInput'
      responses:
        '201':
          description: The saved group
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    $ref: '#/components/schemas/SimulationGroup'
                required:
                  - data
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
                description: Validation error
              example:
                type: validation
                code: invalid_parameter
                message: The request was invalid
                param: email
          description: Invalid input, or Slack channels without Slack connected
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
                description: Authentication error
              example:
                type: authentication
                code: unauthorized
                message: Authentication required
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
                description: Permission error
              example:
                type: forbidden
                code: permission_denied
                message: You do not have permission to access this resource
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
                description: Not found error
              example:
                type: not_found
                code: resource_not_found
                message: The requested resource could not be found
          description: A plan was not found in this project
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
                description: Rate limit error
              example:
                type: rate_limit
                code: too_many_requests
                message: Rate limit exceeded
          description: Too Many Requests
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
                description: Server error
              example:
                type: internal
                code: internal_error
                message: Internal server error
          description: Internal Server Error
      x-codeSamples:
        - lang: JavaScript
          source: |-
            import Roark from '@roarkanalytics/sdk';

            const client = new Roark({
              bearerToken: process.env['ROARK_API_BEARER_TOKEN'], // This is the default and can be omitted
            });

            const simulationGroup = await client.simulationGroup.create({
              name: 'Release regression',
              simulationRunPlanIds: [
                '3c1d2e4f-5a6b-4c7d-8e9f-0a1b2c3d4e5f',
                '6d7e8f9a-0b1c-4d2e-9f3a-4b5c6d7e8f9a',
              ],
            });

            console.log(simulationGroup.data);
        - lang: Python
          source: |-
            import os
            from roark_analytics import Roark

            client = Roark(
                bearer_token=os.environ.get("ROARK_API_BEARER_TOKEN"),  # This is the default and can be omitted
            )
            simulation_group = client.simulation_group.create(
                name="Release regression",
                simulation_run_plan_ids=["3c1d2e4f-5a6b-4c7d-8e9f-0a1b2c3d4e5f", "6d7e8f9a-0b1c-4d2e-9f3a-4b5c6d7e8f9a"],
            )
            print(simulation_group.data)
components:
  schemas:
    CreateSimulationGroupInput:
      type: object
      properties:
        name:
          type: string
          minLength: 1
          maxLength: 200
          description: What to call the group.
          example: Release regression
        description:
          type:
            - string
            - 'null'
          maxLength: 2000
          description: What the group is for.
        simulationRunPlanIds:
          type: array
          items:
            type: string
            format: uuid
          minItems: 2
          maxItems: 20
          description: >-
            The plans to run together, in run order (2 to 20). Duplicates are
            dropped.
          example:
            - 3c1d2e4f-5a6b-4c7d-8e9f-0a1b2c3d4e5f
            - 6d7e8f9a-0b1c-4d2e-9f3a-4b5c6d7e8f9a
        notifications:
          $ref: '#/components/schemas/SimulationGroupNotificationsInput'
          description: Defaults to email on (to the default audience) and no Slack.
      required:
        - name
        - simulationRunPlanIds
      additionalProperties: false
      description: A saved set of plans to run together, again and again.
      example:
        name: Release regression
        simulationRunPlanIds:
          - 3c1d2e4f-5a6b-4c7d-8e9f-0a1b2c3d4e5f
          - 6d7e8f9a-0b1c-4d2e-9f3a-4b5c6d7e8f9a
        notifications:
          email:
            enabled: true
            recipients: []
          slack: []
    SimulationGroup:
      type: object
      properties:
        id:
          type: string
          format: uuid
        name:
          type: string
        description:
          type:
            - string
            - 'null'
        configManaged:
          type: boolean
          description: >-
            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:
          type: array
          items:
            type: object
            properties:
              id:
                type: string
                format: uuid
                description: The plan, readable at GET /v1/simulation/plan/{planId}
              name:
                type: string
            required:
              - id
              - name
          description: >-
            The plans in run order. A plan deleted since it was added is left
            out.
        notifications:
          type: object
          properties:
            email:
              type: object
              properties:
                enabled:
                  type: boolean
                recipients:
                  type: array
                  items:
                    type: string
              required:
                - enabled
                - recipients
            slack:
              type: array
              items:
                type: object
                properties:
                  channelId:
                    type: string
                  channelName:
                    type: string
                required:
                  - channelId
                  - channelName
          required:
            - email
            - slack
          description: Where each run's group report announces itself once it is ready.
        lastRunAt:
          type:
            - string
            - 'null'
          description: ISO 8601. Null when it has never run.
        latestRunGroupId:
          type:
            - string
            - 'null'
          format: uuid
          description: >-
            The most recent run group it started, readable at GET
            /v1/simulation/run-group/{groupId}. Null when it has never run.
        createdAt:
          type: string
          description: ISO 8601
        updatedAt:
          type: string
          description: ISO 8601
      required:
        - id
        - name
        - description
        - configManaged
        - plans
        - notifications
        - lastRunAt
        - latestRunGroupId
        - createdAt
        - updatedAt
      description: >-
        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.
    ErrorResponse:
      type: object
      properties:
        type:
          type: string
          enum:
            - validation
            - authentication
            - forbidden
            - not_found
            - conflict
            - payment_required
            - rate_limit
            - internal
          description: The error type category
          examples:
            - validation
            - authentication
        code:
          type: string
          description: Machine-readable error code identifier
          examples:
            - invalid_parameter
            - missing_required_field
            - unauthorized
        message:
          type: string
          description: Human-readable error message
          examples:
            - The request was invalid
            - Authentication required
        param:
          type: string
          description: The parameter that caused the error (if applicable)
          examples:
            - email
            - user_id
        details:
          description: Additional error context information
      required:
        - type
        - code
        - message
    SimulationGroupNotificationsInput:
      type: object
      properties:
        email:
          type: object
          properties:
            enabled:
              type: boolean
              description: >-
                Whether the group report of each run is emailed when it is
                ready.
            recipients:
              type: array
              items:
                type: string
                format: email
              maxItems: 50
              default: []
              description: >-
                Addresses to email (at most 50), Roark users or not: the email
                attaches the report PDF. Empty emails every member of the
                project.
              example:
                - qa-lead@example.com
          required:
            - enabled
          additionalProperties: false
          default:
            enabled: true
            recipients: []
        slack:
          type: array
          items:
            type: object
            properties:
              channelId:
                type: string
                minLength: 1
                description: The Slack channel id
                example: C07ABCDEF12
              channelName:
                type: string
                minLength: 1
                description: The channel name, shown in Roark
                example: qa-reports
            required:
              - channelId
              - channelName
            additionalProperties: false
          maxItems: 10
          default: []
          description: >-
            Channels in the project's connected Slack workspace to post the
            report to (at most 10). Slack must be connected to the project
            first.
      additionalProperties: false
      description: Where each run's group report announces itself once it is ready.
      example:
        email:
          enabled: true
          recipients: []
        slack:
          - channelId: C07ABCDEF12
            channelName: qa-reports
  securitySchemes:
    Bearer:
      type: http
      scheme: bearer
      bearerFormat: JWT

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.