---
title: "LinkedIn OperationsCreate"
method: POST
path: "/v1/workspaces/{workspaceId}/ads/linkedin/{accountId}/operations"
tags: ["Ads"]
---

# LinkedIn OperationsCreate

`POST /v1/workspaces/{workspaceId}/ads/linkedin/{accountId}/operations`

## Request

- Base URL: `https://api.maevesocial.com` (the document declares no server; this is the origin it was published from)
- URL: `https://api.maevesocial.com/v1/workspaces/{workspaceId}/ads/linkedin/{accountId}/operations`
- Auth: HTTP bearer

Prepare a new hierarchy or child campaign for approval. Without approvalId returns approvalRequired and reviewUrl and creates nothing. Only the person signed in to Maeve can approve. Repeat the unchanged requestKey and specification with approvalId. Creates provider drafts through subsequent continue calls, never activates. One specification can hold up to 5 ads for the ad set, and one approval covers them all. Ad-only addition to an existing native campaign requires no new campaign approval. Submitted key replay returns the same operation. The account must be a LinkedIn account with campaign management access.

## Path parameters

- `accountId` string, required
- `workspaceId` string, uuid, required

## Request body

- object
  - `requestKey` string, uuid, required: Stable client UUID for this draft and submission. Reuse after an unknown response; a new key can create another campaign.
  - `specification` object, required: Complete native specification. Omit empty existingPost when submitting. Eligibility is checked against the connected account. Optional imageAltText and imageDescription are for new single image ads only, and optional altText for each carousel card, up to 300 characters each. imageDescription shows only on Audience Network, so a new ad set needs offsiteDeliveryEnabled. New video ads accept videoThumbnailMediaId (JPG or PNG, up to 2 MB, matching the video dimensions) and videoCaptions (English plain-text SRT filename and UTF-8 content, up to 1 MB). To create several ads in the ad set, describe the first with the top-level ad fields and list the others in ads, up to 5 in all; each has its own name, text, media and destination, the format, Page and lead form are shared, and ads that use the same media share one upload. existingPost is a single-ad choice. One approval covers every ad.
    - `parentRevision` string: Server-bound inherited settings. Keep when saving a returned draft; recalculated on submission.
    - `existingGroupId` string
    - `existingCampaignId` string
    - `useCampaignBudget` boolean
    - `groupBudgetOptimization` 'DYNAMIC'
    - `nonPolitical` true: Confirms that no ad is political advertising under the law of the targeted countries, including EU law. The dashboard ticks it by default, and ads.linkedin.operations.create treats a missing value as true.
    - `format` 'text' | 'image' | 'video' | 'carousel' | 'document' | 'follower' | 'spotlight'
    - `objectiveType` 'BRAND_AWARENESS' | 'WEBSITE_VISIT' | 'ENGAGEMENT' | 'LEAD_GENERATION' | 'WEBSITE_CONVERSION' | 'VIDEO_VIEW'
    - `leadFormId` string
    - `newLeadForm` object
      - `name` string, required
      - `headline` string, required
      - `description` string, required
      - `privacyPolicyUrl` string, uri, required
      - `legalDisclaimer` string
      - `confirmationMessage` string, required
      - `landingUrl` string, uri, required
      - `questions` object[], required
        - `label` string, required
        - `predefinedField` 'FIRST_NAME' | 'LAST_NAME' | 'EMAIL' | 'WORK_EMAIL' | 'PHONE_NUMBER' | 'WORK_PHONE_NUMBER' | 'CITY' | 'STATE' | 'COUNTRY' | 'ZIP_CODE' | 'JOB_TITLE' | 'JOB_FUNCTION' | 'SENIORITY' | 'COMPANY_NAME' | 'COMPANY_SIZE' | 'INDUSTRY' | 'DEGREE' | 'FIELD_OF_STUDY' | 'SCHOOL' | 'START_DATE' | 'GRADUATION_DATE' | 'GENDER' | 'LINKEDIN_PROFILE_LINK'
        - `required` boolean, required
        - `options` string[]
      - `consents` object[]
        - `text` string, required
        - `required` boolean, required
      - `hiddenFields` object[]
        - `name` string, required
        - `value` string, required
    - `newConversion` object
      - `name` string, required
      - `method` 'WEBSITE' | 'EVENT' | 'CONVERSIONS_API', required
      - `type` 'ADD_TO_CART' | 'DOWNLOAD' | 'INSTALL' | 'KEY_PAGE_VIEW' | 'LEAD' | 'PURCHASE' | 'SIGN_UP' | 'OTHER' | 'SAVE' | 'START_CHECKOUT' | 'SCHEDULE' | 'VIEW_CONTENT' | 'VIEW_VIDEO' | 'ADD_BILLING_INFO' | 'BOOK_APPOINTMENT' | 'REQUEST_QUOTE' | 'SEARCH' | 'SUBSCRIBE' | 'AD_CLICK' | 'AD_VIEW' | 'COMPLETE_SIGNUP' | 'SUBMIT_APPLICATION' | 'PHONE_CALL' | 'INVITE' | 'LOGIN' | 'SHARE' | 'DONATE' | 'ADD_TO_LIST' | 'START_TRIAL' | 'OUTBOUND_CLICK' | 'CONTACT' | 'QUALIFIED_LEAD', required
      - `postClickAttributionWindowSize` union, required
        - 1
        - 7
        - 30
        - 90
        - 365
      - `viewThroughAttributionWindowSize` union, required
        - 1
        - 7
        - 30
        - 90
        - 365
      - `attributionType` 'LAST_TOUCH_BY_CAMPAIGN' | 'LAST_TOUCH_BY_CONVERSION', required
      - `urlMatchRuleExpression` array[]
        - object[]
          - `matchType` 'EXACT' | 'STARTS_WITH' | 'CONTAINS', required
          - `matchValue` string, required
      - `valueType` 'NO_VALUE' | 'FIXED' | 'DYNAMIC', required
      - `value` string
    - `existingPost` string
    - `biddingStrategy` 'MANUAL_CPC' | 'MANUAL_CPM' | 'MAXIMUM_DELIVERY' | 'ENHANCED_CPC' | 'MANUAL_CPV' | 'TARGET_COST' | 'COST_CAP'
    - `optimizationGoal` 'IMPRESSIONS' | 'QUALIFIED_LEADS'
    - `offsiteDeliveryEnabled` boolean
    - `excludedIabCategories` string[]
    - `audienceExpansionEnabled` boolean
    - `trackingParameters` object[]
      - `key` string, required
      - `kind` 'custom' | 'dynamic', required
      - `value` string, required
    - `conversionIds` string[]
    - `logoMediaId` string, uuid
    - `backgroundMediaId` string, uuid
    - `organizationName` string
    - `showMemberProfilePhoto` boolean
    - `followerHeadline` 'MEMBER_YOU_MIGHT_LIKE_TO_FOLLOW' | 'MEMBER_KEEP_UP_WITH_LATEST_INSIGHTS' | 'custom'
    - `followerDescription` 'KEEP_UP_WITH_INTERESTING_RELEVANT_UPDATES' | 'RECEIVE_DAILY_OR_WEEKLY_ORGANIZATION_UPDATES' | 'custom'
    - `spotlightCallToAction` string
    - `cards` object[]
      - `mediaId` string, uuid, required
      - `headline` string, required
      - `landingUrl` string, uri, required
      - `altText` string: Accessible image description, up to 300 characters.
    - `mediaId` string, uuid
    - `videoThumbnailMediaId` string, uuid: Optional JPG or PNG thumbnail for a new video ad, up to 2 MB, matching the video dimensions.
    - `videoCaptions` object: Optional English plain-text SRT captions for a new video ad, up to 1 MB. Provide the filename and UTF-8 file content.
      - `name` string, required
      - `content` string, required
    - `documentPreviewPages` integer
    - `callToAction` 'LEARN_MORE' | 'SIGN_UP' | 'DOWNLOAD' | 'REGISTER' | 'CONTACT_US'
    - `creativeName` string, required
    - `headline` string, required
    - `description` string, required
    - `imageAltText` string: Accessible image description. New single image ads only, up to 300 characters.
    - `imageDescription` string: Additional description for Audience Network placements. New single image ads only, up to 300 characters.
    - `personalizedDescription` string
    - `landingUrl` string, required
    - `ads` object[]: The ads after the first, which the top-level ad fields describe, up to 5 ads in all. Each has its own name, text, media and destination; the format, Page and lead form are shared. Not available with existingPost.
      - `logoMediaId` string, uuid
      - `backgroundMediaId` string, uuid
      - `organizationName` string
      - `showMemberProfilePhoto` boolean
      - `followerHeadline` 'MEMBER_YOU_MIGHT_LIKE_TO_FOLLOW' | 'MEMBER_KEEP_UP_WITH_LATEST_INSIGHTS' | 'custom'
      - `followerDescription` 'KEEP_UP_WITH_INTERESTING_RELEVANT_UPDATES' | 'RECEIVE_DAILY_OR_WEEKLY_ORGANIZATION_UPDATES' | 'custom'
      - `spotlightCallToAction` string
      - `cards` object[]
        - `mediaId` string, uuid, required
        - `headline` string, required
        - `landingUrl` string, uri, required
        - `altText` string: Accessible image description, up to 300 characters.
      - `mediaId` string, uuid
      - `videoThumbnailMediaId` string, uuid: Optional JPG or PNG thumbnail for a new video ad, up to 2 MB, matching the video dimensions.
      - `videoCaptions` object: Optional English plain-text SRT captions for a new video ad, up to 1 MB. Provide the filename and UTF-8 file content.
        - `name` string, required
        - `content` string, required
      - `documentPreviewPages` integer
      - `callToAction` 'LEARN_MORE' | 'SIGN_UP' | 'DOWNLOAD' | 'REGISTER' | 'CONTACT_US'
      - `creativeName` string, required
      - `headline` string, required
      - `description` string, required
      - `imageAltText` string: Accessible image description. New single image ads only, up to 300 characters.
      - `imageDescription` string: Additional description for Audience Network placements. New single image ads only, up to 300 characters.
      - `personalizedDescription` string
      - `landingUrl` string, required
    - `selectedAd` integer: The ad open in the composer, by position. Ignored by creation.
    - `pageId` string
    - `locationIds` string[], required
    - `locationType` 'locations' | 'profileLocations'
    - `excludedLocationIds` string[]
    - `profileLocale` string
    - `targeting` object
      - `jobFunctions` string[]
      - `seniorities` string[]
      - `industries` string[]
      - `staffCountRanges` string[]
      - `titles` string[]
      - `titlesAll` string[]
      - `titlesPast` string[]
      - `skills` string[]
      - `yearsOfExperienceRanges` string[]
      - `employers` string[]
      - `employersAll` string[]
      - `employersPast` string[]
      - `followedCompanies` string[]
      - `firstDegreeConnectionCompanies` string[]
      - `growthRate` string[]
      - `revenue` string[]
      - `companyCategory` string[]
      - `degrees` string[]
      - `fieldsOfStudy` string[]
      - `schools` string[]
      - `interests` string[]
      - `memberBehaviors` string[]
      - `buyerGroups` string[]
      - `groups` string[]
      - `ageRanges` string[]
      - `genders` string[]
      - `audienceMatchingSegments` string[]
      - `dynamicSegments` string[]
    - `targetingGroups` object[]
      - `jobFunctions` string[]
      - `seniorities` string[]
      - `industries` string[]
      - `staffCountRanges` string[]
      - `titles` string[]
      - `titlesAll` string[]
      - `titlesPast` string[]
      - `skills` string[]
      - `yearsOfExperienceRanges` string[]
      - `employers` string[]
      - `employersAll` string[]
      - `employersPast` string[]
      - `followedCompanies` string[]
      - `firstDegreeConnectionCompanies` string[]
      - `growthRate` string[]
      - `revenue` string[]
      - `companyCategory` string[]
      - `degrees` string[]
      - `fieldsOfStudy` string[]
      - `schools` string[]
      - `interests` string[]
      - `memberBehaviors` string[]
      - `buyerGroups` string[]
      - `groups` string[]
      - `ageRanges` string[]
      - `genders` string[]
      - `audienceMatchingSegments` string[]
      - `dynamicSegments` string[]
    - `excludedTargeting` object
      - `jobFunctions` string[]
      - `seniorities` string[]
      - `industries` string[]
      - `staffCountRanges` string[]
      - `titles` string[]
      - `titlesAll` string[]
      - `titlesPast` string[]
      - `skills` string[]
      - `yearsOfExperienceRanges` string[]
      - `employers` string[]
      - `employersAll` string[]
      - `employersPast` string[]
      - `followedCompanies` string[]
      - `firstDegreeConnectionCompanies` string[]
      - `growthRate` string[]
      - `revenue` string[]
      - `companyCategory` string[]
      - `degrees` string[]
      - `fieldsOfStudy` string[]
      - `schools` string[]
      - `interests` string[]
      - `memberBehaviors` string[]
      - `buyerGroups` string[]
      - `groups` string[]
      - `ageRanges` string[]
      - `genders` string[]
      - `audienceMatchingSegments` string[]
      - `dynamicSegments` string[]
    - `locationNames` object
    - `excludedLocationNames` object
    - `groupName` string, required
    - `campaignName` string, required
    - `budgetMode` 'DAILY' | 'LIFETIME' | 'DAILY_AND_LIFETIME'
    - `dailyBudget` union, required
      - string
      - ''
    - `totalBudget` union, required
      - string
      - ''
    - `bid` union, required
      - string
      - ''
    - `startAt` union, required
      - string, date-time
      - ''
    - `endAt` union, required
      - string, date-time
      - ''
    - `noEndDate` boolean
  - `approvalId` string, uuid: Approval from the signed-in Maeve review page. Repeat the unchanged request with this ID.
  - `chatConfirmation` string: Only when the workspace lets people approve paid ad creation in chat: the chatConfirmation text from the approval response, sent with its approvalId after the person agreed in this chat. Never send it before they agree.

