Search Storyblok's Documentation
  1. Create an Idea

Create an Idea

This endpoint is to create an Idea in the Ideation Room. In the request body, passing name in the idea object is a minimum requirement.

https://mapi.storyblok.com/v1/spaces/:space_id/ideas

Path Parameters

  • :space_id

    required number

    Numeric ID of a space

Response Properties

  • idea

    The Ideation Room Object

    A single idea object

    • id

      number

      Numeric ID of the Idea

    • name

      string

      Name of the Idea

    • description

      string

      A description of your Idea

    • content

      object

      The content of your Idea

    • created_at

      string

      Creation date (Format: yyyy-MM-dd'T'HH:mm:ssZ)

    • updated_at

      string

      Latest update date (Format: yyyy-MM-dd'T'HH:mm:ssZ)

    • deleted_at

      string

      Deleted date (Format: YYYY-mm-dd HH:MM)

    • status

      string

      Status of approval

    • story_ids

      number[]

      List of story ids

    • is_private

      boolean

      Defines the public or private status of the idea

    • bookmarks

      object

      The external resources URLs and their names with _uid

      • _uid

        string

        UUID

      • link

        string

        The string value of the URL from Idea's external resources.

      • label

        string

        The string value of the name of the external resource URL in the Idea.

    • internal_tags_list

      object[]

      List of objects containing the details of tags used for the component

      • id

        number

        Id of the tag

      • name

        string

        Name of the tag

    • internal_tag_ids

      string[]

      List of ids of the tags assigned to the component

    • author

      object

      The author object inside an Idea

      • id

        number

        The numeric ID

      • avatar

        string

        Avatar of collaborator usually an image

      • userid

        string

        User ID of collaborator

      • friendly_name

        string

        Friendly name of collaborator

    • assignee

      object

      The assignee object inside an Idea

      • id

        number

        The numeric ID

      • avatar

        string

        Avatar of collaborator usually an image

      • userid

        string

        User ID of collaborator

      • friendly_name

        string

        Friendly name of collaborator

    • stories

      Idea's Stories Object

      An array of the idea's stories object

      • name

        string

        The complete name provided for the story

      • id

        number

        The numeric ID

      • full_slug

        string

        The full slug of the story, combining the parent folder(s) and the designated story slug

Request
curl "https://mapi.storyblok.com/v1/spaces/606/ideas" \
  -X POST \
  -H "Content-Type: application/json" \
  -H "Authorization: YOUR_OAUTH_TOKEN" \
  -d "{\"idea\": {\"name\": \"My first idea\",\"description\": \"First idea\",\"content\": {},\"deleted_at\": null,\"status\": \"draft\",\"story_ids\": [],\"is_private\": true,\"bookmarks\": [],\"internal_tags_list\": [{\"id\": 12345,\"name\": \"docs\"}],\"internal_tag_ids\": [\"12345\"],\"author\": {\"id\": 67891,\"userid\": \"test@email.com\",\"friendly_name\": \"Jon Doe\",\"avatar\": \"avatars/67891/838dcb304c/avatar.jpg\"},\"assignee\": null,\"stories\": []}}"
Request
// Using the Universal JavaScript Client:
// https://github.com/storyblok/storyblok-js-client
Storyblok.post('/spaces/606/ideas', {
  "idea": {
    "name": "My first idea",
    "description": "First idea",
    "content": {},
    "deleted_at": null,
    "status": "draft",
    "story_ids": [],
    "is_private": true,
    "bookmarks": [],
    "internal_tags_list": [
      {
        "id": 12345,
        "name": "docs"
      }
    ],
    "internal_tag_ids": [
      "12345"
    ],
    "author": {
      "id": 67891,
      "userid": "test@email.com",
      "friendly_name": "Jon Doe",
      "avatar": "avatars/67891/838dcb304c/avatar.jpg"
    },
    "assignee": null,
    "stories": []
  }
})
  .then(response => {
    console.log(response)
  }).catch(error => { 
    console.log(error)
  })
Request
$client = new \Storyblok\ManagementClient('YOUR_OAUTH_TOKEN');

$payload = [
  "idea" =>  [
    "name" =>  "My first idea",
    "description" =>  "First idea",
    "content" =>  [],
    "deleted_at" =>  null,
    "status" =>  "draft",
    "story_ids" =>  [],
    "is_private" =>  true,
    "bookmarks" =>  [],
    "internal_tags_list" =>  [
      [
        "id" =>  12345,
        "name" =>  "docs"
      ]
    ],
    "internal_tag_ids" =>  [
      "12345"
    ],
    "author" =>  [
      "id" =>  67891,
      "userid" =>  "test@email.com",
      "friendly_name" =>  "Jon Doe",
      "avatar" =>  "avatars/67891/838dcb304c/avatar.jpg"
    ],
    "assignee" =>  null,
    "stories" =>  []
  ]
];

