---
title: "✨ Get comment"
method: GET
path: "/api/comments/{id}/"
tags: ["Comments"]
---

# ✨ Get comment

`GET /api/comments/{id}/`

<Card href="https://humansignal.com/goenterprise">
        <img style="pointer-events: none; margin-left: 0px; margin-right: 0px;" src="https://docs.humansignal.com/images/badge.svg" alt="Label Studio Enterprise badge"/>
        <p style="margin-top: 10px; font-size: 14px;">
            This endpoint is not available in Label Studio Community Edition. [Learn more about Label Studio Enterprise](https://humansignal.com/goenterprise)
        </p>
    </Card>
Retrieve a specific comment by ID for an annotation.

## Path parameters

- `id` integer, required

## Query parameters

- `expand_created_by` boolean

## Response `200`

- union
  - Comment — Comment Serializer with FSM state support. Note: The 'state' field will be populated from the queryset annotation if present, preventing N+1 queries. Use .with_state() on your queryset. The state field display is controlled by both: - fflag_feat_fit_568_finite_state_management (FSM background calculations) - fflag_feat_fit_710_fsm_state_fields (state field display in APIs)
    - `annotation` integer, nullable
    - `classifications` unknown
    - `created_at` string, date-time, required — Creation time
    - `created_by` integer, required — User who made this comment
    - `draft` integer, nullable
    - `id` integer, required
    - `is_resolved` boolean — True if the comment is resolved
    - `project` integer, nullable, required
    - `region_ref` unknown
    - `resolved_at` string, date-time, nullable, required — Resolving time
    - `state` string, required
    - `task` integer, nullable, required
    - `text` string, nullable — Reviewer or annotator comment
    - `updated_at` string, date-time, required — Last updated time
  - CommentSerializerWithExpandedUser — Comment Serializer with FSM state support. Note: The 'state' field will be populated from the queryset annotation if present, preventing N+1 queries. Use .with_state() on your queryset. The state field display is controlled by both: - fflag_feat_fit_568_finite_state_management (FSM background calculations) - fflag_feat_fit_710_fsm_state_fields (state field display in APIs)
    - `annotation` integer, nullable
    - `classifications` unknown
    - `created_at` string, date-time, required — Creation time
    - `created_by` LseUser, required — A ModelSerializer that takes additional arguments for "fields", "omit" and "expand" in order to control which fields are displayed, and whether to replace simple values with complex, nested serializations
      - `active_organization` integer, nullable
      - `active_organization_meta` object, required
      - `allow_newsletters` boolean, nullable — Allow sending newsletters to user
      - `avatar` string, nullable, required
      - `custom_hotkeys` unknown
      - `date_joined` string, date-time
      - `email` string, email
      - `first_name` string
      - `id` integer, required
      - `initials` string, required
      - `last_activity` string, date-time, required
      - `last_name` string
      - `lse_fields` LseFields, required
        - `email_notification_settings` object, required — Get email notification settings with organization-level filtering. Use the model's getter method to ensure all notification types are included with proper defaults for any missing types. Transform the output to include both value and label for each notification type. Filter notifications based on organization's allowed notifications if user belongs to exactly one organization. Role-based filtering: not_activated_user_login is only available to users who are admins or owners in at least one organization.
        - `invite_activated` boolean, nullable
        - `invite_expired` boolean, nullable, required
        - `invite_expired_at` string, date-time, nullable, required
        - `invited_at` string, date-time, nullable
        - `invited_by` integer, nullable
        - `onboarding_state` 'not_started' | 'signup' | 'trial_signup' | 'first_tutorial' | 'in_app_guidance' | 'complete' — * `not_started` - Not Started * `signup` - Signup * `trial_signup` - Trial Signup * `first_tutorial` - First Tutorial * `in_app_guidance` - In App Guidance * `complete` - Complete
        - `social_auth_finished` boolean, nullable — Is user finished social authentication
        - `trial_company` string, nullable
        - `trial_experience_labeling` string, nullable
        - `trial_license_enterprise` boolean, nullable
        - `trial_models_in_production` string, nullable
        - `trial_role` 'annotator' | 'annotator_team_manager' | 'business_analyst' | 'business_or_data_team_leadership' | 'data_engineer_platform_engineer' | 'data_scientist' | 'other' — * `annotator` - Annotator * `annotator_team_manager` - Annotator Team Manager * `business_analyst` - Business Analyst * `business_or_data_team_leadership` - Business Or Data Team Leadership * `data_engineer_platform_engineer` - Data Engineer Platform Engineer * `data_scientist` - Data Scientist * `other` - Other
      - `org_membership` OrganizationMembership[], required
        - `active` boolean, required
        - `flex` object, nullable, required — Flex claim/window state for FE expired-seat UX (FIT-2339). Non-Flex → null.
        - `organization_id` integer, required — Organization ID
        - `role` string, required
        - `user_type` string, nullable, required
      - `organization_membership` OrganizationMembership, required
        - `active` boolean, required
        - `flex` object, nullable, required — Flex claim/window state for FE expired-seat UX (FIT-2339). Non-Flex → null.
        - `organization_id` integer, required — Organization ID
        - `role` string, required
        - `user_type` string, nullable, required
      - `pause` object, nullable, required
      - `phone` string
      - `username` string, required
    - `draft` integer, nullable
    - `id` integer, required
    - `is_resolved` boolean — True if the comment is resolved
    - `project` integer, nullable, required
    - `region_ref` unknown
    - `resolved_at` string, date-time, nullable, required — Resolving time
    - `state` string, required
    - `task` integer, nullable, required
    - `text` string, nullable — Reviewer or annotator comment
    - `updated_at` string, date-time, required — Last updated time

---

[API](https://skmtc.net/humansignal/apis/label-studio-api.md) · [All operations](https://skmtc.net/humansignal/apis/label-studio-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/humansignal/label-studio-api/versions/1b113b8df950/schema)
