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

# Submit message feedback

> Record a like or dislike on a conversation message. When the user has consented to data sharing, the associated trace is donated for troubleshooting.



## OpenAPI

````yaml post /conversations/{conversation_id}/messages/{message_id}
openapi: 3.0.3
info:
  version: 0.1.1
  title: Datagrid API
  description: Datagrid API
servers:
  - url: https://api.datagrid.com/v1
security:
  - BearerAuth: []
paths:
  /conversations/{conversation_id}/messages/{message_id}:
    post:
      tags:
        - Conversations
      summary: Submit message feedback
      description: >-
        Record a like or dislike on a conversation message. When the user has
        consented to data sharing, the associated trace is donated for
        troubleshooting.
      operationId: Conversations.submitMessageFeedback
      parameters:
        - name: conversation_id
          in: path
          required: true
          schema:
            type: string
          description: The id of the conversation the message belongs to.
        - name: message_id
          in: path
          required: true
          schema:
            type: string
          description: >-
            The id of the message to submit feedback for. Accepts the raw
            message UUID or a `{uuid}-user` / `{uuid}-agent` public id.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SubmitMessageFeedbackRequest'
      responses:
        '204':
          description: Feedback recorded
        '400':
          description: >-
            Invalid request. The message id is malformed, or feedback was
            submitted for a message that is not an agent or voice message.
        '404':
          description: >-
            Not found. The requested conversation or message does not exist, or
            the authenticated user does not have permission to access it.
        '429':
          description: >-
            Rate limit exceeded. The request has been throttled because the rate
            limit for this endpoint has been reached. Check the `Retry-After`
            response header and retry after the specified number of seconds.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RateLimitError'
components:
  schemas:
    SubmitMessageFeedbackRequest:
      type: object
      description: >-
        Request body for submitting like or dislike feedback on a conversation
        message.
      required:
        - like
      properties:
        like:
          type: integer
          enum:
            - 1
            - -1
          description: '`1` for thumbs up, `-1` for thumbs down.'
        feedback:
          type: string
          nullable: true
          description: Optional free-text comment.
        ui_surface:
          type: string
          nullable: true
          enum:
            - datagrid_web
            - procore_embed
            - field_ai_mobile
          description: Client surface where the user submitted feedback.
    RateLimitError:
      type: object
      description: >-
        Returned when the rate limit is exceeded. Rate limits are enforced per
        teamspace, endpoint path, and HTTP method over a 60-second sliding
        window. Each endpoint may have its own limit — check the
        X-RateLimit-Limit response header for the effective value.
      required:
        - error
        - message
        - retryable
        - status_code
      properties:
        status_code:
          type: integer
          description: The HTTP status code (429).
        statusCode:
          type: integer
          deprecated: true
          description: Deprecated. Use status_code instead.
        error:
          type: string
          enum:
            - rate_limit_exceeded
          description: The error code identifying this as a rate limit error.
        message:
          type: string
          description: A human-readable error message.
        mitigation:
          type: string
          description: Suggested action to resolve the error.
        retryable:
          type: boolean
          description: Whether the request can be retried after a delay.
        details:
          type: object
          properties:
            reason:
              type: string
              description: A detailed explanation of why the rate limit was exceeded.
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer

````

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