The LinkedIn API, through one API key
Publish to LinkedIn profiles through one API.
- Free tier, no credit card
- Instant API key
- MCP server included
Ledge Skate & Shoe
1,204 followers
1m
New white lows just landed. In store Saturday, all sizes.

/v1/posts201 CreatedCapabilities: What you can build on LinkedIn
Every capability is one endpoint, the same one you call on every other platform.The screens show where each call lands.
Profile publishing
Publish text, images, video, and multi-image carousels to a member profile. Update post text and delete posts through the same unified endpoint.
- POST
/v1/posts
- text
- image
- video
- carousel
- update
- delete
- POST
On every platform
Agent-ready
Every LinkedIn capability is a typed tool on the SocialAPI.ai MCP server.
- social_api_validate_post
- social_api_create_post
One API key
The key that calls LinkedIn calls all 13 platforms.
Authorization: Bearer sapi_key_…Predictable errors
The same status codes everywhere, whatever the platform behind them.
- 401expired token
- 429rate limited
- 501not on this platform
Call the LinkedIn API
Publish a post to LinkedIn
The same POST /v1/posts endpoint you already use for every other platform. SocialAPI.ai handles LinkedIn's Rest.li protocol, LinkedIn-Version headers, and URN plumbing behind the scenes.
curl -X POST https://api.social-api.ai/v1/posts \
-H "Authorization: Bearer <your-api-key>" \
-H "Content-Type: application/json" \
-d '{
"targets": [{ "account_id": "<linkedin-account-id>" }],
"text": "We just shipped our new API. Here is what changed and why it matters for developers.",
"media": [{ "source_type": "url", "source": "https://yourcdn.com/image.jpg" }],
"publish_now": true
}' | jq
# Response
{
"id": "<post-id>",
"status": "published",
"targets": [
{
"platform": "linkedin",
"account_id": "<linkedin-account-id>",
"status": "published",
"platform_post_id": "urn:li:share:7..."
}
]
}import requests
resp = requests.post(
"https://api.social-api.ai/v1/posts",
headers={"Authorization": "Bearer <your-api-key>"},
json={
"targets": [{"account_id": "<linkedin-account-id>"}],
"text": "Shipped a new feature today. Write-up in the comments.",
"publish_now": True,
},
)
print(resp.json()) # { "id": "...", "status": "published", ... }const res = await fetch("https://api.social-api.ai/v1/posts", {
method: "POST",
headers: {
Authorization: "Bearer <your-api-key>",
"Content-Type": "application/json",
},
body: JSON.stringify({
targets: [{ account_id: "<linkedin-account-id>" }],
text: "Shipped a new feature today. Write-up in the comments.",
publish_now: true,
}),
});
console.log(await res.json());Comparison: The official API vs one API key
| Aspect | The official LinkedIn API | With SocialAPI.ai |
|---|---|---|
| Getting access | The official LinkedIn APIBuild and maintain your own LinkedIn app, OAuth scopes, and version upgrades. | With SocialAPI.aiSign up, grab an API key, and connect a LinkedIn account through OAuth in minutes. |
| Publishing a post | The official LinkedIn APIRest.li protocol, LinkedIn-Version headers, and URN plumbing on every request. | With SocialAPI.aiOne POST /v1/posts call with plain JSON. Headers and protocol quirks are handled for you. |
| Reading the result | The official LinkedIn APIThe post URN is returned in a response header, not the body. | With SocialAPI.aiA normalized JSON response with the post ID, like every other platform. |
| Token expiry | The official LinkedIn APIMember tokens die after about 60 days with no programmatic refresh; you build the reconnect UX. | With SocialAPI.aiExpired accounts return a clear reconnect error instead of a silent failure. |
In depth: How the LinkedIn API works on SocialAPI.ai
Yes, LinkedIn has an API. Create, update, and delete posts on member profiles through the same endpoint you use for every other network. SocialAPI.ai handles OAuth scopes, LinkedIn-Version headers, and the Rest.li protocol for you.
Multi-format profile publishing
Publish text posts, image posts, video posts, and multi-image carousels to a member's LinkedIn profile through the unified publishing endpoint. Update post text or delete a post through the same endpoint, no separate LinkedIn-specific calls required.
One schema, regardless of LinkedIn's protocol
LinkedIn's raw API speaks Rest.li, sends the post URN back in a response header, and requires a LinkedIn-Version header (currently 202605) on every call. SocialAPI.ai absorbs all of that and returns the same normalized JSON response you get from Instagram, Facebook, or any other connected platform.
Simple, honest pricing.
Reading comments, DMs, and mentions is free and unlimited on every plan. Paid plans start at $29/mo with unlimited posts and interactions. The free tier needs no credit card.
Frequently asked questions
What developers ask before they ship LinkedIn.
Does LinkedIn have an API?
Yes. LinkedIn offers official APIs, documented by Microsoft. SocialAPI.ai publishes to member profiles through one REST API, without building and maintaining your own LinkedIn integration.
Is the LinkedIn API free?
LinkedIn's official API has no fee, but integrating and maintaining it takes engineering time. SocialAPI.ai has a free tier with no credit card; paid plans start at $29/mo with unlimited posts.
Can I post to LinkedIn with Python?
Yes. The API is plain REST with JSON, so any language works. The Python tab above publishes a post in a few lines.
How long do LinkedIn access tokens last?
About 60 days, and LinkedIn does not allow programmatic refresh. When a token expires the member reconnects in one OAuth round-trip.
Can AI agents post to LinkedIn through SocialAPI.ai?
Yes. The built-in MCP server exposes publishing as tools, so Claude and other MCP-capable agents can draft and publish LinkedIn posts with your approval flow.
Every other platform, one API: Every other platform, one API
Same key, same shapes, same webhook.
Ready to unify your social interactions?
Free tier available. No credit card required. Ships with the MCP server.