BioFlow
API Reference

Add a block

POST /v1/pages/{page_id}/blocks — Append ONE block to the page DRAFT, preserving every existing block byte-for-byte. Optionally wire an uploaded file (public_path…

POST
/v1/pages/{page_id}/blocks

Append ONE block to the page DRAFT, preserving every existing block byte-for-byte. Optionally wire an uploaded file (public_path from List files) into IMAGE/FILE/CAROUSEL/PRODUCT blocks. Requires expected_updated_at.

Requires scope: pages:write. Plan entitlement: public_api (Creator and Pro).

Consequential operation — send an Idempotency-Key header.

Authorization

AuthorizationBearer <token>

API key (bf_live_… / bf_test_…) as a Bearer token.

In: header

Path Parameters

page_id*string

Page ID from List pages

Length1 <= length

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/problem+json

application/problem+json

application/problem+json

application/problem+json

application/problem+json

curl -X POST "https://example.com/v1/pages/string/blocks" \  -H "Content-Type: application/json" \  -d '{    "expected_updated_at": "string",    "kind": "string"  }'
{  "id": "string",  "title": "string",  "description": "string",  "slug": "string",  "status": "DRAFT",  "locale": "string",  "public_url": "string",  "theme": {    "label": "string",    "preset_key": "string"  },  "draft": {    "updated_at": "2019-08-24T14:15:22Z",    "block_count": 0,    "blocks": [      {        "id": "string",        "kind": "string",        "enabled": true,        "label": "string"      }    ]  },  "published": {    "is_live": true,    "block_count": 0,    "live_updated_at": "2019-08-24T14:15:22Z"  }}