Update a Story
https://mapi.storyblok.com/v1/spaces/:space_id/stories/:story_idUse this endpoint for migrations, updates (new component structure, and more), or bulk actions.
To publish a story immediately, set the publish parameter to 1.
To define alternate versions of a story, set the group_id to the same group_id of the story (or stories) that should be the alternate(s).
Path parameters
Section titled “Path parameters”- :space_id required number
Numeric ID of a space
- :story_id required number
Numeric ID of a story
Request body properties
Section titled “Request body properties”- story The Story Object
- group_id string
Group ID (
UUIDstring), shared between stories defined as alternates - force_update string
Set to
1to force an update of a locked story.
A story is locked when another user edits it. Forcing an update via the API causes a content conflict.force_updatehas no effect if the story is locked as part of a workflow stage. - release_id number
Numeric ID of a release
- publish number
Set to
1to publish immediately - lang string
Language code to publish the story individually (must be enabled in Settings > Internationalization)
Response properties
Section titled “Response properties”- story The Story Object
Examples
Section titled “Examples”curl "https://mapi.storyblok.com/v1/spaces/606/stories/2141" \ -X PUT \ -H "Authorization: YOUR_OAUTH_TOKEN" \ -H "Content-Type: application/json" \ -d "{\"force_update\":1,\"publish\":1,\"story\":{\"content\":{\"body\":[],\"component\":\"page\"},\"id\":2141,\"name\":\"Updated Story Name\",\"slug\":\"story-name\"}}"// Using the Universal JavaScript Client:// https://github.com/storyblok/storyblok-js-clientStoryblok.put('spaces/606/stories/2141', { "force_update": 1, "publish": 1, "story": { "content": { "body": [], "component": "page" }, "id": 2141, "name": "Updated Story Name", "slug": "story-name" }}) .then(response => { console.log(response) }).catch(error => { console.log(error) })$client = new \Storyblok\ManagementClient('YOUR_OAUTH_TOKEN');
$payload = ["force_update" => 1,"publish" => 1,"story" => ["content" => ["body" => [],"component" => "page"],"id" => 2141,"name" => "Updated Story Name","slug" => "story-name"]];
$client->put('spaces/606/stories/2141', $payload)->getBody();HttpResponse<String> response = Unirest.put("https://mapi.storyblok.com/v1/spaces/606/stories/2141") .header("Content-Type", "application/json") .header("Authorization", "YOUR_OAUTH_TOKEN") .body({"force_update":1,"publish":1,"story":{"content":{"body":[],"component":"page"},"id":2141,"name":"Updated Story Name","slug":"story-name"}}) .asString();var client = new RestClient("https://mapi.storyblok.com/v1/spaces/606/stories/2141");var request = new RestRequest(Method.PUT);
request.AddHeader("Content-Type", "application/json");request.AddHeader("Authorization", "YOUR_OAUTH_TOKEN");request.AddParameter("application/json", "{\"force_update\":1,\"publish\":1,\"story\":{\"content\":{\"body\":[],\"component\":\"page\"},\"id\":2141,\"name\":\"Updated Story Name\",\"slug\":\"story-name\"}}", ParameterType.RequestBody);IRestResponse response = client.Execute(request);import requests
url = "https://mapi.storyblok.com/v1/spaces/606/stories/2141"
querystring = {}
payload = {"force_update":1,"publish":1,"story":{"content":{"body":[],"component":"page"},"id":2141,"name":"Updated Story Name","slug":"story-name"}}headers = { 'Content-Type': "application/json", 'Authorization': "YOUR_OAUTH_TOKEN"}
response = requests.request("PUT", url, data=payload, headers=headers, params=querystring)
print(response.text)require 'storyblok'client = Storyblok::Client.new(oauth_token: 'YOUR_OAUTH_TOKEN')
payload = {"force_update" => 1,"publish" => 1,"story" => {"content" => {"body" => [],"component" => "page"},"id" => 2141,"name" => "Updated Story Name","slug" => "story-name"}}
client.put('spaces/606/stories/2141', payload)import Foundation
let headers = [ "Content-Type": "application/json", "Authorization": "YOUR_OAUTH_TOKEN"]
let postData = NSData(data: {"force_update":1,"publish":1,"story":{"content":{"body":[],"component":"page"},"id":2141,"name":"Updated Story Name","slug":"story-name"}}.data(using: String.Encoding.utf8)!)
let request = NSMutableURLRequest(url: NSURL(string: "https://mapi.storyblok.com/v1/spaces/606/stories/2141")! as URL, cachePolicy: .useProtocolCachePolicy, timeoutInterval: 10.0)request.method = "PUT"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()Request for updating assets in a specific story.
//...{"component": "image", "image_file": {
// Change the values: "alt": "Image alt text", "copyright": null, "fieldtype": "asset", "filename": "<https://a.storyblok.com/f/656/9c40e5/image_file_name.jpg>", "focus": null, "id": 123456789, "name": "", "title": null }
}Get in touch with the Storyblok community