Skip to main content
POST
Create a standalone ad group

Request contract

  • Method and path: POST /apis/v1/ads/ad-sets
  • Availability: enabled
  • Request URL template: https://api.aisa.one/apis/v1/ads/ad-sets
  • connectionId: query; required
  • X-Aisa-Confirm: header; optional
  • Idempotency-Key: header; optional
  • Runtime facts: fe60122939c67dc98a3a6ac6b97bd5c326b526105150c8959304dd2160d4dd09
Complete OpenAPI definition Effective request and pricing declaration (including authentication and referenced schemas):

Cost and request rules

A request reference price is not currently available; use a request quote where supported. Account-specific pricing and final settlement may differ. Published reference values are not an account-specific quote or a settled charge. For endpoints supporting X-AISA-Cost-Mode: quote, obtain a free quote for your exact request before execution; reconcile the settled cost with response metadata and Usage Logs. USD amounts use 1,000,000 integer micro-USD per dollar.

Authorizations

Authorization
string
header
required

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

Headers

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.

Available options:
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

Query Parameters

connectionId
string
required

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]+$

Body

application/json
campaignId
string
required

Platform campaign ID the ad group is created under (numeric on Google). Must be yours: it is checked through the connection before the request is sent, and an id that is not yours answers not_found.

name
string
required
Required string length: 1 - 255
adAccountId
string

Platform ad account ID: the Google customer ID (digits only, only required when the connection has more than one) or the Reddit ad account id (required).

bidAmount
number

Reddit only. Bid cap in currency units, sent with bidStrategy.

bidStrategy
enum<string>

Reddit only. Defaults to LOWEST_COST_WITHOUT_CAP. Not accepted under campaign budget optimization.

Available options:
LOWEST_COST_WITHOUT_CAP,
LOWEST_COST_WITH_BID_CAP,
COST_CAP
budgetAmount
number

Reddit only. Budget of the new ad group, in the ad account's currency units. Required when the campaign has no campaign budget; 400 under campaign budget optimization, where the campaign budget funds the ad group.

budgetType
enum<string>

Reddit only. Sent together with budgetAmount.

Available options:
daily,
lifetime
connectionId
string

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

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

Google only. Alias of adAccountId, kept for existing callers

endDate
string

Reddit only. ISO 8601 end of the ad group. Defaults to the campaign end.

maxCpc
number

Max CPC of the new ad group, in the account's currency units. Send it when the campaign uses Manual CPC: Google gives an ad group without one a 0.01 bid.

optimizationGoal
string

Reddit only. VIDEO_VIEW_6S (default) or VIDEO_VIEW_15S on a video views campaign.

platform
enum<string>

"google" and "reddit" are implemented; every other value returns 501. Filled from the connection when omitted.

Available options:
facebook,
instagram,
tiktok,
linkedin,
pinterest,
google,
twitter,
openai,
reddit,
meta,
x
promotedObject
object

Reddit only. The pixel and the conversion event the ad group optimizes toward.

startDate
string

Reddit only. ISO 8601 start of the ad group. Defaults to now, or to the campaign start when it is in the future.

status
enum<string>
default:PAUSED
Available options:
ACTIVE,
PAUSED
targeting
object

Normalized, platform-agnostic ad-targeting spec. Every field is optional; an empty object targets the platform's default broadest audience.

Response

Ad group created

adSetId
string

Platform id of the new ad group

campaignId
string