POST
/
api
/
append-blocks
Append Prebuilt Blocks
curl --request POST \
  --url https://api.mark2notion.com/api/append-blocks \
  --header 'Content-Type: application/json' \
  --header 'x-api-key: <x-api-key>' \
  --data '{
  "blocks": [
    {}
  ],
  "notionToken": "<string>",
  "pageId": "<string>",
  "after": "<string>"
}'
{
  "status": "success",
  "data": {
    "totalBlocks": 2,
    "requestCount": 1,
    "retryCount": 0,
    "lastBlockId": "f9e8d7c6-b5a4-3210-9876-543210fedcba"
  }
}

Overview

Use the append-blocks endpoint when you already have an array of Notion block objects and simply need them inserted into a page. This endpoint skips Markdown conversion and feeds your blocks through the same intelligent planning, batching, and retry logic used by the Markdown append workflow.

Request

x-api-key
string
required
Your Mark2Notion API key
blocks
array
required
Array of Notion block objects you want to append. Each block must follow the structure expected by the Notion API, including nested children when needed.
notionToken
string
required
Your Notion integration token (from notion.so/my-integrations)
pageId
string
required
The ID of the Notion page to append content to
after
string
Optional block ID to append content after. If omitted, blocks are appended to the end of the page.

Response

status
string
Will be “success” for successful requests
data
object

Examples

curl -X POST "https://api.mark2notion.com/api/append-blocks" \
  -H "Content-Type: application/json" \
  -H "x-api-key: YOUR_API_KEY" \
  -d '{
    "blocks": [
      {
        "object": "block",
        "type": "paragraph",
        "paragraph": {
          "rich_text": [
            {
              "type": "text",
              "text": { "content": "First paragraph from raw blocks" }
            }
          ]
        }
      },
      {
        "object": "block",
        "type": "paragraph",
        "paragraph": {
          "rich_text": [
            {
              "type": "text",
              "text": { "content": "Second paragraph" }
            }
          ]
        }
      }
    ],
    "notionToken": "secret_NOTION_INTEGRATION_TOKEN",
    "pageId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
  }'
{
  "status": "success",
  "data": {
    "totalBlocks": 2,
    "requestCount": 1,
    "retryCount": 0,
    "lastBlockId": "f9e8d7c6-b5a4-3210-9876-543210fedcba"
  }
}

Usage Notes

  • Provide blocks exactly as expected by the Notion API. Complex structures (tables, synced blocks, nested children) are supported as long as the JSON matches Notion’s schema.
  • The endpoint enforces non-empty arrays and idempotency, so repeated requests with the same blocks are safely deduplicated.
  • Use the after parameter together with the lastBlockId returned from previous calls to chain precise insertions.
  • If you need help generating blocks, use the /convert endpoint first and then pass the resulting array here.