Use this API to create a new page as a child of an existing page or data source.
Use cases
Choosing a parent
In most cases, provide a page_id
or data_source
under the parent
parameter to create a page under an existing page, or data source, respectively.
There is a 3rd option, available only for bots of public integrations: creating a private page at the workspace level. To do this, omit the parent
parameter, or provide parent[workspace]=true
. This can be useful for quickly creating pages that can then be organized manually in the Notion app later, helping you get to your life's work faster.
For internal integrations, a page or data source parent is currently required in the API, because there is no one specific Notion user associated with them that could be used as the "owner" of the new private page.
Setting up page properties
If the new page is a child of an existing page,title
ย is the only valid property in theย properties
ย body parameter.
If the new page is a child of an existing data source, the keys of theย properties
ย object body param must match the parentย data source's properties.
Setting up page content
This endpoint can be used to create a new page with or without content using the children
option. To add content to a page after creating it, use the Append block children endpoint.
Templates: As an alternative to building up page content manually, the template
body parameter can be used to specify an existing data source template to be used to populate the content and properties of the new page.
When omitted, the default is template[type]=none
, which means no template is applied. The other options for template[type]
are:
default
: Apply the data source's default template.- This is only allowed for pages created under a data source that has a default template configured in the Notion app.
template_id
: Provide a specifictemplate_id
to use as the blueprint for your page.- The API bot must have access to the template page, and it must be within the same workspace.
- Although any valid page ID can be used as the
template[template_id]
, we recommend only using pages that are configured as actual database templates under the same data source as the parent of your new page to make sure that page properties can get merged in correctly.
When applying a template, the children
parameter is not allowed. The page is returned as blank initially in the API response, and then Notion's systems apply the template asynchronously after the API request finishes. For more information, see our full guide on creating pages from templates.
General behavior
Returns a new page object.
Some page
properties
are not supported via the API.A request body that includes
rollup
,created_by
,created_time
,last_edited_by
, orlast_edited_time
values in the properties object returns an error. These Notion-generated values cannot be created or updated via the API. If theparent
contains any of these properties, then the new pageโs corresponding values are automatically created.
Requirements
Your integration must have Insert Content capabilities on the target parent page or database in order to call this endpoint. To update your integrations capabilities, navigation to the My integrations dashboard, select your integration, go to the Capabilities tab, and update your settings as needed.
Attempting a query without update content capabilities returns an HTTP response with a 403 status code.
Errors
Each Public API endpoint can return several possible error codes. See the Error codes section of the Status codes documentation for more information.