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

# List the people in your conversations

> See who you talk to on LinkedIn, most recent conversation first, with their profile details and whether they are already linked to your CRM.

> [!NOTE]
>
> Safe to try: this reads Groovin's copy of your LinkedIn inbox. Nothing changes, and no LinkedIn limit applies.

## What this call does

| | |
| - | - |
| **LinkedIn** | None: reads a server-side copy of your inbox |
| **Your CRM** | None |
| **Repeating it** | Safe to repeat. |

Your AI assistant reaches the same action through the MCP tool `list_linkedin_conversation_attendees`.


## OpenAPI

````yaml reference/openapi.json POST /linkedin/conversation-attendees
openapi: 3.1.0
info:
  title: Groovin API
  version: 1.0.0
  description: >-
    Connect LinkedIn and your CRM. Every call acts on your real LinkedIn account
    and CRM: there is no test mode.
servers:
  - url: https://api.groovin.ai/functions/v1/api/v1
security:
  - apiKey: []
tags:
  - name: LinkedIn
  - name: CRM contacts and companies
  - name: LinkedIn connections import
paths:
  /linkedin/conversation-attendees:
    post:
      tags:
        - LinkedIn
      summary: List the people in your conversations
      description: >-
        See who you talk to on LinkedIn, most recent conversation first, with
        their profile details and whether they are already linked to your CRM.
      operationId: list_linkedin_conversation_attendees
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                org_linkedin_account_id:
                  type: integer
                  description: >-
                    Leave this out to use your own LinkedIn account. Another
                    person's account is refused with a 403.
                include_conversation_metadata:
                  type: boolean
                  description: >-
                    Add each person's latest chat details, such as
                    `conversation_id` and `unread_count`. On by default. Send
                    `false` for a faster answer, but the order is then not
                    defined.
                has_unread_messages:
                  type: boolean
                  description: >-
                    `true` keeps people you have unread messages from. `false`
                    keeps the others. This always adds the chat details.
                limit:
                  type: integer
                  description: >-
                    Only the N most recent conversations. This always adds the
                    chat details. The playground fills this in for you. The API
                    itself has no default: without `limit`, you get everything.
                    A large inbox holds thousands of people.
                  default: 10
              required: []
            examples:
              placeholder:
                summary: Replace every value
                value:
                  limit: 10
      responses:
        '200':
          description: Success.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListConversationAttendeesResult'
              example:
                org_linkedin_account_id: 4821
                total: 214
                returned: 1
                truncated: true
                attendees:
                  - linkedin_profile_id: ACoAAExampleLinkedinProfileId
                    slug: john-smith
                    name: John Smith
                    headline: Founder at Example Co
                    occupation: Founder at Example Co
                    location: Paris, Île-de-France
                    network_distance: DISTANCE_1
                    pending_invitation: false
                    emails: []
                    profile_url: https://www.linkedin.com/in/john-smith
                    picture_url: null
                    already_paired_in_groovin: true
                    last_message_at: '2026-11-02T08:41:00.000Z'
                    unread_count: 1
                    conversation_id: example-conversation-id
                    conversation_archived: false
                    conversation_pinned: false
                    conversation_subject: null
                    conversation_name: null
                    conversation_type: MESSAGE
        '400':
          description: 'Something in the request is wrong: `error` says what.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: The API key is missing, wrong or revoked.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: >-
            Your account cannot do this: no CRM connected, inactive
            subscription, Billing admin role, or a teammate's LinkedIn account.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: >-
            What you asked for does not exist, or your LinkedIn account is not
            connected.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '429':
          description: LinkedIn or your CRM is slowing you down. Wait at least 5 minutes.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Something failed on our side.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '502':
          description: >-
            LinkedIn or your CRM could not be reached or gave an unreadable
            answer.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
