Storyblok Collaborators API

Collaborators are users invited to a Storyblok space with specific roles and permissions. The Management API allows adding, updating, and removing collaborators.

OpenAPI Specification

storyblok-collaborators-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Storyblok Content Delivery API v2 Assets Collaborators API
  description: The Storyblok Content Delivery API v2 is a REST API that enables developers to fetch published content from a Storyblok space for delivery to end users across web, mobile, and other channels. It provides access to stories, datasources, links, tags, and asset metadata through predictable endpoints with token-based authentication. The API supports filtering, pagination, full-text search, and relation resolution, allowing developers to retrieve precisely the content their application needs. It is optimized for performance and available across multiple regional endpoints to minimize latency for global deployments.
  version: '2'
  contact:
    name: Storyblok Support
    url: https://www.storyblok.com/contact
  termsOfService: https://www.storyblok.com/legal/terms-of-service
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
security:
- apiToken: []
tags:
- name: Collaborators
  description: Collaborators are users invited to a Storyblok space with specific roles and permissions. The Management API allows adding, updating, and removing collaborators.
paths:
  /spaces/{space_id}/collaborators:
    get:
      operationId: listCollaborators
      summary: List collaborators in a space
      description: Returns a list of all collaborators who have access to the space, including their roles, permissions, and invitation status.
      tags:
      - Collaborators
      parameters:
      - $ref: '#/components/parameters/SpaceId'
      responses:
        '200':
          description: A list of collaborators was returned successfully.
          content:
            application/json:
              schema:
                type: object
                properties:
                  collaborators:
                    type: array
                    items:
                      $ref: '#/components/schemas/Collaborator'
        '401':
          $ref: '#/components/responses/Unauthorized'
    post:
      operationId: addCollaborator
      summary: Add a collaborator
      description: Invites a user to the space by email address and assigns them a role. If the user already has a Storyblok account they will be added immediately; otherwise an invitation email is sent.
      tags:
      - Collaborators
      parameters:
      - $ref: '#/components/parameters/SpaceId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - collaborator
              properties:
                collaborator:
                  $ref: '#/components/schemas/CollaboratorInput'
      responses:
        '201':
          description: The collaborator was added successfully.
          content:
            application/json:
              schema:
                type: object
                properties:
                  collaborator:
                    $ref: '#/components/schemas/Collaborator'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
  /spaces/{space_id}/collaborators/{collaborator_id}:
    delete:
      operationId: deleteCollaborator
      summary: Remove a collaborator
      description: Removes a collaborator from the space, revoking their access. The user's Storyblok account is not deleted; they simply lose access to this space.
      tags:
      - Collaborators
      parameters:
      - $ref: '#/components/parameters/SpaceId'
      - name: collaborator_id
        in: path
        description: Numeric ID of the collaborator to remove.
        required: true
        schema:
          type: integer
      responses:
        '200':
          description: The collaborator was removed successfully.
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
components:
  responses:
    Unauthorized:
      description: Authentication failed. Verify the Authorization header contains a valid personal access token or OAuth token.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    NotFound:
      description: The requested resource was not found.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    UnprocessableEntity:
      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'
  parameters:
    SpaceId:
      name: space_id
      in: path
      description: Numeric ID of the Storyblok space.
      required: true
      schema:
        type: integer
      example: 12345
  schemas:
    Collaborator:
      type: object
      description: A collaborator with access to the space, including their role assignment and invitation status.
      properties:
        id:
          type: integer
          description: Unique numeric identifier of the collaborator record.
        user_id:
          type: integer
          description: Numeric ID of the associated Storyblok user account.
        role:
          type: string
          description: Role assigned to the collaborator. Built-in roles are admin, editor, and viewer.
          enum:
          - admin
          - editor
          - viewer
        invited:
          type: boolean
          description: True if an invitation email was sent and not yet accepted.
        space_role_id:
          type: integer
          nullable: true
          description: ID of a custom space role if a custom role is assigned.
        space_role_ids:
          type: array
          description: List of custom space role IDs assigned to this collaborator.
          items:
            type: integer
        user:
          type: object
          description: Basic user profile information.
          properties:
            userid:
              type: string
              description: Storyblok username.
            email:
              type: string
              format: email
              description: Email address of the collaborator.
            avatar:
              type: string
              nullable: true
              description: URL of the user's avatar image.
            friendly_name:
              type: string
              description: Display name of the user.
    Error:
      type: object
      description: Error response returned when an API request fails.
      properties:
        error:
          type: string
          description: Human-readable message describing the error.
    CollaboratorInput:
      type: object
      description: Input for inviting a collaborator to a space.
      required:
      - email
      - role
      properties:
        email:
          type: string
          format: email
          description: Email address of the user to invite.
        role:
          type: string
          description: Role to assign to the collaborator.
          enum:
          - admin
          - editor
          - viewer
        space_role_id:
          type: integer
          description: ID of a custom space role to assign instead of a built-in role.
  securitySchemes:
    apiToken:
      type: apiKey
      in: query
      name: token
      description: Public API token for accessing published content, or Preview API token for accessing draft and published content. Tokens are scoped to a specific Storyblok space.
externalDocs:
  description: Storyblok Content Delivery API v2 Documentation
  url: https://www.storyblok.com/docs/api/content-delivery/v2