1. Add a Webhook

Add a Webhook

You can set some of the fields available in the webhook object, below we only list the properties in the example and the possible required fields.

spaces/:space_id/webhook_endpoints/

Path Parameters

  • :space_id

    number

    Numeric id of a space

Request Body Properties

  • webhook_endpoint

    The Webhook Object

    Webhook object

    • activated

      boolean

      Activate or deactivate the current webhook.

    • description

      string

      A brief description of this webhook

    • endpoint

      required string

      Webhook endpoint

    • name

      required string

      Name of this webhook

    • secret

      string

      Webhook secret

    • space_id

      number

      Numeric id of a space

    • actions

      required enum[]

      Webhook triggers, at least one of the options listed below.

      TriggersDescription
      story.publishedtriggered when a story is published
      story.unpublishedtriggered, when a story is unpublished
      story.deletedtriggered, when a story is deleted
      story.movedtriggered when a story is moved from a folder or to a folder
      datasource.entries_updatedtriggered when a new datasource entry is saved or added.
      asset.createdtriggered when an asset is uploaded
      asset.replacedtriggered when an asset is replaced
      asset.deletedtriggered when an asset is deleted
      asset.restoredtriggered when an asset is restored
      user.addedtriggered when a new user is added to the space
      user.removedtriggered when a user is removed from the space
      user.roles_updatedtriggered when a user role is updated
      stage.changedtriggered when the workflow stage of a story changes.
      pipeline.deployedtriggered when a pipeline stage is deployed
      release.mergedtriggered when a release is merged into the currently released content
Request
curl "https://mapi.storyblok.com/v1/spaces/656/webhook_endpoints/" \
  -X POST \
  -H "Content-Type: application/json" \
  -H "Authorization: YOUR_OAUTH_TOKEN" \
  -d "{\"webhook_endpoint\": {\"name\": \"Rebuild Website\",\"endpoint\": \"https://apiendpoint.com\",\"secret\": \"\",\"actions\": [\"story.published\"],\"activated\": true}}"
Request
// Using the Universal JavaScript Client:
// https://github.com/storyblok/storyblok-js-client
Storyblok.post('/spaces/656/webhook_endpoints/', {
    "webhook_endpoint": {
        "name": "Rebuild Website",
        "endpoint": "https://apiendpoint.com",
        "secret": "",
        "actions": [
            "story.published"
        ],
        "activated": true
    }
})
  .then(response => {
    console.log(response)
  }).catch(error => { 
    console.log(error)
  })
Request
$client = new \Storyblok\Client('YOUR_STORYBLOK_SPACE_ACCESS_TOKEN');

$payload = [
    "webhook_endpoint" =>  [
        "name" =>  "Rebuild Website",
        "endpoint" =>  "https => //apiendpoint.com",
        "secret" =>  "",
        "actions" =>  [
            "story.published"
        ],
        "activated" =>  true
    ]
];

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

payload = {
    "webhook_endpoint" =>  {
        "name" =>  "Rebuild Website",
        "endpoint" =>  "https => //apiendpoint.com",
        "secret" =>  "",
        "actions" =>  [
            "story.published"
        ],
        "activated" =>  true
    }
}

client.post('/spaces/656/webhook_endpoints/', payload)
Request
HttpResponse<String> response = Unirest.post("https://mapi.storyblok.com/v1/spaces/656/webhook_endpoints/")
  .header("Content-Type", "application/json")
  .header("Authorization", "YOUR_OAUTH_TOKEN")
  .body("{\"webhook_endpoint\": {\"name\": \"Rebuild Website\",\"endpoint\": \"https://apiendpoint.com\",\"secret\": \"\",\"actions\": [\"story.published\"],\"activated\": true}}")
  .asString();
Request
var client = new RestClient("https://mapi.storyblok.com/v1/spaces/656/webhook_endpoints/");
var request = new RestRequest(Method.POST);

request.AddHeader("Content-Type", "application/json");
request.AddHeader("Authorization", "YOUR_OAUTH_TOKEN");
request.AddParameter("application/json", "{\"webhook_endpoint\": {\"name\": \"Rebuild Website\",\"endpoint\": \"https://apiendpoint.com\",\"secret\": \"\",\"actions\": [\"story.published\"],\"activated\": true}}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
Request
import Foundation

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

let postData = NSData(data: "{\"webhook_endpoint\": {\"name\": \"Rebuild Website\",\"endpoint\": \"https://apiendpoint.com\",\"secret\": \"\",\"actions\": [\"story.published\"],\"activated\": true}}".data(using: String.Encoding.utf8)!)
let request = NSMutableURLRequest(url: NSURL(string: "https://mapi.storyblok.com/v1/spaces/656/webhook_endpoints/")! 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/656/webhook_endpoints/"

querystring = {}

payload = "{\"webhook_endpoint\": {\"name\": \"Rebuild Website\",\"endpoint\": \"https://apiendpoint.com\",\"secret\": \"\",\"actions\": [\"story.published\"],\"activated\": true}}"
headers = {
  'Content-Type': "application/json",
  'Authorization': "YOUR_OAUTH_TOKEN"
}

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

print(response.text)