components:
  schemas:
    ListConversationAttendeesResult:
      type: object
      description: The people from your LinkedIn conversations.
      required:
        - org_linkedin_account_id
        - total
        - returned
        - truncated
        - attendees
      properties:
        org_linkedin_account_id:
          type: integer
          description: Groovin's id for the LinkedIn account this answer is about.
        total:
          type: integer
          description: People matching your filters, before `limit`.
        returned:
          type: integer
          description: People in this answer.
        truncated:
          type: boolean
          description: '`true` when `limit` left matching people out.'
        attendees:
          type: array
          items:
            $ref: '#/components/schemas/ConversationAttendee'
          description: >-
            Most recent conversation first, unless you sent
            `include_conversation_metadata: false`: the order is then not
            defined.
    Error:
      type: object
      description: >-
        What every failed request answers, with an HTTP status. The text can
        change: decide what to do from the status, and show the text to a
        person.
      required:
        - error
      properties:
        error:
          type: string
          description: What went wrong, and sometimes what to do next.
    ConversationAttendee:
      type: object
      description: A person from your LinkedIn conversations.
      required:
        - linkedin_profile_id
        - slug
        - name
        - headline
        - occupation
        - location
        - network_distance
        - pending_invitation
        - emails
        - profile_url
        - picture_url
        - already_paired_in_groovin
      properties:
        linkedin_profile_id:
          type: string
          description: LinkedIn profile id, the `ACoAA…` identifier of a person.
        slug:
          type:
            - string
            - 'null'
          description: >-
            The public part of the person's LinkedIn URL, as in
            `linkedin.com/in/<slug>`.
        name:
          type: string
          description: The person's name.
        headline:
          type:
            - string
            - 'null'
          description: Their LinkedIn headline.
        occupation:
          type:
            - string
            - 'null'
          description: Their occupation, as LinkedIn reports it.
        location:
          type:
            - string
            - 'null'
          description: Their location, as free text.
        network_distance:
          type:
            - string
            - 'null'
          description: How close they are in your network, such as `"DISTANCE_1"`.
        pending_invitation:
          type:
            - boolean
            - 'null'
          description: Whether an invitation is pending with this person.
        emails:
          type: array
          items:
            type: string
          description: Email addresses LinkedIn shows for this person.
        profile_url:
          type:
            - string
            - 'null'
          description: Their LinkedIn profile URL.
        picture_url:
          type:
            - string
            - 'null'
          description: Their profile picture URL.
        already_paired_in_groovin:
          type: boolean
          description: >-
            `true` when Groovin already links this person to a CRM contact. A
            quick Groovin check, not a live CRM search.
        is_crm_contact_creation_blocked:
          const: true
          description: >-
            Only present, as `true`, when you blocked this person from CRM
            contact creation in Groovin. `crm/contacts` does not enforce the
            block, so check it yourself before creating.
        last_message_at:
          type:
            - string
            - 'null'
          description: >-
            When the last message was sent in their chat, or `null` if there is
            no chat. Conversation fields like this one are left out when you
            send `include_conversation_metadata: false`.
        unread_count:
          type: integer
          description: >-
            Messages you have not read yet, across all the chats listed under
            this person.
        conversation_id:
          type:
            - string
            - 'null'
          description: >-
            Their most recent chat. Pass it to `linkedin/chat-messages` to read
            it.
        conversation_archived:
          type:
            - boolean
            - 'null'
          description: Whether that chat is archived.
        conversation_pinned:
          type:
            - boolean
            - 'null'
          description: Whether that chat is pinned.
        conversation_subject:
          type:
            - string
            - 'null'
          description: That chat's subject. Usually `null` for a plain conversation.
        conversation_name:
          type:
            - string
            - 'null'
          description: That chat's name, set for named or group threads.
        conversation_type:
          type:
            - string
            - 'null'
          description: >-
            The kind of chat: `"MESSAGE"`, `"INMAIL"`, or another LinkedIn type
            in capitals.
  securitySchemes:
    apiKey:
      type: http
      scheme: bearer
      description: >-
        Your Groovin API key (`gv_live_…`), created in the extension under
        Settings, MCP and API.

````

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