LinkedIn API Error Codes Decoder
Paste the status and body of a failed call and get the cause and the fix for the LinkedIn API error codes that stop posts: 400, 401, 403, 426, 429 and 5xx. It also checks your Linkedin-Version header against LinkedIn's sunset dates.
The short answer
LinkedIn API errors are an HTTP status plus a code in the JSON body. Most posting failures are 426 NONEXISTENT_VERSION (a sunset Linkedin-Version header), 401 (missing or expired token), 403 ACCESS_DENIED (no w_member_social scope or no page role) and 429 (daily limit, resets at midnight UTC).
The cause, whether a retry will help, and the fix appear here. Load an example above to see one.
LinkedIn API Version Checker
Enter the value of your Linkedin-Version header to see whether it is active, sunsetting within 60 days, or already sunset. The newest version in LinkedIn's table is 202609 (September 2026). OpenTweet currently sends 202608.
The status, sunset date and days left appear here.
Versions and sunset dates
| Linkedin-Version | Release | Sunset date |
|---|---|---|
| 202609 | September 2026 | September 15, 2027 |
| 202608 | August 2026 | August 17, 2027 |
| 202607 | July 2026 | July 15, 2027 |
| 202606 | June 2026 | June 15, 2027 |
| 202605 | May 2026 | May 15, 2027 |
| 202604 | April 2026 | April 15, 2027 |
| 202603 | March 2026 | March 16, 2027 |
| 202602 | February 2026 | February 15, 2027 |
| 202601 | January 2026 | January 15, 2027 |
| 202511 | November 2025 | November 16, 2026 |
| 202510 | October 2025 | October 15, 2026 |
| 202509 | September 2025 | September 15, 2026 |
| 202508 | August 2025 | August 17, 2026 |
| 202507 | July 2025 | July 15, 2026 |
| 202506 | June 2025 | June 15, 2026 |
| 202505 | May 2025 | May 15, 2026 |
| 202504 | April 2025 | April 15, 2026 |
| 202503 | March 2025 | March 16, 2026 |
| 202502 | February 2025 | February 16, 2026 |
| 202501 | January 2025 | January 15, 2026 |
Copied from LinkedIn's API migration status table on October 10, 2026. The table has no 202412 or 202512 row. Every version before 202501 is sunset.
LinkedIn API error codes reference
From LinkedIn's Posts API error table and its error responses page, which documents VERSION_MISSING and NONEXISTENT_VERSION.
| Status | Code | Usual cause | Retry? |
|---|---|---|---|
| 400 | VERSION_MISSING | No Linkedin-Version header on the request. | Fix first |
| 400 | INVALID_URN_TYPE | Wrong kind of URN in author or content.media.id. | Fix first |
| 400 | INVALID_URN_ID | A URN id LinkedIn cannot parse. | Fix first |
| 400 | MISSING_FIELD | author, visibility, distribution or lifecycleState is missing. | Fix first |
| 400 | INVALID_VALUE_FOR_FIELD | An enum value LinkedIn does not accept. | Fix first |
| 400 | FIELD_LENGTH_TOO_LONG | commentary or another text field is too long. | Fix first |
| 400 | INVALID_VALUE_BLANK_FIELD | A required string is empty. | Fix first |
| 401 | EMPTY_ACCESS_TOKEN | No token in the Authorization header. Other 401s usually mean an expired token. | New token |
| 403 | ACCESS_DENIED | Missing scope such as w_member_social, or no role on the Company Page. | Fix first |
| 404 | NOT_FOUND | The post URN is wrong or not URL encoded. | Fix first |
| 409 | CONFLICT | A write conflict. | Retry |
| 422 | UNPROCESSABLE_ENTITY | Well-formed request, values that do not fit together. | Fix first |
| 426 | NONEXISTENT_VERSION | The Linkedin-Version is sunset or not in LinkedIn's version table. | Fix first |
| 429 | TOO_MANY_REQUESTS | Daily limit per app or per member hit. Resets at midnight UTC. | Retry after reset |
| 500 | INTERNAL_SERVER_ERROR | A LinkedIn server error. | Retry |
| 503 | SERVICE_UNAVAILABLE | LinkedIn is temporarily unavailable. | Retry |
The headers every call needs
A post to your own profile with a self-serve app needs the w_member_social scope and these three headers. The author is urn:li:person: followed by the sub value from the OpenID Connect userinfo endpoint.
curl -X POST 'https://api.linkedin.com/rest/posts' \
-H 'Authorization: Bearer YOUR_ACCESS_TOKEN' \
-H 'Linkedin-Version: 202609' \
-H 'X-Restli-Protocol-Version: 2.0.0' \
-H 'Content-Type: application/json' \
--data '{
"author": "urn:li:person:YOUR_SUB",
"commentary": "Hello from the Posts API",
"visibility": "PUBLIC",
"distribution": {
"feedDistribution": "MAIN_FEED",
"targetEntities": [],
"thirdPartyDistributionChannels": []
},
"lifecycleState": "PUBLISHED",
"isReshareDisabledByAuthor": false
}'Commentary is not plain text
Characters such as ( ) [ ] { } @ # and * are markup in LinkedIn's commentary field. Unescaped, they can cut the post off. See why a LinkedIn API post is cut off at a parenthesis.A successful create returns 201 with the post URN in the x-restli-id response header. For a full walkthrough with token handling and image upload, see how to post to LinkedIn with the API in Python.
Skip the version bumps and token renewals
OpenTweet sets the Linkedin-Version and Rest.li headers, uploads images with the right owner, separates errors worth retrying from ones that need a fix, and tells you when the 60-day LinkedIn sign-in needs a reconnect. You make one call.
curl -X POST https://opentweet.io/api/v1/posts \
-H "Authorization: Bearer ot_your_key" \
-H "Content-Type: application/json" \
-d '{
"text": "Shipping notes for this week.",
"platforms": ["linkedin"],
"publish_now": true
}'OpenTweet posts to your LinkedIn personal profile. Add "x" and "bluesky" to platforms to send the same post there too.
7-day free trial, then from $11.99/mo. LinkedIn, X and Bluesky on every plan.
LinkedIn API Errors FAQ
What are the most common LinkedIn API error codes?
For posting, four cover most failures: 426 NONEXISTENT_VERSION when the Linkedin-Version header is sunset, 401 when the access token is missing or expired, 403 ACCESS_DENIED when the token lacks w_member_social or the member has no role on the Company Page, and 429 when a daily rate limit is hit. The 400 codes name the field that is wrong.
What does LinkedIn API error 426 mean?
426 NONEXISTENT_VERSION means the Linkedin-Version header names a version LinkedIn does not serve: it was sunset, or it is not in LinkedIn's version table at all. Change the header to an active YYYYMM version. 202609 is the newest in LinkedIn's table as of October 10, 2026.
What is the current LinkedIn API version?
LinkedIn releases a version every month and supports each for at least a year. The newest in LinkedIn's version table on October 10, 2026 was 202609. Any version that has not reached its sunset date works; OpenTweet sends 202608.
Which headers does every LinkedIn API call need?
Three: Authorization: Bearer with the member access token, Linkedin-Version with a YYYYMM version, and X-Restli-Protocol-Version: 2.0.0. Without the version header LinkedIn returns 400 VERSION_MISSING, because it never applies the latest version by default.
Why do I get 403 ACCESS_DENIED when posting to LinkedIn?
Posting to your own profile needs the w_member_social scope in the token, and the author must be urn:li:person for the member who signed in. Posting as a Company Page needs w_organization_social and an ADMINISTRATOR, DIRECT_SPONSORED_CONTENT_POSTER or CONTENT_ADMIN role on that page. Also check the Linkedin-Version header is current.
When do LinkedIn API rate limits reset?
At midnight UTC. LinkedIn sets daily limits per application and per member, does not publish the standard numbers, and shows your usage for endpoints called today in the app's Analytics tab in the Developer Portal.
Does this tool send my token or response anywhere?
No. Decoding and the version check run in your browser and make no network calls. Redact your access token before pasting headers anyway.
Can I post to LinkedIn without handling these errors myself?
Yes. With OpenTweet you send one POST to /api/v1/posts with "platforms": ["linkedin"]. OpenTweet sets the version and Rest.li headers, uploads images, and tells you when the 60-day LinkedIn sign-in needs a reconnect. Plans start at $11.99/month with a 7-day free trial.
Related tools and guides
LinkedIn API 426 NONEXISTENT_VERSION
Why the version header fails, and why n8n, Composio and Activepieces users hit it.
LinkedIn API 403 on /rest/posts
Check the version header first, then the author URN, scopes and page role.
LinkedIn API Request Builder
Build a /rest/posts call with the right headers and body.
Why the LinkedIn token expires after 60 days
No refresh token on self-serve apps, and what that means for scheduled posting.
Post cut off at a parenthesis
The characters LinkedIn treats as markup, and how to escape them.
Post to LinkedIn with Python
OAuth, the Posts API call and image upload, step by step.
LinkedIn Character Counter
Count a post against the 3,000 limit before you send it.
LinkedIn Scheduler
Schedule posts to your LinkedIn personal profile.