LinkedIn API version 202510 sunsets Oct 15, 2026: what to change
LinkedIn Marketing version 202510 is sunset on October 15, 2026. Pin Linkedin-Version 202609 and add a check so a stale pin fails in CI, not in production.

If your LinkedIn video publisher sends Linkedin-Version: 202510, it stops working after October 15, 2026. The fix is a one-line header change to a newer YYYYMM value, currently 202609, plus a guard so the pin cannot go stale again. Sume does not call LinkedIn for you: Sume makes the MP4, and your own publisher does the upload with the header below.
What LinkedIn says
LinkedIn publishes a new Marketing API version every month and supports each for a minimum of one year. A call without the header returns an error, and so does a call with a deprecated value. The latest version is never applied by default.
| Fact | Value on the page |
|---|---|
| Sunset notice | Marketing version 202510 sunsets on October 15, 2026 |
| Latest version | September 2026, header 202609 |
| Header | Linkedin-Version: YYYYMM |
| Support window | Minimum one year per version |
| Missing or deprecated header | Error response |
| Default version | None: every call must name one |
Step 1: move the pin to configuration
Keep the version in one environment variable so a migration is a deploy setting, not a code change. Send it on every request, including the ones that register a video upload.
Step 2: fail CI before LinkedIn fails you
This check reads the pin and fails when it is older than ten months. Ten months is our own safety margin inside the one-year minimum, not a LinkedIn rule.
import os, sys
from datetime import date
pin = os.environ.get("LINKEDIN_VERSION", "")
if len(pin) != 6 or not pin.isdigit():
sys.exit("LINKEDIN_VERSION must look like 202609")
today = date.today()
age = (today.year - int(pin[:4])) * 12 + today.month - int(pin[4:])
if age > 10:
sys.exit(f"LinkedIn version {pin} is {age} months old: migrate")
print(f"ok: {pin} is {age} months old")
Step 3: keep file production separate
Re-render nothing when you change the header. If a clip needs to meet a length limit, cut it once with the video trim endpoint ($0.02 per job, start plus end or duration) and store the returned MP4 URL. The version bump then only touches your upload code.
Limits
This post covers the header and sunset date only. Field-level changes between 202510 and 202609 are listed in LinkedIn's own per-version changelog, which we did not review here. Test the new version against a non-production account before the cutover, and read the migration notes for each resource you call.
Sources
Related posts
More in Developers
- LinkedIn Videos API: 4 MB parts, ETags and finalizeUpload
LinkedIn video upload is initializeUpload, PUT each 4 MB part, collect the ETags, then finalizeUpload. A part splitter and the order rules that break uploads.
- MAI-Image-2.6 allows 6 requests a minute at tier 1; Sume queues
Foundry rates MAI-Image-2.6 at 6 RPM on tier 1 and 429s past it. Sume accepts valid image jobs as queued until a plan slot opens. Compare the two behaviours.
- MAI-Image-2.6 returns base64 PNG; Sume returns a hosted image URL
Foundry returns MAI-Image-2.6 as b64_json PNG only. Sume returns a signed media URL in data[].url, in png, jpeg or webp per model. How to handle each in code.
- Make an AI avatar video from the terminal with the Sume CLI
sume avatars create and sume avatar-videos create submit Avatar 1.0 jobs from a shell. Flags, the --confirm-paid guard, and how to recover the job.
Written by Sume