Automate Notion with n8n in 5 minutes
Turn any n8n workflow into beautiful Notion pages. Perfect for AI outputs, form submissions, and automated documentation.
What You'll Build
Transform any data source into formatted Notion content:
Setup
For Converting Markdown β Notion Blocks Only
Just need one thing:
-
Get Your Mark2Notion API Key
Sign up free β’ 100 requests/month included
That's it! Use the /convert
endpoint to get Notion-compatible JSON blocks.
For Sending Markdown β Notion Pages (Full Integration)
Need all four items:
1. Get Your Mark2Notion API Key
Sign up free β’ 100 requests/month included
2. Create a Notion Integration
- Go to notion.so/my-integrations
- Click "New integration"
- Copy the Internal Integration Secret (starts with
ntn_
)
3. Share Your Notion Page
- Open your target Notion page
- Click three dots icon on the top right β "Connections" β "Add connection"
- Select your integration
4. Get Your Page ID
Copy from your Notion page URL:
https://notion.so/Your-Page-Title-[PAGE_ID_HERE]
Quick Example
Add a single HTTP Request node in n8n. Here are two configurations depending on your goal.
Convert Markdown to Notion Blocks
https://api.mark2notion.com/api/convert
Authentication - Header Auth
- x-api-key YOUR_API_KEY
Body
- markdown $json.markdown
Send Markdown to Notion Page
https://api.mark2notion.com/api/append
Authentication - Header Auth
- x-api-key YOUR_API_KEY
Body
- markdown $json.markdown
- pageId your-page-id
- notionToken ntn_your_token
Copy & Paste Node Configs
Drop these pre-configured HTTP Request nodes directly into your n8n workflow.
Convert Endpoint (Markdown β Notion Blocks)
Perfect when you need Notion blocks JSON for further processing.
π Copy HTTP Request Node
{
"nodes": [
{
"parameters": {
"method": "POST",
"url": "https://api.mark2notion.com/api/convert",
"authentication": "genericCredentialType",
"genericAuthType": "none",
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "x-api-key",
"value": "YOUR_API_KEY_HERE"
}
]
},
"sendBody": true,
"bodyParameters": {
"parameters": [
{
"name": "markdown",
"value": "={{ $json.markdown }}"
}
]
},
"options": {}
},
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
832,
0
],
"id": "2599ccb7-01d6-4020-9a1d-fb2aae01d286",
"name": "HTTP Request - mark2notion convert"
}
],
"connections": {},
"pinData": {},
"meta": {}
}
How to use:
- Copy the JSON above
- In n8n: Open workflow and Ctrl+V / Cmd+V
- Replace
YOUR_API_KEY_HERE
- Connect to your trigger/data source
Append Endpoint (Markdown β Notion Page)
Directly sends markdown content to your Notion page.
π Copy HTTP Request Node
{
"nodes": [
{
"parameters": {
"method": "POST",
"url": "https://api.mark2notion.com/api/append",
"authentication": "genericCredentialType",
"genericAuthType": "none",
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "x-api-key",
"value": "YOUR_API_KEY_HERE"
}
]
},
"sendBody": true,
"bodyParameters": {
"parameters": [
{
"name": "markdown",
"value": "={{ $json.markdown }}"
},
{
"name": "notionToken"
},
{
"name": "pageId"
}
]
},
"options": {}
},
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
832,
0
],
"id": "2599ccb7-01d6-4020-9a1d-fb2aae01d286",
"name": "HTTP Request - mark2notion append"
}
],
"connections": {},
"pinData": {},
"meta": {}
}
How to use:
- Copy the JSON above
- In n8n: Open workflow and Ctrl+V / Cmd+V
- Replace:
YOUR_API_KEY_HERE
,YOUR_PAGE_ID_HERE
,ntn_YOUR_TOKEN_HERE
- Connect to your data source and execute
n8n Sample Workflow

Troubleshooting
Canβt find the answer youβre looking for? Reach out to our customer support team or see the API documentation.
- "Page not found" or "Unauthorized"
-
- Make sure your integration has access to the page
- Verify the page ID is correct (copy from URL)
- "Invalid API key"
-
- Check for extra spaces in your API key
- Make sure you're using the
x-api-key
header
- Rate limit exceeded
-
- Free plan: 100 requests/month
- Check your usage at dashboard.mark2notion.com
- Markdown not formatting correctly
-
- Check that markdown is valid
- Check that markdown is properly escaped in JSON
- Getting Help