Skip to main content
POST
/
v1
/
blocks
/
meeting_notes
/
query
TypeScript SDK
import { Client } from "@notionhq/client"

const notion = new Client({ auth: process.env.NOTION_API_KEY })

const response = await notion.meetingNotes.query({
  filter: {
    operator: "and",
    filters: [
      {
        property: "title",
        filter: {
          operator: "string_contains",
          value: {
            type: "exact",
            value: "Weekly sync"
          }
        }
      },
      {
        property: "attendees",
        filter: {
          operator: "is_not_empty"
        }
      }
    ]
  },
  sort: [
    {
      property: "created_time",
      direction: "descending"
    }
  ],
  limit: 10
})
{
  "results": [
    {
      "object": "<string>",
      "id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
      "type": "<string>",
      "meeting_notes": {
        "title": [
          {
            "plain_text": "<string>",
            "href": "<string>",
            "annotations": {
              "bold": true,
              "italic": true,
              "strikethrough": true,
              "underline": true,
              "code": true,
              "color": "default"
            },
            "type": "<string>",
            "text": {
              "content": "<string>",
              "link": {
                "url": "<string>"
              }
            }
          }
        ],
        "status": "transcription_not_started",
        "children": {
          "summary_block_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
          "notes_block_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
          "transcript_block_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
        },
        "calendar_event": {
          "start_time": "<string>",
          "end_time": "<string>",
          "attendees": [
            "3c90c3cc-0d44-4b50-8888-8dd25736052a"
          ]
        },
        "recording": {
          "start_time": "<string>",
          "end_time": "<string>"
        }
      },
      "created_time": "<string>",
      "last_edited_time": "<string>",
      "created_by": {
        "id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
        "object": "<string>"
      },
      "last_edited_by": {
        "id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
        "object": "<string>"
      },
      "has_children": true,
      "in_trash": true
    }
  ],
  "has_more": true
}

Documentation Index

Fetch the complete documentation index at: https://developers.notion.com/llms.txt

Use this file to discover all available pages before exploring further.

Overview

Returns a list of meeting notes as block objects (object is block, type is meeting_notes) where the user tied to the integration (in the workspace) is listed as a attendee on the block. The response contains:
  • results: meeting note blocks (including meeting_notes payload with title, status, children tab IDs (e.g. summary, notes, transcription), and calendar and recording metadata when present).
  • has_more: whether additional rows exist beyond this response for the current filter, sort, and limit.
Field selection: There is no field subset parameter—each results[] item is a full block object. Read the fields you need (for example meeting_notes, timestamps, and people) from the response. Use filter to control which meeting notes are returned; allowed property names and operators are defined on this endpoint’s request body schema. This endpoint does not use cursor-based pagination. There is no start_cursor or next_cursor—tune filter, sort, and limit (up to the maximum below) to refine the result set.

Request body

The body is a JSON object; every field is optional.
FieldDescription
filterA single property filter, or a combinator ("and" / "or") with a filters array. See Filtering.
sortOrdered list of sorts. Each entry has property and direction (ascending or descending). Earlier entries take precedence.
limitMaximum number of meeting notes to return. Integer from 1 to 50. If omitted, the server uses 50.
{}

Filtering

A filter is either:
  1. Property filter (single condition) — an object with property and filter (operator and optional value) at the root of the filter field.
  2. Combinator — an object with operator ("and" or "or") and a filters array. Each array element is another property filter or, for one level of nesting, a combinator whose inner filters are property filters only (see the request schema in the API reference for the exact shape).
Property names, operators, and value shapes for text, date, and person filters are fully specified in the request body schema. Invalid properties or malformed filters return a 400 validation error.

Filter examples

Three patterns below cover a single property filter, an and combinator, and an or combinator. For more properties and operators, use the schema link above. Replace sample strings and UUIDs with your own.
{
  "filter": {
    "property": "title",
    "filter": {
      "operator": "string_contains",
      "value": { "type": "exact", "value": "standup" }
    }
  }
}

Sorting

Each sort item has property and direction (ascending or descending). Property names are the same set as in the request body schema. Earlier entries take precedence when multiple sorts are present.
{
  "sort": [
    { "property": "last_edited_time", "direction": "descending" },
    { "property": "title", "direction": "ascending" }
  ]
}

Response shape

Each item in results is a meeting note block with a meeting_notes object plus the usual block metadata (see the response schema for this endpoint).
Integration capabilitiesThis endpoint requires an integration with Read content. The workspace must include AI meeting notes for the integration’s user; otherwise the call returns a validation error. See the capabilities guide.

Errors

Returns a 400 HTTP response if AI meeting notes aren’t available for the integration’s user, or if the filter or sort is invalid. Returns a 400 or a 429 HTTP response if the request exceeds the request limits.
Note: Each Public API endpoint can return several possible error codes. See the Error codes section of the Status codes documentation for more information.

Authorizations

Authorization
string
header
required

Bearer authentication header of the form Bearer <token>, where <token> is your auth token.

Headers

Notion-Version
enum<string>
required

The API version to use for this request. The latest version is 2026-03-11.

Available options:
2026-03-11

Body

application/json
filter
object

Optional filter for querying meeting notes. Supports combinator (and/or) and property filters on title, attendees, created_time, created_by, last_edited_time, last_edited_by.

sort
object[]

Optional sort order for the results. Each entry specifies a property name and direction.

Maximum array length: 100
limit
integer

Maximum number of results to return. Defaults to 50.

Required range: 1 <= x <= 50

Response

results
object[]
required

Meeting note transcription block objects.

Maximum array length: 100
has_more
boolean
required

Whether additional results exist beyond the returned limit.