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, blocks, 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 of 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.
Blocks (Components)
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 + }, ... }
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.
Type | Examples |
---|---|
Content Type | Post, Authors, Product, Page, Team Members, FAQ article |
Nestable | Hero, Grid, Section, Newsletter Section, Chapter, Full Width Image, Slider |
Universal | Banner/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.
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 Type | Description |
---|---|
Blocks | A field to allow the nesting of Blocks. |
Text | A basic single-line text field. |
Textarea | A multi-line text area without formatting options. |
Richtext | A multi-line field with formatting options that results in a JSON format. |
Markdown | A multi-line field with formatting options resulting in Markdown format. |
Number | A number text field without formatting. |
Date/Time | A number text field without formatting. |
Boolean | A boolean checkbox (true/false). |
Multi-Options | A multi-select option of key/value pairs, Stories, Datasources, external JSONs, or Field Level Translation Language. |
References (Multi Options) | A multi-select option for Stories. This field is dedicated to Stories source only to search names and URLs from Stories. |
Single-Option | A dropdown of key/value pairs, Stories, Datasources, external JSONs, or Field Level Translation Languages. |
Asset | A single file upload input and access to the asset manager. You can use "Asset" for images, videos, audio, and documents. |
Multi-Assets | A multi-assets upload input and access to the asset manager. You can use "Multi-Assets" for images, videos, audio, and documents. |
Link | Internal and external links, email, and anchors |
Table | A component to easily manage tabular data |
Group | Allows 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) |
Plugin | Extend the Visual Editor Content area with your own Custom Field Plugin. |
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.
Filetypes | MIME Types |
---|---|
Images | image/x—png, image/png, image/gif, image/jpeg, image/svg+xml, image/webp |
Videos | video/*, application/mp4, application/x—mpegurl, application/vnd.apple.mpegurl, audio/webm |
Audio | audio/* |
Text-Documents | application/msword, text/plain, application/pdf, application/vnd.openxmlformats-officedocument.wordprocessingml.document |
Please be aware of any asset type upload restrictions that may apply to you.