## Response `200`

LinkedIn OperationsCreate

- object
  - `data` union, required
    - object
      - `account` object, required
        - `id` string, required
        - `platform` 'meta' | 'tiktok' | 'linkedin' | 'google' | 'pinterest', required
        - `providerAccountId` string, required: The account ID the platform uses.
        - `name` string, nullable, required
        - `currency` string, nullable, required
        - `timezone` string, nullable, required: IANA timezone the platform reports this account in.
        - `isEnabled` boolean, required
        - `credentialStatus` 'active' | 'revoked', required
      - `money` object, required
        - `unit` 'micros', required
        - `microsPerCurrencyUnit` 1000000, required
        - `currency` string, nullable, required: ISO currency of the ad account.
      - `operation` object, required
        - `id` string, uuid, required
        - `requestKey` string, uuid, required
        - `specification` union, required
          - object
            - `parentRevision` string: Server-bound inherited settings. Keep when saving a returned draft; recalculated on submission.
            - `existingGroupId` string
            - `existingCampaignId` string
            - `useCampaignBudget` boolean
            - `groupBudgetOptimization` 'DYNAMIC'
            - `nonPolitical` true: Confirms that no ad is political advertising under the law of the targeted countries, including EU law. The dashboard ticks it by default, and ads.linkedin.operations.create treats a missing value as true.
            - `format` 'text' | 'image' | 'video' | 'carousel' | 'document' | 'follower' | 'spotlight'
            - `objectiveType` 'BRAND_AWARENESS' | 'WEBSITE_VISIT' | 'ENGAGEMENT' | 'LEAD_GENERATION' | 'WEBSITE_CONVERSION' | 'VIDEO_VIEW'
            - `leadFormId` string
            - `newLeadForm` object
              - …
            - `newConversion` object
              - …
            - `existingPost` union
              - …
            - `biddingStrategy` 'MANUAL_CPC' | 'MANUAL_CPM' | 'MAXIMUM_DELIVERY' | 'ENHANCED_CPC' | 'MANUAL_CPV' | 'TARGET_COST' | 'COST_CAP'
            - `optimizationGoal` 'IMPRESSIONS' | 'QUALIFIED_LEADS'
            - `offsiteDeliveryEnabled` boolean
            - `excludedIabCategories` string[]
            - `audienceExpansionEnabled` boolean
            - `trackingParameters` object[]
              - …
            - `conversionIds` string[]
            - `logoMediaId` string, uuid
            - `backgroundMediaId` string, uuid
            - `organizationName` string
            - `showMemberProfilePhoto` boolean
            - `followerHeadline` 'MEMBER_YOU_MIGHT_LIKE_TO_FOLLOW' | 'MEMBER_KEEP_UP_WITH_LATEST_INSIGHTS' | 'custom'
            - `followerDescription` 'KEEP_UP_WITH_INTERESTING_RELEVANT_UPDATES' | 'RECEIVE_DAILY_OR_WEEKLY_ORGANIZATION_UPDATES' | 'custom'
            - `spotlightCallToAction` string
            - `cards` object[]
              - …
            - `mediaId` string, uuid
            - `videoThumbnailMediaId` string, uuid: Optional JPG or PNG thumbnail for a new video ad, up to 2 MB, matching the video dimensions.
            - `videoCaptions` object: Optional English plain-text SRT captions for a new video ad, up to 1 MB. Provide the filename and UTF-8 file content.
              - …
            - `documentPreviewPages` integer
            - `callToAction` 'LEARN_MORE' | 'SIGN_UP' | 'DOWNLOAD' | 'REGISTER' | 'CONTACT_US'
            - `creativeName` string, required
            - `headline` string, required
            - `description` string, required
            - `imageAltText` string: Accessible image description. New single image ads only, up to 300 characters.
            - `imageDescription` string: Additional description for Audience Network placements. New single image ads only, up to 300 characters.
            - `personalizedDescription` string
            - `landingUrl` string, required
            - `ads` object[]: The ads after the first, which the top-level ad fields describe, up to 5 ads in all. Each has its own name, text, media and destination; the format, Page and lead form are shared. Not available with existingPost.
              - …
            - `selectedAd` integer: The ad open in the composer, by position. Ignored by creation.
            - `pageId` string
            - `locationIds` string[], required
            - `locationType` 'locations' | 'profileLocations'
            - `excludedLocationIds` string[]
            - `profileLocale` string
            - `targeting` object
              - …
            - `targetingGroups` object[]
              - …
            - `excludedTargeting` object
              - …
            - `locationNames` object
            - `excludedLocationNames` object
            - `groupName` string, required
            - `campaignName` string, required
            - `budgetMode` 'DAILY' | 'LIFETIME' | 'DAILY_AND_LIFETIME'
            - `dailyBudget` string, required
            - `totalBudget` string, required
            - `bid` string, required
            - `startAt` string, required
            - `endAt` string, required
            - `noEndDate` boolean
          - object
            - `parentRevision` string: Server-bound inherited settings. Keep when saving a returned draft; recalculated on submission.
            - `existingGroupId` string
            - `existingCampaignId` string
            - `useCampaignBudget` boolean
            - `groupBudgetOptimization` 'DYNAMIC'
            - `nonPolitical` true: Confirms that no ad is political advertising under the law of the targeted countries, including EU law. The dashboard ticks it by default, and ads.linkedin.operations.create treats a missing value as true.
            - `format` 'text' | 'image' | 'video' | 'carousel' | 'document' | 'follower' | 'spotlight'
            - `objectiveType` 'BRAND_AWARENESS' | 'WEBSITE_VISIT' | 'ENGAGEMENT' | 'LEAD_GENERATION' | 'WEBSITE_CONVERSION' | 'VIDEO_VIEW'
            - `leadFormId` string
            - `newLeadForm` object
              - …
            - `newConversion` object
              - …
            - `existingPost` string
            - `biddingStrategy` 'MANUAL_CPC' | 'MANUAL_CPM' | 'MAXIMUM_DELIVERY' | 'ENHANCED_CPC' | 'MANUAL_CPV' | 'TARGET_COST' | 'COST_CAP'
            - `optimizationGoal` 'IMPRESSIONS' | 'QUALIFIED_LEADS'
            - `offsiteDeliveryEnabled` boolean
            - `excludedIabCategories` string[]
            - `audienceExpansionEnabled` boolean
            - `trackingParameters` object[]
              - …
            - `conversionIds` string[]
            - `logoMediaId` string, uuid
            - `backgroundMediaId` string, uuid
            - `organizationName` string
            - `showMemberProfilePhoto` boolean
            - `followerHeadline` 'MEMBER_YOU_MIGHT_LIKE_TO_FOLLOW' | 'MEMBER_KEEP_UP_WITH_LATEST_INSIGHTS' | 'custom'
            - `followerDescription` 'KEEP_UP_WITH_INTERESTING_RELEVANT_UPDATES' | 'RECEIVE_DAILY_OR_WEEKLY_ORGANIZATION_UPDATES' | 'custom'
            - `spotlightCallToAction` string
            - `cards` object[]
              - …
            - `mediaId` string, uuid
            - `videoThumbnailMediaId` string, uuid: Optional JPG or PNG thumbnail for a new video ad, up to 2 MB, matching the video dimensions.
            - `videoCaptions` object: Optional English plain-text SRT captions for a new video ad, up to 1 MB. Provide the filename and UTF-8 file content.
              - …
            - `documentPreviewPages` integer
            - `callToAction` 'LEARN_MORE' | 'SIGN_UP' | 'DOWNLOAD' | 'REGISTER' | 'CONTACT_US'
            - `creativeName` string, required
            - `headline` string, required
            - `description` string, required
            - `imageAltText` string: Accessible image description. New single image ads only, up to 300 characters.
            - `imageDescription` string: Additional description for Audience Network placements. New single image ads only, up to 300 characters.
            - `personalizedDescription` string
            - `landingUrl` string, required
            - `ads` object[]: The ads after the first, which the top-level ad fields describe, up to 5 ads in all. Each has its own name, text, media and destination; the format, Page and lead form are shared. Not available with existingPost.
              - …
            - `selectedAd` integer: The ad open in the composer, by position. Ignored by creation.
            - `pageId` string
            - `locationIds` string[], required
            - `locationType` 'locations' | 'profileLocations'
            - `excludedLocationIds` string[]
            - `profileLocale` string
            - `targeting` object
              - …
            - `targetingGroups` object[]
              - …
            - `excludedTargeting` object
              - …
            - `locationNames` object
            - `excludedLocationNames` object
            - `groupName` string, required
            - `campaignName` string, required
            - `budgetMode` 'DAILY' | 'LIFETIME' | 'DAILY_AND_LIFETIME'
            - `dailyBudget` union, required
              - …
            - `totalBudget` union, required
              - …
            - `bid` union, required
              - …
            - `startAt` union, required
              - …
            - `endAt` union, required
              - …
            - `noEndDate` boolean
        - `state` 'draft' | 'ready' | 'submitting' | 'unknown' | 'failed' | 'complete', required
        - `step` 'conversion' | 'lead_form' | 'assets' | 'group' | 'campaign' | 'creative' | 'sync', required
        - `groupId` string, nullable, required
        - `campaignId` string, nullable, required
        - `creativeId` string, nullable, required: The first ad's creative ID, kept for older callers. ads lists every ad.
        - `ads` object[], nullable, required: One entry per ad in the specification, in order, with the creative ID LinkedIn returned once it was created. Ads are created in order; a stopped creation continues from the first without an ID.
          - `creativeId` string, nullable, required
        - `leadFormId` string, nullable, required
        - `conversionId` string, nullable, required
        - `uploads` object[], nullable, required
          - `slot` 'logo' | 'background'
          - `mediaId` string, uuid, required
          - `kind` 'image' | 'document' | 'video', required
          - `urn` string
          - `status` 'initializing' | 'WAITING_UPLOAD' | 'PROCESSING' | 'AVAILABLE', required
        - `error` string, nullable, required
        - `createdAt` string, date-time, required
        - `updatedAt` string, date-time, required
      - `nextStep` string, required
      - `approvalRequired` false, required
    - object
      - `approvalRequired` true, required
      - `approval` object, required
        - `id` string, required
        - `status` 'pending' | 'approved' | 'declined' | 'expired' | 'consumed', required: pending waits for the person. approved can be used once. consumed has been used. declined and expired cannot be used.
        - `platform` 'meta' | 'tiktok' | 'linkedin' | 'google' | 'pinterest', required
        - `operation` 'meta.campaign.publish' | 'meta.boost.create' | 'meta.boost.create_and_activate' | 'tiktok.campaign.publish' | 'tiktok.spark_boost.create' | 'linkedin.campaign.create' | 'pinterest.campaign.create' | 'google.campaign.create' | 'google.search.edit' | 'google.search.pause' | 'google.search.activate' | 'google.search.negatives' | 'google.image.upload' | 'google.commerce.edit' | 'google.commerce.pause' | 'google.commerce.activate', required
        - `accountId` string, required
        - `reviewUrl` string, required: The Maeve page where the person who asked reviews and decides. Opening it does not approve.
        - `requestedAt` string, required
        - `expiresAt` string, required
        - `decidedAt` string, nullable, required
        - `declineNote` string, nullable: What the person said should change when they declined. Change the request to match before asking again.
        - `summary` object, nullable, required
          - `platform` 'meta' | 'tiktok' | 'linkedin' | 'google' | 'pinterest', required
          - `operation` 'meta.campaign.publish' | 'meta.boost.create' | 'meta.boost.create_and_activate' | 'tiktok.campaign.publish' | 'tiktok.spark_boost.create' | 'linkedin.campaign.create' | 'pinterest.campaign.create' | 'google.campaign.create' | 'google.search.edit' | 'google.search.pause' | 'google.search.activate' | 'google.search.negatives' | 'google.image.upload' | 'google.commerce.edit' | 'google.commerce.pause' | 'google.commerce.activate', required
          - `title` string, required: What will be created, in plain words.
          - `account` object, required
            - `id` string, required
            - `name` string, nullable, required
            - `providerAccountId` string, required
            - `currency` string, nullable, required
            - `timezone` string, nullable, required
          - `objective` string, required: The objective as the platform names it.
          - `hierarchy` object[], required: Every entity the request creates or adds to, from the campaign down.
            - `level` 'campaign' | 'ad_set' | 'ad', required
            - `nativeType` string, required
            - `name` string, required
            - `existing` boolean, required: True when this entity already exists and is only added to.
          - `creative` object[], required
            - `tikTokCover` object
              - …
            - `pinterestAd` object
              - …
            - `label` string, required
            - `value` string, required
            - `media` object
              - …
          - `audience` object[], required
            - `tikTokCover` object
              - …
            - `pinterestAd` object
              - …
            - `label` string, required
            - `value` string, required
            - `media` object
              - …
          - `budgets` object[], required
            - `level` 'campaign' | 'ad_set', required
            - `kind` 'daily' | 'lifetime', required
            - `amountMicros` string, required
            - `currency` string, required
            - `name` string: The campaign or ad set this budget belongs to, when there are several.
          - `schedule` object, required
            - `startAt` string, required
            - `endAt` string, nullable, required
            - `timezone` string, nullable, required: IANA timezone of the ad account.
          - `delivery` object, required
            - `initialState` 'paused' | 'disabled' | 'draft' | 'enabled', required: The state the platform creates it in.
            - `activatesDelivery` boolean, required: True when this request also starts delivery, so the budget can be spent without another step.
      - `chatConfirmation` string: Present when the workspace lets the person approve in chat. Show them approval.summary and ask. Only after they agree, send the same request again with approvalId and this text as chatConfirmation. A value returned here is not permission.
      - `nextStep` string, required: What to do with this approval before sending the request again.
  - `meta` unknown, required

## Other responses

- `202`: Nothing was created. The request is waiting for the person to approve it in Maeve.

---

[API](https://skmtc.dev/maevesocial/apis/maeve-social-api.md) · [All operations](https://skmtc.dev/maevesocial/apis/maeve-social-api/llms.txt) · [OpenAPI document](https://skmtc.dev/maevesocial/apis/maeve-social-api/revisions/1b00fd7e4b15?raw)
