---
title: "Create a scenario"
method: POST
path: "/projects/{projectId}/scenarios"
tags: ["Scenarios"]
---

# Create a scenario

`POST /projects/{projectId}/scenarios`

## Request

- Base URL: `https://api.loadster.com`
- URL: `https://api.loadster.com/projects/{projectId}/scenarios`
- Auth: HTTP bearer

## Path parameters

- `projectId` string, required

## Request body

- Scenario
  - `id` string
  - `version` integer
  - `name` string
  - `createdDate` string, date-time
  - `modifiedDate` string, date-time
  - `projectId` string
  - `modifiedBy` User
    - `username` string
    - `name` string
    - `enabled` boolean
    - `invited` boolean
  - `populations` Population[]
    - `id` string
    - `name` string
    - `scriptId` string
    - `loadEngineId` string
    - `type` 'HTTP' | 'BROWSER' | 'PLAYWRIGHT'
    - `playbackOptions` PlaybackOptions
      - `httpUserAgent` string
      - `identifyUserInHeader` string
      - `connectionBps` integer
      - `httpTotalResourceTimeout` integer
      - `httpIndividualResourceTimeout` integer
      - `browserNavigationTimeout` integer
      - `browserActionTimeout` integer
      - `playwrightNavigationTimeout` integer
      - `playwrightActionTimeout` integer
      - `maxTraceArtifactsPerBot` integer
      - `maxTraceArtifactBytesPerBot` integer
      - `loadTestTraceSnapshots` boolean
      - `httpResourceThreads` integer
      - `skipWaitTimes` boolean
      - `haltOnErrors` boolean
      - `includeErrorsInResponseTimes` boolean
      - `httpsTrustAll` boolean
      - `clearStateAfterEachIteration` boolean
      - `redirectHandlingEnabled` boolean
      - `proxyDisabled` boolean
      - `analyticsDisabled` boolean
      - `contentSecurityDisabled` boolean
      - `webSecurityDisabled` boolean
      - `playwrightTracingDisabled` boolean
      - `urlOptions` UrlOptions
        - `interpolated` boolean
        - `queryTruncated` boolean
        - `queryStripped` boolean
        - `dynamicSectionsStripped` boolean
      - `hostnameOverrides` object
      - `variableOverrides` ScriptVariable[]
        - `dataSetId` string
        - `name` string
        - `updateStrategy` string
        - `selectionStrategy` string
      - `instrumentedUrlFragments` string[]
      - `blockedHosts` string[]
    - `commands` union[]
      - union
        - CodeCommand
          - `id` string
          - `enabled` boolean
          - `type` string
          - `label` string
          - `language` string
          - `code` string
        - CommentCommand
          - `id` string
          - `enabled` boolean
          - `type` string
          - `label` string
          - `text` string
        - ElementCommand
          - `id` string
          - `enabled` boolean
          - `type` string
          - `label` string
          - `element` string
          - `action` 'Click' | 'DoubleClick' | 'Drag' | 'Type' | 'Select' | 'ChooseFiles' | 'Hover' | 'KeyPress' | 'WaitFor'
          - `options` object
          - `locators` ElementLocator[]
            - `method` 'getByRole' | 'getByLabel' | 'getByText' | 'getByTitle' | 'getByTestId' | 'getByPlaceholder' | 'getByAltText' | 'locator' | 'frameLocator' | 'filter' | 'first' | 'last' | 'nth'
            - `options` object
            - `attributes` object
          - `requiredBlobs` Blob[]
            - `key` string
        - EvaluateCommand
          - `id` string
          - `enabled` boolean
          - `type` string
          - `label` string
          - `script` string
        - HttpCommand
          - `id` string
          - `enabled` boolean
          - `type` string
          - `label` string
          - `method` string
          - `baseUrl` string
          - `queryString` string
          - `authType` string
          - `authUsername` string
          - `authPassword` string
          - `authWorkstation` string
          - `authDomain` string
          - `authToken` string
          - `resources` string[]
          - `validationRules` union[]
            - union
              - …
          - `capturingRules` TextCapturingRule[]
            - `type` string
            - `mechanism` string
            - `headerName` string
            - `destinationVariableName` string
            - `textBefore` string
            - `textAfter` string
            - `htmlFormInputName` string
            - `regularExpression` string
            - `regularExpressionOutput` string
            - `javaScript` string
            - `query` string
            - `greedy` boolean
          - `customHeaders` CustomHeader[]
            - `name` string
            - `value` string
          - `requestBody` Blob
            - `key` string
          - `requestContentType` string
          - `requestBodyInterpolated` boolean
          - `throwOnError` boolean
          - `ignoreHttpErrors` boolean
          - `requiredBlobs` Blob[]
            - `key` string
        - IncludeCommand
          - `id` string
          - `enabled` boolean
          - `type` string
          - `label` string
          - `scriptId` string
        - NavigateCommand
          - `id` string
          - `enabled` boolean
          - `type` string
          - `label` string
          - `url` string
        - PlaywrightCommand
          - `id` string
          - `enabled` boolean
          - `type` string
          - `label` string
          - `code` string
        - ScrapeCommand
          - `id` string
          - `enabled` boolean
          - `type` string
          - `label` string
        - ScreenshotCommand
          - `id` string
          - `enabled` boolean
          - `type` string
          - `label` string
          - `fullPage` boolean
          - `forced` boolean
        - SetBrowserVariableCommand
          - `id` string
          - `enabled` boolean
          - `type` string
          - `label` string
          - `name` string
          - `value` unknown
        - TraceCommand
          - `id` string
          - `enabled` boolean
          - `type` string
          - `label` string
          - `htmlTracingEnabled` boolean
        - WaitCommand
          - `id` string
          - `enabled` boolean
          - `type` string
          - `label` string
          - `milliseconds` integer
        - WaitForUrlCommand
          - `id` string
          - `enabled` boolean
          - `type` string
          - `label` string
          - `url` string
          - `options` object
    - `iterations` integer
    - `iterationsPerUser` integer
    - `aggressionMultiplier` number, double
    - `stages` Stage[]
      - `target` integer
      - `duration` integer
      - `ramp` 'LINEAR' | 'SIGMOID' | 'LOGARITHMIC' | 'EXPONENTIAL'
    - `rampUp` RampUpSchedule
      - `strategy` string
      - `duration` integer
      - `delay` integer
    - `rampDown` RampDownSchedule
      - `strategy` string
      - `duration` integer
    - `peakDuration` integer
    - `count` integer
  - `tests` TestRun[]
    - `id` string
    - `version` integer
    - `name` string
    - `createdDate` string, date-time
    - `modifiedDate` string, date-time
    - `projectId` string
    - `modifiedBy` User
      - `username` string
      - `name` string
      - `enabled` boolean
      - `invited` boolean
    - `scenarioId` string
    - `playedScenario` Scenario (recursive)
    - `creator` User
      - `username` string
      - `name` string
      - `enabled` boolean
      - `invited` boolean
    - `report` TestReport
      - `notes` string
      - `maxVirtualUsers` integer
      - `totalHits` integer
      - `totalPages` integer
      - `totalErrors` integer
      - `totalIterations` integer
      - `totalBytesUploaded` integer
      - `totalBytesDownloaded` integer
      - `totalBytesTransferred` integer
      - `responseTimeAvg` number, double
      - `responseTimeP50` number, double
      - `responseTimeP80` number, double
      - `responseTimeP90` number, double
      - `responseTimeP95` number, double
      - `responseTimeP99` number, double
    - `playedScripts` Script[]
      - `id` string
      - `version` integer
      - `name` string
      - `createdDate` string, date-time
      - `modifiedDate` string, date-time
      - `projectId` string
      - `modifiedBy` User
        - `username` string
        - `name` string
        - `enabled` boolean
        - `invited` boolean
      - `type` 'HTTP' | 'BROWSER' | 'PLAYWRIGHT'
      - `commands` union[]
        - union
          - CodeCommand
            - `id` string
            - `enabled` boolean
            - `type` string
            - `label` string
            - `language` string
            - `code` string
          - CommentCommand
            - `id` string
            - `enabled` boolean
            - `type` string
            - `label` string
            - `text` string
          - ElementCommand
            - `id` string
            - `enabled` boolean
            - `type` string
            - `label` string
            - `element` string
            - `action` 'Click' | 'DoubleClick' | 'Drag' | 'Type' | 'Select' | 'ChooseFiles' | 'Hover' | 'KeyPress' | 'WaitFor'
            - `options` object
            - `locators` ElementLocator[]
              - …
            - `requiredBlobs` Blob[]
              - …
          - EvaluateCommand
            - `id` string
            - `enabled` boolean
            - `type` string
            - `label` string
            - `script` string
          - HttpCommand
            - `id` string
            - `enabled` boolean
            - `type` string
            - `label` string
            - `method` string
            - `baseUrl` string
            - `queryString` string
            - `authType` string
            - `authUsername` string
            - `authPassword` string
            - `authWorkstation` string
            - `authDomain` string
            - `authToken` string
            - `resources` string[]
            - `validationRules` union[]
              - …
            - `capturingRules` TextCapturingRule[]
              - …
            - `customHeaders` CustomHeader[]
              - …
            - `requestBody` Blob
              - …
            - `requestContentType` string
            - `requestBodyInterpolated` boolean
            - `throwOnError` boolean
            - `ignoreHttpErrors` boolean
            - `requiredBlobs` Blob[]
              - …
          - IncludeCommand
            - `id` string
            - `enabled` boolean
            - `type` string
            - `label` string
            - `scriptId` string
          - NavigateCommand
            - `id` string
            - `enabled` boolean
            - `type` string
            - `label` string
            - `url` string
          - PlaywrightCommand
            - `id` string
            - `enabled` boolean
            - `type` string
            - `label` string
            - `code` string
          - ScrapeCommand
            - `id` string
            - `enabled` boolean
            - `type` string
            - `label` string
          - ScreenshotCommand
            - `id` string
            - `enabled` boolean
            - `type` string
            - `label` string
            - `fullPage` boolean
            - `forced` boolean
          - SetBrowserVariableCommand
            - `id` string
            - `enabled` boolean
            - `type` string
            - `label` string
            - `name` string
            - `value` unknown
          - TraceCommand
            - `id` string
            - `enabled` boolean
            - `type` string
            - `label` string
            - `htmlTracingEnabled` boolean
          - WaitCommand
            - `id` string
            - `enabled` boolean
            - `type` string
            - `label` string
            - `milliseconds` integer
          - WaitForUrlCommand
            - `id` string
            - `enabled` boolean
            - `type` string
            - `label` string
            - `url` string
            - `options` object
      - `commandsCount` integer
      - `variables` ScriptVariable[]
        - `dataSetId` string
        - `name` string
        - `updateStrategy` string
        - `selectionStrategy` string
    - `startDate` string, date-time
    - `endDate` string, date-time
    - `engines` EngineInfo[]
      - `id` string
      - `name` string
      - `populationId` string
      - `url` string
      - `password` string
      - `enabled` boolean
      - `cloud` boolean
    - `startedAutomatically` boolean
    - `stoppedEarly` boolean
    - `shortcut` string
  - `shortcut` string

