---
title: "List 1st-degree connections"
method: GET
path: "/linkedin/connections"
tags: ["LinkedIn — Outreach"]
---

# List 1st-degree connections

`GET /linkedin/connections`

## Request

- Base URL: `https://anjal.app`
- URL: `https://anjal.app/linkedin/connections`
- Auth: API key in header `X-API-Key`

Lists the connected account's 1st-degree connections, newest-first.
Source for the `connection_accepted` signal kind on the cadence
runner; usable directly by clients rendering a "connections" view.

## Names are included — no profile lookup needed

Unlike the URN-only legacy LinkedIn endpoints, this response
returns fully-resolved `firstName`, `lastName`, `fullName`,
`headline`, and `pictureUrl` extracted server-side from
LinkedIn's SDUI payload. Render directly.

- `fullName`         — Convenience field, `firstName + " " + lastName`
                       with internal whitespace normalised. Use this
                       for display rather than concatenating
                       `firstName`/`lastName` yourself.
- `connectedAt`      — ISO 8601 timestamp of when the connection
                       formed. Nullable for older connections where
                       LinkedIn doesn't surface the date.
- `pictureUrl`       — Direct CDN URL. Nullable for accounts
                       without a photo. Stable enough to cache
                       for ~24h.
- `publicIdentifier` — `linkedin.com/in/<slug>` segment. Build a
                       profile URL with
                       `https://www.linkedin.com/in/${publicIdentifier}/`.
- `profileUrn`       — Use for cross-endpoint joins (matching
                       against the `participants[].urn` from
                       `GET /linkedin/conversations`, or against
                       `connection_accepted` signal payloads).

## Pagination

Newest-first. `start=0,count=50` returns the most recent 50.
LinkedIn's SDUI pager returns ~10 per page internally; this
endpoint paginates server-side to satisfy `count` up to the cap of
100. For larger backfills, page through with `start` increments.

## Worked example response

```json
{
  "ok": true,
  "total": 234,
  "count": 2,
  "start": 0,
  "connections": [
    {
      "profileUrn": "urn:li:fsd_profile:ACoAAA…aaaa",
      "publicIdentifier": "jane-doe-1a2b3c",
      "firstName": "Jane",
      "lastName": "Doe",
      "fullName": "Jane Doe",
      "headline": "Head of Sales at Acme",
      "connectedAt": "2026-05-12T14:23:00Z",
      "pictureUrl": "https://media.licdn.com/dms/image/v2/…/headshot.jpg"
    },
    {
      "profileUrn": "urn:li:fsd_profile:ACoAAA…bbbb",
      "publicIdentifier": "john-smith-4d5e6f",
      "firstName": "John",
      "lastName": "Smith",
      "fullName": "John Smith",
      "headline": "Founder & CEO at Beta",
      "connectedAt": "2026-05-10T09:14:00Z",
      "pictureUrl": null
    }
  ]
}
```

## Query parameters

- `sessionId` string, required
- `count` integer
- `start` integer

## Response `200`

Array of connections.

- object
  - `ok` boolean
  - `total` integer: Approximate total count of 1st-degree connections (LinkedIn's count, when surfaced).
  - `count` integer: Items in this `connections` array.
  - `start` integer
  - `connections` object[]
    - `profileUrn` string: Cross-endpoint identity key.
    - `publicIdentifier` string: `linkedin.com/in/<slug>` segment.
    - `firstName` string
    - `lastName` string
    - `fullName` string: Convenience; prefer this for display.
    - `headline` string: LinkedIn's one-line tagline. May be empty string.
    - `connectedAt` string, date-time, nullable: ISO 8601. Null for older connections where LinkedIn omits the date.
    - `pictureUrl` string, uri, nullable: Direct CDN URL. Null for accounts without a photo.

---

[API](https://skmtc.dev/anjal/apis/anjal-api.md) · [All operations](https://skmtc.dev/anjal/apis/anjal-api/llms.txt) · [OpenAPI document](https://skmtc.dev/anjal/apis/anjal-api/revisions/a4044778e294?raw)
