Storyblok · Schema
Storyblok Story
A content entry (story) in Storyblok. Stories hold structured content defined by a component schema and include metadata such as publication timestamps, slugs, and language alternates.
CMSContent DeliveryContent ManagementHeadless CMSImage OptimizationREST APIVisual EditorWebhooks
Properties
| Name | Type | Description |
|---|---|---|
| id | integer | Unique numeric identifier of the story within the space. |
| uuid | string | Universally unique identifier for cross-space references and relation resolution. |
| name | string | Display name of the story as shown in the Storyblok editor. |
| slug | string | URL-safe slug segment of the story within its parent folder. |
| full_slug | string | Full path of the story including parent folder slugs, used as the primary URL identifier. |
| content | object | The story content as a nested JSON object. Structure is determined by the assigned component schema. Always includes a component field identifying the root component type. |
| is_startpage | boolean | True if this story is the start page (index entry) of its parent folder. |
| is_folder | boolean | True if this story is a folder rather than a content entry. |
| parent_id | integernull | Numeric ID of the parent folder story, or null if the story is at the root level. |
| group_id | string | UUID used to group alternate language versions of the same story together. |
| published | boolean | True if the story currently has an active published version visible via the public API token. |
| published_at | stringnull | ISO 8601 timestamp of when the story was most recently published. Null if never published. |
| first_published_at | stringnull | ISO 8601 timestamp of when the story was first ever published. Null if never published. |
| created_at | string | ISO 8601 timestamp of when the story was created. |
| updated_at | string | ISO 8601 timestamp of the most recent modification to the story. |
| sort_by_date | stringnull | Optional date string used for custom date-based sorting of stories in lists. |
| tag_list | array | List of tag slugs applied to this story for categorization and filtering. |
| position | integer | Numeric sort position of the story within its parent folder. |
| pinned | boolean | True if the story is pinned in the editor interface for quick access. |
| default_full_slug | stringnull | The default language full_slug when the story has alternate language translations. |
| translated_slugs | array | Language-specific slug overrides for alternate language versions of this story. |
| alternates | array | Metadata references to alternate language versions of this story. |
| meta_data | objectnull | Arbitrary custom metadata key-value pairs attached to the story. |
| path | stringnull | Custom URL path override for the story, used instead of the full_slug. |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://storyblok.com/schemas/story.json",
"title": "Storyblok Story",
"description": "A content entry (story) in Storyblok. Stories hold structured content defined by a component schema and include metadata such as publication timestamps, slugs, and language alternates.",
"type": "object",
"required": ["id", "uuid", "name", "slug", "full_slug", "content", "created_at"],
"properties": {
"id": {
"type": "integer",
"description": "Unique numeric identifier of the story within the space."
},
"uuid": {
"type": "string",
"format": "uuid",
"description": "Universally unique identifier for cross-space references and relation resolution."
},
"name": {
"type": "string",
"minLength": 1,
"description": "Display name of the story as shown in the Storyblok editor."
},
"slug": {
"type": "string",
"pattern": "^[a-z0-9-_]+$",
"description": "URL-safe slug segment of the story within its parent folder."
},
"full_slug": {
"type": "string",
"description": "Full path of the story including parent folder slugs, used as the primary URL identifier."
},
"content": {
"type": "object",
"description": "The story content as a nested JSON object. Structure is determined by the assigned component schema. Always includes a component field identifying the root component type.",
"required": ["component"],
"properties": {
"component": {
"type": "string",
"description": "Technical name of the component schema used for this story content."
},
"_uid": {
"type": "string",
"format": "uuid",
"description": "Unique identifier for the root content block."
}
},
"additionalProperties": true
},
"is_startpage": {
"type": "boolean",
"description": "True if this story is the start page (index entry) of its parent folder."
},
"is_folder": {
"type": "boolean",
"description": "True if this story is a folder rather than a content entry."
},
"parent_id": {
"type": ["integer", "null"],
"description": "Numeric ID of the parent folder story, or null if the story is at the root level."
},
"group_id": {
"type": "string",
"format": "uuid",
"description": "UUID used to group alternate language versions of the same story together."
},
"published": {
"type": "boolean",
"description": "True if the story currently has an active published version visible via the public API token."
},
"published_at": {
"type": ["string", "null"],
"format": "date-time",
"description": "ISO 8601 timestamp of when the story was most recently published. Null if never published."
},
"first_published_at": {
"type": ["string", "null"],
"format": "date-time",
"description": "ISO 8601 timestamp of when the story was first ever published. Null if never published."
},
"created_at": {
"type": "string",
"format": "date-time",
"description": "ISO 8601 timestamp of when the story was created."
},
"updated_at": {
"type": "string",
"format": "date-time",
"description": "ISO 8601 timestamp of the most recent modification to the story."
},
"sort_by_date": {
"type": ["string", "null"],
"description": "Optional date string used for custom date-based sorting of stories in lists."
},
"tag_list": {
"type": "array",
"description": "List of tag slugs applied to this story for categorization and filtering.",
"items": {
"type": "string"
},
"uniqueItems": true
},
"position": {
"type": "integer",
"description": "Numeric sort position of the story within its parent folder."
},
"pinned": {
"type": "boolean",
"description": "True if the story is pinned in the editor interface for quick access."
},
"default_full_slug": {
"type": ["string", "null"],
"description": "The default language full_slug when the story has alternate language translations."
},
"translated_slugs": {
"type": "array",
"description": "Language-specific slug overrides for alternate language versions of this story.",
"items": {
"$ref": "#/$defs/TranslatedSlug"
}
},
"alternates": {
"type": "array",
"description": "Metadata references to alternate language versions of this story.",
"items": {
"$ref": "#/$defs/StoryAlternate"
}
},
"meta_data": {
"type": ["object", "null"],
"description": "Arbitrary custom metadata key-value pairs attached to the story.",
"additionalProperties": true
},
"path": {
"type": ["string", "null"],
"description": "Custom URL path override for the story, used instead of the full_slug."
}
},
"$defs": {
"TranslatedSlug": {
"type": "object",
"description": "A language-specific slug override for an alternate language version of a story.",
"required": ["lang", "path"],
"properties": {
"lang": {
"type": "string",
"description": "ISO language code for this translated slug, such as de or fr."
},
"path": {
"type": "string",
"description": "The translated slug path for this language version."
},
"name": {
"type": ["string", "null"],
"description": "Optional translated display name for this language version."
}
}
},
"StoryAlternate": {
"type": "object",
"description": "Brief metadata about an alternate language version of a story.",
"required": ["id", "full_slug"],
"properties": {
"id": {
"type": "integer",
"description": "Numeric ID of the alternate story."
},
"name": {
"type": "string",
"description": "Display name of the alternate story."
},
"slug": {
"type": "string",
"description": "Slug segment of the alternate story."
},
"full_slug": {
"type": "string",
"description": "Full path of the alternate story."
},
"is_folder": {
"type": "boolean",
"description": "True if the alternate is a folder."
},
"parent_id": {
"type": ["integer", "null"],
"description": "Parent folder ID of the alternate story."
}
}
},
"ContentBlock": {
"type": "object",
"description": "A nestable content block within a story's content tree. Each block is identified by a component type and a unique block ID.",
"required": ["component", "_uid"],
"properties": {
"component": {
"type": "string",
"description": "Technical name of the component schema defining this block's fields."
},
"_uid": {
"type": "string",
"format": "uuid",
"description": "Unique identifier for this content block instance."
}
},
"additionalProperties": true
}
}
}