---
title: "Send a DM"
method: POST
path: "/linkedin/messages"
tags: ["LinkedIn — Outreach"]
---

# Send a DM

`POST /linkedin/messages`

## Request

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

Send a direct message. Recipient must be a 1st-degree connection
(LinkedIn rejects non-1st sends; the upstream error surfaces verbatim).

Pass exactly one of:
- `recipient` (preferred): profile URL, slug, ACoA... profileId, or
  full URN. The backend resolves and does find-or-create on the
  1:1 thread.
- `conversationUrn` (advanced): append to a known thread you
  already have an URN for, e.g. from a previous send response or
  from `GET /v1/linkedin/conversations`.

## Request body

- object
  - `sessionId` string, required
  - `text` string, required
  - `recipient` string: Profile URL, slug, ACoA... profileId, or full URN.
  - `conversationUrn` string: urn:li:msg_conversation:(...) — append to known thread.

## Response `200`

Message sent.

- object
  - `ok` boolean
  - `messageUrn` string
  - `conversationUrn` string
  - `backendConversationUrn` string
  - `deliveredAt` integer: Unix ms.

## Other responses

- `400`: Validation error or LinkedIn rejected the send.
- `404`: Session not found.
- `429`: Daily quota exceeded for this session.

---

[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)
