communication
api_limits
ai_generated
true
Notion API returns 400 error or silently truncates content when block has too much text
ID: communication/notion-api-rich-text-block-limit
85%Fix Rate
88%Confidence
3Evidence
2023-01-01First Seen
Version Compatibility
| Version | Status | Introduced | Deprecated | Notes |
|---|---|---|---|---|
| any | active | — | — | — |
Root Cause
Notion API limits rich text per block to 2000 characters. A single paragraph block cannot exceed this. The API either returns 400 or silently truncates. Also, page content is limited to 100 blocks per API call (pagination required).
genericWorkarounds
-
92% success Split text into 2000-character chunks across multiple paragraph blocks
chunks = [text[i:i+2000] for i in range(0, len(text), 2000)]; blocks = [{'paragraph': {'rich_text': [{'text': {'content': c}}]}} for c in chunks] -
88% success Batch block appends in groups of 100
for i in range(0, len(blocks), 100): notion.blocks.children.append(page_id, children=blocks[i:i+100])
-
80% success Use Notion's toggle blocks for very long content to keep pages manageable
Wrap long content sections in toggle blocks. Each toggle can contain sub-blocks with their own 2000-char limits.
Dead Ends
Common approaches that don't work:
-
Send a large text block assuming it will be stored as-is
88% fail
Notion truncates at 2000 characters per rich text array element and 100 blocks per append call. Large documents are silently cut off.
-
Append all blocks in a single API call
82% fail
Maximum 100 blocks per append_block_children call. Documents with more blocks need paginated appends.