add_linkedin_campaign_to_group

LinkedIn Ads Write

**USE THIS TOOL WHEN:** User wants to add a new campaign with DIFFERENT targeting/audience to an EXISTING campaign group

Endpoint

POST https://api.adspirer.ai/api/v1/tools/add_linkedin_campaign_to_group/execute

Headers

Description

**USE THIS TOOL WHEN:** User wants to add a new campaign with DIFFERENT targeting/audience to an EXISTING campaign group. This is the LinkedIn equivalent of Meta's add_ad_set. LinkedIn hierarchy: Campaign Group → Campaign → Creative. - Different audiences = different Campaigns in the SAME Campaign Group. - Different creatives = different Creatives in the SAME Campaign. **Common scenarios:** - Audience testing: Same ad format, different targeting per campaign - Geographic split: Same creative, different locations per campaign - Multi-market: Same product, different countries - Scaling: Adding new audiences to existing campaign group **CRITICAL:** Each create_linkedin_*_campaign creates a new Campaign Group (unless campaign_group_id is passed). To add more campaigns to the SAME group, you MUST use this tool or pass campaign_group_id to create tools. NEVER call create_linkedin_*_campaign without campaign_group_id for the same group. **KEY DISTINCTION:** - Different audience/targeting → use THIS tool (new campaign in same group) - Different copy/creative, same audience → use add_linkedin_creative / add_linkedin_video_creative instead **Supports all 4 ad types:** image, video, carousel, text. Each campaign has INDEPENDENT: targeting, budget, schedule. Shared from campaign group: objective, group name. **Workflow:** 1. Create initial campaign → get campaign_group_id + campaign_id 2. Call this tool with campaign_group_id for each additional audience 3. Use add_linkedin_creative to add more creatives within any campaign Execution time: 15-120 seconds (depends on ad type)

Request body

All tool arguments are wrapped in an arguments object.

FieldTypeDescription
campaign_group_idstring requiredExisting Campaign Group ID to add this campaign to. Get this from a prior create_linkedin_*_campaign response. Format: numeric ID or urn:li:sponsoredCampaignGroup:XXXXX.
campaign_namestring requiredName for this new campaign (auto-suffixed with timestamp).
daily_budgetnumber requiredDaily budget for this campaign in account currency (minimum $10).
organization_idstring requiredLinkedIn Organization (Company Page) ID for ad authoring.
ad_typestring requiredType of ad for this campaign: 'image', 'video', 'carousel', or 'text'.
image_urnstring optionalImage URN for image ads. From discover_linkedin_assets or validate_and_prepare_linkedin_assets.
asset_bundle_idstring optionalAsset bundle ID from validate_and_prepare_linkedin_assets (for new image uploads).
video_urnstring optionalVideo URN for video ads. From discover_linkedin_assets.
video_urlstring optionalPublic URL to upload video from (MP4, max 500MB).
cardsarray optionalCarousel cards (2-10). Each: {image_urn or image_url, headline (max 45), landing_page_url}.
text_headlinestring optionalText ad headline (max 25 chars). Required for ad_type='text'.
text_descriptionstring optionalText ad description (max 75 chars). Required for ad_type='text'.
introductory_textstring optionalMain ad text (up to 600 chars for image/video, 255 for carousel). Required for image, video, and carousel ad types.
headlinestring optionalAd headline (up to 70 chars). Required for image and video ad types.
landing_page_urlstring requiredDestination URL (must be HTTPS).
call_to_actionstring optionalCTA button label. Default: LEARN_MORE. default: "LEARN_MORE"
objectivestring optionalCampaign objective. If not provided, inherits from the campaign group's objective. Options: BRAND_AWARENESS, ENGAGEMENT, WEBSITE_VISIT, WEBSITE_CONVERSION, VIDEO_VIEW, JOB_APPLICANT.
locationsarray requiredLocation URNs for this campaign's targeting. Required.
industriesarray optionalIndustry URNs.
senioritiesarray optionalSeniority URNs.
job_titlesarray optionalJob title URNs.
company_sizesarray optionalCompany size URNs.
skillsarray optionalSkill URNs.
job_functionsarray optionalJob function URNs.
interestsarray optionalInterest URNs.
degreesarray optionalDegree URNs.
fields_of_studyarray optionalField of study URNs.
employersarray optionalEmployer URNs.
member_groupsarray optionalLinkedIn group URNs.
age_rangesarray optionalAge range URNs.
gendersarray optionalGender URNs.
schoolsarray optionalSchool URNs.
member_behaviorsarray optionalMember behavior URNs.
years_of_experiencearray optionalYears of experience URNs.
followed_companiesarray optionalFollowed company URNs.
buyer_groupsarray optionalBuyer group URNs (API 2026-03+).
account_idstring optionalLinkedIn Ad Account ID (optional).
currencystring optionalCurrency code. Default: USD. default: "USD"
statusstring optionalCampaign status. Default: PAUSED. default: "PAUSED"
creative_namestring optionalName for the first creative. E.g. 'US Audience - Ad 1'.

Example request

{
  "arguments": {
    "campaign_group_id": "string",
    "campaign_name": "string",
    "daily_budget": 10.0,
    "organization_id": "string",
    "ad_type": "string",
    "landing_page_url": "https://example.com",
    "locations": [
      "string"
    ],
    "image_urn": "string",
    "asset_bundle_id": "string",
    "video_urn": "string",
    "video_url": "string",
    "cards": [
      {
        "headline": "Download our whitepaper",
        "description": "Actionable insights for 2026",
        "landing_page_url": "https://example.com/whitepaper",
        "image_url": "https://example.com/cover.jpg"
      }
    ],
    "text_headline": "string"
  }
}

Example responses

200 — Success

{
  "success": true,
  "data": {
    "text": "(tool-specific textual output for add_linkedin_campaign_to_group)",
    "quota": {
      "used": 42,
      "limit": 150,
      "tier": "plus",
      "period_end": "2026-05-01"
    }
  },
  "tool": "add_linkedin_campaign_to_group"
}

400 — Tool-level error (bad arguments / multi-account selection)

{
  "success": false,
  "error": "You have 25 meta_ads accounts connected. Please specify which account to use by passing the ad_account_id parameter:\n  - Acme Holdings (ad_account_id=\"act_123456789\")\n  - Acme EU (ad_account_id=\"act_987654321\")",
  "is_error": true,
  "tool": "add_linkedin_campaign_to_group"
}

402 — Quota exhausted

{
  "success": false,
  "error": "\ud83d\udea8 Monthly limit reached (150/150 tool calls on Plus tier).\nUpgrade to Pro at https://adspirer.ai to keep building.",
  "is_error": true,
  "tool": "add_linkedin_campaign_to_group",
  "quota": {
    "used": 150,
    "limit": 150,
    "tier": "plus",
    "period_end": "2026-05-01",
    "upgrade_url": "https://adspirer.ai"
  }
}

Try it live


Adspirer REST API — get an API key at adspirer.ai/keys · adspirer.ai