> ## Documentation Index
> Fetch the complete documentation index at: https://docs.base44.com/llms.txt
> Use this file to discover all available pages before exploring further.

> ## Agent Instructions
> Internal links on these pages omit the .md extension. Append .md to a docs page URL, or send an Accept: text/markdown header, to get that page as markdown.

# Edit comment

> <Info>This API is in beta. Endpoints, fields, and behavior may still change, so avoid depending on it in production.</Info>

Replaces the text of a comment you wrote and sets its `edited_at`. Only the author can edit a comment, so replies from the builder agent can't be edited.

`mentioned_emails` records who the comment mentions. Only emails that [List mentionable users](/api-reference/list-mentionable-users) returns are kept, and the rest are dropped without an error. Mentioning someone sends them no email or notification, and responses never return the list. The list you send replaces the comment's previous mentions.

The response's `reactions` is always empty, even when the comment has reactions. Read them from [List comments](/api-reference/list-comments). Anyone with the app open in the builder sees the change right away.

This is limited to 120 requests per minute per app, shared by every other comments endpoint. A signed-in session has its own limit, and every personal access token for the workspace shares one. Some workspaces have a different limit. Every request that counts against the limit gets `X-RateLimit-Limit`, `X-RateLimit-Remaining` and `X-RateLimit-Reset` (Unix time in seconds) headers, and a `429` also gets `Retry-After` in seconds. If the limiter itself is unavailable, requests go through without these headers.

<Note>Call this as an editor of the app, with a personal access token sent as a Bearer token or from a signed-in session. Viewers in the app's workspace, read-only tokens, and workspace API keys are refused.</Note>



## OpenAPI

````yaml /developers/references/app-management/app-management-openapi.json patch /api/apps/{app_id}/comments/threads/{thread_id}/messages/{message_id}
openapi: 3.1.0
info:
  title: Base44 App Management API
  version: 1.0.0
servers:
  - url: https://app.base44.com
security:
  - PersonalAccessTokenAuth: []
paths:
  /api/apps/{app_id}/comments/threads/{thread_id}/messages/{message_id}:
    patch:
      summary: Edit comment
      description: >-
        <Info>This API is in beta. Endpoints, fields, and behavior may still
        change, so avoid depending on it in production.</Info>


        Replaces the text of a comment you wrote and sets its `edited_at`. Only
        the author can edit a comment, so replies from the builder agent can't
        be edited.


        `mentioned_emails` records who the comment mentions. Only emails that
        [List mentionable users](/api-reference/list-mentionable-users) returns
        are kept, and the rest are dropped without an error. Mentioning someone
        sends them no email or notification, and responses never return the
        list. The list you send replaces the comment's previous mentions.


        The response's `reactions` is always empty, even when the comment has
        reactions. Read them from [List comments](/api-reference/list-comments).
        Anyone with the app open in the builder sees the change right away.


        This is limited to 120 requests per minute per app, shared by every
        other comments endpoint. A signed-in session has its own limit, and
        every personal access token for the workspace shares one. Some
        workspaces have a different limit. Every request that counts against the
        limit gets `X-RateLimit-Limit`, `X-RateLimit-Remaining` and
        `X-RateLimit-Reset` (Unix time in seconds) headers, and a `429` also
        gets `Retry-After` in seconds. If the limiter itself is unavailable,
        requests go through without these headers.


        <Note>Call this as an editor of the app, with a personal access token
        sent as a Bearer token or from a signed-in session. Viewers in the app's
        workspace, read-only tokens, and workspace API keys are refused.</Note>
      operationId: >-
        edit_app_comment_message_api_apps__app_id__comments_threads__thread_id__messages__message_id__patch
      parameters:
        - name: app_id
          in: path
          required: true
          schema:
            type: string
            description: ID of the app.
            title: App Id
          description: ID of the app.
          example: 6820f3a4e7b91d003c45a1f2
        - name: thread_id
          in: path
          required: true
          schema:
            type: string
            description: >-
              ID of the comment thread, from `thread.id` in [List
              comments](/api-reference/list-comments).
            title: Thread Id
          description: >-
            ID of the comment thread, from `thread.id` in [List
            comments](/api-reference/list-comments).
          example: 68e2b7c1d4f0a9001c3e5a17
        - name: message_id
          in: path
          required: true
          schema:
            type: string
            description: >-
              ID of a comment in the thread: `comment.id` for the first comment
              or a `replies[].id`, from [List
              comments](/api-reference/list-comments).
            title: Message Id
          description: >-
            ID of a comment in the thread: `comment.id` for the first comment or
            a `replies[].id`, from [List
            comments](/api-reference/list-comments).
          example: 68e2b7c4d4f0a9001c3e5a1c
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EditAppCommentPayload'
      responses:
        '200':
          description: The edited comment.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CommentMessage'
        '401':
          description: Missing or invalid credentials.
        '403':
          description: >-
            You don't have editor access to this app, you're a viewer in the
            app's workspace, the app is blocked, or your token is read-only or a
            workspace API key, or you didn't write this comment.
        '404':
          description: App, comment thread, or comment not found.
        '409':
          description: Your workspace requires an unlocked SSO session.
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
        '429':
          description: >-
            Rate limit exceeded. Wait the number of seconds in `Retry-After`
            before retrying.
