Storyblok Webhook Payload
The payload delivered by Storyblok to registered webhook endpoint URLs when subscribed events occur in a space. Payloads are delivered as HTTP POST requests with Content-Type: application/json. An optional webhook-signature HMAC-SHA1 header is included when a webhook secret is configured.
Properties
| Name | Type | Description |
|---|---|---|
| action | string | The event action that triggered the webhook delivery. Identifies the type of event and the affected resource type. |
| space_id | integer | Numeric ID of the Storyblok space in which the event occurred. |
| text | string | Human-readable description of the event including the resource name, ID, and action performed. |
| story_id | integer | Numeric ID of the story that triggered the event. Present for story.published, story.unpublished, story.deleted, and story.moved events. |
| full_slug | string | Full URL slug of the affected story at the time of the event. Present for story.published and story.moved events. |
| asset_id | integer | Numeric ID of the asset that triggered the event. Present for asset.created and asset.deleted events. |
| datasource_id | integer | Numeric ID of the datasource whose entries were updated. Present for datasource.entries_updated events. |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://storyblok.com/schemas/webhook-payload.json",
"title": "Storyblok Webhook Payload",
"description": "The payload delivered by Storyblok to registered webhook endpoint URLs when subscribed events occur in a space. Payloads are delivered as HTTP POST requests with Content-Type: application/json. An optional webhook-signature HMAC-SHA1 header is included when a webhook secret is configured.",
"type": "object",
"required": ["action", "space_id", "text"],
"properties": {
"action": {
"type": "string",
"description": "The event action that triggered the webhook delivery. Identifies the type of event and the affected resource type.",
"enum": [
"published",
"unpublished",
"deleted",
"moved",
"created",
"entries_updated"
]
},
"space_id": {
"type": "integer",
"description": "Numeric ID of the Storyblok space in which the event occurred."
},
"text": {
"type": "string",
"description": "Human-readable description of the event including the resource name, ID, and action performed."
},
"story_id": {
"type": "integer",
"description": "Numeric ID of the story that triggered the event. Present for story.published, story.unpublished, story.deleted, and story.moved events."
},
"full_slug": {
"type": "string",
"description": "Full URL slug of the affected story at the time of the event. Present for story.published and story.moved events."
},
"asset_id": {
"type": "integer",
"description": "Numeric ID of the asset that triggered the event. Present for asset.created and asset.deleted events."
},
"datasource_id": {
"type": "integer",
"description": "Numeric ID of the datasource whose entries were updated. Present for datasource.entries_updated events."
}
},
"oneOf": [
{
"$ref": "#/$defs/StoryPublishedPayload"
},
{
"$ref": "#/$defs/StoryUnpublishedPayload"
},
{
"$ref": "#/$defs/StoryDeletedPayload"
},
{
"$ref": "#/$defs/StoryMovedPayload"
},
{
"$ref": "#/$defs/AssetEventPayload"
},
{
"$ref": "#/$defs/DatasourceEventPayload"
}
],
"$defs": {
"StoryPublishedPayload": {
"type": "object",
"description": "Webhook payload for the story.published event, delivered when a story is published.",
"required": ["action", "story_id", "space_id", "text", "full_slug"],
"properties": {
"action": {
"type": "string",
"const": "published",
"description": "Always published for this event type."
},
"story_id": {
"type": "integer",
"description": "ID of the story that was published."
},
"space_id": {
"type": "integer",
"description": "ID of the space containing the published story."
},
"full_slug": {
"type": "string",
"description": "Full URL slug of the published story."
},
"text": {
"type": "string",
"description": "Human-readable description of the publication event."
}
}
},
"StoryUnpublishedPayload": {
"type": "object",
"description": "Webhook payload for the story.unpublished event, delivered when a story is removed from public access.",
"required": ["action", "story_id", "space_id", "text"],
"properties": {
"action": {
"type": "string",
"const": "unpublished",
"description": "Always unpublished for this event type."
},
"story_id": {
"type": "integer",
"description": "ID of the story that was unpublished."
},
"space_id": {
"type": "integer",
"description": "ID of the space containing the story."
},
"text": {
"type": "string",
"description": "Human-readable description of the unpublish event."
}
}
},
"StoryDeletedPayload": {
"type": "object",
"description": "Webhook payload for the story.deleted event, delivered when a story is permanently removed from the space.",
"required": ["action", "story_id", "space_id", "text"],
"properties": {
"action": {
"type": "string",
"const": "deleted",
"description": "Always deleted for this event type."
},
"story_id": {
"type": "integer",
"description": "ID of the story that was deleted."
},
"space_id": {
"type": "integer",
"description": "ID of the space from which the story was deleted."
},
"text": {
"type": "string",
"description": "Human-readable description of the deletion event."
}
}
},
"StoryMovedPayload": {
"type": "object",
"description": "Webhook payload for the story.moved event, delivered when a story is moved to a different folder.",
"required": ["action", "story_id", "space_id", "text"],
"properties": {
"action": {
"type": "string",
"const": "moved",
"description": "Always moved for this event type."
},
"story_id": {
"type": "integer",
"description": "ID of the story that was moved."
},
"space_id": {
"type": "integer",
"description": "ID of the space containing the story."
},
"text": {
"type": "string",
"description": "Human-readable description of the move event."
}
}
},
"AssetEventPayload": {
"type": "object",
"description": "Webhook payload for asset events including asset.created and asset.deleted.",
"required": ["action", "asset_id", "space_id", "text"],
"properties": {
"action": {
"type": "string",
"enum": ["created", "deleted"],
"description": "The asset action: created when a new asset is uploaded, deleted when an asset is removed."
},
"asset_id": {
"type": "integer",
"description": "ID of the asset that was created or deleted."
},
"space_id": {
"type": "integer",
"description": "ID of the space containing the asset."
},
"text": {
"type": "string",
"description": "Human-readable description of the asset event."
}
}
},
"DatasourceEventPayload": {
"type": "object",
"description": "Webhook payload for datasource.entries_updated events, delivered when datasource entries change.",
"required": ["action", "datasource_id", "space_id", "text"],
"properties": {
"action": {
"type": "string",
"const": "entries_updated",
"description": "Always entries_updated for datasource events."
},
"datasource_id": {
"type": "integer",
"description": "ID of the datasource whose entries were updated."
},
"space_id": {
"type": "integer",
"description": "ID of the space containing the datasource."
},
"text": {
"type": "string",
"description": "Human-readable description of the datasource update event."
}
}
}
}
}
Work with this as data
Every JSON Schema here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for schemas
4 MCP tools reach this
find_json_schemasBrowse and filter every JSON Schema in the catalog.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.
Call it yourself
curl for this page
curl "https://apis.io/api/v1/json-schemas/storyblok-webhook-payload"
curl "https://apis.io/api/v1/json-schemas?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.