What we're asking for: support targeting and creative changes on PUT /v1/ads/{adId} forLinkedIn (both return501 today).
Why this matters to us: right now everything has to be perfect in one shot. A typo in a headline, an audience that turns out too narrow, a landing page that moved - each of those means deleting the campaign and creating a new one, which throws away its history and learning. That's a hard thing to explain to a customer who just wants to
change one word.
What happens today: your documentation states that targeting edits return501forPinterest, X and LinkedIn, and creative replacement is Meta and TikTok only. We haven't found a partial-edit path forLinkedIn.
What "done" looks like forus, roughly in order of usefulness:
- editing the audience facets (seniority, function, industry, company size, geo) on an existing LinkedIn campaign
- editing the creative's headline, body text and image
- read-back of both, so we can confirm the change landed rather than trusting the response code
This is now live. PUT /v1/ads/{adId} no longer returns 501 for LinkedIn targeting and creative edits:
Targeting: update geo targeting (countries) on a running campaign without recreating it.
Creative replacement: pass new headline, body, imageUrl or videoUrl in the creative object. A new inline media creative is created on the same campaign and the old one is paused, preserving historical reporting.
JW Stukart
•
Sep 1
Hi Miquel,
Thanks for all your work! I think I'm still doing something wrong here or its not working as intended:
Targeting edits are still failing though. Tested twice on 2026-09-01, exactly as documented ("geo countries only"): PUT /v1/ads/{adId} with {"targeting": {"countries": ["BE"]}} on a paused LinkedIn campaign returns 422from LinkedIn —
"/targetingCriteria/include :: field is required but not found and has no default value" — and a follow-up GET shows the original countries unchanged. It looks like the PARTIAL_UPDATE is sent without the full targetingCriteria.include tree. Happy to
share ad ids and timestamps.
Log in to comment and vote
Comments2
Miquel Palet López
Sep 1
This is now live.
PUT /v1/ads/{adId}no longer returns 501 for LinkedIn targeting and creative edits:Targeting: update geo targeting (countries) on a running campaign without recreating it.
Creative replacement: pass new
headline,body,imageUrlorvideoUrlin thecreativeobject. A new inline media creative is created on the same campaign and the old one is paused, preserving historical reporting.JW Stukart
Sep 1
Hi Miquel, Thanks for all your work! I think I'm still doing something wrong here or its not working as intended: Targeting edits are still failing though. Tested twice on 2026-09-01, exactly as documented ("geo countries only"): PUT /v1/ads/{adId} with {"targeting": {"countries": ["BE"]}} on a paused LinkedIn campaign returns 422 from LinkedIn — "/targetingCriteria/include :: field is required but not found and has no default value" — and a follow-up GET shows the original countries unchanged. It looks like the PARTIAL_UPDATE is sent without the full targetingCriteria.include tree. Happy to share ad ids and timestamps.Could you have a look,
Cheers,
Jan-Willem