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

# Annotation - Get

> Get a single annotation with full details including complete conversation context.

This endpoint retrieves a single annotation by ID with complete details. It includes:

* Full annotation details (comment, sentiment, status, tags)
* Complete conversation context with all messages
* Message metadata (agent, contact, user, attachments)
* Chronological message ordering for context

<Note>
  Authentication is **required**. You must provide a valid session with an organization ID.
</Note>

### Path

<ParamField path="id" type="string" required>
  The ID of the annotation to retrieve (CUID format).
</ParamField>

### Response

<ResponseField name="id" type="string">
  Unique identifier of the annotation (CUID format).
</ResponseField>

<ResponseField name="messageId" type="string">
  ID of the message this annotation refers to.
</ResponseField>

<ResponseField name="organizationId" type="string">
  ID of the organization the annotation belongs to.
</ResponseField>

<ResponseField name="comment" type="string">
  Comment or feedback text for the annotation.
</ResponseField>

<ResponseField name="sentiment" type="string">
  Sentiment of the annotation (e.g., `positive`, `negative`, `neutral`).
</ResponseField>

<ResponseField name="status" type="string">
  Current status of the annotation.
</ResponseField>

<ResponseField name="createdById" type="string">
  ID of the user who created the annotation.
</ResponseField>

<ResponseField name="createdAt" type="string">
  ISO 8601 timestamp of when the annotation was created.
</ResponseField>

<ResponseField name="updatedAt" type="string">
  ISO 8601 timestamp of when the annotation was last updated.
</ResponseField>

<ResponseField name="createdBy" type="object">
  Information about the user who created the annotation.

  <Expandable title="CreatedBy object" defaultOpen>
    <ResponseField name="email" type="string">
      Email address of the user who created the annotation.
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="message" type="object">
  The message this annotation refers to, including full conversation context.

  <Expandable title="Message object" defaultOpen>
    <ResponseField name="id" type="string">
      Unique identifier of the message.
    </ResponseField>

    <ResponseField name="content" type="string">
      Content of the message.
    </ResponseField>

    <ResponseField name="conversationId" type="string">
      ID of the conversation this message belongs to.
    </ResponseField>

    <ResponseField name="conversation" type="object">
      Complete conversation object with all messages.

      <Expandable title="Conversation object">
        <ResponseField name="id" type="string">
          Unique identifier of the conversation.
        </ResponseField>

        <ResponseField name="messages" type="array">
          All messages in the conversation, ordered chronologically by creation time.

          <Expandable title="Message array items">
            <ResponseField name="id" type="string">
              Unique identifier of the message.
            </ResponseField>

            <ResponseField name="content" type="string">
              Content of the message.
            </ResponseField>

            <ResponseField name="agent" type="object">
              Agent information (if message is from an agent).

              <Expandable title="Agent object">
                <ResponseField name="id" type="string">
                  Agent ID.
                </ResponseField>

                <ResponseField name="name" type="string">
                  Agent name.
                </ResponseField>

                <ResponseField name="iconUrl" type="string">
                  URL of the agent's icon.
                </ResponseField>
              </Expandable>
            </ResponseField>

            <ResponseField name="contact" type="object">
              Contact information (if message is from a contact).

              <Expandable title="Contact object">
                <ResponseField name="id" type="string">
                  Contact ID.
                </ResponseField>

                <ResponseField name="phoneNumber" type="string">
                  Contact phone number.
                </ResponseField>

                <ResponseField name="email" type="string">
                  Contact email address.
                </ResponseField>
              </Expandable>
            </ResponseField>

            <ResponseField name="user" type="object">
              User information (if message is from a user).

              <Expandable title="User object">
                <ResponseField name="id" type="string">
                  User ID.
                </ResponseField>

                <ResponseField name="name" type="string">
                  User name.
                </ResponseField>

                <ResponseField name="picture" type="string">
                  User profile picture URL.
                </ResponseField>

                <ResponseField name="customPicture" type="string">
                  Custom user picture URL.
                </ResponseField>
              </Expandable>
            </ResponseField>

            <ResponseField name="attachments" type="array">
              Message attachments (only AI-enabled MIME types are included).

              <Expandable title="Attachment array items">
                <ResponseField name="id" type="string">
                  Attachment ID.
                </ResponseField>

                <ResponseField name="url" type="string">
                  URL of the attachment.
                </ResponseField>

                <ResponseField name="mimeType" type="string">
                  MIME type of the attachment.
                </ResponseField>
              </Expandable>
            </ResponseField>

            <ResponseField name="annotation" type="object">
              Annotation information for this message (if any).

              <Expandable title="Annotation object">
                <ResponseField name="id" type="string">
                  Annotation ID.
                </ResponseField>

                <ResponseField name="sentiment" type="string">
                  Sentiment of the annotation.
                </ResponseField>
              </Expandable>
            </ResponseField>
          </Expandable>
        </ResponseField>
      </Expandable>
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="tags" type="array">
  Tags associated with the annotation.

  <Expandable title="Tags array items">
    <ResponseField name="tag" type="object">
      Tag information.

      <Expandable title="Tag object">
        <ResponseField name="id" type="string">
          Tag ID.
        </ResponseField>

        <ResponseField name="name" type="string">
          Tag name.
        </ResponseField>
      </Expandable>
    </ResponseField>
  </Expandable>
