---
title: Update Installed Extension Settings
description: Update settings such as plugin properties inside Space Plugins and Tool Plugins. To do so, obtain an OAuth token or a Personal Access Token.
url: https://storyblok.com/docs/api/management/extensions/update-install-plugin-settings
---

# Update Installed Extension Settings

PUT

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

Update settings such as plugin properties inside Space Plugins and Tool Plugins. To do so, [obtain an OAuth token](/docs/plugins/oauth-authorization-flow) or a [Personal Access Token](/docs/api/management/getting-started/authentication).

> [!WARNING]
> The space level settings are only for non-sensitive data. Credentials such as secrets and passwords should not be stored. If you still want to store them, they should be stored in an external database (e.g., Supabase, Firebase, etc.).

> [!TIP]
> Only the field `space_level_settings` inside the `app_provision` object can be updated with this endpoint. To do so, the property `enable_space_settings` inside the `app` object should be set to `true`.

## Path parameters

-   `:space_id` (required) (number)
    
    Numeric ID of a space
    
-   `:extension_id` (required) (number)
    
    Numeric id of an extension
    

## Request body properties

-   `space_level_settings` (object)
    
    Space level settings
    

## Examples

-   cURL
    
    ```shellscript
    curl "https://mapi.storyblok.com/v1/spaces/288868932106293/app_provisions/a8d372f8-5659-4f77-b549-0a82ff9c6e72" \
      -X PUT \
      -H "Authorization: YOUR_OAUTH_TOKEN" \
      -H "Content-Type: application/json" \
      -d "{\"app_provision\":{\"space_level_settings\":{\"any_setting_1\":\"hello\",\"any_setting_2\":123456}}}"
    ```
    
-   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.put('spaces/288868932106293/app_provisions/a8d372f8-5659-4f77-b549-0a82ff9c6e72', {
        "app_provision": {
          "space_level_settings": {
            "any_setting_1": "hello",
            "any_setting_2": 123456
          }
        }
      })
      console.log({ response })
    } catch (error) {
      console.log(error)
    }
    ```
    
-   PHP
    
    ```php
    $client = new \Storyblok\ManagementClient('YOUR_OAUTH_TOKEN');
    
    $payload = ["app_provision" => ["space_level_settings" => ["any_setting_1" => "hello","any_setting_2" => 123456]]];
    
    $client->put('spaces/288868932106293/app_provisions/a8d372f8-5659-4f77-b549-0a82ff9c6e72', $payload)->getBody();
    ```
    
-   Java
    
    ```java
    HttpResponse<String> response = Unirest.put("https://mapi.storyblok.com/v1/spaces/288868932106293/app_provisions/a8d372f8-5659-4f77-b549-0a82ff9c6e72")
      .header("Content-Type", "application/json")
      .header("Authorization", "YOUR_OAUTH_TOKEN")
      .body({"app_provision":{"space_level_settings":{"any_setting_1":"hello","any_setting_2":123456}}})
      .asString();
    ```
    
-   C#
    
    ```csharp
    var client = new RestClient("https://mapi.storyblok.com/v1/spaces/288868932106293/app_provisions/a8d372f8-5659-4f77-b549-0a82ff9c6e72");
    var request = new RestRequest(Method.PUT);
    
    request.AddHeader("Content-Type", "application/json");
    request.AddHeader("Authorization", "YOUR_OAUTH_TOKEN");
    request.AddParameter("application/json", "{\"app_provision\":{\"space_level_settings\":{\"any_setting_1\":\"hello\",\"any_setting_2\":123456}}}", ParameterType.RequestBody);
    IRestResponse response = client.Execute(request);
    ```
    
-   Python
    
    ```python
    import requests
    
    url = "https://mapi.storyblok.com/v1/spaces/288868932106293/app_provisions/a8d372f8-5659-4f77-b549-0a82ff9c6e72"
    
    querystring = {}
    
    payload = {"app_provision":{"space_level_settings":{"any_setting_1":"hello","any_setting_2":123456}}}
    headers = {
      'Content-Type': "application/json",
      'Authorization': "YOUR_OAUTH_TOKEN"
    }
    
    response = requests.request("PUT", url, data=payload, headers=headers, params=querystring)
    
    print(response.text)
    ```
    
-   Ruby
    
    ```ruby
    require 'storyblok'
    client = Storyblok::Client.new(oauth_token: 'YOUR_OAUTH_TOKEN')
    
    payload = {"app_provision" => {"space_level_settings" => {"any_setting_1" => "hello","any_setting_2" => 123456}}}
    
    client.put('spaces/288868932106293/app_provisions/a8d372f8-5659-4f77-b549-0a82ff9c6e72', payload)
    ```
    
-   Swift
    
    ```swift
    let storyblok = URLSession(storyblok: .mapi(accessToken: .oauth("YOUR_OAUTH_TOKEN")))
    var request = URLRequest(storyblok: storyblok, path: "spaces/288868932106293/app_provisions/a8d372f8-5659-4f77-b549-0a82ff9c6e72")
    request.httpMethod = "PUT"
    request.httpBody = try JSONSerialization.data(withJSONObject: [
        "app_provision": [
            "space_level_settings": [
                "any_setting_1": "hello",
                "any_setting_2": 123456,
            ],
        ],
    ])
    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.put("spaces/288868932106293/app_provisions/a8d372f8-5659-4f77-b549-0a82ff9c6e72") {
        setBody(buildJsonObject {
            putJsonObject("app_provision") {
                putJsonObject("space_level_settings") {
                    put("any_setting_1", "hello")
                    put("any_setting_2", 123456)
                }
            }
        })
    }
    
    println(response.body<JsonElement>())
    ```

## Pagination

-   [Previous: Update an Extension](/docs/api/management/extensions/update-an-extension)
-   [Next: GitHub](/docs/api/management/external-accounts/github)
