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

# Create Ad Set

> Creates a Spotify Ads ad set inside a campaign with its budget, schedule, bidding, delivery settings and targeting

Creates a Spotify Ads ad set inside a campaign with its budget, schedule, bidding, delivery settings and targeting. Use spotify\_ads\_search\_targeting to resolve targeting ids first.

| | |
| - | - |
| **App** | Spotify Ads |
| **Operation ID** | `spotify_ads_create_ad_set` |
| **Type** | Action |
| **Connection** | `spotify_ads` (required) |
| **Credits per run** | 1 |
| **Agent / MCP tool** | Yes |
| **Requires approval** | Yes (write operation) |

## Inputs

| Field | Type | Required | Default | Description |
| - | - | - | - | - |
| `account` | DynamicAccount | Yes | - | Select the Spotify Ads account to create the ad set in. |
| `campaign_id` | string or SelectItem | Yes | - | Campaign the ad set belongs to. |
| `name` | string | Yes | - | Ad set name, 2 to 200 characters. |
| `start_time` | string | No | - | When the ad set starts, ISO 8601 UTC, for example 2026-09-01T00:00:00Z. Spotify requires it to be at least 15 minutes in the future. Defaults to 20 minutes from now when omitted. |
| `end_time` | string | No | - | When the ad set ends, ISO 8601 UTC. Runs until paused when omitted. |
| `budget_value` | number | Yes | - | Budget in the ad account's currency (for example 500 for \$500), converted to Spotify micro-currency automatically. |
| `budget_type` | enum (`DAILY`, `LIFETIME`) | Yes | - | Whether budget\_value is a DAILY or LIFETIME budget. |
| `asset_format` | enum (`AUDIO`, `VIDEO`, `IMAGE`, `CATALOG`) | Yes | - | Creative format this ad set delivers: AUDIO, VIDEO, IMAGE, or CATALOG. CATALOG is the carousel format, where listeners swipe through 2 to 6 images; its items are set on the ad's catalog field. |
| `bid_strategy` | enum (`COST_PER_RESULT`, `MAX_BID`, `AUTOBID`, `UNSET`) | Yes | - | How Spotify bids: AUTOBID, MAX\_BID (needs bid\_value), COST\_PER\_RESULT (needs bid\_value), or UNSET. |
| `bid_value` | number | No | - | Bid per 1,000 impressions in the account's currency, converted to micro-currency automatically. Required by MAX\_BID and COST\_PER\_RESULT. |
| `base_rate_value` | number | No | - | Base rate in the account's currency, converted to micro-currency automatically. |
| `delivery_goal` | enum (`UNSET`, `IMPRESSIONS`, `REACH`, `VIDEO_VIEWS`, `CLICKS`, `PAGE_VIEWS`, `APP_INSTALLS`, `STREAMS`, ...) | No | - | What delivery optimizes for: IMPRESSIONS, REACH, VIDEO\_VIEWS, CLICKS, PAGE\_VIEWS, APP\_INSTALLS, STREAMS, LEADS, or UNSET. |
| `delivery` | enum (`ON`, `OFF`) | No | - | Whether the ad set starts delivering (ON) or paused (OFF). |
| `pacing` | enum (`PACING_EVEN`, `PACING_ASAP`) | No | - | Spend pacing: PACING\_EVEN spreads the budget, PACING\_ASAP spends it as fast as possible. |
| `slot_positions` | array of string or SelectableOption | No | - | Podcast slot positions to deliver in: PRE\_ROLL, MID\_ROLL, POST\_ROLL. |
| `video_delivery_formats` | array of string or SelectableOption | No | - | Video delivery formats: IN\_STREAM, OPT\_IN. |
| `category` | string | No | - | Advertising category code for the ad set, for example ADV\_1\_1. |
| `mobile_app_id` | string | No | - | Mobile app ID for app promotion ad sets. |
| `dataset_id` | string | No | - | Measurement dataset ID used for conversion tracking. |
| `targets` | object or string | Yes | - | The Spotify targeting object for this ad set, sent to the API as-is. placements is required: a list of MUSIC and/or PODCAST. Other keys: age\_ranges (list of \{min, max} between 13 and 99), genders (MALE, FEMALE, NON\_BINARY), geo\_targets (object with country\_code, city\_ids, region\_ids, postal\_code\_ids), language (2-letter code), platforms (ANDROID, DESKTOP, IOS; all when omitted), artist\_ids, genre\_ids, playlist\_ids, interest\_ids, podcast\_episode\_topic\_ids, audience\_ids, audience\_ids\_exclusions, sensitive\_topic\_exclusions, and user\_day\_parts. Use spotify\_ads\_search\_targeting to look up artist, genre, geo, interest, language, playlist, episode topic and sensitive topic ids. Example: \{"placements": \["MUSIC"], "geo\_targets": \{"country\_code": "US"}, "age\_ranges": \[\{"min": 18, "max": 34}]} |
| `frequency_caps` | string or array of any | No | - | Up to 6 frequency caps, sent as-is. Each item is \{frequency\_unit: DAY\|WEEK\|MONTH, frequency\_period: integer, max\_impressions: integer}. Example: \[\{"frequency\_unit": "DAY", "frequency\_period": 1, "max\_impressions": 3}] |
| `promotion` | object or string | No | - | Artist or podcast promotion object, sent as-is: \{promotion\_goal: ARTIST\_PROMO\|PODCAST\_PROMO, promotion\_target\_id, conversion\_events: \[\{tracking\_event\_type: IMPRESSION\|CLICKED\|COMPLETE, window\_duration\_ms}]}. |
| `cost_modifiers` | string or array of any | No | - | Cost modifier objects, sent as-is: \[\{id, name, rate}]. |

### SelectItem

| Field | Type | Required | Default | Description |
| - | - | - | - | - |
| `value` | string | Yes | - | The value of the selectable item. |
| `label` | string | Yes | - | The label of the selectable item, used for display purposes. If not provided, defaults to the value. |

### SelectableOption

| Field | Type | Required | Default | Description |
| - | - | - | - | - |
| `value` | string | Yes | - | |
| `label` | string | Yes | - | |

## Output

**Type**: `Dict`

Returns the created ad set including id, campaign\_id, name, status, budget, bid\_strategy, asset\_format and targets.

**Fields**: dynamic (depend on the inputs)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.