---
title: Create an Extension
description: This endpoint allows you to create an extension inside the organization or partner extensions.
url: https://storyblok.com/docs/api/management/extensions/create-an-extension
---

# Create an Extension

POST

```html
https://mapi.storyblok.com/v1/org_apps
```

This endpoint allows you to create an extension inside the organization or partner extensions.

```bash
/partner_apps
```

## Request body properties

-   `app` (The Extension Object)
    
    The [extension object](/docs/api/management/extensions/the-extension-object/)
    
    Show `The Extension Object` child properties
    
    -   `name` (required) (string)
        
        Name of the Extension
        
    -   `slug` (required) (string)
        
        The slug specific to this Extension
        
    -   `icon` (string)
        
        Icon image path of the Extension from the Extension Details
        
    -   `preview_video` (string)
        
        Define the video URL in the extension configured on the Extension Details in the settings
        
    -   `description` (string)
        
        A description of your extension
        
    -   `intro` (string)
        
        A short description of your extension
        
    -   `screenshot` (string)
        
        A screenshot image path of your extension
        
    -   `website` (string)
        
        Website URL of your extension
        
    -   `author` (string)
        
        Author of the extension
        
    -   `field_type_ids` (number\[\])
        
        An array of field type ids
        
    -   `embedded_app_url` (string)
        
        An embedded Space app or Tool Plugin URL
        
    -   `dev_embedded_app_url` (string)
        
        A developer mode of embedded Space Plugin or Tool Plugin URL
        
    -   `dev_oauth_redirect_uri` (string)
        
        A developer mode of OAuth Space Plugin or Tool Plugin URI
        
    -   `in_sidebar` (boolean)
        
        A status in the sidebar if your plugin is a space app
        
    -   `in_toolbar` (boolean)
        
        A status in the toolbar if your plugin is tool plugin
        
    -   `sidebar_icon` (string)
        
        Your space app sidebar icon image path
        
    -   `oauth_redirect_uri` (string)
        
        OAuth Space Plugin or Tool Plugin URI
        
    -   `enable_space_settings` (boolean)
        
        A status to show whether your extension is enabled for space level settings or not
        
    

## Response properties

-   `app` (The Extension Object)
    
    The [extension object](/docs/api/management/extensions/the-extension-object/)
    

## Examples

-   cURL
    
    ```shellscript
    curl "https://mapi.storyblok.com/v1/org_apps" \
      -X POST \
      -H "Authorization: YOUR_OAUTH_TOKEN" \
      -H "Content-Type: application/json" \
      -d "{\"app\":{\"name\":\"My extension\",\"slug\":\"storyblok-gmbh@extension-1\"}}"
    ```
    
-   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('org_apps', {
        "app": {
          "name": "My extension",
          "slug": "storyblok-gmbh@extension-1"
        }
      })
      console.log({ response })
    } catch (error) {
      console.log(error)
    }
    ```
    
-   PHP
    
    ```php
    $client = new \Storyblok\ManagementClient('YOUR_OAUTH_TOKEN');
    
    $payload = ["app" => ["name" => "My extension","slug" => "storyblok-gmbh@extension-1"]];
    
    $client->post('org_apps', $payload)->getBody();
    ```
    
-   Java
    
    ```java
    HttpResponse<String> response = Unirest.post("https://mapi.storyblok.com/v1/org_apps")
      .header("Content-Type", "application/json")
      .header("Authorization", "YOUR_OAUTH_TOKEN")
      .body({"app":{"name":"My extension","slug":"storyblok-gmbh@extension-1"}})
      .asString();
    ```
    
-   C#
    
    ```csharp
    var client = new RestClient("https://mapi.storyblok.com/v1/org_apps");
    var request = new RestRequest(Method.POST);
    
    request.AddHeader("Content-Type", "application/json");
    request.AddHeader("Authorization", "YOUR_OAUTH_TOKEN");
    request.AddParameter("application/json", "{\"app\":{\"name\":\"My extension\",\"slug\":\"storyblok-gmbh@extension-1\"}}", ParameterType.RequestBody);
    IRestResponse response = client.Execute(request);
    ```
    
-   Python
    
    ```python
    import requests
    
    url = "https://mapi.storyblok.com/v1/org_apps"
    
    querystring = {}
    
    payload = {"app":{"name":"My extension","slug":"storyblok-gmbh@extension-1"}}
    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 = {"app" => {"name" => "My extension","slug" => "storyblok-gmbh@extension-1"}}
    
    client.post('org_apps', payload)
    ```
    
-   Swift
    
    ```swift
    let storyblok = URLSession(storyblok: .mapi(accessToken: .oauth("YOUR_OAUTH_TOKEN")))
    var request = URLRequest(storyblok: storyblok, path: "org_apps")
    request.httpMethod = "POST"
    request.httpBody = try JSONSerialization.data(withJSONObject: [
        "app": [
            "name": "My extension",
            "slug": "storyblok-gmbh@extension-1",
        ],
    ])
    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("org_apps") {
        setBody(buildJsonObject {
            putJsonObject("app") {
                put("name", "My extension")
                put("slug", "storyblok-gmbh@extension-1")
            }
        })
    }
    
    println(response.body<JsonElement>())
    ```

## Pagination

-   [Previous: Extensions](/docs/api/management/extensions)
-   [Next: Delete an Extension](/docs/api/management/extensions/delete-an-extension)
