👍
Page properties are most useful when interacting with a page that is an entry in a database, represented as a row in the Notion UI. If a page is not part of a database, then its only available property is its title.
properties object body param.properties object body param.| Field | Type | Description | Example value |
|---|---|---|---|
id | string | An underlying identifier for the property. id may be a UUID, but it’s often a short random string. id may be used in place of name when creating or updating pages. id remains constant when the property name changes. | "f%5C%5C%3Ap" |
type | string (enum) | The type of the property in the page object. Possible type values are: - checkbox - created_by - created_time - date - email - files - formula - last_edited_by - last_edited_time - multi_select - number - people - phone_number - relation - rollup - rich_text - select - status - title - url Refer to specific type sections below for details on type-specific values. | "rich_text" |
checkbox created_by created_time date email files formula last_edited_by last_edited_time multi_select number people phone_number relation rollup rich_text select status title url | object | A type object that contains data specific to the page property type, including the page property value. Refer to the type objects section for descriptions and examples of each type. | "checkbox": true |
📘Size limits for page property values
For information about size limitations for specific page property objects, refer to the limits for property values documentation.
| Field | Type | Description | Example value |
|---|---|---|---|
checkbox | boolean | Whether the checkbox is checked (true) or unchecked (false). | true |
properties body param for a POST or PATCH page request that creates or updates a checkbox page property value{
"properties": {
"Task completed": {
"checkbox": true
}
}
}checkbox page property value as returned in a GET page request"Task completed": {
"id": "ZI%40W",
"type": "checkbox",
"checkbox": true
}| Field | Type | Description | Example value |
|---|---|---|---|
created_by | object | A user object containing information about the user who created the page. created_by can’t be updated. | Refer to the example response objects below. |
created_by page property value as returned in a GET page request"created_by": {
"object": "user",
"id": "c2f20311-9e54-4d11-8c79-7398424ae41e"
}| Field | Type | Description | Example value |
|---|---|---|---|
created_time | string (ISO 8601 date and time) | The date and time that the page was created. The created_time value can’t be updated. | "2022-10-12T16:34:00.000Z" |
created_time page property value as returned in a GET page request"Created time": {
"id": "eB_%7D",
"type": "created_time",
"created_time": "2022-10-24T22:54:00.000Z"
}type of a page property value is "date", then the property value contains a "date" object with the following fields:| Field | Type | Description | Example value |
|---|---|---|---|
end | string (ISO 8601 date and time) | (Optional) A string representing the end of a date range. If the value is null, then the date value is not a range. | "2020-12-08T12:00:00Z" |
start | string (ISO 8601 date and time) | A date, with an optional time. If the date value is a range, then start represents the start of the range. | "2020-12-08T12:00:00Z” |
properties body param for a POST or PATCH page request that creates or updates a date page property value{
"properties": {
"Due date": {
"date": {
"start": "2023-02-23"
}
}
}
}date page property value as returned in a GET page request"Due date": {
"id": "M%3BBw",
"type": "date",
"date": {
"start": "2023-02-07",
"end": null,
"time_zone": null
}| Field | Type | Description | Example value |
|---|---|---|---|
email | string | A string describing an email address. | "ada@makenotion.com" |
properties body param for a POST or PATCH page request that creates or updates an email page property value{
"properties": {
"Email": {
"email": "ada@makenotion.com"
}
}
}email page property value as returned in a GET page request"Email": {
"id": "y%5C%5E_",
"type": "email",
"email": "ada@makenotion.com"
}📘
The Notion API does not yet support uploading files to Notion.
| Field | Type | Description | Example value |
|---|---|---|---|
files | array of file objects | An array of objects containing information about the files. | Refer to the example response objects below. |
properties body param for a POST or PATCH page request that creates or updates a files page property value{
"properties": {
"Blueprint": {
"files": [
{
"name": "Project Alpha blueprint",
"external": {
"url": "https://www.figma.com/file/g7eazMtXnqON4i280CcMhk/project-alpha-blueprint?node-id=0%3A1&t=nXseWIETQIgv31YH-1"
}
}
]
}
}
}files page property value as returned in a GET page request"Blueprint": {
"id": "tJPS",
"type": "files",
"files": [
{
"name": "Project blueprint",
"type": "external",
"external": {
"url": "https://www.figma.com/file/g7eazMtXnqON4i280CcMhk/project-alpha-blueprint?node-id=0%3A1&t=nXseWIETQIgv31YH-1"
}
}
]
}📘When updating a
filepage property value, the value is overwritten by the array of files passed.Although Notion doesn't support uploading files via the API, if you pass a fileobject containing a file hosted by Notion, it remains one of the files. To remove any file, just don't pass it in the update response.
type of a page property value is "formula", then the property value contains a "formula" object with the following fields:| Field | Type | Description | Example value |
|---|---|---|---|
boolean | date | ||
type | string (enum) | A string indicating the data type of the result of the formula. Possible type values are: - boolean - date - number - string | "number" |
formula page property value as returned in a GET page request"Days until launch": {
"id": "CSoE",
"type": "formula",
"formula": {
"type": "number",
"number": 56
}
}📘
The Retrieve a page endpoint returns a maximum of 25 inline page or person references for a formulaproperty. If aformulaproperty includes more than 25 references, then you can use the Retrieve a page property item endpoint for the specificformulaproperty to get its complete list of references.
| Field | Type | Description | Example value |
|---|---|---|---|
last_edited_by | object | A user object containing information about the user who last updated the page. last_edited_by can’t be updated. | Refer to the example response objects below. |
last_edited_by page property value as returned in a GET page request"Last edited by column name": {
"id": "uGNN",
"type": "last_edited_by",
"last_edited_by": {
"object": "user",
"id": "9188c6a5-7381-452f-b3dc-d4865aa89bdf",
"name": "Test Integration",
"avatar_url": "https://s3-us-west-2.amazonaws.com/public.notion-static.com/3db373fe-18f6-4a3c-a536-0f061cb9627f/leplane.jpeg",
"type": "bot",
"bot": {}
}
}| Field | Type | Description | Example value |
|---|---|---|---|
last_edited_time | string (ISO 8601 date and time) | The date and time that the page was last edited. The last_edited_time value can’t be updated. | "2022-10-12T16:34:00.000Z" |
last_edited_time page property value as returned in a GET page request"Last edited time": {
"id": "%3Defk",
"type": "last_edited_time",
"last_edited_time": "2023-02-24T21:06:00.000Z"
}type of a page property value is "multi_select", then the property value contains a "multi_select" array with the following fields:| Field | Type | Description | Example value |
|---|---|---|---|
color | string (enum) | Color of the option. Possible "color" values are: - blue - brown - default - gray - green - orange - pink" - "purple - red - yellow Defaults to default. The color value can’t be updated via the API. | "red" |
id | string (UUIDv4) | The ID of the option. You can use id or name to update a multi-select property. | "b3d773ca-b2c9-47d8-ae98-3c2ce3b2bffb" |
name | string | The name of the option as it appears in Notion. If the multi-select database property does not yet have an option by that name, then the name will be added to the database schema if the integration also has write access to the parent database. Note: Commas (",") are not valid for select values. | "JavaScript" |
properties body param for a POST or PATCH page request that creates or updates a multi_select page property value{
"properties": {
"Programming language": {
"multi_select": [
{
"name": "TypeScript"
},
{
"name": "Python"
}
]
}
}
}multi_select page property value as returned in a GET page request"Programming language": {
"id": "QyRn",
"name": "Programming language",
"type": "multi_select",
"multi_select": {
"options": [
{
"id": "tC;=",
"name": "TypeScript",
"color": "purple"
},
{
"id": "e4413a91-9f84-4c4a-a13d-5b4b3ef870bb",
"name": "JavaScript",
"color": "red"
},
{
"id": "fc44b090-2166-40c8-8c58-88f2d8085ec0",
"name": "Python",
"color": "gray"
}
]
}
}📘
If you want to add a new option to a multi-select property via the Update page or Update database endpoint, then your integration needs write access to the parent database.
| Field | Type | Description | Example value |
|---|---|---|---|
number | number | A number representing some value. | 1234 |
properties body param for a POST or PATCH page request that creates or updates a number page property value{
"properties": {
"Number of subscribers": {
"number": 42
}
}
}number page property value as returned in a GET page request"Number of subscribers": {
"id": "WPj%5E",
"name": "Number of subscribers",
"type": "number",
"number": {
"format": "number"
}
}| Field | Type | Description | Example value |
|---|---|---|---|
people | array of user objects | An array of user objects. | Refer to the example response objects below. |
properties body param for a POST or PATCH page request that creates or updates a people page property value{
"properties": {
"Stakeholders": {
"people": [{
"object": "user",
"id": "c2f20311-9e54-4d11-8c79-7398424ae41e"
}
]
}
}
}people page property value as returned in a GET page request"Stakeholders": {
"id": "%7BLUX",
"type": "people",
"people": [
{
"object": "user",
"id": "c2f20311-9e54-4d11-8c79-7398424ae41e",
"name": "Kimberlee Johnson",
"avatar_url": null,
"type": "person",
"person": {
"email": "hello@kimberlee.dev"
}
}
]
}📘
The Retrieve a page endpoint can’t be guaranteed to return more than 25 people per peoplepage property. If apeoplepage property includes more than 25 people, then you can use the Retrieve a page property item endpoint for the specificpeopleproperty to get a complete list of people.
| Field | Type | Description | Example value |
|---|---|---|---|
phone_number | string | A string representing a phone number. No phone number format is enforced. | "415-867-5309" |
properties body param for a POST or PATCH page request that creates or updates a phone_number page property value{
"properties": {
"Contact phone number": {
"phone_number": "415-202-4776"
}
}
}phone_number page property value as returned in a GET page request"Example phone number property": {
"id": "%5DKhQ",
"name": "Example phone number property",
"type": "phone_number",
"phone_number": {}
}| Field | Type | Description | Example value |
|---|---|---|---|
has_more | boolean | If a relation has more than 25 references, then the has_more value for the relation in the response object is true. If a relation doesn’t exceed the limit, then has_more is false. | Refer to the example response objects below. |
relation | an array of page references | An array of related page references. A page reference is an object with an id key and a string value (UUIDv4) corresponding to a page ID in another database. | Refer to the example response objects below. |
properties body param for a POST or PATCH page request that creates or updates a relation page property value{
"properties": {
"Related tasks": {
"relation": [
{
"id": "dd456007-6c66-4bba-957e-ea501dcda3a6"
},
{
"id": "0c1f7cb2-8090-4f18-924e-d92965055e32"
}
]
}
}
}relation page property value as returned in a GET page request"Related tasks": {
"id": "hgMz",
"type": "relation",
"relation": [
{
"id": "dd456007-6c66-4bba-957e-ea501dcda3a6"
},
{
"id": "0c1f7cb2-8090-4f18-924e-d92965055e32"
}
],
"has_more": false
}📘To update a
relationproperty value via the API, share the related parent database with the integration.
📘
If a relationproperty value is unexpectedly empty, then make sure that you have shared the original source database that therelationpoints to with the integration.
type of a page property value is "rollup", then the property value contains a "rollup" object with the following fields:| Field | Type | Description | Example value |
|---|---|---|---|
array | date | ||
function | string (enum) | The function that is evaluated for every page in the relation of the rollup. Possible "function" values are: - average - checked - count - count_per_group - count_values - date_range - earliest_date - empty - latest_date - max - median - min - not_empty - percent_checked - percent_empty - percent_not_empty - percent_per_group - percent_unchecked - range - show_original - show_unique - sum - unchecked - unique | "sum" |
type | array | date |
rollup page property value as returned in a GET page request"Related tasks": {
"id": "hgMz",
"type": "relation",
"relation": [
{
"id": "dd456007-6c66-4bba-957e-ea501dcda3a6"
},
{
"id": "0c1f7cb2-8090-4f18-924e-d92965055e32"
}
],
"has_more": false
}📘
Refer to the Retrieve a page property item endpoint documentation for more details on querying data about rollup property values.
🚧The API does not support updating
rolluppage property values.To change a page's rollupproperty, use the Notion UI.
| Field | Type | Description | Example value |
|---|---|---|---|
rich_text | an array of rich text objects | An array of rich text objects | Refer to the example response objects below. |
properties body param for a POST or PATCH page request that creates or updates a rich_text page property value{
"properties": {
"Description": {
"rich_text": [
{
"type": "text",
"text": {
"content": "There is some ",
"link": null
},
"annotations": {
"bold": false,
"italic": false,
"strikethrough": false,
"underline": false,
"code": false,
"color": "default"
},
"plain_text": "There is some ",
"href": null
},
{
"type": "text",
"text": {
"content": "text",
"link": null
},
"annotations": {
"bold": true,
"italic": false,
"strikethrough": false,
"underline": false,
"code": false,
"color": "default"
},
"plain_text": "text",
"href": null
},
{
"type": "text",
"text": {
"content": " in this property!",
"link": null
},
"annotations": {
"bold": false,
"italic": false,
"strikethrough": false,
"underline": false,
"code": false,
"color": "default"
},
"plain_text": " in this property!",
"href": null
}
]
}
}
}rich_text page property value as returned in a GET page request"Description": {
"id": "HbZT",
"type": "rich_text",
"rich_text": [
{
"type": "text",
"text": {
"content": "There is some ",
"link": null
},
"annotations": {
"bold": false,
"italic": false,
"strikethrough": false,
"underline": false,
"code": false,
"color": "default"
},
"plain_text": "There is some ",
"href": null
},
{
"type": "text",
"text": {
"content": "text",
"link": null
},
"annotations": {
"bold": true,
"italic": false,
"strikethrough": false,
"underline": false,
"code": false,
"color": "default"
},
"plain_text": "text",
"href": null
},
{
"type": "text",
"text": {
"content": " in this property!",
"link": null
},
"annotations": {
"bold": false,
"italic": false,
"strikethrough": false,
"underline": false,
"code": false,
"color": "default"
},
"plain_text": " in this property!",
"href": null
}
]
}📘
The Retrieve a page endpoint returns a maximum of 25 populated inline page or person references for a rich_textproperty. If arich_textproperty includes more than 25 references, then you can use the Retrieve a page property item endpoint for the specificrich_textproperty to get its complete list of references.
select, then the property value contains a select object with the following fields:| Property | Type | Description | Example value |
|---|---|---|---|
color | string (enum) | The color of the option. Possible "color" values are: - blue - brown - default - gray - green - orange - pink - purple - red - yellowDefaults todefault. The color` value can’t be updated via the API. | red |
id | string (UUIDv4) | The ID of the option. You can use id or name to update a select property. | "b3d773ca-b2c9-47d8-ae98-3c2ce3b2bffb" |
name | string | The name of the option as it appears in Notion. If the select database property doesn't have an option by that name yet, then the name is added to the database schema if the integration also has write access to the parent database. Note: Commas (",") are not valid for select values. | "jQuery" |
properties body param for a POST or PATCH page request that creates or updates a select page property value{
"properties": {
"Department": {
"select": {
"name": "Marketing"
}
}
}
}"Department": {
"id": "Yc%3FJ",
"type": "select",
"select": {
"id": "ou@_",
"name": "jQuery",
"color": "purple"
}
}status, then the property value contains a status object with the following fields:| Property | Type | Description | Example value |
|---|---|---|---|
color | string (enum) | The color of the option. Possible "color" values are: - blue - brown - default - gray - green - orange - pink - purple - red - yellow Defaults to default. The color value can’t be updated via the API. | "red" |
id | string (UUIDv4) | string (UUIDv4) | "b3d773ca-b2c9-47d8-ae98-3c2ce3b2bffb" |
name | string | The name of the option as it appears in Notion. | "In progress" |
properties body param for a POST or PATCH page request that creates or updates a status page property value{
"properties": {
"Status": {
"status": {
"name": "Not started"
}
}
}
}status page property value as returned in a GET page request"Status": {
"id": "Z%3ClH",
"type": "status",
"status": {
"id": "539f2705-6529-42d8-a215-61a7183a92c0",
"name": "In progress",
"color": "blue"
}
}| Field | Type | Description | Example value |
|---|---|---|---|
title | an array of rich text objects | An array of rich text objects. | Refer to the example response objects below. |
properties body param for a POST or PATCH page request that creates or updates a title page property value{
"properties": {
"Title": {
"id": "title",
"type": "title",
"title": [
{
"type": "text",
"text": {
"content": "A better title for the page",
"link": null
},
"annotations": {
"bold": false,
"italic": false,
"strikethrough": false,
"underline": false,
"code": false,
"color": "default"
},
"plain_text": "This is also not done",
"href": null
}
]
}
}
}title page property value as returned in a GET page request"Title": {
"id": "title",
"type": "title",
"title": [
{
"type": "text",
"text": {
"content": "A better title for the page",
"link": null
},
"annotations": {
"bold": false,
"italic": false,
"strikethrough": false,
"underline": false,
"code": false,
"color": "default"
},
"plain_text": "This is also not done",
"href": null
}
]
}📘
The Retrieve a page endpoint returns a maximum of 25 inline page or person references for a titleproperty. If atitleproperty includes more than 25 references, then you can use the Retrieve a page property item endpoint for the specifictitleproperty to get its complete list of references.
| Field | Type | Description | Example value |
|---|---|---|---|
url | string | A string that describes a web address. | "https://developers.notion.com/" |
properties body param for a POST or PATCH page request that creates or updates a url page property value{
"properties": {
"Website": {
"url": "https://developers.notion.com/"
}
}
}url page property value as returned in a GET page request"Website": {
"id": "bB%3D%5B",
"type": "url",
"url": "https://developers.notion.com/"
}title, rich_text, relation and people page properties are returned as a paginated list object of individual property_item objects.list object is below. Refer to the pagination documentation for additional information.| Field | Type | Description | Example value |
|---|---|---|---|
object | "list" | Always "list". | "list" |
type | "property_item" | Always "property_item". | "property_item" |
results | list | List of property_item objects. | [{"object": "property_item", "id": "vYdV", "type": "relation", "relation": { "id": "535c3fb2-95e6-4b37-a696-036e5eac5cf6"}}... ] |
property_item | object | A property_item object that describes the property. | {"id": "title", "next_url": null, "type": "title", "title": {}} |
next_url | string or null | The URL the user can request to get the next page of results. | "http://api.notion.com/v1/pages/0e5235bf86aa4efb93aa772cce7eab71/properties/vYdV?start_cursor=LYxaUO&page_size=25" |