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

# List Connections

> Retrieve a paginated list of connections.

## Overview

Returns a paginated list of the account's connections. Pagination is **offset-based** (the platform provides a stable, addressable list — no opaque cursor needed). Set `count` for the page size and `offset` to skip ahead.

<Note>This endpoint consumes **1 credit per 50 results** returned. The platform returns up to **100 connections per internal request**, so requesting `count: 250` triggers \~3 upstream calls automatically. Ignore this if you're on per-seat pricing: usage is unlimited.</Note>

### Is one profile a connection?

Same stored copy, one profile: send `action: "check_connection"` with `params.profile_url` (full URL or public identifier). Returns `connected: true/false`, `name`, `cache_synced` and `cache_synced_at`. **0 credit, no LinkedIn traffic.**

```json theme={null}
{ "account_id": "your-account-id", "action": "check_connection", "params": { "profile_url": "https://www.linkedin.com/in/jane-doe-42/" } }
```

## Request

<ParamField header="x-api-key" type="string" required>
  Your API key for authentication.
</ParamField>

<ParamField body="account_id" type="string" required>
  The unique identifier of the account to use.
</ParamField>

<ParamField body="action" type="string" required>
  Must be `"list_connections"`.
</ParamField>

<ParamField body="params" type="object">
  <Expandable title="params properties">
    <ParamField body="count" type="integer" default={10}>
      Number of connections to return. Defaults to `10`. **Capped at `1000`** per call — to retrieve more, paginate with `offset`.
    </ParamField>

    <ParamField body="offset" type="integer" default={0}>
      Zero-indexed offset into the connections list. Defaults to `0`. Use `pagination.next_offset` from a previous response to fetch the next page.
    </ParamField>

    <ParamField body="use_cache" type="boolean" default={false}>
      Serve the list from our stored copy of the account's connections instead of LinkedIn: **0 credit, no LinkedIn traffic**, newest connection first. The copy exists for accounts subscribed to the [`accepted_invitation`](/api-reference/v2/webhooks/introduction#event-types) webhook event (full sync at subscription, then every detected acceptance is added). Without it the response is empty with `cache_synced: false`.
    </ParamField>
  </Expandable>
</ParamField>

## Response

<ResponseField name="success" type="boolean">
  Indicates whether the request was successful.
</ResponseField>

<ResponseField name="data" type="object">
  <Expandable title="data properties">
    <ResponseField name="connections" type="array">
      List of connection objects.

      <Expandable title="connection properties">
        <ResponseField name="name" type="string">Display name of the connection.</ResponseField>
        <ResponseField name="job_title" type="string">Headline / current job title.</ResponseField>
        <ResponseField name="profile_url" type="string">Public profile URL.</ResponseField>
        <ResponseField name="profile_picture" type="string">URL of the connection's profile picture.</ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="total_results" type="integer">
      Number of connections returned in this response.
    </ResponseField>

    <ResponseField name="total_available_results" type="integer">
      Total number of connections available in the account.
    </ResponseField>

    <ResponseField name="source" type="string">
      `"cache"` when served with `use_cache`. Absent otherwise.
    </ResponseField>

    <ResponseField name="cache_synced" type="boolean">
      With `use_cache` only: `false` when the account has no stored copy yet.
    </ResponseField>

    <ResponseField name="cache_synced_at" type="string">
      With `use_cache` only: ISO 8601 date of the most recent stored connection.
    </ResponseField>

    <ResponseField name="pagination" type="object">
      <Expandable title="pagination properties">
        <ResponseField name="offset" type="integer">Offset of the first connection in this response.</ResponseField>
        <ResponseField name="count" type="integer">Number of connections returned (mirrors `total_results`).</ResponseField>
        <ResponseField name="next_offset" type="integer">Offset to send as `offset` in the next request to fetch the next page. `null` when there are no more results.</ResponseField>
        <ResponseField name="has_more" type="boolean">`true` if more connections are available beyond this batch.</ResponseField>
        <ResponseField name="results_per_page" type="integer">Maximum batch size used per upstream request.</ResponseField>
        <ResponseField name="pages_fetched" type="integer">Number of internal upstream batches consumed to assemble this response.</ResponseField>
      </Expandable>
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="metadata" type="object">
  <Expandable title="metadata properties">
    <ResponseField name="action" type="string">
      The action that was performed (`"list_connections"`).
    </ResponseField>

    <ResponseField name="account_id" type="string">
      The account ID used for the request.
    </ResponseField>

    <ResponseField name="credits_consumed" type="integer">
      Number of credits consumed (1 per 50 results).
    </ResponseField>

    <ResponseField name="timestamp" type="string">
      ISO 8601 timestamp of the response.
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseExample>
  ```json 200 theme={null}
  {
    "success": true,
    "data": {
      "connections": [
        {
          "name": "Jane Doe",
          "job_title": "Founder @ Acme Corp — AI recruiting platform",
          "profile_url": "https://www.linkedin.com/in/jane-doe-42/",
          "profile_picture": "https://media.licdn.com/dms/image/v2/.../profile.jpg"
        }
      ],
      "total_results": 1,
      "total_available_results": 1201,
      "pagination": {
        "offset": 0,
        "count": 1,
        "next_offset": 1,
        "has_more": true,
        "results_per_page": 10,
        "pages_fetched": 1
      }
    },
    "metadata": {
      "action": "list_connections",
      "account_id": "your-account-id",
      "credits_consumed": 1,
      "timestamp": "2026-04-26T10:35:00Z"
    }
  }
  ```

  ```json 200 — use_cache theme={null}
  {
    "success": true,
    "data": {
      "connections": [
        {
          "name": "Jane Doe",
          "job_title": "Founder @ Acme Corp — AI recruiting platform",
          "profile_url": "https://www.linkedin.com/in/jane-doe-42/",
          "profile_picture": "https://media.licdn.com/dms/image/v2/.../profile.jpg"
        }
      ],
      "total_results": 1,
      "total_available_results": 1201,
      "pagination": {
        "offset": 0,
        "count": 1,
        "next_offset": 1,
        "has_more": true,
        "results_per_page": 1,
        "pages_fetched": 0
      },
      "source": "cache",
      "cache_synced": true,
      "cache_synced_at": "2026-04-25T13:42:16.859000"
    },
    "metadata": {
      "action": "list_connections",
      "account_id": "your-account-id",
      "credits_consumed": 0,
      "timestamp": "2026-04-26T10:35:00Z"
    }
  }
  ```

  ```json 400 theme={null}
  {
    "success": false,
    "error": {
      "code": "INVALID_PARAMS",
      "message": "account_id is required."
    },
    "metadata": {
      "action": "list_connections",
      "account_id": null,
      "credits_consumed": 0,
      "timestamp": "2026-04-26T10:35:00Z"
    }
  }
  ```
</ResponseExample>
