Setu Recipes: reusable digital workers across every app.Browse templates

Integrations / LinkedIn Ads

LinkedIn Ads

LinkedIn Marketing API: list ad accounts and campaigns, pull ad analytics, pause or activate campaigns.

6 actions OAuth 2 5 read1 write Calls api.linkedin.com

Connect

TypeScript
const conn = await setu.connections.initiate({ userId: "user_1", toolkit: "linkedinads" });
console.log(conn.connectUrl); // show this to your user
await conn.waitUntilActive();

Permissions requested

ScopeWhy it is requested
r_adsRead your LinkedIn ad accounts and campaigns
r_ads_reportingRead advertising performance reports
rw_adsPause or activate campaigns in your ad accounts

Actions

Get ad accountreadlinkedinads.get_ad_accountRead one LinkedIn ad account: name, currency, status, serving statuses, reference organization and type.

Needs scope: r_ads

InputTypeDescription
ad_account_idstringRequiredAd account id (number), from list_ad_accounts
TypeScript
await setu.execute({
  userId: "user_1",
  action: "linkedinads.get_ad_account",
  input: {
    "ad_account_id": "<ad_account_id>"
  },
});
Get ad analyticsreadlinkedinads.get_analyticsPerformance report for one ad account over a date range, grouped by one pivot (account, campaign group, campaign or creative). Choose metric fields such as impressions,clicks,costInLocalCurrency,pivotValues,dateRange.

Needs scope: r_ads_reporting

InputTypeDescription
account_idstringRequiredAd account id (number), from list_ad_accounts
start_yearintegerRequiredStart year
start_monthintegerRequiredStart month 1-12
start_dayintegerRequiredStart day
end_yearintegerRequiredEnd year
end_monthintegerRequiredEnd month 1-12
end_dayintegerRequiredEnd day
pivotstringRequiredGroup results by
time_granularitystringRequiredBucket size
fieldsstringOptionalComma-separated metrics, up to 20; include pivotValues and dateRange
TypeScript
await setu.execute({
  userId: "user_1",
  action: "linkedinads.get_analytics",
  input: {
    "account_id": "<account_id>",
    "start_year": 1,
    "start_month": 1,
    "start_day": 1,
    "end_year": 1,
    "end_month": 1,
    "end_day": 1,
    "pivot": "<pivot>",
    "time_granularity": "<time_granularity>"
  },
});
Get campaignreadlinkedinads.get_campaignRead one LinkedIn campaign: name, type, status, cost type, budgets, run schedule and targeting.

Needs scope: r_ads

InputTypeDescription
ad_account_idstringRequiredAd account id (number), from list_ad_accounts
campaign_idstringRequiredCampaign id (number)
TypeScript
await setu.execute({
  userId: "user_1",
  action: "linkedinads.get_campaign",
  input: {
    "ad_account_id": "<ad_account_id>",
    "campaign_id": "<campaign_id>"
  },
});
List ad accountsreadlinkedinads.list_ad_accountsList the LinkedIn ad accounts the connected member can access (id, name, status, currency, type), optionally filtered by status.

Needs scope: r_ads

InputTypeDescription
statusstringOptionalOptional status filter
page_sizeintegerOptionalResults per page (max 1000)
page_tokenstringOptionalnextPageToken from a previous call
TypeScript
await setu.execute({
  userId: "user_1",
  action: "linkedinads.list_ad_accounts",
  input: {},
});
List campaignsreadlinkedinads.list_campaignsList campaigns in a LinkedIn ad account (id, name, type, status, budget, schedule), optionally filtered by status.

Needs scope: r_ads

InputTypeDescription
ad_account_idstringRequiredAd account id (number), from list_ad_accounts
statusstringOptionalOptional status filter
page_sizeintegerOptionalResults per page (max 1000)
page_tokenstringOptionalnextPageToken from a previous call
TypeScript
await setu.execute({
  userId: "user_1",
  action: "linkedinads.list_campaigns",
  input: {
    "ad_account_id": "<ad_account_id>"
  },
});
Pause or activate campaignwritelinkedinads.set_campaign_statusSet a LinkedIn campaign's status to PAUSED or ACTIVE using a partial update. Activating can start spending money; needs a campaign-manager or higher role on the ad account.

Needs scope: rw_ads

InputTypeDescription
ad_account_idstringRequiredAd account id (number), from list_ad_accounts
campaign_idstringRequiredCampaign id (number)
statusstringRequiredNew status
TypeScript
await setu.execute({
  userId: "user_1",
  action: "linkedinads.set_campaign_status",
  input: {
    "ad_account_id": "<ad_account_id>",
    "campaign_id": "<campaign_id>",
    "status": "<status>"
  },
});