> ## 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.

# Chat with Agent

<Warning>
  This is an internal/undocumented endpoint. It is not part of the public API and may change without notice. Do not rely on this endpoint for production connections.
</Warning>

By default, this endpoint returns a JSON `chat.invocation` response. To stream the agent response as newline-delimited JSON (NDJSON), send `Accept: application/x-ndjson`.

Each line in a streaming response is a complete JSON chunk. The stream supports the optional `verbose` query parameter; set `verbose=false` to omit verbose agent output such as thinking and tool activity.


## OpenAPI

````yaml openapi-undocumented.json POST /v1/agents/{agent_id}/chat
openapi: 3.1.0
info:
  title: Notion API (Undocumented)
  version: 1.0.0
  description: >-
    Internal/undocumented Notion API endpoints. These endpoints are not part of
    the public API and may change without notice. Do not rely on these for
    production integrations.
  termsOfService: >-
    https://notion.notion.site/Terms-and-Privacy-28ffdd083dc3473e9c2da6ec011b58ac
  x-noIndex: true
servers:
  - url: https://api.notion.com
security:
  - bearerAuth: []
tags:
  - name: Internal
    description: Internal/undocumented endpoints
    x-hidden: true
paths:
  /v1/agents/{agent_id}/chat:
    post:
      tags:
        - Internal
      summary: Chat with agent
      operationId: chat-with-agent
      parameters:
        - name: agent_id
          in: path
          required: true
          schema:
            oneOf:
              - $ref: '#/components/schemas/idRequest'
              - type: string
                enum:
                  - notion_ai
                  - 33333333-3333-3333-3333-333333333333
                description: 'One of: `notion_ai`, `33333333-3333-3333-3333-333333333333`'
            description: >-
              The ID of the agent to chat with. Use a UUID for custom agents or
              `notion_ai` for Notion Agent (personal agent); the reserved UUID
              `33333333-3333-3333-3333-333333333333` remains supported for
              backward compatibility.
        - name: verbose
          in: query
          schema:
            type: boolean
            description: >-
              Whether to include agent thinking and structured message content
              parts. Defaults to false.
        - $ref: '#/components/parameters/notionVersion'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                message:
                  type: string
                  maxLength: 10000
                  description: The message to send to the agent.
                attachments:
                  type: array
                  items:
                    type: object
                    properties:
                      file_upload:
                        type: object
                        properties:
                          id:
                            type: string
                            description: >-
                              ID of a FileUpload object that has the status
                              `uploaded`.
                        additionalProperties: false
                        required:
                          - id
                        description: >-
                          ID of a FileUpload object that has the status
                          `uploaded`.
                      type:
                        type: string
                        const: file_upload
                        description: >-
                          The type of the attachment. Only supports
                          "file_upload".
                      name:
                        type: string
                        description: An optional display name override for the attachment.
                    additionalProperties: false
                    required:
                      - file_upload
                  maxItems: 100
                  description: >-
                    An array of file uploads to attach to this chat turn. Use
                    the File Upload APIs to create uploads and pass their IDs
                    here.
                metadata:
                  type: object
                  additionalProperties:
                    type: string
                    maxLength: 2000
                  maxProperties: 20
                  description: >-
                    Optional caller-provided string metadata persisted with the
                    user message. user_id is used for lifecycle correlation and
                    does not change authorization.
                prompt_context:
                  type: string
                  maxLength: 10000
                  description: >-
                    Additional caller-provided context for the agent to consider
                    while responding.
                thread_id:
                  $ref: '#/components/schemas/idRequest'
                  description: >-
                    Deprecated. Use POST /v1/threads/:thread_id/messages to
                    continue an existing thread. If not provided, a new thread
                    will be created.
                  deprecated: true
              additionalProperties: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  object:
                    type: string
                    const: chat.invocation
                    description: Always `chat.invocation`
                  agent_id:
                    type: string
                  thread_id:
                    type: string
                  invocation_id:
                    type: string
                  status:
                    type: string
                    const: pending
                    description: Always `pending`
                additionalProperties: false
                required:
                  - object
                  - agent_id
                  - thread_id
                  - invocation_id
                  - status
            application/x-ndjson:
              schema:
                type: string
                description: >-
                  Newline-delimited JSON (NDJSON) stream. Each line is a
                  JSON-encoded chat stream chunk.
        '400':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error_api_400'
        '401':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error_api_401'
        '403':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error_api_403'
        '404':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error_api_404'
        '406':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error_api_406'
        '409':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error_api_409'
        '429':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error_api_429'
        '500':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error_api_500'
        '503':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error_api_503'
        '504':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error_api_504'
        '529':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error_api_529'
      deprecated: true
