---
title: Create a Datasource
description: Create a new datasource
url: https://storyblok.com/docs/api/management/datasources/create-a-datasource
---

# Create a Datasource

POST

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

Create a new datasource.

## Path parameters

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

## Request body properties

-   `datasource` (The Datasource Object)
    
    The [datasource object](/docs/api/management/datasources/the-datasource-object)
    
    Show child properties
    
    -   `name` (required) (string)
        
        The name a datasource
        
    -   `slug` (required) (string)
        
        Slug of a datasource
        
    

## Response properties

-   `datasource` (The Datasource Object)
    
    The [datasource object](/docs/api/management/datasources/retrieve-a-single-datasource)
    

## Examples

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

Request for adding values in a specific dimension.

> [!TIP]
> To add `dimensions`, use the `dimensions_attributes` key.

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

## Pagination

-   [Previous: Datasources](/docs/api/management/datasources)
-   [Next: Delete a Datasource](/docs/api/management/datasources/delete-a-datasource)
