> ## Documentation Index
> Fetch the complete documentation index at: https://docs.automate.ax/llms.txt
> Use this file to discover all available pages before exploring further.

> ## Agent Instructions
> Automate.ax automations are TypeScript programs.
> Use Bun for installation and command examples.
> Use Automate.ax for the product name and automate.ax for the package, CLI, and domain.
> Treat documented public APIs as current; do not invent transitional or deprecated names.

# Create ad set

> Creates an ad set with delivery and targeting configuration.

`metaAds.createAdSet` creates an ad set with delivery and targeting configuration.

```ts automations/meta-ads-create-ad-set.automation.ts theme={null}
import { automation, onDashboardRun } from "automate.ax"
import { metaAds } from "automate.ax/meta-ads"

export default automation("Create ad set", () => {
  onDashboardRun({ title: "Create ad set" })
  const result = metaAds.createAdSet({
    adAccountId: "123456789",
    campaignId: "campaign-id",
    name: "US prospecting",
    billingEvent: "IMPRESSIONS",
    optimizationGoal: "OFFSITE_CONVERSIONS",
    promotedObject: {
      customEventType: "PURCHASE",
      pixelId: "pixel-id",
    },
    dailyBudget: 5000,
    targeting: { geoLocations: { countries: ["US"] } },
  })
  // Use result in the next advertising, reporting, or delivery operation.
})
```

Budgets use the ad account currency's minor unit. Omit both budgets when the campaign owns the budget; otherwise set exactly one. Set `promotedObject` when the optimization goal requires a pixel, Page, app, product set, or custom conversion. `status` defaults to `PAUSED`. Optional second argument `{ account }` selects a static project account binding.

Returns the created ad-set ID. Creation is not replay-safe.
