Skip to main content
POST
/
rooms
/
{uuid}
/
blocks
Add a block to a room
curl --request POST \
  --url https://api.journeybee.io/v1/rooms/{uuid}/blocks \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "series": 123,
  "label": "<string>",
  "content": {},
  "block_settings": {
    "display": {
      "height": 123,
      "fullScreen": true,
      "showExternalLink": true
    },
    "goals": {
      "showProgress": true,
      "showCountdown": true,
      "allowResourceLinks": true
    },
    "advanced_search": {
      "title": "<string>",
      "placeholder": "<string>",
      "showAITab": true,
      "showQuickActions": true
    },
    "pricing_calculator": {
      "allowCreateLead": true,
      "enable_lead_submission": true,
      "customCustomerName": "<string>"
    },
    "banner": {}
  },
  "asset_uuid": "<string>",
  "markdown": "<string>"
}
'
{
  "uuid": "<string>",
  "label": "<string>",
  "series": 123,
  "content": "<unknown>",
  "block_settings": {
    "display": {
      "height": 123,
      "fullScreen": true,
      "showExternalLink": true
    },
    "action_bar": {
      "buttons": [
        {
          "label": "<string>",
          "icon": "<string>",
          "url": "<string>",
          "background_color": "<string>",
          "text_color": "<string>",
          "icon_color": "<string>",
          "room_uuid": "<string>",
          "series": 500
        }
      ]
    },
    "goals": {
      "showProgress": true,
      "showCountdown": true,
      "allowResourceLinks": true
    },
    "advanced_search": {
      "title": "<string>",
      "placeholder": "<string>",
      "showAITab": true,
      "showQuickActions": true
    },
    "pricing_calculator": {
      "allowCreateLead": true,
      "enable_lead_submission": true,
      "customCustomerName": "<string>"
    },
    "banner": {}
  },
  "asset_uuid": "<string>",
  "created_at": "<string>",
  "updated_at": "<string>"
}

Authorizations

Authorization
string
header
required

API key authentication. Use "Bearer <api_key>" or "Api-Key <api_key>".

Path Parameters

uuid
string<uuid>
required
Pattern: ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$

Body

application/json

Create a content block. Rooms are composed of ordered blocks — each block is a distinct content unit (text, image, video, goals, action bar, etc.).

Create a content block. Rooms are composed of ordered blocks — each block is a distinct content unit (text, image, video, goals, action bar, etc.).

block_type
enum<string>
required

Block type. Determines how content is interpreted: text (TipTap JSON), image (use asset_uuid), video (use asset_uuid), document (use asset_uuid), embed (use content with url), introduction (TipTap JSON), action_bar (use block_settings.action_bar), banner (use block_settings.banner), lead_deal_analytics (no content), goals (content with goals array), link (content with links), advanced_search (use block_settings.advanced_search), files (content with files array), pricing_calculator (use block_settings.pricing_calculator).

Available options:
text,
image,
video,
document,
embed,
introduction,
action_bar,
banner,
lead_deal_analytics,
goals,
link,
advanced_search,
files,
pricing_calculator,
partner_details
series
number
required

Display order (1-indexed). Blocks are rendered in ascending series order.

label
string | null
content
object

Block content. Shape depends on block_type: text/introduction -> TipTap JSON; goals -> {title, description, goals: [...]}; link -> link collection; files -> {files: [...]}; embed -> {url}; image/video/document -> null (use asset_uuid); action_bar/banner/advanced_search/pricing_calculator/lead_deal_analytics -> null (use block_settings).

block_settings
object

Block-type-specific settings. See apiRoomBlockSettingsSchema for details.

asset_uuid
string

Asset UUID for image, video, or document blocks.

markdown
string

Markdown content for text blocks. When provided, converts to TipTap JSON and overrides the content field.

Maximum string length: 100000

Response

201 - application/json

Default Response

uuid
string
required
block_type
enum<string>
required
Available options:
text,
image,
video,
document,
embed,
introduction,
action_bar,
banner,
lead_deal_analytics,
goals,
link,
advanced_search,
files,
pricing_calculator,
partner_details
label
string | null
required
series
number
required

Display order (1-indexed)

content
any
required

Block content — shape varies by block_type. See documentation.

block_settings
object
required

Block-type-specific settings. Only the key matching the block_type is relevant: action_bar blocks use action_bar, goals blocks use goals, banner blocks use banner, etc.

asset_uuid
string | null
required

Associated asset (image, video file, document, etc.)

created_at
string
required
updated_at
string
required