Marketing Automation
LinkedIn Personal
API integration
Ship Marketing Automation features without building the integration. Full LinkedIn Personal API access via Proxy and 9 MCP-ready tools for AI agents — extend models and mappings to fit your product.
Talk to usUse Cases
Why integrate with LinkedIn Personal
Common scenarios for SaaS companies building LinkedIn Personal integrations for their customers.
Power employee advocacy at scale
Let enterprise customers mobilize hundreds of employees to share corporate content natively on their personal LinkedIn feeds, driving organic reach far beyond what a single company page can achieve.
Enable AI-driven personal branding
Give founders, executives, and creators a way to publish AI-generated posts, carousels, and videos directly to their LinkedIn feed on a schedule, without ever leaving your platform.
Automate social selling for sales teams
Help SDRs and AEs publish native video pitches, prospecting content, and thought leadership to their personal feeds from inside your sales engagement product to generate inbound pipeline.
Auto-distribute blog and newsletter content
Let CMS, newsletter, and content platforms automatically notify a writer's LinkedIn network whenever new content goes live, attributed directly to the author's personal profile.
Offer rich-media scheduling in social tools
Social media management SaaS can expand beyond text posts to orchestrate native PDF carousels, images, and multipart video uploads — the formats that actually win on LinkedIn's algorithm.
What You Can Build
Ship these features with Truto + LinkedIn Personal
Concrete product features your team can ship faster by leveraging Truto’s LinkedIn Personal integration instead of building from scratch.
Native post composer with publish, edit, and delete
Ship a full post lifecycle UI where users draft, publish, patch typos, and retract posts on their LinkedIn feed using create, update, and delete post operations.
PDF carousel publisher
Let users upload a PDF, push it to LinkedIn via the document upload flow, and publish it as a high-engagement native carousel post.
Native video upload pipeline
Handle multipart video chunking, upload, and completion so users can post native MP4 videos directly to their feed instead of linking out to YouTube or Vimeo.
AI image-to-post workflow
Pair AI-generated or user-uploaded images with post copy, run the image upload flow, and publish the finished visual post in one click.
LinkedIn identity verification at onboarding
Use the authenticated member endpoint to fetch the user's Person URN and bind their LinkedIn identity to their profile in your product during signup.
Scheduled publishing queue
Let users queue posts, images, documents, and videos for future publish times, with your backend triggering the appropriate upload and create-post calls at send time.
SuperAI
LinkedIn Personal AI agent tools
Comprehensive AI agent toolset with fine-grained control. Integrates with MCP clients like Cursor and Claude, or frameworks like LangChain.
list_all_linked_in_personal_me
Get the connected member's OpenID Connect profile from LinkedIn's userinfo endpoint. Takes no input. LinkedIn returns one object, so the result is a list with one item. Use `sub` to build the member's person URN, `urn:li:person:{sub}`. `email` and `email_verified` are optional claims and can be missing.
create_a_linked_in_personal_post
Publish a post to the connected member's own LinkedIn feed. The author is set for you to `urn:li:person:{sub}`; do not send `author`. Send `commentary` and a `visibility` of PUBLIC (default) or CONNECTIONS. For media, upload first with images.create, videos.create then videos.complete, or documents.create, and pass the URN in `content.media.id`. For a link preview send `content.article`. Returns `id`, the new post URN, copied from LinkedIn's `x-restli-id` response header. Pass it unchanged to posts.update and posts.delete.
update_a_linked_in_personal_post_by_id
Edit one of the connected member's posts by its URN. Send only the fields to change, as flat fields. Truto builds LinkedIn's partial-update request from them (a POST with `X-RestLi-Method: PARTIAL_UPDATE` and a `{"patch": {"$set": {...}}}` body). LinkedIn lets these fields change: commentary, contentCallToActionLabel, contentLandingPage and lifecycleState. Sponsored-content fields are not exposed. Pass `id` as the plain post URN, such as urn:li:share:6844785523593134080. Truto URL-encodes it. Send at least one field. Returns an empty 204 on success.
delete_a_linked_in_personal_post_by_id
Delete one of the connected member's posts by its URN. Pass `id` as the plain post URN, such as urn:li:ugcPost:12345 or urn:li:share:12345. Truto URL-encodes it. Deletion is idempotent: deleting a post that is already gone still returns an empty 204. Required: id.
create_a_linked_in_personal_image
Start an image upload for the connected member (LinkedIn's initializeUpload action). Step 1 of 2. Send no body: the owner is set for you to `urn:li:person:{sub}`. Returns `value.uploadUrl`, `value.uploadUrlExpiresAt` and `value.image`, the image URN to use in posts.create as `content.media.id`. This call only registers the image. Step 2: send the file with uploads.create, passing `value.uploadUrl` unchanged as `path`. JPG, GIF and PNG, under 36,152,320 pixels; GIFs up to 250 frames.
create_a_linked_in_personal_video
Start a multipart video upload for the connected member (LinkedIn's initializeUpload action). Send `initializeUploadRequest` with `owner` (`urn:li:person:{sub}` from me.list) and `fileSizeBytes`. Returns the video URN, `uploadInstructions` (one `uploadUrl`, `firstByte` and `lastByte` per 4 MB part) and `uploadToken`. Upload each part with a direct PUT of its bytes to its `uploadUrl` and keep the `ETag` response header of each part: uploads.create does not return response headers, so it cannot be used for video parts. Then call videos.complete. MP4 only, 3 seconds to 30 minutes, 75 KB to 500 MB.
linked_in_personal_videos_complete
Finish a multipart video upload (LinkedIn's finalizeUpload action) after every part has been uploaded. Send `finalizeUploadRequest` with `video` (the URN from videos.create), `uploadToken`, and `uploadedPartIds` (the ETag of each part, in part order). Returns an empty 200 on success. The video then processes asynchronously before it can be used in a post.
create_a_linked_in_personal_document
Start a document upload for the connected member (LinkedIn's initializeUpload action). Step 1 of 2. Send no body: the owner is set for you to `urn:li:person:{sub}`. Returns `value.uploadUrl`, `value.uploadUrlExpiresAt` and `value.document`, the document URN to use in posts.create as `content.media.id` (with a `title`). This call only registers the document. Step 2: send the file with uploads.create, passing `value.uploadUrl` unchanged as `path`. PPT, PPTX, DOC, DOCX or PDF, up to 100 MB and 300 pages.
create_a_linked_in_personal_upload
Upload a file to LinkedIn, step 2 of 2 for image and document posts. First call images.create (JPG, PNG or GIF) or documents.create (PDF, PPT, PPTX, DOC or DOCX). Pass its `value.uploadUrl` unchanged as `path` and the file as `file`. The URL is pre-signed by LinkedIn, so no LinkedIn token is sent with this call. LinkedIn answers 201 with an empty body. Then use the `value.image` or `value.document` URN from step 1 in posts.create (`content.media.id`).
Why Truto
Why use Truto’s MCP server for LinkedIn Personal
Other MCP servers give you a static tool list for one app. Truto gives you a managed, multi-tenant MCP infrastructure across 850+ integrations.
Auto-generated, always up to date
Tools are dynamically generated from curated documentation — not hand-coded. As integrations evolve, tools stay current without manual maintenance.
Fine-grained access control
Scope each MCP server to read-only, write-only, specific methods, or tagged tool groups. Expose only what your AI agent needs — nothing more.
Multi-tenant by design
Each MCP server is scoped to a single connected account with its own credentials. The URL itself is the auth token — no shared secrets, no credential leaking across tenants.
Works with every MCP client
Standard JSON-RPC 2.0 protocol. Paste the URL into Claude, ChatGPT, Cursor, or any MCP-compatible agent framework — tools are discovered automatically.
Built-in auth, rate limits, and error handling
Tool calls execute through Truto’s proxy layer with automatic OAuth refresh, rate-limit handling, and normalized error responses. No raw API plumbing in your agent.
Expiring and auditable servers
Create time-limited MCP servers for contractors or automated workflows. Optional dual-auth requires both the URL and a Truto API token for high-security environments.
How It Works
From zero to integrated
Go live with LinkedIn Personal in under an hour. No boilerplate, no maintenance burden.
Link your customer’s LinkedIn Personal account
Use Truto’s frontend SDK to connect your customer’s LinkedIn Personal account. We handle all OAuth and API key flows — you don’t need to create the OAuth app.
We handle authentication
Don’t spend time refreshing access tokens or figuring out secure storage. We handle it and inject credentials into every API request.
Call our API, we call LinkedIn Personal
Truto’s Proxy API is a 1-to-1 mapping of the LinkedIn Personal API. You call us, we call LinkedIn Personal, and pass the response back in the same cycle.
Unified response format
Every response follows a single format across all integrations. We translate LinkedIn Personal’s pagination into unified cursor-based pagination. Data is always in the result attribute.
FAQs
Common questions about LinkedIn Personal on Truto
Authentication, rate limits, data freshness, and everything else you need to know before you integrate.
How do end users authenticate their LinkedIn Personal account?
Truto handles the OAuth 2.0 / OIDC flow for LinkedIn Personal. Your users connect their account through a Truto-hosted link or embedded flow, and Truto manages token storage, refresh, and the Person URN needed for publishing.
What publishing operations are supported today?
You can create, update, and delete posts on a user's personal feed. For rich media, there are dedicated operations to create image, video, and document assets, perform the upload, and complete multipart video uploads before attaching the media to a post.
How does the multi-step media upload workflow work?
Rich media posts follow an upload-then-post pattern: call the create image, video, or document endpoint to get an upload URL and asset URN, stream the file via the upload endpoint (and call videos complete for multipart videos), then pass the URN into create post.
Can I fetch information about the authenticated LinkedIn user?
Yes. The list me endpoint returns the authenticated member's profile data, including the Person URN (sub) that you need as the author for all publishing calls.
Does Truto offer a Unified API for LinkedIn Personal?
Not yet — LinkedIn Personal is currently exposed through its native tools in Truto, giving you direct one-to-one access to the underlying API. If you need a unified marketing or social schema, reach out and we can scope it.
How are LinkedIn's rate limits and quirks handled?
Truto normalizes auth, token refresh, pagination, and error handling for LinkedIn Personal so you don't have to build around API-specific behavior. Rate limits are enforced by LinkedIn per app and per member, and Truto surfaces rate-limit errors transparently so you can retry or back off.
LinkedIn Personal
Get LinkedIn Personal integrated into your app
Our team understands what it takes to make a LinkedIn Personal integration successful. A short, crisp 30 minute call with folks who understand the problem.