Back to blog

Why Sending LinkedIn Voice Notes Programmatically Is Harder Than You Think

Jonathan Lis|
linkedintechnicalapi

LinkedIn voice notes launched quietly in 2022, and since then they've become one of the most effective channels for outreach on the platform. Sales teams report 3x higher reply rates compared to text messages. But if you've ever tried to send one programmatically, you've probably hit a wall.

LinkedIn doesn't have a public API for voice messages. There's no documented endpoint, no official SDK method, no "Send Voice Note" button in their developer console. So how do you send them at scale?

The Challenge

Sending a LinkedIn voice note programmatically involves several steps that LinkedIn doesn't document:

  1. Authentication requires specific session credentials from an active LinkedIn browser session
  2. Audio format must be exactly right, or LinkedIn silently rejects the file
  3. The upload flow is multi-step, not a single POST request
  4. Recipient identification uses internal identifiers, not the profile URL you see in your browser
  5. Delivery verification requires polling to confirm the voice note was actually received

Each of these steps has edge cases and gotchas that can take days to debug.

What Developers Need to Know

Session Credentials

LinkedIn voice notes require an authenticated session. You need two values from your browser:

  • li_at — the authentication cookie (starts with AQEDAQ...)
  • csrf_token — the CSRF token from the session (starts with ajax:)

These are extracted from your browser's DevTools under Application > Cookies > linkedin.com. Session cookies typically last 6-12 months.

Audio Format

LinkedIn requires M4A (AAC) audio for voice notes. The specs:

  • Container: M4A (MPEG-4 Part 14)
  • Codec: AAC-LC
  • Sample rate: 44100 Hz or 48000 Hz
  • Channels: Mono preferred
  • Bitrate: 64-128 kbps
  • Duration: Up to 60 seconds

Send an MP3, WAV, or OGG and it gets rejected. Any system that handles voice notes needs built-in format conversion.

Rate Limiting

LinkedIn is aggressive about rate limiting automated activity. Voice note sending should be throttled to human-like intervals, typically 30-60 seconds between messages. Bursting will trigger detection systems and can result in account restrictions.

Why Teams Struggle With DIY Voice Notes

Most development teams that try to build LinkedIn voice notes in-house spend 2-4 weeks getting it working. The audio encoding, the multi-step upload flow, the session management, the recipient resolution, and the delivery verification all need to work together perfectly.

And then LinkedIn changes something, and it breaks.

The ongoing maintenance cost is what really hurts. LinkedIn updates their platform regularly, and any change can break the delivery flow without warning.

The Svara Approach

With Svara, the entire flow collapses to a single API call:

curl -X POST https://svarapi.io/api/v1/send \
  -H "Authorization: Bearer $SVARA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "platform": "linkedin",
    "recipient": "john-doe-12345",
    "audio_url": "https://cdn.example.com/notes/intro.m4a",
    "session": {
      "li_at": "AQEDAQe...",
      "csrf_token": "ajax:123456789"
    }
  }'

Svara handles the format conversion, the upload flow, the recipient resolution, and the delivery verification. Your credentials are passed through for delivery and never stored.

One endpoint. Native delivery. We handle the complexity so you don't have to.

Start with 50 free voice notes at svarapi.io. No credit card required.

Ask Svara

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

Powered by Svara