LinkedIn Voice Notes

Send native LinkedIn voice messages using the Svara API with your LinkedIn session credentials.

How LinkedIn voice notes work

LinkedIn voice notes appear as native blue waveform messages in the recipient's inbox, indistinguishable from voice notes recorded directly in the LinkedIn app. Svara delivers them as native voice notes using your authenticated session.

The recipient sees the voice note as if you recorded and sent it from the LinkedIn mobile app. There is no bot indicator, no external link — just a native voice message.

Required session data

To send voice notes on LinkedIn, you need two credentials from an active browser session:

| Field | Description | |---|---| | li_at | LinkedIn authentication cookie. Starts with AQEDAQ... | | csrf_token | CSRF token from the session. Starts with ajax: followed by digits |

How to extract session credentials

  1. Open LinkedIn in your browser and sign in.
  2. Open DevTools (F12 or Cmd+Shift+I).
  3. Go to the Application tab (Chrome) or Storage tab (Firefox).
  4. Under Cookies, find linkedin.com.
  5. Copy the value of the li_at cookie.
  6. Copy the value of the JSESSIONID cookie (this is your csrf_token). Remove the surrounding quotes if present.
# Example values (these are not real credentials)
li_at="AQEDAQe7xYkA1cXvBnUlP..."
csrf_token="ajax:1234567890123456789"

Store these values securely. Session cookies typically last 6-12 months but can expire if you log out or change your password.

Audio format

LinkedIn voice notes use M4A/AAC format internally. Svara handles format conversion automatically:

| Input format | Behavior | |---|---| | M4A / AAC | Sent directly, no conversion needed | | MP3 | Auto-converted to M4A | | WAV | Auto-converted to M4A | | OGG / OPUS | Auto-converted to M4A | | WebM | Auto-converted to M4A |

Audio files must be under 10 MB. Recommended duration is 15-60 seconds for outreach messages.

Example request

curl -X POST https://api.svarapi.io/v1/send \
  -H "Authorization: Bearer $SVARA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "platform": "linkedin",
    "recipient": "jane-smith-a1b2c3",
    "audio_url": "https://cdn.example.com/notes/intro.m4a",
    "session": {
      "li_at": "AQEDAQe7xYkA1cXvBnUlP...",
      "csrf_token": "ajax:1234567890123456789"
    },
    "duration": 22
  }'
const response = await fetch("https://api.svarapi.io/v1/send", {
  method: "POST",
  headers: {
    "Authorization": `Bearer ${process.env.SVARA_API_KEY}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    platform: "linkedin",
    recipient: "jane-smith-a1b2c3",
    audio_url: "https://cdn.example.com/notes/intro.m4a",
    session: {
      li_at: process.env.LINKEDIN_LI_AT,
      csrf_token: process.env.LINKEDIN_CSRF_TOKEN,
    },
    duration: 22,
  }),
});
import requests

response = requests.post(
    "https://api.svarapi.io/v1/send",
    headers={"Authorization": f"Bearer {api_key}"},
    json={
        "platform": "linkedin",
        "recipient": "jane-smith-a1b2c3",
        "audio_url": "https://cdn.example.com/notes/intro.m4a",
        "session": {
            "li_at": li_at,
            "csrf_token": csrf_token,
        },
        "duration": 22,
    },
)

Recipient identifier

The recipient field is the LinkedIn profile slug — the part after linkedin.com/in/ in the profile URL. For example, if the profile URL is https://www.linkedin.com/in/jane-smith-a1b2c3, the recipient is jane-smith-a1b2c3.

Common errors

| Error | Cause | Solution | |---|---|---| | session_expired | The li_at cookie has expired | Re-extract the cookie from your browser | | invalid_csrf | The CSRF token doesn't match the session | Make sure li_at and csrf_token are from the same session | | recipient_not_found | The profile slug doesn't exist | Check the profile URL and slug format | | not_connected | You're not connected with the recipient | You can only send voice notes to 1st-degree connections | | audio_too_large | The audio file exceeds 10 MB | Compress or shorten your audio | | audio_fetch_failed | Could not download the audio from the URL | Ensure the URL is publicly accessible and returns audio content |

Ask Svara

Hey! I'm the Svara assistant. Ask me anything about integrating voice notes into your product.

Powered by Svara