Endpoints
| Method | Path | Description |
|---|
POST | /api/v2/blocks | Create 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
| Type | Use it for | Content field |
|---|
text | Rich text | content — accepts Markdown |
image | Images | url — auto-stored in Flowla S3 |
embed | Web pages, iframes | url |
link | Clickable URLs | url |
pdf | PDF documents | url — auto-stored in Flowla S3 |
action-plan | Task 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.
The page the group belongs to.
The group to add blocks to.
Array of column objects. Each column contains a blocks array stacked vertically.
Multiple columns appear side by side on the page.Show Column object fields
Array of block objects for this column.
type
"text" | "image" | "embed" | "link" | "pdf" | "action-plan"
required
Block type. Immutable after creation.
Text content for text blocks. Accepts Markdown — bold, italic, headings,
lists, tables, blockquotes, and code blocks are converted automatically.
URL for image, embed, link, and pdf blocks.
For image and pdf, any public URL is accepted — the file is automatically
fetched and stored in Flowla S3.
Layout examples
Single column (vertical stack)
{
"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": "link", "url": "https://example.com/pricing" }] }
]
}
{
"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}
The page the block belongs to.
Updated text content (for text blocks). Accepts Markdown.
Updated URL (for image, embed, link, pdf blocks).
For image and pdf, the file is automatically fetched and stored in Flowla S3.
{ "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"