Submit feedback (like/dislike) for a specific message in a conversation. This endpoint allows users to rate the quality and helpfulness of AI assistant responses.

Use Cases:

  • Rate the helpfulness of AI responses
  • Provide training data for model improvement
  • Track user satisfaction with AI interactions
  • Remove existing feedback by setting feedback to null
  • Update existing feedback by submitting a new value

Authentication Required: This endpoint requires a valid Bearer token in the Authorization header. The user must have access to the conversation containing the message.

Feedback Types:

  • like: Positive feedback indicating the response was helpful and accurate
  • dislike: Negative feedback indicating the response was unhelpful or incorrect
  • null: Remove existing feedback

Behavior:

  • Feedback is stored with a timestamp (feedbackAt)
  • Submitting new feedback overwrites any existing feedback
  • Setting feedback to null removes the existing feedback
  • Feedback submissions are published as events for analytics
  • Only the message owner (visitor) can submit feedback

Event Publishing: Feedback submissions are automatically published as events for analytics and monitoring purposes.

POST
/messages/{messageId}/feedback
AuthorizationBearer <token>

In: header

Path Parameters

messageIdstring

The unique identifier of the message to provide feedback for

Formatuuid
feedbackstring|null

The feedback type for the message. Use 'like' to indicate the response was helpful and accurate, 'dislike' to indicate it was unhelpful or incorrect, or null to remove any existing feedback. This feedback is used for analytics and model improvement.

Value in"like" | "dislike"

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

application/json

application/json

application/json

application/json

application/json

application/json

curl -X POST "https://api.siteassist.io/v2/messages/123e4567-e89b-12d3-a456-426614174000/feedback" \  -H "Content-Type: application/json" \  -d '{    "feedback": "like"  }'

Response when positive feedback is successfully submitted

{
  "feedback": "like"
}

{
  "error": {
    "message": "Invalid request body. Content is required.",
    "code": "INVALID_REQUEST_BODY",
    "details": {
      "field": "content"
    }
  }
}
{
  "error": {
    "message": "Authentication required",
    "code": "UNAUTHORIZED"
  }
}
{
  "error": {
    "message": "A higher pricing plan is required to access this feature",
    "code": "PAYMENT_REQUIRED",
    "details": {
      "currentPlan": "free",
      "requiredPlan": "pro",
      "feature": "advanced_ai_models"
    }
  }
}
{
  "error": {
    "message": "Access denied to this conversation",
    "code": "FORBIDDEN"
  }
}
{
  "error": {
    "message": "Conversation not found!",
    "code": "CONVERSATION_NOT_FOUND",
    "details": {
      "conversationId": "123e4567-e89b-12d3-a456-426614174000"
    }
  }
}
{
  "error": {
    "message": "Resource already exists",
    "code": "CONFLICT",
    "details": {
      "resource": "conversation",
      "conflictingField": "id"
    }
  }
}
{
  "error": {
    "message": "Validation failed",
    "code": "VALIDATION_ERROR",
    "details": {
      "field": "content",
      "reason": "Content exceeds maximum length of 10000 characters"
    }
  }
}
{
  "error": {
    "message": "Rate limit exceeded. Please try again later.",
    "code": "RATE_LIMIT_EXCEEDED",
    "details": {
      "retryAfter": 60
    }
  }
}
{
  "error": {
    "message": "An internal server error occurred",
    "code": "INTERNAL_SERVER_ERROR"
  }
}
{
  "error": {
    "message": "Service temporarily unavailable",
    "code": "BAD_GATEWAY",
    "details": {
      "service": "ai_model_service"
    }
  }
}
{
  "error": {
    "message": "Service temporarily unavailable",
    "code": "SERVICE_UNAVAILABLE",
    "details": {
      "retryAfter": 30
    }
  }
}