---
title: "Update a project"
method: PATCH
path: "/projects/{projectId}"
tags: ["Projects"]
---

# Update a project

`PATCH /projects/{projectId}`

## Request

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

## Path parameters

- `projectId` string, required

## Request body

- Project
  - `id` string
  - `version` integer
  - `name` string
  - `createdDate` string, date-time
  - `modifiedDate` string, date-time
  - `scenarios` 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[]
              - …
            - `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
      - `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
              - …
            - CommentCommand
              - …
            - ElementCommand
              - …
            - EvaluateCommand
              - …
            - HttpCommand
              - …
            - IncludeCommand
              - …
            - NavigateCommand
              - …
            - PlaywrightCommand
              - …
            - ScrapeCommand
              - …
            - ScreenshotCommand
              - …
            - SetBrowserVariableCommand
              - …
            - TraceCommand
              - …
            - WaitCommand
              - …
            - WaitForUrlCommand
              - …
        - `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
  - `scripts` 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[]
            - `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
    - `commandsCount` integer
    - `variables` ScriptVariable[]
      - `dataSetId` string
      - `name` string
      - `updateStrategy` string
      - `selectionStrategy` string
  - `dataSets` DataSet[]
    - `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
    - `values` array[]
      - string[]
    - `rowCount` integer
    - `columnCount` 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
      - `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
              - …
            - CommentCommand
              - …
            - ElementCommand
              - …
            - EvaluateCommand
              - …
            - HttpCommand
              - …
            - IncludeCommand
              - …
            - NavigateCommand
              - …
            - PlaywrightCommand
              - …
            - ScrapeCommand
              - …
            - ScreenshotCommand
              - …
            - SetBrowserVariableCommand
              - …
            - TraceCommand
              - …
            - WaitCommand
              - …
            - WaitForUrlCommand
              - …
        - `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[]
      - `shortcut` string
    - `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
  - `lastActivityDate` string, date-time

## Response `204`

No Content

## Changes

- **2026-10-19** `1cf3073616fd`: 2 info
  - added the new optional request property `scenarios/items/tests/items/engines/items/populationId`
  - added the new optional request property `tests/items/engines/items/populationId`

[Operation history](https://skmtc.dev/loadster/apis/loadster-api/changes/projects/:projectId/patch.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)
