O’Reilly Report: Decoupled Applications and Composable Web Architectures - Download Now

Empower your teams & get a 582% ROI: See Storyblok's CMS in action

Skip to main content

Structures of Content

Account

An account consists of one registered user with a unique email address. Under one account you can create multiple spaces for your projects and invite other users to those spaces using their account email.

Space

A space is one content repository. Think of it as a place to keep all of the content related to one project. Each space has its own stories, content types, bloks, assets, and configurations (workflow, users, roles, access tokens). If your goal is to deliver the same content with different languages to multiple platforms (a common set would be the web, iOS, and an Android app, digital signage systems, in store screens), then you can use one space and create multiple API keys to deliver the content. If you want to launch several websites or apps that are independent from each other, the best way to do this is to create a separate space for each project.

Story

A “Story” is what we call the content entries you can create in Storyblok. Each story is defined by exactly one Content Type. A Content Type describes the fields that are available for that Story to be filled in by the content creators. In addition to the fields that you define, a Story ships with default properties like name, slug, published_date, and many more. Feel free to see the full list in our Content Delivery API documentation.

{
    "story": {
    "uuid": "ac0d2ed0-e323-43ca-ae59-5cd7d38683cb",
    "name": "My third post",
    "slug": "my-third-post",
    ...
}

Folder

A folder is a collection of stories that can be used to group your entries of specific content types. Do you want to have all your Posts in one place? Creating a folder will allow that. You can also use our API to query on all entries from a specific folder to build out overviews in your project.

{
    "story": {
    "uuid": "ac0d2ed0-e323-43ca-ae59-5cd7d38683cb",
    "name": "My third post",
    "slug": "my-third-post",
+    "full_slug": "posts/my-third-post",
    ...
}

Folder content type restriction

With the content-type restriction, you can restrict specific content types within a folder. This allows you to tailor your folders to hold only the content types you need.

Exclude content type

Component

There are three different types of components you can create in Storyblok: Content-Type, Nestable, and Universal.

Content Type block

Content Types allow you to create templates for your Stories. You can create as many Content Types as you need based on the technical limits of your plan. Common Content Types include Post, Product, Page, or FAQ Entry. After creating Content Types you can create stories of this type, based on the template you defined. By default, we ship a “Page” content type. Of course, if you don’t need this type, you are free to delete it.

{
    "story": {
    "uuid": "ac0d2ed0-e323-43ca-ae59-5cd7d38683cb",
    "name": "My third post",
    "slug": "my-third-post",
    "full_slug": "posts/my-third-post",
+    "content": {
+      "component": "your_content_type",
+      // fields you define for your content type
+    },
    ...
}
IMPORTANT:

You can see the Storyblok pricing to know the limits of the components you can add per plan.


Nestable block

This type of component lives only within a Story and other Bloks, like Hero, Grid, and Full Width Image. You can’t create new Stories from this, as it is only a part of one Story. To use them in one content-type you will need to create a field of the type blocks which allows the nesting of components.

{
    "story": {
    "uuid": "ac0d2ed0-e323-43ca-ae59-5cd7d38683cb",
    "name": "My third post",
    "slug": "my-third-post",
    "full_slug": "posts/my-third-post",
    "content": {
-      "component": "your_content_type",
+      "component": "page",
        // fields you define for your content type
+      "body": [ // also a field you defined (type blocks)
+         {
+            "component": "teaser",
+            "headline": "My headline Content",
+            // fields you define for your blok
+         }
        ]
    },
    ...
}

Universal block

Universal blocks can be used as both Content Type and Nestable blocks at the same time. One can exist as a stand-alone Story, or it can be added into a Story as a Nestable component. For example, when creating a "Product Detail" component, you can incorporate it into a Story that has has a collection of other product detail components, or it can be used as an independent content-type.


TypeExamples
Content TypePost, Authors, Product, Page, Team Members, FAQ article
NestableHero, Grid, Section, Newsletter Section, Chapter, Full Width Image, Slider
UniversalBanner/CTA, Contact Form, Product Detail

Block versions

Block versions record updates made to a block on Storyblok. These versions are cataloged on the versions tab of the specific block.
A block version records changes to the block, such as author name, date, and time of block change. Block versions can be restored and previewed on the block library.



NOTE:

You can learn more about restoring and previewing previous block versions here.

Schema

Each Component, be it a Content Type or Blok, has a defined set of fields, called a Schema. Your Schema consist of one or multiple field(s) with different field types. A schema can have multiple Tabs which allows you to group your fields.

Field

The field type defines what kind of content you want your editors to be able to store. You can choose from many different types:

Field TypeDescription
BlocksA field to allow the nesting of Blocks.
TextA basic single-line text field.
TextareaA multi-line text area without formatting options.
RichtextA multi-line field with formatting options that results in a JSON format.
MarkdownA multi-line field with formatting options resulting in Markdown format.
NumberA number text field without formatting.
Date/TimeA number text field without formatting.
BooleanA boolean checkbox (true/false).
Multi-OptionsA multi-select option of key/value pairs, Stories, Datasources, external JSONs, or Field Level Translation Language.
Single-Option A dropdown of key/value pairs, Stories, Datasources, external JSONs, or Field Level Translation Languages.
AssetA single file upload input and access to the asset manager. You can use "Asset" for images, videos, audio, and documents.
Multi-AssetsA multi-assets upload input and access to the asset manager. You can use "Multi-Assets" for images, videos, audio, and documents.
LinkInternal and external links, email, and anchors
TableA component to easily manage tabular data
GroupAllows you to group fields in a section.
Image (old)A single image upload input and access to the asset manager. Use "Asset" instead of Image (old)
File (old)A single file upload input and access to the asset manager. Use "Asset" instead of File (old)
PluginExtend the Visual Editor Content area with your own Custom Field Plugin.

The field type defines what kind of content you want your editors to be able to store. You can choose from many different types

hint:

For each field, you can set some properties for example for the validation (if it is a mandatory field, maximum length) and for setting the default value.

Asset

Assets in Storyblok are all files that you upload either using an image, file, or multi-assets field or in the asset manager itself. Assets uploaded to Storyblok will be hosted on our infrastructure and delivered through our CDN with the best possible performance for you. Additionally, you can use our built-in image service to optimize and resize your images. Below you can find the MIME types for each asset type.

Assets in Storyblok can be images, videos, audio, documents


FiletypesMIME Types
Imagesimage/x—png, image/png, image/gif, image/jpeg, image/svg+xml, image/webp
Videosvideo/*, application/mp4, application/x—mpegurl, application/vnd.apple.mpegurl, audio/webm
Audioaudio/*
Text-Documentsapplication/msword, text/plain, application/pdf, application/vnd.openxmlformats-officedocument.wordprocessingml.document
warn:

Please be aware of any asset type upload restrictions that may apply to you.