components:
  schemas:
    EditAppCommentPayload:
      properties:
        content:
          type: string
          maxLength: 5000
          minLength: 1
          title: Content
          description: Text of the comment, 1 to 5000 characters.
          example: Make this button match the footer color.
        mentioned_emails:
          items:
            type: string
          type: array
          maxItems: 50
          title: Mentioned Emails
          description: >-
            Emails of up to 50 people the comment mentions. Mentions send no
            notification.
          example:
            - dana@acme.com
      type: object
      required:
        - content
      title: EditAppCommentPayload
      description: The new text of a comment.
    CommentMessage:
      properties:
        id:
          type: string
          title: Id
          description: ID of the comment.
          example: 68e2b7c4d4f0a9001c3e5a1c
        content:
          type: string
          title: Content
          description: Text of the comment.
          example: Make this button match the header color.
        sender_id:
          type: string
          title: Sender Id
          description: >-
            ID of the Base44 user who wrote it, or `base44` for a reply from the
            builder agent.
          example: 6820f41be7b91d003c45a20a
        sender_name:
          type: string
          title: Sender Name
          description: >-
            Name of the author when they wrote it, or their email when they had
            no name. `Base44` for the builder agent.
          example: Dana Levi
        sender_avatar_url:
          anyOf:
            - type: string
            - type: 'null'
          title: Sender Avatar Url
          description: URL of the author's profile image, or `null` when they have none.
          example: https://lh3.googleusercontent.com/a/ACg8ocJ2
        created_date:
          type: string
          format: date-time
          title: Created Date
          description: When the comment was posted, in UTC.
          example: '2026-10-05T09:14:22.512000Z'
        edited_at:
          anyOf:
            - type: string
              format: date-time
            - type: 'null'
          title: Edited At
          description: >-
            When the comment was last edited, in UTC, or `null` when it never
            was.
          example: '2026-10-05T09:14:22.512000Z'
        reactions:
          additionalProperties:
            items:
              type: string
            type: array
          type: object
          title: Reactions
          description: >-
            Each emoji reacted with, mapped to the IDs of the users who reacted
            with it.
          example:
            👍:
              - 6820f41be7b91d003c45a20a
      type: object
      required:
        - id
        - content
        - sender_id
        - sender_name
        - sender_avatar_url
        - created_date
        - edited_at
        - reactions
      title: CommentMessage
      description: 'One comment: the first comment of a thread or a reply.'
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
    ValidationError:
      properties:
        loc:
          items:
            anyOf:
              - type: string
              - type: integer
          type: array
          title: Location
        msg:
          type: string
          title: Message
        type:
          type: string
          title: Error Type
      type: object
      required:
        - loc
        - msg
        - type
      title: ValidationError
  securitySchemes:
    PersonalAccessTokenAuth:
      type: http
      scheme: bearer
      description: 'Personal access token, sent as `Authorization: Bearer <token>`.'

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.