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

# Toggle comment reaction

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

Adds your reaction with an emoji to a comment, or removes it when you already reacted with that emoji. Calling it twice undoes the first call, so don't retry it blindly.

Any text of up to 16 characters is accepted as `emoji`. 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 post /api/apps/{app_id}/comments/threads/{thread_id}/messages/{message_id}/reactions
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}/reactions:
    post:
      summary: Toggle comment reaction
      description: >-
        <Info>This API is in beta. Endpoints, fields, and behavior may still
        change, so avoid depending on it in production.</Info>


        Adds your reaction with an emoji to a comment, or removes it when you
        already reacted with that emoji. Calling it twice undoes the first call,
        so don't retry it blindly.


        Any text of up to 16 characters is accepted as `emoji`. 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: >-
        toggle_app_comment_reaction_api_apps__app_id__comments_threads__thread_id__messages__message_id__reactions_post
      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/ToggleReactionPayload'
      responses:
        '200':
          description: Who reacts with the emoji now.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ReactionResult'
        '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.
        '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:
    ToggleReactionPayload:
      properties:
        emoji:
          type: string
          maxLength: 16
          minLength: 1
          title: Emoji
          description: Emoji to toggle, up to 16 characters.
          example: 👍
      type: object
      required:
        - emoji
      title: ToggleReactionPayload
      description: The emoji reaction to toggle.
    ReactionResult:
      properties:
        emoji:
          type: string
          title: Emoji
          description: The emoji you toggled.
          example: 👍
        user_ids:
          items:
            type: string
          type: array
          title: User Ids
          description: >-
            IDs of everyone who now reacts with this emoji on the comment. Your
            ID is missing when you removed your reaction.
          example:
            - 6820f41be7b91d003c45a20a
      type: object
      required:
        - emoji
        - user_ids
      title: ReactionResult
    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.