</ResponseField>

### Error Responses

| Status Code | Type         | Description                                                                                    |
| ----------- | ------------ | ---------------------------------------------------------------------------------------------- |
| 401         | UNAUTHORIZED | Missing or invalid authentication session, or annotation does not belong to your organization. |
| 404         | NOT\_FOUND   | Annotation with the specified ID does not exist.                                               |

<RequestExample>
  ```bash cURL theme={null}
  curl --location --request GET 'https://dashboard.laburen.com/api/annotations/clxxxxxxxxxxxxxxxxx' \
  --header 'Authorization: Bearer <API_KEY>'
  ```

  ```javascript JavaScript theme={null}
  const apiUrl = 'https://dashboard.laburen.com/api';
  const apiKey = '<API_KEY>';

  const response = await fetch(`${apiUrl}/annotations/clxxxxxxxxxxxxxxxxx`, {
    method: 'GET',
    headers: {
      'Authorization': `Bearer ${apiKey}`,
    },
  });

  const data = await response.json();
  console.log(data);
  ```

  ```python Python theme={null}
  import requests

  api_url = "https://dashboard.laburen.com/api"
  api_key = "<API_KEY>"

  response = requests.get(
      f"{api_url}/annotations/clxxxxxxxxxxxxxxxxx",
      headers={
          "Authorization": f"Bearer {api_key}",
      },
  )

  data = response.json()
  print(data)
  ```
</RequestExample>

<ResponseExample>
  ```json Response theme={null}
  {
    "id": "clxxxxxxxxxxxxxxxxx",
    "messageId": "clxxxxxxxxxxxxxxxxx",
    "organizationId": "clxxxxxxxxxxxxxxxxx",
    "comment": "The agent provided incorrect information about pricing",
    "sentiment": "negative",
    "status": "pending",
    "createdById": "clxxxxxxxxxxxxxxxxx",
    "createdAt": "2024-01-15T10:30:00.000Z",
    "updatedAt": "2024-01-15T10:30:00.000Z",
    "createdBy": {
      "email": "user@example.com"
    },
    "message": {
      "id": "clxxxxxxxxxxxxxxxxx",
      "content": "What are your pricing plans?",
      "conversationId": "clxxxxxxxxxxxxxxxxx",
      "conversation": {
        "id": "clxxxxxxxxxxxxxxxxx",
        "messages": [
          {
            "id": "clxxxxxxxxxxxxxxxxx",
            "content": "Hello, how can I help you?",
            "agent": {
              "id": "clxxxxxxxxxxxxxxxxx",
              "name": "Support Agent",
              "iconUrl": "https://example.com/icon.png"
            }
          },
          {
            "id": "clxxxxxxxxxxxxxxxxx",
            "content": "What are your pricing plans?",
            "contact": {
              "id": "clxxxxxxxxxxxxxxxxx",
              "phoneNumber": "+1234567890",
              "email": "customer@example.com"
            },
            "annotation": {
              "id": "clxxxxxxxxxxxxxxxxx",
              "sentiment": "negative"
            }
          }
        ]
      }
    },
    "tags": [
      {
        "tag": {
          "id": "clxxxxxxxxxxxxxxxxx",
          "name": "bug"
        }
      }
    ]
  }
  ```
</ResponseExample>
