linkedin-ads.
Connect
Every request also needs
LinkedIn-Version: 202610 and X-Restli-Protocol-Version: 2.0.0, and writes need Content-Type: application/json.
Node
ancha connect linkedin-ads --lang ts prints.
Endpoints
All endpoints are partial. Any other route returns HTTP 501 withx-ancha-gap: 1.
Accounts
Campaign groups
Campaigns
Creatives
Targeting and analytics
Behavior
- Creating returns an empty 201 response with the new ID in
x-restli-id. - Updating is a
POSTto the record withX-RestLi-Method: PARTIAL_UPDATEand a body of{"patch": {"$set": {...}}}. It returns an empty 204. Read the record again to see the result. - Finders take
q=search(accounts, campaign groups, campaigns) orq=criteria(creatives) with a boundedsearchexpression, cursor pagination andfieldsprojection. Batch gets report per-ID errors. - Creatives reference the one seeded single-image post. New creatives stay pending review; nothing uploads an image or creates a post.
- Analytics support the
CAMPAIGNpivot withDAILYorALLgranularity over an explicit date range, from historical rows.
Starter data
Thelinkedin-ads-starter dataset belongs to Acme.
Both creatives reference one sponsored post, “A clearer operations pipeline for Ridgeway”. Daily analytics cover 2026-10-24 and 2026-10-25, for example 14,200 impressions, 117 clicks and 132.40 USD for campaign 701001 on 2026-10-24.
Checks
LinkedIn Ads has no state checks. Use trace checks, for example{ called: "POST /rest/adAccounts/501001/adCampaigns/701001" }.
Limits
- Single-image sponsored content only; no image upload, video, lead forms or audiences.
- Historical analytics only; no auction or delivery.