Notion公开集成API添加数据库行时出现404错误求助
问题概述
使用Notion公开集成API时,调用create_notion_page函数可成功在指定父页面下生成新页面,但调用add_row_to_notion_database向关联数据库添加行时,返回404错误:
{"object":"error","status":404,"code":"object_not_found","message":"Could not find database with ID: 583adfba-e506-43a8-b059-47f9c2d63a06. Make sure the relevant pages and databases are shared with your integration.","request_id":"4269100f-74d3-4b2a-8701-17b49ec9d43c"}
已确认父页面已共享给集成,但数据库行添加操作失败。
排查与解决方案
1. 单独共享数据库给集成
Notion中页面共享不自动包含其内部的数据库,即使数据库嵌套在已共享的页面里,也需要单独为数据库设置共享权限:
- 打开目标数据库页面,点击右上角「共享」按钮;
- 在共享弹窗中搜索你的集成名称,添加并授予「编辑」权限;
- 保存设置后重新测试API调用。
2. 验证数据库ID的准确性
确保传入add_row_to_notion_database的database_id是目标数据库的正确ID:
- 数据库ID可从其URL中提取:例如
https://www.notion.so/yourworkspace/583adfba-e506-43a8-b059-47f9c2d63a06?v=xxx中,583adfba-e506-43a8-b059-47f9c2d63a06就是数据库ID; - 确认没有误将页面ID当成数据库ID,或存在字符输入错误。
3. 修正API请求URL
你的add_row_to_notion_database函数中,URL末尾多了一个斜杠:
url = f"https://api.notion.com/v1/pages/"
建议改为与创建页面一致的格式,避免潜在路由问题:
url = "https://api.notion.com/v1/pages"
4. 检查properties参数格式
确保传入的properties严格匹配目标数据库的属性定义:
- 每个属性的键必须与数据库中属性的名称完全一致(区分大小写);
- 属性值的类型要对应:例如数据库中的「标题」属性需要传入
{"title": [{"text": {"content": "xxx"}}]},「选择」属性需要传入{"select": {"name": "选项名"}}等; - 格式不匹配可能导致API返回非直观的404错误,建议先通过Notion API的「检索数据库」接口获取属性模板,再据此构造
properties。
5. 确认集成权限范围
在Notion集成的管理页面,检查是否已勾选Content: Write权限——虽然创建页面成功说明权限已配置,但再次确认可排除权限变更导致的问题。
内容的提问来源于stack exchange,提问作者krisorn kachai

