Publish text, images, video and article cards to LinkedIn profiles and Company Pages with one API call. Underneath sits the LinkedIn Posts API, part of the Marketing Developer Platform - asset registration, person and organization URNs, a version header on every request and tokens that expire after 60 days. We handle that plumbing so you ship in hours, not weeks.
✓ 5 minutes to first post ✓ 99.92% uptime ✓ Profiles, Pages & article cards
Building an agent instead of an app? The same account works with our LinkedIn MCP server.
curl https://api.outstand.so/v1/posts/ \
-H "Authorization: Bearer $OUTSTAND_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"content": "We're hiring two senior engineers - details below 👇",
"accounts": ["YOUR_LINKEDIN_ACCOUNT_ID"]
}'Posts to a profile or Company Page. Add media, an article card, or @mention an organization.
There is no single “LinkedIn API”. There is a family of products, and which one your use case falls into decides how long you wait for access. Publishing lives in the Posts API and the Community Management API: create posts on a member profile or a Company Page, add comments and reactions, and read follower, page and post statistics. Campaigns and ad reporting are the Advertising API. Job postings belong to Talent Solutions and sales workflows to Sales Navigator - closed partner programmes with their own agreements, not products you switch on in the developer portal.There is also no public profile-search or bulk-profile endpoint, and that is a policy position rather than a gap. LinkedIn’s terms restrict member data to managing the Pages and profiles your app was authorized for, forbid exporting it, cap storage at 48 hours for social activity and 24 hours for most profile data, and rule out sales, recruiting and ad-targeting uses outright. Outstand covers publishing and engagement, and nothing else.Even that is not a quick build. Every call carries a LinkedIn-Version: YYYYMM header and X-Restli-Protocol-Version: 2.0.0, and a missing or sunset version is an error rather than a default. The author is either a urn:li:person or a urn:li:organization, and the two behave differently. Media must be registered and uploaded before a post can reference it, and article cards reject raw thumbnail URLs - LinkedIn does not scrape the page for you. Access tokens last 60 days. Outstand turns all of it into a single request; the LinkedIn API pricing breakdown covers what each route costs in time and money.
Every content type and capability available on LinkedIn via Outstand today.
Plus inline @mentions of people and organizations, and several images in one post. Posting to a personal profile or a Company Page works the same way. What is not here: Outstand does not expose polls or document posts yet, although LinkedIn’s Posts API supports both organically. Carousels are sponsored-only on LinkedIn’s side, so no API can publish an organic one. Direct messages are not part of the Posts or Community Management APIs at all. The field-by-field reference lives in the LinkedIn setup docs.
The same accounts array also fans out to Instagram, X, TikTok and more - one request, many platforms.
curl https://api.outstand.so/v1/posts/ \
-H "Authorization: Bearer $OUTSTAND_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"content": "Same request, two author URNs 🏢",
"accounts": ["acme-inc", "jane-doe"]
}'curl https://api.outstand.so/v1/posts/ \
-H "Authorization: Bearer $OUTSTAND_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"content": "A peek at our new dashboard 📊",
"accounts": ["YOUR_LINKEDIN_ACCOUNT_ID"],
"media": [{ "url": "https://media.outstand.so/dashboard.png", "filename": "dashboard.png" }]
}'curl https://api.outstand.so/v1/posts/ \
-H "Authorization: Bearer $OUTSTAND_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"content": "How we scaled to 1M users 👇",
"accounts": ["YOUR_LINKEDIN_ACCOUNT_ID"],
"linkedin": {
"article": {
"source": "https://example.com/blog/scaling",
"title": "How We Scaled to 1M Users",
"description": "A deep dive into our infrastructure journey.",
"thumbnailUrl": "https://media.outstand.so/og.png"
}
}
}'curl https://api.outstand.so/v1/posts/ \
-H "Authorization: Bearer $OUTSTAND_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"content": "Proud to partner with LinkedIn on this 🎉",
"accounts": ["YOUR_LINKEDIN_ACCOUNT_ID"],
"linkedin": {
"mentions": [{ "urn": "urn:li:organization:1337", "text": "LinkedIn" }]
}
}'curl https://api.outstand.so/v1/posts/ \
-H "Authorization: Bearer $OUTSTAND_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "content": "Big announcement Monday 📣", "accounts": ["YOUR_LINKEDIN_ACCOUNT_ID"], "scheduledAt": "2026-07-06T13:00:00Z" }'curl https://api.outstand.so/v1/posts/{id}/analytics \
-H "Authorization: Bearer $OUTSTAND_API_KEY"
# → impressions, unique_impressions, clicks, likes, comments, shares, engagement_rate# Read the comments on a published post
curl "https://api.outstand.so/v1/posts/{id}/replies?network=linkedin" \
-H "Authorization: Bearer $OUTSTAND_API_KEY"
# Reply to a comment (or comment on your own post)
curl https://api.outstand.so/v1/posts/{id}/replies \
-H "Authorization: Bearer $OUTSTAND_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "content": "Thanks for reading - glad it helped!", "account_username": "yourbrand" }'From signup to your first published post in about five minutes.
Your user authorizes via three-legged OAuth. We request w_member_social and w_member_social_feed to publish on a profile, w_organization_social and rw_organization_admin for Company Pages, and the read scopes analytics needs - r_organization_social, r_member_postAnalytics and r_basicprofile. We store the access token, refresh it before its 60-day expiry, and resolve the account to its author URN. Use our Managed Keys, or bring your own app.
Send text and media with accounts: ["YOUR_LINKEDIN_ACCOUNT_ID"]. Add an article card, mentions, or scheduledAt as needed. Resolving the URN means we look up whether that connected account is a member or an organization and set author to urn:li:person:{id} or urn:li:organization:{id} accordingly. You never build a URN by hand, and a Page is not a different endpoint.
Asset registration, thumbnail upload, mention rewriting and the version headers, returned as a unified response with the published post ID. Transient failures are retried with backoff - 429s, 5xx responses, and the short window after a new Page share where LinkedIn will not yet accept a comment on it. Permanent failures, such as a scope your app was never granted, come back as an error you can act on rather than a silent retry loop.
LinkedIn does not sell API access - it grants it. The cost is the review cycle, not a licence fee. Here is what each route actually requires - or read the full LinkedIn API pricing breakdown.
Rate limits, 60-day token expiry and retry handling are included on every plan - they are not a premium tier.
One integration that grows with everything you ship next.
One request publishes to LinkedIn and 11 more networks. Same JSON shape everywhere - learn one API, ship them all.
Skip LinkedIn’s Marketing Developer Platform review - use our Managed Keys, or bring your own LinkedIn app for white-label OAuth under your brand.
Intelligent rate limiting, automatic token refresh, webhook events and media processing.
$19/mo includes 3,000 posts, then from $0.007/post. No seats, no annual lock-in.
Same endpoints, same data shapes - pick what you ship.
Let your users queue and auto-publish LinkedIn content from your app.
Give Claude or GPT a tool to post to LinkedIn. MCP server included.
Pull LinkedIn reach and engagement alongside every other platform.
Run LinkedIn posting for clients under your own brand and app.
The questions developers ask before they build.
Yes - the LinkedIn Posts API (part of the Marketing Developer Platform) lets approved apps publish posts, share articles and read analytics for member profiles and Company Pages. Outstand is a managed layer on top of it, so you skip the setup.
Yes - LinkedIn charges nothing for the Posts API or the Community Management API. You apply for the product, pass a use-case review, and the calls themselves carry no fee. What it costs you is the review cycle and the engineering time around it. Our LinkedIn API pricing breakdown puts numbers on both routes; Outstand itself starts at $19/month including 3,000 posts.
Directly: register an app in the LinkedIn Developer Portal, get it approved for the Posts API or Community Management API, run three-legged OAuth for the member or Page admin, resolve the author URN, then POST to https://api.linkedin.com/rest/posts with a LinkedIn-Version header and X-Restli-Protocol-Version: 2.0.0. Images and article thumbnails must be uploaded as assets first. Through Outstand it is one POST /v1/posts/ with your text, your media URLs and accounts: ["YOUR_LINKEDIN_ACCOUNT_ID"] - the LinkedIn setup docs cover every field.
It depends what you are building. The Posts API publishes and retrieves posts for a member or a Company Page. The Community Management API adds comments, reactions, follower statistics and page analytics on top. The Advertising API covers campaigns and ad reporting. Talent Solutions handles job postings and Sales Navigator handles sales workflows, both as closed partner programmes. If you are publishing content and reading how it performed, you need the first two - and those are the two Outstand covers.
Yes, through the official API, with the member or Page admin explicitly authorizing your app over OAuth. That is a different thing from tools that drive a logged-in LinkedIn session in a browser to post, connect or message on someone’s behalf: LinkedIn’s terms prohibit those, and accounts get restricted for using them. Scheduled and programmatic publishing through an approved app is supported and ordinary. Outstand only ever posts through the official endpoints, to accounts your users connected themselves.
Directly, you create a LinkedIn Developer app, associate it with a verified Company Page, then request the Marketing Developer Platform or Community Management API and pass a use-case review that takes weeks and can be declined. With Outstand you sign up, get an API key, and your users authorize via OAuth against our already-approved app.
Expect weeks, not days, and expect that it can be declined. Community Management API access runs in two stages: a Development Tier approval that comes with low rate limits, then a Standard Tier review where you submit an access form, a screen recording of your application in use, and test credentials. A person reads your use case against LinkedIn’s restricted-use list. Outstand exists so you can skip that queue and publish today, then bring your own app once it clears.
LinkedIn issues a client ID and client secret to an approved Developer app, not a simple API key, and you still run the OAuth flow yourself to get a member access token. Outstand gives you one bearer token that works across LinkedIn and 11 other networks, and manages the LinkedIn OAuth handshake and token refresh behind it.
The Share API and the ugcPosts API are the older endpoints; the versioned Posts API replaces both. If a tutorial has you calling /v2/shares or /v2/ugcPosts, it predates the 2022 move to the https://api.linkedin.com/rest/ base path and monthly version headers. The old names survive because published post IDs still come back as urn:li:share or urn:li:ugcPost. Outstand calls the current Posts API and tracks LinkedIn’s monthly versions for you.
Yes. Both work through the same POST /v1/posts/ call - Outstand resolves the correct author URN (urn:li:organization for a Page, urn:li:person for a profile) based on the connected account.
Yes. Pass linkedin.article with a source URL plus optional title, description and thumbnailUrl. Outstand uploads the thumbnail to LinkedIn and attaches the image URN, since LinkedIn rejects raw URLs as thumbnails.
Yes. Pass linkedin.mentions with the entity URN and its exact, case-sensitive registered name. The matching text in your post is rewritten into LinkedIn’s annotation format so it renders as a clickable mention.
Yes. Add a scheduledAt ISO-8601 timestamp (up to 30 days ahead) and Outstand publishes the post automatically - no cron or queue on your side.
Yes. Read the comments on a published post with GET /v1/posts/{id}/replies?network=linkedin and post a reply with POST /v1/posts/{id}/replies.
Yes. LinkedIn supports deleting posts via the API, and Outstand exposes it through DELETE /v1/posts/{id}/remote.
Yes, for posts your own app published. GET /v1/posts/{id}/analytics returns impressions, unique impressions, clicks, likes, comments, shares and engagement rate, in the same response shape used for every other network. The limits are LinkedIn’s, not ours: member-level and Page-level follower statistics are separate Community Management products with their own scopes, and r_member_social - the permission to read a member’s whole post history - is closed and not accepting requests. You get analytics for what you published.
LinkedIn throttles per application and per member, and returns 429 responses once you cross the ceiling. The exact numbers depend on which products your app is approved for and at which tier - Community Management Development Tier, for example, allows 500 requests per application and 100 per member, and Standard Tier raises both. Outstand queues, throttles and retries under the hood, so you do not implement backoff yourself.
Yes, and Outstand does not cover it. Job postings live in LinkedIn Talent Solutions, a separate partner programme restricted to approved ATS vendors and job distributors, with its own agreement and data restrictions - and LinkedIn is not currently accepting new Job Posting API partnerships. If you need to syndicate vacancies, apply to Talent Solutions directly. Outstand is a publishing API for organic posts on profiles and Company Pages, which includes posting that you are hiring, but not the job listing itself.
No, and neither does Outstand. LinkedIn does not expose profile search or bulk profile data through its public API, and scraping it violates LinkedIn’s terms. Even the member data the approved APIs do return is fenced in: it cannot be exported from your application, cannot be combined with other data to build profiles or lead lists, and most of it cannot be stored beyond 24 hours. Outstand is a publishing and analytics API for accounts your users own and have authorized.
LinkedIn charges no licence fee for the Posts API or Community Management API - the barrier is approval, not price. Outstand costs $19/month including 3,000 posts, then $0.007/post dropping to $0.005 at volume, and skips the approval queue entirely.
Grab an API key and publish your first post in the next five minutes. 3,000 posts included, then $0.007/post - dropping to $0.005 at volume.
Read the LinkedIn setup guide , or see how the same request works on every other platform.