Skip to main content
A data source’s properties object defines the names, types, and settings of its properties. This is its schema. In Notion’s table view, these properties appear as columns.

Common fields

A property’s id stays the same when its name changes. IDs can be short strings or UUIDs. The Name property always has the ID title. Responses use URL-encoded property IDs, such as f%5C%5C%3Ap. Pass the returned ID as-is to the SDK or in an API path. Don’t encode it a second time. You can also use a property ID as a key in a request’s properties object. The tabs compare the same property across API objects. Schema and Page value examples each show one entry in a response’s properties object. Page write shows an Update page request body; Create page also needs a parent. Read-only types have no Page write tab. For title, rich_text, people, and relation, the Property item tab shows one entry in a paginated results array. For other types, it shows the endpoint response. Replace example names and IDs with values from your workspace.

Request and response shapes

Schema responses contain the common fields above. For types that support schema writes, create a property by using its name as the key and providing its type’s settings. Button and Verification schemas are response-only; see their limits below. For example, {"Estimate":{"number":{"format":"number"}}} is an entry in the request’s properties object. Use Create a data source to define an initial schema. Use Update data source properties to add, rename, remove, or change properties. The page-write tabs below change values on a page; they do not change the schema.
For API versions before 2025-09-03, schemas belong to database objects. Those requests use the legacy database endpoints and database_id for relation targets. Current API versions use data sources. See Upgrade to 2025-09-03.

Button

A Button property has an empty button object in schema responses. Create Button properties and configure their actions in Notion. The API ignores button settings in schema writes; it does not create a Button property or change an existing one. It also does not expose button actions or let you press a button.
Schema

Checkbox

The checkbox settings object is empty. Page values are booleans.
Schema

Created by

The created_by settings object is empty. Notion sets each page’s creator; page values are read-only.
Schema

Created time

The created_time settings object is empty. Notion sets each page’s creation time; page values are read-only.
Schema

Date

The date settings object is empty. A page value can be a date, a timestamp, or a range.
Schema

Email

The email settings object is empty.
Schema

Files

The Files & media property uses files: {}. A page value is an array of named files.
Schema

Formula

The formula object contains an expression string. The expression uses Notion’s formula syntax and properties from the same data source. The computed page value is read-only. Example expressions with fixed inputs: prop("Name") looks up a property by its current name. The saved formula refers to its ID, so a later rename does not break that reference. An expression that cannot be parsed or checked returns validation_error. This includes references to properties that do not exist. Schema responses normally use the same prop("Name") syntax as requests. If an expression cannot be represented that way, the response uses {{notion:block_property:...}} references. Those references are also valid in requests.
Schema

Last edited by

The last_edited_by settings object is empty. Notion sets each page’s last editor; page values are read-only.
Schema

Last edited time

The last_edited_time settings object is empty. Notion sets each page’s last edit time; page values are read-only.
Schema

Multi-select

The multi_select object contains an options array. Each page can select zero or more options. Option fields are shared with select and status properties. To add or remove available options, use Multi-select configuration updates.
Schema

Number

The number object contains format, which controls display in Notion. It does not change the stored number. The default is number. Supported formats are number, number_with_commas, percent, dollar, australian_dollar, canadian_dollar, singapore_dollar, euro, pound, yen, ruble, rupee, won, yuan, real, lira, rupiah, franc, hong_kong_dollar, new_zealand_dollar, krona, norwegian_krone, mexican_peso, rand, new_taiwan_dollar, danish_krone, zloty, baht, forint, koruna, shekel, chilean_peso, philippine_peso, dirham, colombian_peso, riyal, ringgit, leu, argentine_peso, uruguayan_peso, peruvian_sol, vietnamese_dong, pakistani_rupee, nigerian_naira, and bitcoin.
Schema

People

The Person property uses people: {}. Page values contain people or groups.
Schema

Phone number

The Phone property uses phone_number: {}.
Schema

Place

The Place property uses place: {}. Page values contain coordinates and optional place details, or null when empty.
Schema

Relation

A relation links pages to pages in a target data source. A one-way relation uses type: "single_property" and single_property: {}. A two-way relation uses type: "dual_property". Its response includes dual_property.synced_property_id and dual_property.synced_property_name. A create request can use dual_property: {} to create the matching property. Share the related database with your connection too. Missing access can leave relation values empty or make formula and rollup results incomplete. Check access before treating an empty result as missing data.
Schema

Rich text

The Text property uses rich_text: {}. Its page values are rich text arrays.
Schema

Rollup

A rollup reads a property through a relation and applies a function. Responses include both names and IDs. The target property belongs to the related data source; the relation property belongs to the source where you define the rollup. Functions are count, count_values, empty, not_empty, unique, show_unique, percent_empty, percent_not_empty, sum, average, median, min, max, range, earliest_date, latest_date, date_range, checked, unchecked, percent_checked, percent_unchecked, count_per_group, percent_per_group, and show_original. The function can be configured even when property-item retrieval cannot calculate it. Page values are read-only. Share the related database with your connection too. Missing access can leave relation values empty or make formula and rollup results incomplete. Check access before treating an empty result as missing data.
Schema

Select

The select object contains an options array. Each page can select one option or no option.

Select options

Each select, multi-select, or status option has these fields in a schema response: Page values include id, name, and color. Page writes select an option by id or name. To change the available options, see Update data source properties.
Schema

Status

The status object contains options and groups arrays. Each page selects one option. The schema groups options by progress. Status options use the same option fields. Each group contains id, name, color, and option_ids. The option_ids array lists that group’s options in order. Creating status: {} adds default options (Not started, In progress, Done) in the To-do, In progress, and Complete groups. Custom request options accept a group with one of those group names. To change options or their group membership, see Status configuration updates. Group definitions themselves are managed in Notion.
Schema

Title

The Name property uses title: {}. Every data source must have exactly one. Its ID is always title, even if you rename it. You cannot remove it, change it to another type, or change another property to title. It names each page in the data source. The data source’s own name is its top-level title field.
Schema

Unique ID

The ID property uses unique_id. Its prefix is a string or null, such as TASK. Notion assigns each page a unique number within the data source. You can configure the prefix, but you cannot write a page’s number.
Schema

URL

The url settings object is empty.
Schema

Verification

Notion creates the Verification property for a wiki. Its schema response has an empty verification object; the API cannot create this property through a schema write. Verification applies to wiki pages. Its page value includes the state, verification period, and verifier.
Schema