跳转到主要内容
POST
Boost post as ad

请求规范

  • 方法与路径: POST /apis/v1/ads/boost
  • 可用状态: enabled
  • 请求 URL 模板: https://api.aisa.one/apis/v1/ads/boost
  • connectionId: query; 必填
  • X-Aisa-Confirm: header; 可选
  • Idempotency-Key: header; 可选
  • Runtime 事实版本: fe60122939c67dc98a3a6ac6b97bd5c326b526105150c8959304dd2160d4dd09
完整 OpenAPI 定义 有效请求与价格声明(包括认证和引用的 schema):

费用与请求规则

当前未提供请求参考价格;请使用接口支持的报价功能确认费用。 最终费用以账户适用价格及实际结算为准。 公开参考值不是你的账户报价或最终扣费。对于支持 X-AISA-Cost-Mode: quote 的接口,执行前请针对完整请求获取免费报价;执行后通过响应费用元数据和 Usage Logs 核对结算费用。1 USD 等于 1,000,000 个整数 micro-USD。

授权

Authorization
string
header
必填

Bearer authentication header of the form Bearer <token>, where <token> is your auth token.

请求头

X-Aisa-Confirm
enum<string>

Required with the value "spend" when the request can spend money or change spend. Without it the request is refused with 409 confirmation_required, which describes what would happen; nothing is sent to the ad platform.

可用选项:
spend
Idempotency-Key
string

Passed to the ad platform integration: a retry with the same key returns the first result instead of acting twice. AIsa never retries a write for you.

Required string length: 1 - 191

查询参数

connectionId
string
必填

The ads connection (adc_...) the request runs on: one of yours, from GET /apis/v1/ads/connections. On a request with a JSON body it may be sent as a top-level body member instead.

Pattern: ^adc_[0-9A-Za-z]+$

请求体

application/json
adAccountId
string
必填

Platform ad account ID

goal
enum<string>
必填

Available goals vary by platform. Meta (Facebook/Instagram) and TikTok support all 7. LinkedIn supports all except app_promotion. X supports engagement, traffic, awareness, video_views, app_promotion.

可用选项:
engagement,
traffic,
awareness,
video_views,
lead_generation,
conversions,
app_promotion
name
string
必填
Maximum string length: 255
adSetId
string

Meta, or TikTok with smartPlus: true. Attach the boosted post to this existing ad set instead of creating a campaign. Meta: the ad set then owns budget, schedule and targeting; sending those too is a 400. Must be yours: it is checked through the connection before the request is sent, and an id that is not yours answers not_found.

adSetName
string

Exact name for the ad-group level this boost provisions. Omitted keeps the default - Ad Group. Meta: ad set; TikTok, Pinterest, Google: ad group; X: line item; LinkedIn: the campaign under the campaign group.

Maximum string length: 255
adSetStatus
enum<string>

Every platform, same semantics as POST /apis/v1/ads/create. Sets the switch of the new ad set alone and overrides status for it. Omitted, it follows status.

可用选项:
ACTIVE,
PAUSED
adStatus
enum<string>