components:
  schemas:
    idRequest:
      type: string
    error_api_400:
      allOf:
        - $ref: '#/components/schemas/publicApiCommonErrorResponse'
        - type: object
          properties:
            code:
              enum:
                - invalid_json
                - invalid_request_url
                - invalid_request
                - missing_version
                - invalid_beta
                - validation_error
                - invalid_credit_limit
            status:
              const: 400
          required:
            - code
            - status
          additionalProperties: false
    error_api_401:
      allOf:
        - $ref: '#/components/schemas/publicApiCommonErrorResponse'
        - type: object
          properties:
            code:
              enum:
                - unauthorized
            status:
              const: 401
          required:
            - code
            - status
          additionalProperties: false
    error_api_403:
      oneOf:
        - allOf:
            - $ref: '#/components/schemas/publicApiCommonErrorResponse'
            - type: object
              properties:
                code:
                  enum:
                    - restricted_resource
                    - status_change_not_allowed
                status:
                  const: 403
              required:
                - code
                - status
              additionalProperties: false
        - allOf:
            - $ref: '#/components/schemas/publicApiCommonErrorResponse'
            - type: object
              properties:
                code:
                  const: workspace_credits_exhausted
                status:
                  const: 403
                additional_data:
                  type: object
                  properties:
                    tool_error_code:
                      const: workspace_credits_exhausted
                    tool_error_class:
                      const: entitlement_required
                    tool_error_retryable:
                      const: 'false'
                    recovery_kind:
                      enum:
                        - contact_workspace_owner
                        - open_workspace_credit_settings
                      description: The recovery action selected by Notion for the caller.
                    recovery_url:
                      type: string
                      format: uri
                      description: >-
                        Present when recovery_kind directs the caller to a
                        settings page.
                  required:
                    - tool_error_code
                    - tool_error_class
                    - tool_error_retryable
                    - recovery_kind
                  additionalProperties:
                    oneOf:
                      - type: string
                      - type: array
                        items:
                          type: string
              required:
                - code
                - status
                - additional_data
        - allOf:
            - $ref: '#/components/schemas/publicApiCommonErrorResponse'
            - type: object
              properties:
                code:
                  const: agent_credit_limit_reached
                status:
                  const: 403
                additional_data:
                  type: object
                  properties:
                    tool_error_code:
                      const: agent_credit_limit_reached
                    tool_error_class:
                      const: entitlement_required
                    tool_error_retryable:
                      const: 'false'
                    recovery_kind:
                      enum:
                        - contact_workspace_owner
                        - none
                        - open_agent_settings
                        - request_agent_limit_increase
                        - request_pending
                      description: The recovery action selected by Notion for the caller.
                    recovery_url:
                      type: string
                      format: uri
                      description: >-
                        Present when recovery_kind directs the caller to a
                        settings page.
                  required:
                    - tool_error_code
                    - tool_error_class
                    - tool_error_retryable
                    - recovery_kind
                  additionalProperties:
                    oneOf:
                      - type: string
                      - type: array
                        items:
                          type: string
              required:
                - code
                - status
                - additional_data
    error_api_404:
      allOf:
        - $ref: '#/components/schemas/publicApiCommonErrorResponse'
        - type: object
          properties:
            code:
              enum:
                - object_not_found
                - directory_not_found
            status:
              const: 404
          required:
            - code
            - status
          additionalProperties: false
    error_api_406:
      allOf:
        - $ref: '#/components/schemas/publicApiCommonErrorResponse'
        - type: object
          properties:
            code:
              enum:
                - row_limit_exceeded
            status:
              const: 406
          required:
            - code
            - status
          additionalProperties: false
    error_api_409:
      allOf:
        - $ref: '#/components/schemas/publicApiCommonErrorResponse'
        - type: object
          properties:
            code:
              enum:
                - conflict_error
                - idempotency_key_reused
                - agent_deleted
            status:
              const: 409
          required:
            - code
            - status
          additionalProperties: false
    error_api_429:
      allOf:
        - $ref: '#/components/schemas/publicApiCommonErrorResponse'
        - type: object
          properties:
            code:
              enum:
                - rate_limited
            status:
              const: 429
          required:
            - code
            - status
          additionalProperties: false
    error_api_500:
      allOf:
        - $ref: '#/components/schemas/publicApiCommonErrorResponse'
        - type: object
          properties:
            code:
              enum:
                - internal_server_error
            status:
              const: 500
          required:
            - code
            - status
          additionalProperties: false
    error_api_503:
      allOf:
        - $ref: '#/components/schemas/publicApiCommonErrorResponse'
        - type: object
          properties:
            code:
              enum:
                - service_unavailable
            status:
              const: 503
          required:
            - code
            - status
          additionalProperties: false
    error_api_504:
      allOf:
        - $ref: '#/components/schemas/publicApiCommonErrorResponse'
        - type: object
          properties:
            code:
              enum:
                - gateway_timeout
            status:
              const: 504
          required:
            - code
            - status
          additionalProperties: false
    error_api_529:
      allOf:
        - $ref: '#/components/schemas/publicApiCommonErrorResponse'
        - type: object
          properties:
            code:
              enum:
                - service_overload
            status:
              const: 529
          required:
            - code
            - status
          additionalProperties: false
    publicApiCommonErrorResponse:
      type: object
      properties:
        object:
          const: error
        message:
          type: string
        additional_data:
          type: object
          additionalProperties:
            oneOf:
              - type: string
              - type: array
                items:
                  type: string
      required:
        - object
        - message
  parameters:
    notionVersion:
      name: Notion-Version
      in: header
      required: true
      schema:
        enum:
          - '2026-03-11'
      description: >-
        The [API version](/reference/versioning) to use for this request. The
        latest version is `2026-03-11`.
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer

````