Skip to main content
The LinkedIn Ads replica implements 17 endpoints of the Marketing API, version 202610, with Rest.li 2.0 conventions. Its key is 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
This is what ancha connect linkedin-ads --lang ts prints.

Endpoints

All endpoints are partial. Any other route returns HTTP 501 with x-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 POST to the record with X-RestLi-Method: PARTIAL_UPDATE and 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) or q=criteria (creatives) with a bounded search expression, cursor pagination and fields projection. 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 CAMPAIGN pivot with DAILY or ALL granularity over an explicit date range, from historical rows.
To pause campaign 701001:

Starter data

The linkedin-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.