Messaging
Notion
target_app: "notion" · endpoint /v1/messaging/execute · Bring your own credentials
Setup
Create an integration at notion.so/my-integrations, copy the Internal Integration Token, then — critically — open the specific database/page in Notion and manually share it with your integration (Notion integrations see NOTHING by default until you share each page/database with them individually).
Credentials needed on your Connections page
Actions
create_page
Create a new page in a database.
Request body:
{
"user_id": "...",
"action": "create_page",
"payload": { "databaseId": "...", "properties": { "Name": { "title": [{ "text": { "content": "New task" } }] } } },
"target_app": "notion"
}provider_response.result shape:
{ "id": "...", "url": "https://notion.so/..." }get_page
Fetch a page by ID.
Request body:
{
"user_id": "...",
"action": "get_page",
"payload": { "pageId": "..." },
"target_app": "notion"
}provider_response.result shape:
{ "id": "...", "properties": {...} }query_database
Search/filter rows in a database.
Request body:
{
"user_id": "...",
"action": "query_database",
"payload": { "databaseId": "...", "filter": { "property": "Status", "select": { "equals": "Done" } } },
"target_app": "notion"
}provider_response.result shape:
{ "results": [ {...page...} ] }Anticipated errors & fixes
404 "Could not find database/page"
Cause: The integration was never shared with that specific database/page — this is the #1 Notion mistake.
Fix: Open the database in Notion → ⋯ menu → Add connections → select your integration.
400 "body failed validation"
Cause: properties object shape doesn't match your database's actual property names/types.
Fix: Open the database's API documentation (Notion → ⋯ → API documentation) to see the exact property schema expected.
401 "Unauthorized: Invalid API key."
Cause: Your eConnect Authorization header is missing, malformed, or the key was regenerated/revoked.
Fix: Copy your api_key fresh from the eConnect dashboard and confirm the header reads exactly "Authorization: Bearer <key>".
429 "Too many requests"
Cause: You've exceeded your plan's per-minute rate limit.
Fix: Wait a minute and retry, or upgrade your plan for a higher per-minute limit.
429 "Monthly API limit exceeded"
Cause: You've used your plan's full monthly request allowance.
Fix: Wait for your next billing cycle reset, or upgrade to a plan with a higher monthly limit.