0

Get bid floors

by
Published Dec 20, 2024

List bid floors for your campaign configuration.

Script pinterest Verified

The script

Submitted by hugo697 Bun
Verified 537 days ago
1
//native
2
type Pinterest = {
3
  token: string;
4
};
5
/**
6
 * Get bid floors
7
 * List bid floors for your campaign configuration.
8
 */
9
export async function main(
10
  auth: Pinterest,
11
  ad_account_id: string,
12
  body: {
13
    bid_floor_specs: {
14
      countries?:
15
        | "AD"
16
        | "AE"
17
        | "AF"
18
        | "AG"
19
        | "AI"
20
        | "AL"
21
        | "AM"
22
        | "AO"
23
        | "AQ"
24
        | "AR"
25
        | "AS"
26
        | "AT"
27
        | "AU"
28
        | "AW"
29
        | "AX"
30
        | "AZ"
31
        | "BA"
32
        | "BB"
33
        | "BD"
34
        | "BE"
35
        | "BF"
36
        | "BG"
37
        | "BH"
38
        | "BI"
39
        | "BJ"
40
        | "BL"
41
        | "BM"
42
        | "BN"
43
        | "BO"
44
        | "BQ"
45
        | "BR"
46
        | "BS"
47
        | "BT"
48
        | "BV"
49
        | "BW"
50
        | "BY"
51
        | "BZ"
52
        | "CA"
53
        | "CC"
54
        | "CD"
55
        | "CF"
56
        | "CG"
57
        | "CH"
58
        | "CI"
59
        | "CK"
60
        | "CL"
61
        | "CM"
62
        | "CN"
63
        | "CO"
64
        | "CR"
65
        | "CU"
66
        | "CV"
67
        | "CW"
68
        | "CX"
69
        | "CY"
70
        | "CZ"
71
        | "DE"
72
        | "DJ"
73
        | "DK"
74
        | "DM"
75
        | "DO"
76
        | "DZ"
77
        | "EC"
78
        | "EE"
79
        | "EG"
80
        | "EH"
81
        | "ER"
82
        | "ES"
83
        | "ET"
84
        | "FI"
85
        | "FJ"
86
        | "FK"
87
        | "FM"
88
        | "FO"
89
        | "FR"
90
        | "GA"
91
        | "GB"
92
        | "GD"
93
        | "GE"
94
        | "GF"
95
        | "GG"
96
        | "GH"
97
        | "GI"
98
        | "GL"
99
        | "GM"
100
        | "GN"
101
        | "GP"
102
        | "GQ"
103
        | "GR"
104
        | "GS"
105
        | "GT"
106
        | "GU"
107
        | "GW"
108
        | "GY"
109
        | "HK"
110
        | "HM"
111
        | "HN"
112
        | "HR"
113
        | "HT"
114
        | "HU"
115
        | "ID"
116
        | "IE"
117
        | "IL"
118
        | "IM"
119
        | "IN"
120
        | "IO"
121
        | "IQ"
122
        | "IR"
123
        | "IS"
124
        | "IT"
125
        | "JE"
126
        | "JM"
127
        | "JO"
128
        | "JP"
129
        | "KE"
130
        | "KG"
131
        | "KH"
132
        | "KI"
133
        | "KM"
134
        | "KN"
135
        | "KR"
136
        | "KW"
137
        | "KY"
138
        | "KZ"
139
        | "LA"
140
        | "LB"
141
        | "LC"
142
        | "LI"
143
        | "LK"
144
        | "LR"
145
        | "LS"
146
        | "LT"
147
        | "LU"
148
        | "LV"
149
        | "LY"
150
        | "MA"
151
        | "MC"
152
        | "MD"
153
        | "ME"
154
        | "MF"
155
        | "MG"
156
        | "MH"
157
        | "MK"
158
        | "ML"
159
        | "MM"
160
        | "MN"
161
        | "MO"
162
        | "MP"
163
        | "MQ"
164
        | "MR"
165
        | "MS"
166
        | "MT"
167
        | "MU"
168
        | "MV"
169
        | "MW"
170
        | "MX"
171
        | "MY"
172
        | "MZ"
173
        | "NA"
174
        | "NC"
175
        | "NE"
176
        | "NF"
177
        | "NG"
178
        | "NI"
179
        | "NL"
180
        | "NO"
181
        | "NP"
182
        | "NR"
183
        | "NU"
184
        | "NZ"
185
        | "OM"
186
        | "PA"
187
        | "PE"
188
        | "PF"
189
        | "PG"
190
        | "PH"
191
        | "PK"
192
        | "PL"
193
        | "PM"
194
        | "PN"
195
        | "PR"
196
        | "PS"
197
        | "PT"
198
        | "PW"
199
        | "PY"
200
        | "QA"
201
        | "RE"
202
        | "RO"
203
        | "RS"
204
        | "RU"
205
        | "RW"
206
        | "SA"
207
        | "SB"
208
        | "SC"
209
        | "SD"
210
        | "SE"
211
        | "SG"
212
        | "SH"
213
        | "SI"
214
        | "SJ"
215
        | "SK"
216
        | "SL"
217
        | "SM"
218
        | "SN"
219
        | "SO"
220
        | "SR"
221
        | "SS"
222
        | "ST"
223
        | "SV"
224
        | "SX"
225
        | "SY"
226
        | "SZ"
227
        | "TC"
228
        | "TD"
229
        | "TF"
230
        | "TG"
231
        | "TH"
232
        | "TJ"
233
        | "TK"
234
        | "TL"
235
        | "TM"
236
        | "TN"
237
        | "TO"
238
        | "TR"
239
        | "TT"
240
        | "TV"
241
        | "TW"
242
        | "TZ"
243
        | "UA"
244
        | "UG"
245
        | "UM"
246
        | "US"
247
        | "UY"
248
        | "UZ"
249
        | "VA"
250
        | "VC"
251
        | "VE"
252
        | "VG"
253
        | "VI"
254
        | "VN"
255
        | "VU"
256
        | "WF"
257
        | "WS"
258
        | "YE"
259
        | "YT"
260
        | "ZA"
261
        | "ZM"
262
        | "ZW"[];
263
      currency:
264
        | "UNK"
265
        | "USD"
266
        | "GBP"
267
        | "CAD"
268
        | "EUR"
269
        | "AUD"
270
        | "NZD"
271
        | "SEK"
272
        | "ILS"
273
        | "CHF"
274
        | "HKD"
275
        | "JPY"
276
        | "SGD"
277
        | "KRW"
278
        | "NOK"
279
        | "DKK"
280
        | "PLN"
281
        | "RON"
282
        | "HUF"
283
        | "CZK"
284
        | "BRL"
285
        | "MXN"
286
        | "ARS"
287
        | "CLP"
288
        | "COP"
289
        | "INR"
290
        | "TRY";
291
      objective_type?:
292
        | "AWARENESS"
293
        | "CONSIDERATION"
294
        | "VIDEO_VIEW"
295
        | "WEB_CONVERSION"
296
        | "CATALOG_SALES"
297
        | "WEB_SESSIONS"
298
        | "VIDEO_COMPLETION";
299
      billable_event: "CLICKTHROUGH" | "IMPRESSION" | "VIDEO_V_50_MRC";
300
      optimization_goal_metadata?: {
301
        conversion_tag_v3_goal_metadata?: {
302
          attribution_windows?: {
303
            click_window_days?: number;
304
            engagement_window_days?: number;
305
            view_window_days?: number;
306
          };
307
          conversion_event?:
308
            | "PAGE_VISIT"
309
            | "SIGNUP"
310
            | "CHECKOUT"
311
            | "CUSTOM"
312
            | "VIEW_CATEGORY"
313
            | "SEARCH"
314
            | "ADD_TO_CART"
315
            | "WATCH_VIDEO"
316
            | "LEAD"
317
            | "APP_INSTALL";
318
          conversion_tag_id?: string;
319
          cpa_goal_value_in_micro_currency?: string;
320
          is_roas_optimized?: false | true;
321
          learning_mode_type?: "NOT_ACTIVE" | "ACTIVE";
322
        };
323
        frequency_goal_metadata?: {
324
          frequency?: number;
325
          timerange?:
326
            | "THIRTY_DAY"
327
            | "DAY"
328
            | "SEVEN_DAY"
329
            | "TWENTY_MINUTE"
330
            | "TEN_MINUTE"
331
            | "TWENTY_FOUR_HOUR";
332
        };
333
        scrollup_goal_metadata?: {
334
          scrollup_goal_value_in_micro_currency?: string;
335
        };
336
      };
337
      creative_type?:
338
        | "REGULAR"
339
        | "VIDEO"
340
        | "SHOPPING"
341
        | "CAROUSEL"
342
        | "MAX_VIDEO"
343
        | "SHOP_THE_PIN"
344
        | "COLLECTION"
345
        | "IDEA"
346
        | "SHOWCASE"
347
        | "QUIZ";
348
    }[];
349
    targeting_spec?: {
350
      AGE_BUCKET?:
351
        | "18-24"
352
        | "21+"
353
        | "25-34"
354
        | "35-44"
355
        | "45-49"
356
        | "50-54"
357
        | "55-64"
358
        | "65+"[];
359
      APPTYPE?:
360
        | "android_mobile"
361
        | "android_tablet"
362
        | "ipad"
363
        | "iphone"
364
        | "web"
365
        | "web_mobile"[];
366
      AUDIENCE_EXCLUDE?: string[];
367
      AUDIENCE_INCLUDE?: string[];
368
      GENDER?: "unknown" | "male" | "female"[];
369
      GEO?: string[];
370
      INTEREST?: string[];
371
      LOCALE?: string[];
372
      LOCATION?: string[];
373
      SHOPPING_RETARGETING?: {
374
        lookback_window?: number;
375
        tag_types?: number[];
376
        exclusion_window?: number;
377
      }[];
378
      TARGETING_STRATEGY?:
379
        | "CHOOSE_YOUR_OWN"
380
        | "FIND_NEW_CUSTOMERS"
381
        | "RECONNECT_WITH_USERS"[];
382
    };
383
  },
384
) {
385
  const url = new URL(
386
    `https://api.pinterest.com/v5/ad_accounts/${ad_account_id}/bid_floor`,
387
  );
388

389
  const response = await fetch(url, {
390
    method: "POST",
391
    headers: {
392
      "Content-Type": "application/json",
393
      Authorization: "Bearer " + auth.token,
394
    },
395
    body: JSON.stringify(body),
396
  });
397
  if (!response.ok) {
398
    const text = await response.text();
399
    throw new Error(`${response.status} ${text}`);
400
  }
401
  return await response.json();
402
}
403