Request-side publish switch for adStatus on ad creation endpoints only (status, campaignStatus and adSetStatus carry their own inline ACTIVE/PAUSED enum there; the status-update endpoints are a separate lowercase active/paused…

可用选项:
ACTIVE,
PAUSED
attributionSpec
object[]

Meta only. Ad-set attribution windows, same shape as POST /apis/v1/ads/create.

Required array length: 1 - 3 elements
bidAmount
number

Deprecated: send it inside platformSpecificData instead (Meta today; TikTok's nested shape is planned). The flat field keeps working during the deprecation window; sending both shapes returns a 400.

bidStrategy
enum<string>

Deprecated: send it inside platformSpecificData instead (Meta today; TikTok's nested shape is planned). The flat field keeps working during the deprecation window; sending both shapes returns a 400.

可用选项:
LOWEST_COST_WITHOUT_CAP,
LOWEST_COST_WITH_BID_CAP,
COST_CAP,
LOWEST_COST_WITH_MIN_ROAS
bodies
string[]

Meta only. Extra primary-text options Meta rotates on the boosted post (asset_feed_spec.bodies with DEGREES_OF_FREEDOM). The post keeps its own text as one of the options. Works for Facebook posts and Instagram media.

Required array length: 1 - 5 elements
budget
object

Alias of budgetAmount + budgetType, kept for existing callers

budgetAmount
number

Budget in whole currency units, the same flat field as POST /apis/v1/ads/create. Required unless adSetId is set. Minimum varies: TikTok=$20, Pinterest=$5, others=$1

budgetLevel
enum<string>

Meta only, same semantics as POST /apis/v1/ads/create: campaign = Advantage campaign budget (CBO), the budget and bid strategy sit on the campaign and the ad set inherits them. Default adset. Not allowed with adSetId.

可用选项:
adset,
campaign
budgetType
enum<string>

Goes together with budgetAmount. lifetime requires schedule.endDate.

可用选项:
daily,
lifetime
callToAction
string

CTA button label. Non-messaging CTAs require linkUrl. WHATSAPP_MESSAGE, MESSAGE_PAGE, and INSTAGRAM_MESSAGE do not require a URL and reject linkUrl.

campaignName
string

Exact name for the campaign this boost provisions. Omitted keeps the default - Campaign. Every platform: on LinkedIn it names the campaign group. Ignored on the Meta attach shape (adSetId), which creates no campaign.

Maximum string length: 255
campaignStatus
enum<string>

Every platform, same semantics as POST /apis/v1/ads/create. Sets the switch of the new campaign alone (LinkedIn: the campaign group) and overrides status for it. When omitted, it follows status.

可用选项:
ACTIVE,
PAUSED
connectionId
string

The ads connection (adc_...), when not sent as the connectionId query parameter.

Pattern: ^adc_[0-9A-Za-z]+$
creativeFeatures
object

Meta Advantage+ creative enhancements. Map snake_case feature names to OPT_IN or OPT_OUT; Meta validates supported keys and unspecified features default to OPT_OUT.

currency
string

ISO 4217 currency code matching the ad account's currency. Meta only.

Required string length: 3
destinationType
enum<string>

Meta only. Ad-set destination_type: where the click LANDS, as opposed to instagramAccountId which is who the ad runs as. Independent of plain link CTAs and their goal.

可用选项:
INSTAGRAM_PROFILE,
WEBSITE,
ON_AD,
MESSENGER,
WHATSAPP,
INSTAGRAM_DIRECT
dsaBeneficiary
string

Legal entity that benefits from the ad. Required when targeting EU users (EU DSA, Article 26).

Maximum string length: 100
dsaPayor
string

Legal entity that pays for the ad. Can differ from dsaBeneficiary (for example, an agency paying for a client's ads). Same rules as dsaBeneficiary: required for EU targeting unless the ad account has a default payor.

Maximum string length: 100
endDate
string<date-time>

Ad-set end time (ISO 8601). Required for lifetime budgets. Same field as on POST /apis/v1/ads/create. Maps to the ad set's end_time (on X, the line item's end_time; X campaigns carry no flight dates).

existingCampaignId
string

TikTok only. Create the ad group and the Spark ad under this existing TikTok campaign instead of creating a new campaign. The campaign keeps its own status and objective (the objective must fit goal). Must be yours: it is checked through the connection before the request is sent, and an id that is not yours answers not_found.

identityId
string

TikTok only. The identity the ad runs as (the profile shown on the ad), from GET /apis/v1/ads/tiktok-identities. Default: the connected TikTok account's own identity.

identityType
enum<string>

TikTok only. Type of identityId; resolved from the advertiser's identity list when omitted.

可用选项:
TT_USER,
CUSTOMIZED_USER,
BC_AUTH_TT
instagramAccountId
string

Meta only. Instagram identity the ad runs AS (creative.instagram_user_id), overriding the account linked to the Page. Live-verified against a Page-post creative.

leadGenFormId
string

Lead Gen form ID to attach to the boosted ad's creative. REQUIRED when goal is lead_generation; ignored for other goals. Meta: the leadgen_forms ID (create one via POST /apis/v1/ads/lead-forms).

lifetimeBudgetCap
number

X only (400 on another platform or on a lifetime budget). A lifetime total, in whole currency units, that caps a daily budget (budgetType daily). Must be at least budgetAmount.

Website URL for non-messaging CTA buttons. Send it with callToAction. Omit for messaging boosts. Meta: adds a top-level call_to_action to the post-reference creative.

locationTargetingType
enum<string>

Google only (400 elsewhere). Written on the campaign the boost creates.

可用选项:
presence,
presence_or_interest
metaObjective
enum<string>

Meta only, with goal: engagement and without adSetId (400 otherwise).

可用选项:
OUTCOME_ENGAGEMENT
optimizationGoal
string

Ad-set optimization goal override. Meta, or TikTok with goal: video_views. TikTok: ENGAGED_VIEW (6-second Focused View, the default) or ENGAGED_VIEW_FIFTEEN (15-second views), both billed per view (CPV). Any other value is a 400.

platformPostId
string

Platform post ID (alternative to postId). Reddit: the post id, with or without the t3_ prefix. Meta: a Page post id (_ or the bare post id) or an Instagram media id.

platformSpecificData
object

Platform-specific options. The platform is derived from connectionId; sending options for a different platform returns a 400. LinkedIn (campaign bidding and delivery controls) and Meta (the bid trio) have options today.

postId
string
promoCodes
object[]

TikTok Smart+ Web Conversions only (requires smartPlus: true, goal conversions). Promo codes or offers TikTok highlights on the ad (Ads Manager's "Add promo code or offer"). A promo code needs shoppers to enter it at checkout.

Required array length: 1 - 10 elements
promotedObject
object

Meta, TikTok and Reddit. What the conversion ad set optimizes toward, so a boost of an existing organic post can run for a conversion instead of only engagement or traffic.

rawTargeting
object

Meta only. A Meta-native targeting spec (e.g. { "geo_locations": { "cities": [{ "key": "...", "radius": 15, "distance_unit": "kilometer" }] } }). Sent alone, it is forwarded unchanged.

regionalRegulatedCategories
string[]

Meta only. Regional regulation categories required when the ad set targets certain countries (e.g.

regionalRegulationIdentities
object

Meta only. Verified identity IDs of the beneficiary and payer for each declared regionalRegulatedCategories value. Ignored when adSetId adds the ad to an existing ad set.

rehostOnInstagramVideoRejection
boolean
默认值:true

Meta only (a 400 elsewhere). Controls the fallback when Meta refuses an existing Instagram video as the ad (subcode 1815279).

roasAverageFloor
number

Deprecated: send it inside platformSpecificData instead (Meta today; TikTok's nested shape is planned). The flat field keeps working during the deprecation window; sending both shapes returns a 400.

schedule
object

Alias of the top-level startDate / endDate, kept for existing callers. Sending both forms with differing values is a 400.

smartPlus
boolean

TikTok only. Run the Spark post in a Smart+ campaign instead of a regular one: goal conversions = Smart+ Web Conversions, lead_generation = Smart+ Lead Generation. Rejected with a 400 on other platforms. Requires:

smartTargeting
object

TikTok only (a 400 elsewhere). TikTok Smart Targeting on the ad group: audience is TikTok's smart_audience_enabled, interestsBehaviors its smart_interest_behavior_enabled.

sparkAuthCode
string

TikTok-only. Spark Code (the creator's auth_code) authorizing cross-creator Spark Ads: the advertiser can boost a video owned by a DIFFERENT TikTok account. Maps to auth_code on the creative entry of /v2/ad/create/.

sparkPosts
object[]

TikTok Smart+ only (requires smartPlus: true; a 400 on other platforms). Several Spark posts as creatives of ONE Smart+ ad, each with its own post code. Replaces platformPostId + sparkAuthCode.

Required array length: 1 - 50 elements
specialAdCategories
enum<string>[]

Meta only. Required for housing, employment, credit, or political ads.

可用选项:
HOUSING,
EMPLOYMENT,
CREDIT,
FINANCIAL_PRODUCTS_SERVICES,
ISSUES_ELECTIONS_POLITICS,
ONLINE_GAMBLING_AND_GAMING
specialAdCategoryCountry
string[]

Meta (metaads) only. 2-letter ISO country codes the special ad category applies to. Requires specialAdCategories to be set (400 otherwise).

startDate
string<date-time>

Ad-set start time (ISO 8601, e.g. "2026-06-10T09:00:00Z"), mapped to the ad set's start_time. When omitted the ad starts delivering immediately.

status
enum<string>

Publish state of the created entities, on every platform. Omitted or ACTIVE publishes live (default). PAUSED pauses only the top-most object this boost creates and switches everything below it on:

可用选项:
ACTIVE,
PAUSED
targeting
object

Same geo/demographic fields as the TargetingSpec used by /apis/v1/ads/create. Geo keys (regions/cities/zips/metros) resolve via GET /apis/v1/ads/targeting/search?dimension=geo. Meta only: city radius and lat/lng customLocations.

tracking
object

Meta only, except pixelId, which also picks the Reddit pixel of the new ad group (promotedObject.pixelId wins when both are sent). Tracking specs (pixel, URL tags).

validateOnly
boolean
默认值:false

Meta only (facebook, instagram and Meta ads connections). Returns 200 with the same body as a validateOnly POST /apis/v1/ads/create (validateOnly, results per node, message).

whatsappPhoneNumber
string

Meta WhatsApp only. E.164 number already paired with the Page. Omit to use the default pairing. Requires WHATSAPP_MESSAGE callToAction. Stored as creative.whatsappPhoneNumber on the ad.

Pattern: ^\+[1-9]\d{6,14}$
workflowId
string

Meta messaging boosts only (callToAction MESSAGE_PAGE, WHATSAPP_MESSAGE or INSTAGRAM_MESSAGE). A workflow in the account's profile, started in the conversation a click on the ad opens. Stored on the ad.

Pattern: ^[a-fA-F0-9]{24}$

响应

validateOnly dry-run passed (Meta), nothing was created

message
string
results
object[]
validateOnly
boolean

Always true in a validate-only response.