Create a Story
https://mapi.storyblok.com/v1/spaces/:space_id/storiesYou can set most of the fields that are available in the story object, below we only list the properties in the example and the possible required fields. Stories are not published by default. If you want to create a published story add the parameter publish with the value 1.
You can save any data in the story[content] attribute, and use it in the editor, as long as you follow these rules:
- The
story[content]property needs to be an object at the root level - Every object inside needs to have the property
"component":"your_components_name" - Only nest components using arrays, except if you want to build a custom field type.
- Every nested object which is a
componentor custom field type needs a_uidproperty.
This lets you import data and define the schema of your components afterwards in the interface where necessary.
Path parameters
Section titled “Path parameters”- :space_id required number
Numeric ID of a space
Request body properties
Section titled “Request body properties”- story The Story Object
A single story object
- publish number
Should the story be published immediately (set 1 to publish)
- release_id number
ID of the current release (can be requested with the
from_releaseAPI parameter)
Response properties
Section titled “Response properties”- story The Story Object
A single story object
Examples
Section titled “Examples”curl "https://mapi.storyblok.com/v1/spaces/606/stories" \ -X POST \ -H "Authorization: YOUR_OAUTH_TOKEN" \ -H "Content-Type: application/json" \ -d "{\"publish\":1,\"story\":{\"content\":{\"body\":[],\"component\":\"page\"},\"name\":\"Story Name\",\"slug\":\"story-name\"}}"// Using the Universal JavaScript Client:// https://github.com/storyblok/storyblok-js-clientStoryblok.post('spaces/606/stories', { "publish": 1, "story": { "content": { "body": [], "component": "page" }, "name": "Story Name", "slug": "story-name" }}) .then(response => { console.log(response) }).catch(error => { console.log(error) })$client = new \Storyblok\ManagementClient('YOUR_OAUTH_TOKEN');
$payload = ["publish" => 1,"story" => ["content" => ["body" => [],"component" => "page"],"name" => "Story Name","slug" => "story-name"]];
$client->post('spaces/606/stories', $payload)->getBody();HttpResponse<String> response = Unirest.post("https://mapi.storyblok.com/v1/spaces/606/stories") .header("Content-Type", "application/json") .header("Authorization", "YOUR_OAUTH_TOKEN") .body({"publish":1,"story":{"content":{"body":[],"component":"page"},"name":"Story Name","slug":"story-name"}}) .asString();var client = new RestClient("https://mapi.storyblok.com/v1/spaces/606/stories");var request = new RestRequest(Method.POST);
request.AddHeader("Content-Type", "application/json");request.AddHeader("Authorization", "YOUR_OAUTH_TOKEN");request.AddParameter("application/json", "{\"publish\":1,\"story\":{\"content\":{\"body\":[],\"component\":\"page\"},\"name\":\"Story Name\",\"slug\":\"story-name\"}}", ParameterType.RequestBody);IRestResponse response = client.Execute(request);import requests
url = "https://mapi.storyblok.com/v1/spaces/606/stories"
querystring = {}
payload = {"publish":1,"story":{"content":{"body":[],"component":"page"},"name":"Story Name","slug":"story-name"}}headers = { 'Content-Type': "application/json", 'Authorization': "YOUR_OAUTH_TOKEN"}
response = requests.request("POST", url, data=payload, headers=headers, params=querystring)
print(response.text)require 'storyblok'client = Storyblok::Client.new(oauth_token: 'YOUR_OAUTH_TOKEN')
payload = {"publish" => 1,"story" => {"content" => {"body" => [],"component" => "page"},"name" => "Story Name","slug" => "story-name"}}
client.post('spaces/606/stories', payload)import Foundation
let headers = [ "Content-Type": "application/json", "Authorization": "YOUR_OAUTH_TOKEN"]
let postData = NSData(data: {"publish":1,"story":{"content":{"body":[],"component":"page"},"name":"Story Name","slug":"story-name"}}.data(using: String.Encoding.utf8)!)
let request = NSMutableURLRequest(url: NSURL(string: "https://mapi.storyblok.com/v1/spaces/606/stories")! as URL, cachePolicy: .useProtocolCachePolicy, timeoutInterval: 10.0)request.method = "POST"request.allHTTPHeaderFields = headersrequest.httpBody = postData as Data
let session = URLSession.sharedlet 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()Get in touch with the Storyblok community