## Response `200`

OK

- Scenario
  - `id` string
  - `version` integer
  - `name` string
  - `createdDate` string, date-time
  - `modifiedDate` string, date-time
  - `projectId` string
  - `modifiedBy` User
    - `username` string
    - `name` string
    - `enabled` boolean
    - `invited` boolean
  - `populations` Population[]
    - `id` string
    - `name` string
    - `scriptId` string
    - `loadEngineId` string
    - `type` 'HTTP' | 'BROWSER' | 'PLAYWRIGHT'
    - `playbackOptions` PlaybackOptions
      - `httpUserAgent` string
      - `identifyUserInHeader` string
      - `connectionBps` integer
      - `httpTotalResourceTimeout` integer
      - `httpIndividualResourceTimeout` integer
      - `browserNavigationTimeout` integer
      - `browserActionTimeout` integer
      - `playwrightNavigationTimeout` integer
      - `playwrightActionTimeout` integer
      - `maxTraceArtifactsPerBot` integer
      - `maxTraceArtifactBytesPerBot` integer
      - `loadTestTraceSnapshots` boolean
      - `httpResourceThreads` integer
      - `skipWaitTimes` boolean
      - `haltOnErrors` boolean
      - `includeErrorsInResponseTimes` boolean
      - `httpsTrustAll` boolean
      - `clearStateAfterEachIteration` boolean
      - `redirectHandlingEnabled` boolean
      - `proxyDisabled` boolean
      - `analyticsDisabled` boolean
      - `contentSecurityDisabled` boolean
      - `webSecurityDisabled` boolean
      - `playwrightTracingDisabled` boolean
      - `urlOptions` UrlOptions
        - `interpolated` boolean
        - `queryTruncated` boolean
        - `queryStripped` boolean
        - `dynamicSectionsStripped` boolean
      - `hostnameOverrides` object
      - `variableOverrides` ScriptVariable[]
        - `dataSetId` string
        - `name` string
        - `updateStrategy` string
        - `selectionStrategy` string
      - `instrumentedUrlFragments` string[]
      - `blockedHosts` string[]
    - `commands` union[]
      - union
        - CodeCommand
          - `id` string
          - `enabled` boolean
          - `type` string
          - `label` string
          - `language` string
          - `code` string
        - CommentCommand
          - `id` string
          - `enabled` boolean
          - `type` string
          - `label` string
          - `text` string
        - ElementCommand
          - `id` string
          - `enabled` boolean
          - `type` string
          - `label` string
          - `element` string
          - `action` 'Click' | 'DoubleClick' | 'Drag' | 'Type' | 'Select' | 'ChooseFiles' | 'Hover' | 'KeyPress' | 'WaitFor'
          - `options` object
          - `locators` ElementLocator[]
            - `method` 'getByRole' | 'getByLabel' | 'getByText' | 'getByTitle' | 'getByTestId' | 'getByPlaceholder' | 'getByAltText' | 'locator' | 'frameLocator' | 'filter' | 'first' | 'last' | 'nth'
            - `options` object
            - `attributes` object
          - `requiredBlobs` Blob[]
            - `key` string
        - EvaluateCommand
          - `id` string
          - `enabled` boolean
          - `type` string
          - `label` string
          - `script` string
        - HttpCommand
          - `id` string
          - `enabled` boolean
          - `type` string
          - `label` string
          - `method` string
          - `baseUrl` string
          - `queryString` string
          - `authType` string
          - `authUsername` string
          - `authPassword` string
          - `authWorkstation` string
          - `authDomain` string
          - `authToken` string
          - `resources` string[]
          - `validationRules` union[]
            - union
              - …
          - `capturingRules` TextCapturingRule[]
            - `type` string
            - `mechanism` string
            - `headerName` string
            - `destinationVariableName` string
            - `textBefore` string
            - `textAfter` string
            - `htmlFormInputName` string
            - `regularExpression` string
            - `regularExpressionOutput` string
            - `javaScript` string
            - `query` string
            - `greedy` boolean
          - `customHeaders` CustomHeader[]
            - `name` string
            - `value` string
          - `requestBody` Blob
            - `key` string
          - `requestContentType` string
          - `requestBodyInterpolated` boolean
          - `throwOnError` boolean
          - `ignoreHttpErrors` boolean
          - `requiredBlobs` Blob[]
            - `key` string
        - IncludeCommand
          - `id` string
          - `enabled` boolean
          - `type` string
          - `label` string
          - `scriptId` string
        - NavigateCommand
          - `id` string
          - `enabled` boolean
          - `type` string
          - `label` string
          - `url` string
        - PlaywrightCommand
          - `id` string
          - `enabled` boolean
          - `type` string
          - `label` string
          - `code` string
        - ScrapeCommand
          - `id` string
          - `enabled` boolean
          - `type` string
          - `label` string
        - ScreenshotCommand
          - `id` string
          - `enabled` boolean
          - `type` string
          - `label` string
          - `fullPage` boolean
          - `forced` boolean
        - SetBrowserVariableCommand
          - `id` string
          - `enabled` boolean
          - `type` string
          - `label` string
          - `name` string
          - `value` unknown
        - TraceCommand
          - `id` string
          - `enabled` boolean
          - `type` string
          - `label` string
          - `htmlTracingEnabled` boolean
        - WaitCommand
          - `id` string
          - `enabled` boolean
          - `type` string
          - `label` string
          - `milliseconds` integer
        - WaitForUrlCommand
          - `id` string
          - `enabled` boolean
          - `type` string
          - `label` string
          - `url` string
          - `options` object
    - `iterations` integer
    - `iterationsPerUser` integer
    - `aggressionMultiplier` number, double
    - `stages` Stage[]
      - `target` integer
      - `duration` integer
      - `ramp` 'LINEAR' | 'SIGMOID' | 'LOGARITHMIC' | 'EXPONENTIAL'
    - `rampUp` RampUpSchedule
      - `strategy` string
      - `duration` integer
      - `delay` integer
    - `rampDown` RampDownSchedule
      - `strategy` string
      - `duration` integer
    - `peakDuration` integer
    - `count` integer
  - `tests` TestRun[]
    - `id` string
    - `version` integer
    - `name` string
    - `createdDate` string, date-time
    - `modifiedDate` string, date-time
    - `projectId` string
    - `modifiedBy` User
      - `username` string
      - `name` string
      - `enabled` boolean
      - `invited` boolean
    - `scenarioId` string
    - `playedScenario` Scenario (recursive)
    - `creator` User
      - `username` string
      - `name` string
      - `enabled` boolean
      - `invited` boolean
    - `report` TestReport
      - `notes` string
      - `maxVirtualUsers` integer
      - `totalHits` integer
      - `totalPages` integer
      - `totalErrors` integer
      - `totalIterations` integer
      - `totalBytesUploaded` integer
      - `totalBytesDownloaded` integer
      - `totalBytesTransferred` integer
      - `responseTimeAvg` number, double
      - `responseTimeP50` number, double
      - `responseTimeP80` number, double
      - `responseTimeP90` number, double
      - `responseTimeP95` number, double
      - `responseTimeP99` number, double
    - `playedScripts` Script[]
      - `id` string
      - `version` integer
      - `name` string
      - `createdDate` string, date-time
      - `modifiedDate` string, date-time
      - `projectId` string
      - `modifiedBy` User
        - `username` string
        - `name` string
        - `enabled` boolean
        - `invited` boolean
      - `type` 'HTTP' | 'BROWSER' | 'PLAYWRIGHT'
      - `commands` union[]
        - union
          - CodeCommand
            - `id` string
            - `enabled` boolean
            - `type` string
            - `label` string
            - `language` string
            - `code` string
          - CommentCommand
            - `id` string
            - `enabled` boolean
            - `type` string
            - `label` string
            - `text` string
          - ElementCommand
            - `id` string
            - `enabled` boolean
            - `type` string
            - `label` string
            - `element` string
            - `action` 'Click' | 'DoubleClick' | 'Drag' | 'Type' | 'Select' | 'ChooseFiles' | 'Hover' | 'KeyPress' | 'WaitFor'
            - `options` object
            - `locators` ElementLocator[]
              - …
            - `requiredBlobs` Blob[]
              - …
          - EvaluateCommand
            - `id` string
            - `enabled` boolean
            - `type` string
            - `label` string
            - `script` string
          - HttpCommand
            - `id` string
            - `enabled` boolean
            - `type` string
            - `label` string
            - `method` string
            - `baseUrl` string
            - `queryString` string
            - `authType` string
            - `authUsername` string
            - `authPassword` string
            - `authWorkstation` string
            - `authDomain` string
            - `authToken` string
            - `resources` string[]
            - `validationRules` union[]
              - …
            - `capturingRules` TextCapturingRule[]
              - …
            - `customHeaders` CustomHeader[]
              - …
            - `requestBody` Blob
              - …
            - `requestContentType` string
            - `requestBodyInterpolated` boolean
            - `throwOnError` boolean
            - `ignoreHttpErrors` boolean
            - `requiredBlobs` Blob[]
              - …
          - IncludeCommand
            - `id` string
            - `enabled` boolean
            - `type` string
            - `label` string
            - `scriptId` string
          - NavigateCommand
            - `id` string
            - `enabled` boolean
            - `type` string
            - `label` string
            - `url` string
          - PlaywrightCommand
            - `id` string
            - `enabled` boolean
            - `type` string
            - `label` string
            - `code` string
          - ScrapeCommand
            - `id` string
            - `enabled` boolean
            - `type` string
            - `label` string
          - ScreenshotCommand
            - `id` string
            - `enabled` boolean
            - `type` string
            - `label` string
            - `fullPage` boolean
            - `forced` boolean
          - SetBrowserVariableCommand
            - `id` string
            - `enabled` boolean
            - `type` string
            - `label` string
            - `name` string
            - `value` unknown
          - TraceCommand
            - `id` string
            - `enabled` boolean
            - `type` string
            - `label` string
            - `htmlTracingEnabled` boolean
          - WaitCommand
            - `id` string
            - `enabled` boolean
            - `type` string
            - `label` string
            - `milliseconds` integer
          - WaitForUrlCommand
            - `id` string
            - `enabled` boolean
            - `type` string
            - `label` string
            - `url` string
            - `options` object
      - `commandsCount` integer
      - `variables` ScriptVariable[]
        - `dataSetId` string
        - `name` string
        - `updateStrategy` string
        - `selectionStrategy` string
    - `startDate` string, date-time
    - `endDate` string, date-time
    - `engines` EngineInfo[]
      - `id` string
      - `name` string
      - `populationId` string
      - `url` string
      - `password` string
      - `enabled` boolean
      - `cloud` boolean
    - `startedAutomatically` boolean
    - `stoppedEarly` boolean
    - `shortcut` string
  - `shortcut` string

## Changes

- **2026-10-19** `1cf3073616fd`: 2 info
  - added the new optional request property `tests/items/engines/items/populationId`
  - added the optional property `tests/items/engines/items/populationId` to the response with the `200` status

[Operation history](https://skmtc.dev/loadster/apis/loadster-api/changes/projects/:projectId/scenarios/post.md)

---

[API](https://skmtc.dev/loadster/apis/loadster-api.md) · [All operations](https://skmtc.dev/loadster/apis/loadster-api/llms.txt) · [OpenAPI document](https://skmtc.dev/loadster/apis/loadster-api/revisions/1cf3073616fd?raw)
