How to Send AI-Generated LinkedIn Voice Messages Automatically(Step-by-Step Guide)
4 min read
The Latest Conversion Rate Booster for LI Outreach
Traditional LinkedIn messages often go ignored. AI-generated voice messages feel more personal, making them more likely to grab attention. Plus, they can be fully automated, saving you time while keeping engagement high.
I’m not sharing a template that requires a subscription to a new no-code platform. I’m going to instead give you the steps that you can use to execute this on ANY no code or low code platform. You can also run this locally or from software you develop (as it relies primarily on API calls).
You will need one (potentially two, if you decide you like elevenlabs) paid API accounts, however, in addition to your language model API(s).
What you’ll absolutely need to run this...
A Unipile account. (This is a paid account…starts at $55 per month…I am not affiliated) https://www.unipile.com/
* An AI API key (OpenAI, Claude, OpenRouter, etc…you just need something that can programmatically generate text).
* An AI voice generator (can be Elevenlabs https://elevenlabs.io/ OR you can use OpenAI’s voice generator API)
What You Need to Automate AI Voice Messages on LinkedIn
To set up this AI-powered LinkedIn voice messaging system, you will need a few essential tools:
A Unipile account – This is the platform that enables API-based LinkedIn messaging. It requires a paid plan starting at $55 per month. Sign up here
An AI text generation API – You will need an API key from OpenAI, Claude, or OpenRouter to generate personalized message scripts dynamically.
An AI voice generator – You can use ElevenLabs for realistic voice cloning or OpenAI’s voice generator API to convert text into speech.
Here’s how this works. You can send AI-generated voice messages to all your LinkedIn connections or target a specific audience.
Step 1: Decide Who You Will Message
To do this, you need the LinkedIn profile URN (member ID) of each recipient. The easiest way to get this is through Unipile’s API by calling the GET relations
endpoint. This retrieves the list of people you are connected with, allowing you to automate personalized outreach at scale.
Let me know if you want this section expanded further or if we should move to the next step.

You’ll find your ‘DSN’ and account ID on the Accounts page in Unipile (after you connect your LinkedIn account…just follow the prompts). You’ll find your API key on the Access Tokens page.
==> You could also use an external database (like Google Sheets) of LinkedIn profiles.
You’d simply feed that list into Unipile’s Retrieve a Profile API endpoint. You’ll need to remove the url components, however, because this endpoint only takes the ‘public identifier’ which is the part of the profile URL after /in/
Just place this identifier in the API URL right after /users/
(Example, my profile is https://www.linkedin.com/in/aimarketerguy/ and my public identifier is aimarketerguy).

*Protip, if you use n8n, you can use the following code in a code node to extract the public identifier from the previous node:
*OR you can use this Regex in a Match Pattern module in Make:
/in/([^/]+)/?$
==> You may also choose to have this voice-note sequence be a part of a larger campaign that starts with a connection request.
Unipile has an API endpoint for automatically sending connection requests (please be careful when using this as LI has strict rules about sending too many requests).


Simply call this endpoint in your campaign…then later call the endpoint for List All Invitations Sent
And cross reference the results with your Get Relations API call.
Once you have a means of retrieving LinkedIn IDs, next you can move on to the next step.
Step 2: Generate message.
Now you’ll want A.I. to generate your message. Of course this message needs some context, so in this step we’ll talk about how to retrieve context.
==> You can use Unipile’s API endpoint List All Posts to get all of the posts from the user you wish to message. Then filter the latest few to give the A.I. something to comment on.
==> You can use Unipile’s API endpoint Retrieve Company Profile to get details about the user’s company that can be great context for the A.I.
==> You can scrape the user’s website if you have the url. Using Firecrawl (a paid but very afforable service https://www.firecrawl.dev/) you can
Crawl an entire website -
Or Scrape a single page -
(Firecrawl has a ton more features, definitely check them out and use up all 500 of the free credits you get - https://docs.firecrawl.dev/introduction)
Once you have the context you need to generate a good message, then you feed that to an A.I. and generate your voice “script”.
==> You could simply use one of the native A.I. integrations in a low-code platform.

==> Or you could call an API (like OpenRouter https://openrouter.ai/).

Once you have the text for the “script”, now we move on to generating the voice clip.
Step 3: Generate voice file.
==> The best way to do this is by cloning your voice using Elevenlabs (https://elevenlabs.io/). You can use the UI to clone your voice and then access it via API with the voice ID.
You can even run the Get Voices API call directly from the Elevenlabs API documentation.

Then use the Text to Speech API endpoint to generate your voice file.


You can also use OpenAI’s text-to-speech function (though this would NOT be your voice).

Then you can send the voice file using Unipile’s API again.
Step 4: Send the message.
Using Unipile’s Start a New Chat API endpoint, send the voice clip. The voice clip can be any audio file type but must be sent as binary through the API (note, files are automatically converted to binary in n8n…you can also use a binary conversion function in Make).


And that’s it. Using this collection of API calls, you can automate the creation and distribution of voice notes in LinkedIn.
USE RESPONSIBLY!
Author:
Anthony Lee