---
title: Create a Workflow Stage Change
description: Create a workflow stage change. It is important to pass a story ID along with the object.
url: https://storyblok.com/docs/api/management/workflow-stage-changes/create-a-workflow-stage-change
---

# Create a Workflow Stage Change

POST

```html
https://mapi.storyblok.com/v1/spaces/:space_id/workflow_stage_changes
```

Create a workflow stage change. It is important to pass a story ID along with the object.

## Path parameters

-   `:space_id` (required) (number)
    
    Numeric ID of a space
    

## Request body properties

-   `workflow_stage_change` (object)
    
    An object containing the workflow stage ID along with Story ID
    
-   `release_id` (number)
    
    ID of the current release (can be requested with the `from_release` API parameter)
    
-   `notify` (boolean)
    
    Notify the assigned user when the workflow is assigned. Defaults to `false`.
    
-   `comment` (object)
    
    Comment object containing a message to notify the user about the workflow stage change.
    
-   `assign` (object)
    
    An assign object containing `space_role_ids` and `user_ids` is used to assign a story stage to specific users or roles.
    

## Response properties

-   `workflow_stage_change` (Workflow Stage Change Object)
    
    The [workflow stage\_change](/docs/api/management/workflow-stage-changes/workflow-stage-change-object) object
    

## Examples

-   cURL
    
    ```shellscript
    curl "https://mapi.storyblok.com/v1/spaces/space_id/workflow_stage_changes/" \
      -X POST \
      -H "Authorization: YOUR_OAUTH_TOKEN" \
      -H "Content-Type: application/json" \
      -d "{\"workflow_stage_change\":{\"story_id\":123,\"workflow_stage_id\":123}}"
    ```
    
-   JS
    
    ```javascript
    // storyblok-js-client@>=7, node@>=18
    import Storyblok from "storyblok-js-client";
    
    const storyblok = new Storyblok({
      oauthToken: "YOUR_PERSONAL_ACCESS_TOKEN",
    });
    
    try {
      const response = await storyblok.post('spaces/space_id/workflow_stage_changes/', {
        "workflow_stage_change": {
          "story_id": 123,
          "workflow_stage_id": 123
        }
      })
      console.log({ response })
    } catch (error) {
      console.log(error)
    }
    ```
    
-   PHP
    
    ```php
    $client = new \Storyblok\ManagementClient('YOUR_OAUTH_TOKEN');
    
    $payload = ["workflow_stage_change" => ["story_id" => 123,"workflow_stage_id" => 123]];
    
    $client->post('spaces/space_id/workflow_stage_changes/', $payload)->getBody();
    ```
    
-   Java
    
    ```java
    HttpResponse<String> response = Unirest.post("https://mapi.storyblok.com/v1/spaces/space_id/workflow_stage_changes/")
      .header("Content-Type", "application/json")
      .header("Authorization", "YOUR_OAUTH_TOKEN")
      .body({"workflow_stage_change":{"story_id":123,"workflow_stage_id":123}})
      .asString();
    ```
    
-   C#
    
    ```csharp
    var client = new RestClient("https://mapi.storyblok.com/v1/spaces/space_id/workflow_stage_changes/");
    var request = new RestRequest(Method.POST);
    
    request.AddHeader("Content-Type", "application/json");
    request.AddHeader("Authorization", "YOUR_OAUTH_TOKEN");
    request.AddParameter("application/json", "{\"workflow_stage_change\":{\"story_id\":123,\"workflow_stage_id\":123}}", ParameterType.RequestBody);
    IRestResponse response = client.Execute(request);
    ```
    
-   Python
    
    ```python
    import requests
    
    url = "https://mapi.storyblok.com/v1/spaces/space_id/workflow_stage_changes/"
    
    querystring = {}
    
    payload = {"workflow_stage_change":{"story_id":123,"workflow_stage_id":123}}
    headers = {
      'Content-Type': "application/json",
      'Authorization': "YOUR_OAUTH_TOKEN"
    }
    
    response = requests.request("POST", url, data=payload, headers=headers, params=querystring)
    
    print(response.text)
    ```
    
-   Ruby
    
    ```ruby
    require 'storyblok'
    client = Storyblok::Client.new(oauth_token: 'YOUR_OAUTH_TOKEN')
    
    payload = {"workflow_stage_change" => {"story_id" => 123,"workflow_stage_id" => 123}}
    
    client.post('spaces/space_id/workflow_stage_changes/', payload)
    ```
    
-   Swift
    
    ```swift
    let storyblok = URLSession(storyblok: .mapi(accessToken: .oauth("YOUR_OAUTH_TOKEN")))
    var request = URLRequest(storyblok: storyblok, path: "spaces/space_id/workflow_stage_changes/")
    request.httpMethod = "POST"
    request.httpBody = try JSONSerialization.data(withJSONObject: [
        "workflow_stage_change": [
            "story_id": 123,
            "workflow_stage_id": 123,
        ],
    ])
    let (data, _) = try await storyblok.data(for: request)
    print(try JSONSerialization.jsonObject(with: data))
    ```
    
-   Kotlin
    
    ```kotlin
    val client = HttpClient {
        install(Storyblok(MAPI)) {
            accessToken = OAuth("YOUR_OAUTH_TOKEN")
        }
    }
    
    val response = client.post("spaces/space_id/workflow_stage_changes/") {
        setBody(buildJsonObject {
            putJsonObject("workflow_stage_change") {
                put("story_id", 123)
                put("workflow_stage_id", 123)
            }
        })
    }
    
    println(response.body<JsonElement>())
    ```

You will receive a [workflow stage change object](/docs/api/management/workflow-stage-changes/workflow-stage-change-object) as a response.

## Pagination

-   [Previous: Workflow Stage Changes](/docs/api/management/workflow-stage-changes)
-   [Next: Retrieve Multiple Workflow Stage Changes](/docs/api/management/workflow-stage-changes/retrieve-multiple-workflow-stage-changes)
