Storyblok Stories API

Stories are the content entries in Storyblok. Each story is defined by a component schema and holds the content of a page, post, or any other structured content type.

Operations 10

GET /stories List multiple stories #
GET /stories/{slug} Retrieve a single story by slug #
GET /stories/{id} Retrieve a single story by ID #
GET /spaces/{space_id}/stories List stories in a space #
POST /spaces/{space_id}/stories Create a story #
GET /spaces/{space_id}/stories/{story_id} Retrieve a single story #
PUT /spaces/{space_id}/stories/{story_id} Update a story #
DELETE /spaces/{space_id}/stories/{story_id} Delete a story #
GET /spaces/{space_id}/stories/{story_id}/publish Publish a story #
GET /spaces/{space_id}/stories/{story_id}/unpublish Unpublish a story #

Work with this as data

Every API 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 apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • 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.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/storyblok-stories-api"
All apis
curl "https://apis.io/api/v1/apis?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.

OpenAPI Specification

storyblok-stories-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Storyblok Stories API
  contact:
    name: Storyblok Support
    url: https://www.storyblok.com/contact
  termsOfService: https://www.storyblok.com/legal/terms-of-service
  version: '1.0'
  description: 'Operations tagged Stories across 2 of this provider''s published API definitions: storyblok-content-delivery-api-v2-openapi.yml, storyblok-management-api-openapi.yml. Each path carries the servers of the definition it was published in.'
servers:
- url: https://api.storyblok.com/v2/cdn
  description: Global Production Server
- url: https://api-us.storyblok.com/v2/cdn
  description: US Production Server
- url: https://api-ap.storyblok.com/v2/cdn
  description: Asia-Pacific Production Server
- url: https://api-ca.storyblok.com/v2/cdn
  description: Canada Production Server
- url: https://api-cn.storyblok.com/v2/cdn
  description: China Production Server
- url: https://mapi.storyblok.com/v1
  description: Management API Production Server
tags:
- name: Stories
  description: Stories are the content entries in Storyblok. Each story is defined by a component schema and holds the content of a page, post, or any other structured content type.
