Apply Any Page as a Template via the Notion API
When you create a Notion page through automations using the Notion API (e.g., via tools like Make, n8n, or Zapier), you have two options for populating page content:
The "children" parameter — This method allows you to append specific supported blocks (such as paragraphs, images, callouts, and bullet lists) one by one to the page, as described in the API documentation. This approach has been available since the early days of the Notion API and is not the focus of this post.
The "template" parameter — This method lets you apply pre-existing page content from your Notion workspace (either a database template or any page) without manually programming the block structure in your API call. This feature was introduced in October 2025 and is the main topic of this content.
Data source templates are accessible via the “New” button (top right corner) dropdown menu. Image source: Notion documentation
A Step Back - Templates & Page Content in Notion
Notion is built on blocks—everything in Notion is a block that you can move across your workspace. Two of the most powerful blocks are Databases (composed of Data Sources) and Pages.
Databases are containers of Data Sources (one or multiple). Learn more here. Each Data Source has properties (columns) and items (rows), where each row is a page containing property values and page content. Data Sources can include one or multiple Templates—pre-defined property values and page content that you can apply by default or in one click when creating a new page. Data source templates help standardize content and streamline page creation in your workspace.
Pages can exist as part of a data source (as a row) or as standalone pages anywhere in your workspace. When a page is part of a data source, you can apply a data source template (defined above) upon creation or at any time (as long as the page content is empty). However, standalone pages work differently—in the Notion UI, you cannot apply templates to standalone pages the way you can with pages in data sources.
Using Templates via the API
When creating a Notion page via the API (either as part of a data source or as a standalone page), you can use the template parameter to specify which template to apply to the new page.
Before using templates via the API, make sure to create all necessary templates in the Notion app itself. You can use any Notion page as a template via the API—it doesn't have to be an official data source template as defined above. As the documentation explains:
In Step 2, the
template_idparameter can be set to any page, not necessarily a page officially designated as a "template" in the same data source.However, in all cases, the API bot must have access to the page being used as a template, and it must be in the same workspace. Using the ID of a page in a different data source is currently not recommended, because the schema may not match, causing some properties to fail to be merged into the destination page.
When using a
typeofdefaultinstead oftemplate_id, the conditions are more strict: the page you're creating must be under a data source that has a template marked as "default". Use the List data source templates API
For best practice and long-term organization, using actual data source templates as explained above is the most effective way to store your templates, even if only used via the API, in my opinion, because everything remains in the data source and respects the standard Notion definition of a data source template.
The template parameter in the API is a powerful feature that simplifies page creation significantly. Unlike the children parameter—which requires you to construct and append blocks one by one, with each block type having its own specific API representation—the template parameter lets you apply pre-built content instantly.
Another major advantage: the template parameter supports all Notion blocks, including those not yet available through the standard API (such as linked databases). This works because Notion applies the template content in the background, effectively duplicating everything from your source template to the new page—no manual block construction required.
Here are the steps to apply templates to pages created via the API (version 2025-09-03 and later):
(Optional) Step 1: List data source templates — With this step, you can get all the templates in a data source, which outputs their name, ID, and
is_default(Boolean that outputs true if a template is set as the default in the data source). To list a data source’s templates, you send aGETrequest tohttps://api.notion.com/v1/data_sources/<id>/templates, where you replace<id>with your actual desired Notion data source ID. Include Notion-Version and Authorization in the headers, or use the Notion connection attached to your Make or n8n workspaces (if you already connected it in the past).You can filter data source templates by their name (Use the
namequery parameter to filter the results down to only templates that match the provided substring (case-insensitive). **You can also use pagination. All details are in the documentation.Create the page (as part of a data source or standalone) — Use the traditional API endpoint to create a page and include the
templateparameter. If you omit this parameter, the page content will be empty in Notion, even if the data source has a default template. To apply any template—whether default or custom—you must include this parameter in the API request body. To create a page, send aPOSTrequest tohttps://api.notion.com/v1/pageswith the necessary headers and a JSON body like the examples below.(Optional) Trigger a webhook when the template is applied to the new page — Template application happens asynchronously within Notion, which can cause delays. You can set up a workspace webhook event to trigger an automation that continues your process once the content is fully applied to the new page. Read more here. This is important when you need to interact with the applied content.
For example, suppose you want to append bullet points to a specific callout block in the newly created page. In that case, you must wait for the template to be fully applied, retrieve the callout block ID, and then append children to it using the dedicated API endpoint. In my experience so far, template application via the API has been nearly instant—just a few seconds. The speed likely depends on the page's structure and the number of blocks it contains.
Examples
Creating a page in a data source with a specific template ID:
{
"parent": {
"type": "data_source_id",
"data_source_id": "25e4f466-350f-8157-85f2-000bd9059b74"
},
"template": {
"type": "template_id",
"template_id": "ee1c55b8-4a63-80d2-8c35-000a75aef9c7"
},
"properties": {
"Name": {
"title": [
{ "text": { "content": "Meeting Sample" } }
]
}
}
}
Creating a page in a data source with the data source’s default template:
{
"parent": {
"type": "data_source_id",
"data_source_id": "25e4f466-350f-8157-85f2-000bd9059b74"
},
"template": {
"type": "default"
},
"properties": {
"Name": {
"title": [
{
"text": {
"content": "Meeting Sample"
}
}
]
}
}
}
Creating a standalone page with a specific template ID:
{
"parent": {
"type": "page_id",
"data_source_id": "25e4f477-350f-8157-85f2-000bd9059l45"
},
"template": {
"type": "template_id",
"template_id": "ee1c55b8-4a63-80d2-8c35-000a75aef9c7"
}
}
This concludes the overview of template applications to Notion pages created via the API. For questions, thoughts, or if you wish to work together, submit an enquiry here.