Skip to main content

Endpoints

MethodPathDescription
POST/api/v2/blocksCreate blocks
GET/api/v2/blocks?pageId={page_id}&groupId={group_id}List blocks in a group
PATCH/api/v2/blocks/{block_id}Update a block
DELETE/api/v2/blocks/{block_id}?pageId={page_id}Delete a block
Block type is immutable after creation. To change a block’s type, delete it and create a new one.

Block types

TypeUse it forContent field
textRich textcontent — accepts Markdown
imageImagesurl — auto-stored in Flowla S3
embedWeb pages, iframesurl
linkClickable URLsurl
pdfPDF documentsurl — auto-stored in Flowla S3
action-planTask checklists(no extra fields)

Create blocks

POST /api/v2/blocks Blocks are organized into columns. Each element of columns is a vertical stack of blocks; multiple elements appear side by side.
pageId
string
required
The page the group belongs to.
groupId
string
required
The group to add blocks to.
columns
array
required
Array of column objects. Each column contains a blocks array stacked vertically. Multiple columns appear side by side on the page.

Layout examples

{
  "pageId": "<page_id>",
  "groupId": "<group_id>",
  "columns": [
    {
      "blocks": [
        { "type": "text", "content": "## Welcome\n\nThis is **bold** text." },
        { "type": "image", "url": "https://cdn.example.com/banner.png" }
      ]
    }
  ]
}
{
  "pageId": "<page_id>",
  "groupId": "<group_id>",
  "columns": [
    { "blocks": [{ "type": "text", "content": "Left column" }] },
    { "blocks": [{ "type": "image", "url": "https://cdn.example.com/img.png" }] }
  ]
}
{
  "pageId": "<page_id>",
  "groupId": "<group_id>",
  "columns": [
    { "blocks": [{ "type": "text", "content": "Welcome to the room." }] }
  ]
}
The content field accepts Markdown. Formatting like **bold**, # Heading, bullet lists, and tables are rendered correctly.
{
  "pageId": "<page_id>",
  "groupId": "<group_id>",
  "columns": [
    { "blocks": [{ "type": "image", "url": "https://cdn.example.com/banner.png" }] }
  ]
}
The image is automatically fetched from the provided URL and stored in Flowla S3.
{
  "pageId": "<page_id>",
  "groupId": "<group_id>",
  "columns": [
    { "blocks": [{ "type": "embed", "url": "https://example.com/page" }] }
  ]
}
{
  "pageId": "<page_id>",
  "groupId": "<group_id>",
  "columns": [
    { "blocks": [{ "type": "pdf", "url": "https://cdn.example.com/proposal.pdf" }] }
  ]
}
The PDF is automatically fetched and stored in Flowla S3.
{
  "pageId": "<page_id>",
  "groupId": "<group_id>",
  "columns": [
    { "blocks": [{ "type": "action-plan" }] }
  ]
}
Once created, use the Action Items endpoints to add tasks to this block.
curl -X POST https://api.flowla.com/api/v2/blocks \
  -H "x-flowla-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "pageId": "<page_id>",
    "groupId": "<group_id>",
    "columns": [{ "blocks": [{ "type": "action-plan" }] }]
  }'

List blocks

GET /api/v2/blocks?pageId={page_id}&groupId={group_id}
curl "https://api.flowla.com/api/v2/blocks?pageId=<page_id>&groupId=<group_id>" \
  -H "x-flowla-api-key: YOUR_API_KEY"

Update a block

PATCH /api/v2/blocks/{block_id}
pageId
string
required
The page the block belongs to.
content
string
Updated text content (for text blocks). Accepts Markdown.
url
string
Updated URL (for image, embed, link, pdf blocks). For image and pdf, the file is automatically fetched and stored in Flowla S3.
Example
{ "pageId": "<page_id>", "content": "Updated **text** content" }
curl -X PATCH https://api.flowla.com/api/v2/blocks/<block_id> \
  -H "x-flowla-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"pageId": "<page_id>", "content": "Updated text content"}'

Delete a block

DELETE /api/v2/blocks/{block_id}?pageId={page_id}
If the block is an action-plan block, all its action items are deleted too.
curl -X DELETE "https://api.flowla.com/api/v2/blocks/<block_id>?pageId=<page_id>" \
  -H "x-flowla-api-key: YOUR_API_KEY"