paths:
  /stories:
    get:
      operationId: listStories
      summary: List multiple stories
      description: Returns a paginated list of published stories from the space. Stories can be filtered by slug, tag, component type, and custom fields. The response includes the story content along with metadata such as publication dates and alternate language versions. Pagination is controlled via the page and per_page query parameters.
      tags:
      - Stories
      parameters:
      - $ref: '#/components/parameters/Token'
      - $ref: '#/components/parameters/Version'
      - $ref: '#/components/parameters/Page'
      - $ref: '#/components/parameters/PerPage'
      - name: starts_with
        in: query
        description: Filter stories by full_slug prefix. Only stories whose full_slug starts with the given value are returned. Useful for fetching content within a specific folder.
        required: false
        schema:
          type: string
        example: blog/
      - name: by_slugs
        in: query
        description: Comma-separated list of full_slug values to retrieve specific stories by their slugs.
        required: false
        schema:
          type: string
      - name: excluding_slugs
        in: query
        description: Comma-separated list of full_slug values to exclude from the results.
        required: false
        schema:
          type: string
      - name: with_tag
        in: query
        description: Comma-separated list of tag slugs to filter stories by. Multiple tags are treated as an OR condition.
        required: false
        schema:
          type: string
      - name: is_startpage
        in: query
        description: Set to 1 to only return folder start pages. Set to 0 to exclude them. Omit to return all stories.
        required: false
        schema:
          type: integer
          enum:
          - 0
          - 1
      - name: sort_by
        in: query
        description: 'Sort the response by a specific field and direction. Supports all default story fields and custom fields defined in the component schema. Format: field:asc or field:desc.'
        required: false
        schema:
          type: string
        example: published_at:desc
      - name: search_term
        in: query
        description: Full-text search term to filter stories whose content fields contain the given string.
        required: false
        schema:
          type: string
      - name: resolve_relations
        in: query
        description: Comma-separated list of component.field paths to resolve referenced story relations inline in the response.
        required: false
        schema:
          type: string
      - name: resolve_links
        in: query
        description: Set to story to resolve story link fields. Set to url to resolve to the story URL string.
        required: false
        schema:
          type: string
          enum:
          - story
          - url
      - name: language
        in: query
        description: ISO language code to return the story content in the specified language. Falls back to the default language if the translation is unavailable.
        required: false
        schema:
          type: string
        example: en
      - name: fallback_lang
        in: query
        description: Fallback language code used when the requested language translation is not available.
        required: false
        schema:
          type: string
      - name: filter_query
        in: query
        description: Object to filter stories by custom field values using operators such as in, not_in, like, gt-int, lt-int. Keys are field paths relative to the story content object.
        required: false
        schema:
          type: object
          additionalProperties: true
      - name: by_uuids
        in: query
        description: Comma-separated list of story UUIDs to retrieve specific stories by their unique identifiers.
        required: false
        schema:
          type: string
      - name: excluding_ids
        in: query
        description: Comma-separated list of story IDs to exclude from the results.
        required: false
        schema:
          type: string
      - name: per_page
        in: query
        description: Number of stories to return per page. Maximum 100.
        required: false
        schema:
          type: integer
          minimum: 1
          maximum: 100
          default: 25
      - name: cv
        in: query
        description: Cache version timestamp. Pass the current Unix timestamp to bypass CDN caching and retrieve the latest content.
        required: false
        schema:
          type: integer
      responses:
        '200':
          description: A paginated list of stories was returned successfully.
          headers:
            Total:
              description: Total number of stories matching the query.
              schema:
                type: integer
          content:
            application/json:
              schema:
                type: object
                properties:
                  stories:
                    type: array
                    items:
                      $ref: '#/components/schemas/Story'
                  cv:
                    type: integer
                    description: Cache version value for subsequent requests.
                  rels:
                    type: array
                    description: Resolved relation stories when resolve_relations is used.
                    items:
                      $ref: '#/components/schemas/Story'
                  links:
                    type: array
                    description: Resolved link stories when resolve_links is set to story.
                    items:
                      $ref: '#/components/schemas/Story'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
      security:
      - apiToken: []
    servers:
    - url: https://api.storyblok.com/v2/cdn
      description: Global Production Server
    - url: https://api-us.storyblok.com/v2/cdn
      description: US Production Server
    - url: https://api-ap.storyblok.com/v2/cdn
      description: Asia-Pacific Production Server
    - url: https://api-ca.storyblok.com/v2/cdn
      description: Canada Production Server
    - url: https://api-cn.storyblok.com/v2/cdn
      description: China Production Server
  /stories/{slug}:
    get:
      operationId: getStoryBySlug
      summary: Retrieve a single story by slug
      description: Returns a single published story identified by its full_slug. The slug is the path of the story within the space, such as home or blog/my-post. The response includes the full story content, metadata, and optionally resolved relations and links.
      tags:
      - Stories
      parameters:
      - $ref: '#/components/parameters/StorySlug'
      - $ref: '#/components/parameters/Token'
      - $ref: '#/components/parameters/Version'
      - name: resolve_relations
        in: query
        description: Comma-separated list of component.field paths to resolve referenced story relations inline in the response.
        required: false
        schema:
          type: string
      - name: resolve_links
        in: query
        description: Set to story to resolve story link fields. Set to url to resolve to the story URL string.
        required: false
        schema:
          type: string
          enum:
          - story
          - url
      - name: language
        in: query
        description: ISO language code to return the story content in the specified language.
        required: false
        schema:
          type: string
      - name: cv
        in: query
        description: Cache version timestamp to bypass CDN caching.
        required: false
        schema:
          type: integer
      responses:
        '200':
          description: The story was returned successfully.
          content:
            application/json:
              schema:
                type: object
                properties:
                  story:
                    $ref: '#/components/schemas/Story'
                  cv:
                    type: integer
                    description: Cache version value.
                  rels:
                    type: array
                    description: Resolved relation stories.
                    items:
                      $ref: '#/components/schemas/Story'
                  links:
                    type: array
                    description: Resolved link stories.
                    items:
                      $ref: '#/components/schemas/Story'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
      security:
      - apiToken: []
    servers:
    - url: https://api.storyblok.com/v2/cdn
      description: Global Production Server
    - url: https://api-us.storyblok.com/v2/cdn
      description: US Production Server
    - url: https://api-ap.storyblok.com/v2/cdn
      description: Asia-Pacific Production Server
    - url: https://api-ca.storyblok.com/v2/cdn
      description: Canada Production Server
    - url: https://api-cn.storyblok.com/v2/cdn
      description: China Production Server
  /stories/{id}:
    get:
      operationId: getStoryById
      summary: Retrieve a single story by ID
      description: Returns a single published story identified by its numeric ID. This endpoint is useful when you have a story ID from a relation field and need to retrieve the full story object.
      tags:
      - Stories
      parameters:
      - $ref: '#/components/parameters/StoryId'
      - $ref: '#/components/parameters/Token'
      - $ref: '#/components/parameters/Version'
      - name: language
        in: query
        description: ISO language code to return the story content in.
        required: false
        schema:
          type: string
      - name: cv
        in: query
        description: Cache version timestamp to bypass CDN caching.
        required: false
        schema:
          type: integer
      responses:
        '200':
          description: The story was returned successfully.
          content:
            application/json:
              schema:
                type: object
                properties:
                  story:
                    $ref: '#/components/schemas/Story'
                  cv:
                    type: integer
                    description: Cache version value.
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
      security:
      - apiToken: []
    servers:
    - url: https://api.storyblok.com/v2/cdn
      description: Global Production Server
    - url: https://api-us.storyblok.com/v2/cdn
      description: US Production Server
    - url: https://api-ap.storyblok.com/v2/cdn
      description: Asia-Pacific Production Server
    - url: https://api-ca.storyblok.com/v2/cdn
      description: Canada Production Server
    - url: https://api-cn.storyblok.com/v2/cdn
      description: China Production Server
  /spaces/{space_id}/stories:
    get:
      operationId: listManagementStories
      summary: List stories in a space
      description: Returns a paginated list of stories in the space. The response includes both published and draft stories. Results can be filtered by folder, publication status, component type, and text search.
      tags:
      - Stories
      parameters:
      - $ref: '#/components/parameters/SpaceId'
      - $ref: '#/components/parameters/Page_2'
      - $ref: '#/components/parameters/PerPage_2'
      - name: with_tag
        in: query
        description: Filter stories that have this tag applied.
        required: false
        schema:
          type: string
      - name: folder_only
        in: query
        description: Set to 1 to only return folder stories.
        required: false
        schema:
          type: integer
          enum:
          - 0
          - 1
      - name: story_only
        in: query
        description: Set to 1 to exclude folder stories from the results.
        required: false
        schema:
          type: integer
          enum:
          - 0
          - 1
      - name: by_slugs
        in: query
        description: Comma-separated list of full_slug values to filter by.
        required: false
        schema:
          type: string
      - name: search
        in: query
        description: Text search to filter stories by name.
        required: false
        schema:
          type: string
      - name: sort_by
        in: query
        description: Field and direction to sort by, formatted as field:asc or field:desc.
        required: false
        schema:
          type: string
      - name: starts_with
        in: query
        description: Filter stories whose full_slug starts with this prefix.
        required: false
        schema:
          type: string
      - name: in_trash
        in: query
        description: Set to 1 to return only stories in the trash.
        required: false
        schema:
          type: integer
          enum:
          - 0
          - 1
      - name: in_release
        in: query
        description: Filter stories belonging to a specific release ID.
        required: false
        schema:
          type: integer
      responses:
        '200':
          description: A paginated list of stories was returned successfully.
          headers:
            Total:
              description: Total number of stories matching the query.
              schema:
                type: integer
          content:
            application/json:
              schema:
                type: object
                properties:
                  stories:
                    type: array
                    items:
                      $ref: '#/components/schemas/ManagementStory'
        '401':
          $ref: '#/components/responses/Unauthorized_2'
      security:
      - personalAccessToken: []
      - oauthToken: []
    post:
      operationId: createStory
      summary: Create a story
      description: Creates a new story in the space. The request body must include the story name, slug, and content object. Optionally specify a parent_id to nest the story inside a folder. Stories are created in draft state unless publish is set to 1.
      tags:
      - Stories
      parameters:
      - $ref: '#/components/parameters/SpaceId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - story
              properties:
                story:
                  $ref: '#/components/schemas/StoryInput'
                publish:
                  type: integer
                  enum:
                  - 0
                  - 1
                  description: Set to 1 to immediately publish the story after creation.
      responses:
        '201':
          description: The story was created successfully.
          content:
            application/json:
              schema:
                type: object
                properties:
                  story:
                    $ref: '#/components/schemas/ManagementStory'
        '401':
          $ref: '#/components/responses/Unauthorized_2'
        '422':
          $ref: '#/components/responses/UnprocessableEntity_2'
      security:
      - personalAccessToken: []
      - oauthToken: []
    servers:
    - url: https://mapi.storyblok.com/v1
      description: Management API Production Server
  /spaces/{space_id}/stories/{story_id}:
    get:
      operationId: getManagementStory
      summary: Retrieve a single story
      description: Returns the full details of a single story by its numeric ID, including draft content, workflow state, locks, and publishing history.
      tags:
      - Stories
      parameters:
      - $ref: '#/components/parameters/SpaceId'
      - $ref: '#/components/parameters/StoryId_2'
      responses:
        '200':
          description: The story was returned successfully.
          content:
            application/json:
              schema:
                type: object
                properties:
                  story:
                    $ref: '#/components/schemas/ManagementStory'
        '401':
          $ref: '#/components/responses/Unauthorized_2'
        '404':
          $ref: '#/components/responses/NotFound_2'
      security:
      - personalAccessToken: []
      - oauthToken: []
    put:
      operationId: updateStory
      summary: Update a story
      description: Updates an existing story's content, metadata, or settings. Only the fields provided in the request body are updated. Set publish to 1 to publish the story as part of the update.
      tags:
      - Stories
      parameters:
      - $ref: '#/components/parameters/SpaceId'
      - $ref: '#/components/parameters/StoryId_2'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - story
              properties:
                story:
                  $ref: '#/components/schemas/StoryInput'
                publish:
                  type: integer
                  enum:
                  - 0
                  - 1
                  description: Set to 1 to publish the story as part of this update.
      responses:
        '200':
          description: The story was updated successfully.
          content:
            application/json:
              schema:
                type: object
                properties:
                  story:
                    $ref: '#/components/schemas/ManagementStory'
        '401':
          $ref: '#/components/responses/Unauthorized_2'
        '404':
          $ref: '#/components/responses/NotFound_2'
        '422':
          $ref: '#/components/responses/UnprocessableEntity_2'
      security:
      - personalAccessToken: []
      - oauthToken: []
    delete:
      operationId: deleteStory
      summary: Delete a story
      description: Permanently deletes a story from the space. This action cannot be undone. Deleting a folder story also deletes all stories nested within it.
      tags:
      - Stories
      parameters:
      - $ref: '#/components/parameters/SpaceId'
      - $ref: '#/components/parameters/StoryId_2'
      responses:
        '200':
          description: The story was deleted successfully.
        '401':
          $ref: '#/components/responses/Unauthorized_2'
        '404':
          $ref: '#/components/responses/NotFound_2'
      security:
      - personalAccessToken: []
      - oauthToken: []
    servers:
    - url: https://mapi.storyblok.com/v1
      description: Management API Production Server
  /spaces/{space_id}/stories/{story_id}/publish:
    get:
      operationId: publishStory
      summary: Publish a story
      description: Publishes the current draft version of a story, making it available via the Content Delivery API with the public token. If the story has a scheduled publication date, this endpoint publishes it immediately regardless of the schedule.
      tags:
      - Stories
      parameters:
      - $ref: '#/components/parameters/SpaceId'
      - $ref: '#/components/parameters/StoryId_2'
      - name: release_id
        in: query
        description: Publish the story as part of a specific release rather than immediately to production.
        required: false
        schema:
          type: integer
      - name: lang
        in: query
        description: Language code to publish a specific translation of the story.
        required: false
        schema:
          type: string
      responses:
        '200':
          description: The story was published successfully.
          content:
            application/json:
              schema:
                type: object
                properties:
                  story:
                    $ref: '#/components/schemas/ManagementStory'
        '401':
          $ref: '#/components/responses/Unauthorized_2'
        '404':
          $ref: '#/components/responses/NotFound_2'
      security:
      - personalAccessToken: []
      - oauthToken: []
    servers:
    - url: https://mapi.storyblok.com/v1
      description: Management API Production Server
  /spaces/{space_id}/stories/{story_id}/unpublish:
    get:
      operationId: unpublishStory
      summary: Unpublish a story
      description: Unpublishes a story, removing it from public access via the Content Delivery API. The story's draft content is preserved and can be republished at any time.
      tags:
      - Stories
      parameters:
      - $ref: '#/components/parameters/SpaceId'
      - $ref: '#/components/parameters/StoryId_2'
      responses:
        '200':
          description: The story was unpublished successfully.
          content:
            application/json:
              schema:
                type: object
                properties:
                  story:
                    $ref: '#/components/schemas/ManagementStory'
        '401':
          $ref: '#/components/responses/Unauthorized_2'
        '404':
          $ref: '#/components/responses/NotFound_2'
      security:
      - personalAccessToken: []
      - oauthToken: []
    servers:
    - url: https://mapi.storyblok.com/v1
      description: Management API Production Server