$client->post('/spaces/606/ideas', $payload)->getBody();
Request
require 'storyblok'
client = Storyblok::Client.new(oauth_token: 'YOUR_OAUTH_TOKEN')

payload = {
  "idea" =>  {
    "name" =>  "My first idea",
    "description" =>  "First idea",
    "content" =>  {},
    "deleted_at" =>  null,
    "status" =>  "draft",
    "story_ids" =>  [],
    "is_private" =>  true,
    "bookmarks" =>  [],
    "internal_tags_list" =>  [
      {
        "id" =>  12345,
        "name" =>  "docs"
      }
    ],
    "internal_tag_ids" =>  [
      "12345"
    ],
    "author" =>  {
      "id" =>  67891,
      "userid" =>  "test@email.com",
      "friendly_name" =>  "Jon Doe",
      "avatar" =>  "avatars/67891/838dcb304c/avatar.jpg"
    },
    "assignee" =>  null,
    "stories" =>  []
  }
}

client.post('/spaces/606/ideas', payload)
Request
HttpResponse<String> response = Unirest.post("https://mapi.storyblok.com/v1/spaces/606/ideas")
  .header("Content-Type", "application/json")
  .header("Authorization", "YOUR_OAUTH_TOKEN")
  .body("{\"idea\": {\"name\": \"My first idea\",\"description\": \"First idea\",\"content\": {},\"deleted_at\": null,\"status\": \"draft\",\"story_ids\": [],\"is_private\": true,\"bookmarks\": [],\"internal_tags_list\": [{\"id\": 12345,\"name\": \"docs\"}],\"internal_tag_ids\": [\"12345\"],\"author\": {\"id\": 67891,\"userid\": \"test@email.com\",\"friendly_name\": \"Jon Doe\",\"avatar\": \"avatars/67891/838dcb304c/avatar.jpg\"},\"assignee\": null,\"stories\": []}}")
  .asString();
Request
var client = new RestClient("https://mapi.storyblok.com/v1/spaces/606/ideas");
var request = new RestRequest(Method.POST);

request.AddHeader("Content-Type", "application/json");
request.AddHeader("Authorization", "YOUR_OAUTH_TOKEN");
request.AddParameter("application/json", "{\"idea\": {\"name\": \"My first idea\",\"description\": \"First idea\",\"content\": {},\"deleted_at\": null,\"status\": \"draft\",\"story_ids\": [],\"is_private\": true,\"bookmarks\": [],\"internal_tags_list\": [{\"id\": 12345,\"name\": \"docs\"}],\"internal_tag_ids\": [\"12345\"],\"author\": {\"id\": 67891,\"userid\": \"test@email.com\",\"friendly_name\": \"Jon Doe\",\"avatar\": \"avatars/67891/838dcb304c/avatar.jpg\"},\"assignee\": null,\"stories\": []}}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
Request
import Foundation

let headers = [
  "Content-Type": "application/json",
  "Authorization": "YOUR_OAUTH_TOKEN"
]

let postData = NSData(data: "{\"idea\": {\"name\": \"My first idea\",\"description\": \"First idea\",\"content\": {},\"deleted_at\": null,\"status\": \"draft\",\"story_ids\": [],\"is_private\": true,\"bookmarks\": [],\"internal_tags_list\": [{\"id\": 12345,\"name\": \"docs\"}],\"internal_tag_ids\": [\"12345\"],\"author\": {\"id\": 67891,\"userid\": \"test@email.com\",\"friendly_name\": \"Jon Doe\",\"avatar\": \"avatars/67891/838dcb304c/avatar.jpg\"},\"assignee\": null,\"stories\": []}}".data(using: String.Encoding.utf8)!)
let request = NSMutableURLRequest(url: NSURL(string: "https://mapi.storyblok.com/v1/spaces/606/ideas")! as URL, cachePolicy: .useProtocolCachePolicy, timeoutInterval: 10.0)

request.method = "POST"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
Request
import requests

url = "https://mapi.storyblok.com/v1/spaces/606/ideas"

querystring = {}

payload = "{\"idea\": {\"name\": \"My first idea\",\"description\": \"First idea\",\"content\": {},\"deleted_at\": null,\"status\": \"draft\",\"story_ids\": [],\"is_private\": true,\"bookmarks\": [],\"internal_tags_list\": [{\"id\": 12345,\"name\": \"docs\"}],\"internal_tag_ids\": [\"12345\"],\"author\": {\"id\": 67891,\"userid\": \"test@email.com\",\"friendly_name\": \"Jon Doe\",\"avatar\": \"avatars/67891/838dcb304c/avatar.jpg\"},\"assignee\": null,\"stories\": []}}"
headers = {
  'Content-Type': "application/json",
  'Authorization': "YOUR_OAUTH_TOKEN"
}

response = requests.request("POST", url, data=payload, headers=headers, params=querystring)

print(response.text)