使用Notion API追加块子元素时出现400错误,如何修复?
解决Notion Patch Block Children接口400错误的方案
核心问题分析
你的代码触发400错误主要有两个关键原因:
- 缺少必填请求体:Patch Block Children接口要求必须传入要添加/更新的子块内容,你的请求未提交任何数据。
- 占位符未替换:URL中的
{my_blockid}和请求头里的{my_token}是示例占位符,需要替换为你实际的Notion块ID和API令牌。
修正后的代码示例
import requests import json # 替换为你的实际块ID和API令牌 BLOCK_ID = "your_actual_block_id_here" NOTION_TOKEN = "your_actual_notion_token_here" url = f"https://api.notion.com/v1/blocks/{BLOCK_ID}/children" headers = { 'Authorization': f'Bearer {NOTION_TOKEN}', "accept": "application/json", "Notion-Version": "2022-06-28", "content-type": "application/json" } # 构造要添加的子块数据(示例:添加一个文本段落) payload = { "children": [ { "object": "block", "type": "paragraph", "paragraph": { "rich_text": [ { "type": "text", "text": { "content": "这是通过API添加的子块内容" } } ] } } ] } # 发送请求时传入请求体 response = requests.patch(url, headers=headers, data=json.dumps(payload)) print(response.status_code) print(response.json()) # 打印响应内容,方便排查其他问题
额外排查要点
- 块权限验证:确保API令牌拥有该块的编辑权限,且块所在的页面/数据库已共享给你的集成应用。
- Notion版本兼容性:建议使用文档推荐的稳定API版本(如2022-06-28或更新),避免版本不兼容导致的错误。
- 请求体格式检查:确保子块结构符合Notion API要求,每个块必须包含
object、type字段,以及对应类型的内容结构,避免语法错误。
内容的提问来源于stack exchange,提问作者Copperfield David
相关产品推荐
相关产品推荐

