Add an Image to a LinkedIn Post From Claude or ChatGPT
Text-only posts are the easy part. The moment you want a picture attached, people hit the same wall: they paste the image into the chat, the assistant says something confident, and nothing arrives on LinkedIn. This is not a bug in the tool and it is not you doing it wrong. It is a limitation of how AI apps talk to connectors, and once you know the workaround it takes about twenty seconds.
Why can’t I just paste the image into the chat?
Because the connector never receives it. When you attach an image in Claude or ChatGPT, the file goes to the AI model so it can look at it. It does not go to the tools the assistant can call.
MCP — the Model Context Protocol, the open standard that lets an AI assistant use outside tools — defines how a tool describes the arguments it wants, and those arguments are plain text and numbers. The standard does define image content, but only for what a tool sends back to the model, never for what the model sends in. There is a working group drafting a proper file-input mechanism, but it is still a draft, not something you can use today.
So the assistant is in an awkward position: it can see your image perfectly well, and it has no way to pass those bytes to LinkedIn. The honest models say so. Others quietly invent a filename and call the tool anyway, which is where the confusing failures come from.
One partial exception. ChatGPT’s Apps SDK has a mechanism where a tool can declare a file field and ChatGPT fills it with a temporary download link. It is web-only, and whether a plain connector can use it is not settled. The upload page below works in every app, on every plan, today — which is why it is the recommended path rather than a fallback.
How do I add an image to a LinkedIn post from Claude or ChatGPT?
Four steps, and you never touch a file id or a URL.
- Ask for the upload link. Say “give me an upload link” or just “I want to post an image”. The assistant calls
get_upload_linkand shows you a link. In Claude a small drop panel often appears in the chat itself, so you can drag the file straight onto it without leaving the conversation. If it does not appear, the link always works. - Drop the file. Open the link, drag your image on, and wait for the tick. The page accepts several files at once if you have more than one. The link is tied to your account, so nobody else can upload into your library.
- Go back and say publish. Something like “write a short post about our new pricing page and attach the image I just uploaded”. The assistant calls
list_uploaded_images, picks the newest upload, and builds the post. You never see or type an id. - Approve the preview. You get the exact caption and the attached image shown back to you. Say yes and it publishes.
The part people find surprising is the third step. Because the assistant resolves the image itself, the conversation stays in plain English throughout. If you have uploaded several files and want an older one, describing it — “the chart one”, “the one from yesterday” — is enough, because the list comes back with names and dates.
Can I use an image that is already online?
Yes, and it skips the upload entirely. If the picture already lives at a public web address, paste that address into the chat and ask for it to be attached. Kalovio fetches the file on the server side and sends it to LinkedIn.
Three conditions apply. The address must start with https, not http. It must be genuinely public — a link that only opens because you are signed in to Google Drive or Notion will fail, because our server is not signed in as you. And it must point straight at the image file itself, not at a web page that happens to show the image.
The quick test: open the link in a private browsing window. If you see the bare picture and nothing else, it will work.
Do not go looking for an image host. If your file is on your laptop or your phone, use the upload page. Uploading a private photo to a random public image host to get a link is worse in every way — it is public forever, and it is an extra service holding your content for no benefit.
What image types and sizes actually work?
| Limit | Value | What it means for you |
|---|---|---|
| File types | Standard web image files — PNG and JPEG are the safest | Screenshots, photos and exported charts are all fine |
| Size per file | 20 MB | Comfortably above a phone photo; a huge print-resolution export may not fit |
| Files stored per account | 100 | A working library, not an archive |
| How long they are kept | 30 days | Uploads clear themselves out; re-upload if you need an old one again |
| Caption length | 3000 characters | The LinkedIn limit, not ours |
| Images per post | 1 on the proven path | 2 to 9 is supported but rides a different LinkedIn gateway — see below |
The 30-day clock matters more than it sounds. The library is a staging area for things you are about to post, not somewhere to keep your brand assets. Keep the originals where you normally keep them.
Do I have to write a caption?
No. An image on its own is a complete post. If you attach a picture and give no text, it publishes as an image-only post, exactly as it would if you did it by hand on LinkedIn.
This is worth saying because assistants used to refuse it. The model would see an empty text field, decide the request was incomplete, and start negotiating with you about approving a blank caption. The tools now treat a post with an attachment and no text as perfectly valid, and the assistant is told to ask once — “caption, or post it on its own?” — and then get on with it. The preview shows the caption as (none) so there is no ambiguity about what you are approving.
What happens when I say publish?
Two things, in this order, and neither is optional.
First, the confirm gate. Publishing is a two-step tool. The first call returns a preview — the caption, the attached image, the tracked links if any — along with a signed token that covers that exact content. Nothing reaches LinkedIn until a second call arrives with your confirmation and a matching token. Change one character and the token stops matching. This exists because an AI assistant reads a lot of untrusted text, and hidden instructions in a web page should never be able to publish to your account.
The gate has one subtlety worth knowing, because it caused real failures. Some apps re-send only the confirmation and the token on the second call, and drop the attachment. The attachment is therefore baked into the signed token itself and restored on confirm. You get the post you previewed, and the model cannot swap the image between the preview and the publish.
Second, the upload to LinkedIn. A single-image post uses LinkedIn’s long-standing POST /v2/ugcPosts endpoint, which is covered by the w_member_social permission any self-serve app can request. That is the whole reason this article can be written with confidence while the multi-image one carries caveats: this path has been stable for years and is available to every connected account.
What about several images, or a PDF carousel?
Both exist, and both come with an honest warning.
A swipeable post of 2 to 9 images, and a document post where LinkedIn renders a PDF as flickable pages, are built on LinkedIn’s newer versioned API — /rest/images, /rest/documents and /rest/posts. LinkedIn’s documentation says the same posting permission is enough. In practice that gateway may be restricted for self-serve apps, and a restricted account gets a clear message back rather than a silent failure. Try it on your own account before you plan a content calendar around it.
The single-image path in this article has no such caveat. If you need certainty today, one image per post is the certain thing.
Why did my image post not work?
- The assistant claims it posted but LinkedIn shows nothing. Check whether you ever confirmed. A preview is not a publication. Ask it to list your published posts — if it is not there, it was never sent.
- The upload page will not take the file. Check the size against 20 MB first. If the size is fine and it is still refused, the file type is the next thing to look at — re-exporting as PNG or JPEG resolves most cases.
- A web address was rejected. It is probably http rather than https, or a page rather than the file, or a private link. Try it in a private window.
- It picked the wrong image. It defaults to the newest upload. Describe the one you want instead, or upload it again so it becomes the newest.
- Everything fails with an authorisation error. LinkedIn member tokens last about 60 days and self-serve apps get no automatic renewal, so you reconnect periodically. Ask for a reconnect link and sign in again.
- An old upload has vanished. The library keeps files for 30 days. Upload it again.
The short version
The chat window is for writing, not for transferring files. Ask for the upload link, drop the image, come back, approve the preview. Single-image posts run on LinkedIn’s oldest and most dependable posting endpoint, captions are optional, and nothing publishes until you have seen exactly what will publish.
Questions people ask
Why can't I attach an image directly in the Claude or ChatGPT chat?
Because the file goes to the AI model, not to the connector. MCP tool arguments are plain text and numbers, and the standard defines image content only for what a tool returns to the model, never for what the model sends into a tool. A standard file-input mechanism is still in draft. The upload page exists precisely to close that gap.
Do I need to know the image id to post it?
No, and you will never be shown one. After you upload, the assistant lists your library and picks the newest file itself. If you want an older one, describe it — the list comes back with names and dates, so “the chart from yesterday” is enough.
Can I post an image with no caption?
Yes. An image on its own is a complete post. The assistant will ask once whether you want a caption, and if you say no it publishes the image alone. The preview shows the caption as (none) so you can see exactly what is being approved.
What image formats and file sizes are supported?
Standard web image files, up to 20 MB each. PNG and JPEG are the safest choices because how they render is predictable. Your library holds 100 files and keeps each one for 30 days. If a file is refused and the size is fine, re-export it as PNG or JPEG.
Can I attach an image from a web address instead of uploading?
Yes, if it is a public https address pointing straight at the image file. The server fetches it for you. Links that only open while you are signed in to a cloud drive will fail, because the server is not signed in as you. Test the link in a private browsing window first.
How many images can I put in one LinkedIn post?
One image uses LinkedIn's long-established posting endpoint and works on any connected account. Posts of 2 to 9 swipeable images, and PDF document posts, use LinkedIn's newer versioned API, which may be restricted for self-serve apps — you get a clear message if it is. Try it on your own account before relying on it.
Sources
Try Kalovio free
Run your LinkedIn from a chat with Claude or ChatGPT. Add this as a custom connector — free while in beta, and you approve every post before it goes live.
https://kalovio.com/mcpHow to connect