components:
  parameters:
    Version:
      name: version
      in: query
      description: Content version to retrieve. Use published to get published content (default) or draft to get the latest saved draft. The draft version requires the preview API token.
      required: false
      schema:
        type: string
        enum:
        - published
        - draft
        default: published
    Token:
      name: token
      in: query
      description: The API access token for the space. Use the public token to access published content or the preview token to access draft content.
      required: true
      schema:
        type: string
      example: your-public-token
    PerPage:
      name: per_page
      in: query
      description: Number of items to return per page. Maximum is 100 for most endpoints.
      required: false
      schema:
        type: integer
        minimum: 1
        maximum: 100
        default: 25
    Page:
      name: page
      in: query
      description: Page number for paginated results. Starts at 1. Requesting a page higher than the last available page returns an empty array.
      required: false
      schema:
        type: integer
        minimum: 1
        default: 1
    StoryId:
      name: id
      in: path
      description: The numeric ID of the story.
      required: true
      schema:
        type: integer
      example: 123456
    StorySlug:
      name: slug
      in: path
      description: The full_slug of the story, which is the path within the space such as home or blog/my-post.
      required: true
      schema:
        type: string
      example: blog/my-first-post
    SpaceId:
      name: space_id
      in: path
      description: Numeric ID of the Storyblok space.
      required: true
      schema:
        type: integer
      example: 12345
    PerPage_2:
      name: per_page
      in: query
      description: Number of results per page. Maximum 100.
      required: false
      schema:
        type: integer
        minimum: 1
        maximum: 100
        default: 25
    Page_2:
      name: page
      in: query
      description: Page number for paginated results, starting at 1.
      required: false
      schema:
        type: integer
        minimum: 1
        default: 1
    StoryId_2:
      name: story_id
      in: path
      description: Numeric ID of the story.
      required: true
      schema:
        type: integer
      example: 67890
  responses:
    UnprocessableEntity:
      description: The request parameters were invalid. Check the query parameter values for format errors.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    Unauthorized:
      description: The request was not authenticated. Ensure the token query parameter contains a valid public or preview API token for the space.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    NotFound:
      description: The requested story was not found. Check that the slug or ID is correct and that the story is published when using the public token.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    UnprocessableEntity_2:
      description: The request body contained validation errors. Check the error message for details on which fields failed validation.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error_2'
    Unauthorized_2:
      description: Authentication failed. Verify the Authorization header contains a valid personal access token or OAuth token.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error_2'
    NotFound_2:
      description: The requested resource was not found.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error_2'
  schemas:
    Error:
      type: object
      description: Error response returned when an API request fails.
      properties:
        error:
          type: string
          description: Human-readable error message describing what went wrong.
    Story:
      type: object
      description: A story is a content entry in Storyblok. It holds structured content defined by a component schema and metadata such as dates, slug, and language alternates.
      properties:
        id:
          type: integer
          description: Unique numeric identifier of the story.
        uuid:
          type: string
          format: uuid
          description: Universally unique identifier of the story.
        name:
          type: string
          description: Display name of the story as shown in the Storyblok editor.
        slug:
          type: string
          description: URL-safe slug of the story within its parent folder.
        full_slug:
          type: string
          description: Full path of the story including any parent folder slugs, used as the primary URL identifier.
        content:
          type: object
          description: The story content as a nested JSON object. The structure is determined by the component schema assigned to this story. Always includes a component field with the component type name.
          additionalProperties: true
        is_startpage:
          type: boolean
          description: True if this story is the start page (index) of its parent folder.
        parent_id:
          type: integer
          nullable: true
          description: Numeric ID of the parent folder story, or null if at root.
        group_id:
          type: string
          format: uuid
          description: UUID used to group alternate language versions of the same story.
        first_published_at:
          type: string
          format: date-time
          nullable: true
          description: ISO 8601 timestamp of when the story was first published.
        published_at:
          type: string
          format: date-time
          nullable: true
          description: ISO 8601 timestamp of when the story was most recently 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 update.
        sort_by_date:
          type: string
          nullable: true
          description: Optional date string used for custom date-based sorting.
        tag_list:
          type: array
          description: List of tag slugs attached to this story.
          items:
            type: string
        is_folder:
          type: boolean
          description: True if this story is a folder rather than a content entry.
        default_full_slug:
          type: string
          nullable: true
          description: Default language full_slug when the story has language alternates.
        translated_slugs:
          type: array
          description: Language-specific slug overrides for alternate language versions.
          items:
            type: object
            properties:
              path:
                type: string
                description: Translated slug path.
              name:
                type: string
                nullable: true
                description: Translated story name.
              lang:
                type: string
                description: Language code for this translation.
        alternates:
          type: array
          description: Metadata about alternate language versions of this story.
          items:
            $ref: '#/components/schemas/StoryAlternate'
    StoryAlternate:
      type: object
      description: Metadata about an alternate language version of a story.
      properties:
        id:
          type: integer
          description: Numeric ID of the alternate story.
        name:
          type: string
          description: Name of the alternate story.
        slug:
          type: string
          description: Slug of the alternate story.
        full_slug:
          type: string
          description: Full slug of the alternate story.
        is_folder:
          type: boolean
          description: True if the alternate story is a folder.
        parent_id:
          type: integer
          nullable: true
          description: Parent ID of the alternate story.
    ManagementStory:
      type: object
      description: A story as returned by the Management API, including draft content, workflow state, and editorial metadata not available via the Content Delivery API.
      properties:
        id:
          type: integer
          description: Unique numeric identifier of the story.
        uuid:
          type: string
          format: uuid
          description: Universally unique identifier of the story.
        name:
          type: string
          description: Display name of the story in the editor.
        slug:
          type: string
          description: URL-safe slug within the parent folder.
        full_slug:
          type: string
          description: Full path including parent folder slugs.
        content:
          type: object
          description: Story content as a nested JSON object defined by the component schema.
          additionalProperties: true
        is_folder:
          type: boolean
          description: True if this story is a folder.
        is_startpage:
          type: boolean
          description: True if this story is the start page of its folder.
        parent_id:
          type: integer
          nullable: true
          description: Numeric ID of the parent folder, or null if at root.
        group_id:
          type: string
          format: uuid
          description: UUID grouping alternate language versions of this story.
        published:
          type: boolean
          description: True if the story currently has a publis

# --- truncated at 32 KB (35 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/storyblok/refs/heads/main/openapi/storyblok-stories-api-openapi.yml