@zernio/node 0.2.406 → 0.2.408
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -0
- package/dist/index.d.mts +369 -45
- package/dist/index.d.ts +369 -45
- package/dist/index.js +222 -2
- package/dist/index.mjs +222 -2
- package/package.json +1 -1
- package/src/client.ts +206 -0
- package/src/generated/sdk.gen.ts +114 -29
- package/src/generated/types.gen.ts +175 -44
|
@@ -86,7 +86,7 @@ export type AccountWithFollowerStats = SocialAccount & {
|
|
|
86
86
|
export type Ad = {
|
|
87
87
|
_id?: string;
|
|
88
88
|
name?: string;
|
|
89
|
-
platform?: 'facebook' | 'instagram' | 'tiktok' | 'linkedin' | 'pinterest' | 'google' | 'twitter';
|
|
89
|
+
platform?: 'facebook' | 'instagram' | 'tiktok' | 'linkedin' | 'pinterest' | 'google' | 'twitter' | 'openai';
|
|
90
90
|
status?: AdStatus;
|
|
91
91
|
adType?: 'boost' | 'standalone';
|
|
92
92
|
/**
|
|
@@ -281,7 +281,7 @@ export type Ad = {
|
|
|
281
281
|
updatedAt?: string;
|
|
282
282
|
};
|
|
283
283
|
|
|
284
|
-
export type platform = 'facebook' | 'instagram' | 'tiktok' | 'linkedin' | 'pinterest' | 'google' | 'twitter';
|
|
284
|
+
export type platform = 'facebook' | 'instagram' | 'tiktok' | 'linkedin' | 'pinterest' | 'google' | 'twitter' | 'openai';
|
|
285
285
|
|
|
286
286
|
export type adType = 'boost' | 'standalone';
|
|
287
287
|
|
|
@@ -302,7 +302,7 @@ export type AdBudget = {
|
|
|
302
302
|
|
|
303
303
|
export type AdCampaign = {
|
|
304
304
|
platformCampaignId?: string;
|
|
305
|
-
platform?: 'facebook' | 'instagram' | 'tiktok' | 'linkedin' | 'pinterest' | 'google' | 'twitter';
|
|
305
|
+
platform?: 'facebook' | 'instagram' | 'tiktok' | 'linkedin' | 'pinterest' | 'google' | 'twitter' | 'openai';
|
|
306
306
|
campaignName?: string;
|
|
307
307
|
/**
|
|
308
308
|
* Delivery status derived from child ad statuses. Distinct from `reviewStatus`.
|
|
@@ -576,7 +576,7 @@ export type AdTreeAdSet = {
|
|
|
576
576
|
*/
|
|
577
577
|
export type AdTreeCampaign = {
|
|
578
578
|
platformCampaignId?: string;
|
|
579
|
-
platform?: 'facebook' | 'instagram' | 'tiktok' | 'linkedin' | 'pinterest' | 'google' | 'twitter';
|
|
579
|
+
platform?: 'facebook' | 'instagram' | 'tiktok' | 'linkedin' | 'pinterest' | 'google' | 'twitter' | 'openai';
|
|
580
580
|
campaignName?: string;
|
|
581
581
|
/**
|
|
582
582
|
* Delivery status derived from child ad statuses. Distinct from `reviewStatus`, which reflects the platform-side review state.
|
|
@@ -1215,12 +1215,14 @@ export type ConversionEvent = {
|
|
|
1215
1215
|
* Standard event name (Purchase, Lead, CompleteRegistration, AddToCart,
|
|
1216
1216
|
* InitiateCheckout, AddPaymentInfo, Subscribe, StartTrial, ViewContent,
|
|
1217
1217
|
* Search, Contact, SubmitApplication, Schedule) or a custom string
|
|
1218
|
-
* (only supported on platforms that accept custom events — Meta
|
|
1218
|
+
* (only supported on platforms that accept custom events — Meta and
|
|
1219
|
+
* OpenAI Ads).
|
|
1219
1220
|
*
|
|
1220
1221
|
* Per-platform behavior:
|
|
1221
1222
|
* - Meta: free-form; standard names match Meta's built-ins.
|
|
1222
1223
|
* - Google: ignored — the conversion action's category determines the type.
|
|
1223
1224
|
* - LinkedIn: ignored — the conversion rule's `type` is locked to the destination.
|
|
1225
|
+
* - OpenAI Ads: a fixed subset of standard names (Purchase, Lead, AddToCart, ViewContent, InitiateCheckout, CompleteRegistration, Subscribe, StartTrial, Schedule) maps 1:1 onto OpenAI's own event-type enum; anything else is sent as a custom event with the name preserved.
|
|
1224
1226
|
*
|
|
1225
1227
|
*/
|
|
1226
1228
|
eventName: string;
|
|
@@ -4017,7 +4019,7 @@ export type contentType3 = 'story' | 'saved_story' | 'spotlight';
|
|
|
4017
4019
|
|
|
4018
4020
|
export type SocialAccount = {
|
|
4019
4021
|
_id: string;
|
|
4020
|
-
platform: 'tiktok' | 'instagram' | 'facebook' | 'youtube' | 'linkedin' | 'twitter' | 'threads' | 'pinterest' | 'reddit' | 'bluesky' | 'googlebusiness' | 'telegram' | 'snapchat' | 'discord' | 'whatsapp' | 'linkedinads' | 'metaads' | 'pinterestads' | 'tiktokads' | 'xads' | 'googleads';
|
|
4022
|
+
platform: 'tiktok' | 'instagram' | 'facebook' | 'youtube' | 'linkedin' | 'twitter' | 'threads' | 'pinterest' | 'reddit' | 'bluesky' | 'googlebusiness' | 'telegram' | 'snapchat' | 'discord' | 'whatsapp' | 'linkedinads' | 'metaads' | 'pinterestads' | 'tiktokads' | 'xads' | 'googleads' | 'openaiads';
|
|
4021
4023
|
profileId: (string | Profile);
|
|
4022
4024
|
username?: string;
|
|
4023
4025
|
displayName?: string;
|
|
@@ -4077,7 +4079,7 @@ export type SocialAccount = {
|
|
|
4077
4079
|
};
|
|
4078
4080
|
};
|
|
4079
4081
|
|
|
4080
|
-
export type platform5 = 'tiktok' | 'instagram' | 'facebook' | 'youtube' | 'linkedin' | 'twitter' | 'threads' | 'pinterest' | 'reddit' | 'bluesky' | 'googlebusiness' | 'telegram' | 'snapchat' | 'discord' | 'whatsapp' | 'linkedinads' | 'metaads' | 'pinterestads' | 'tiktokads' | 'xads' | 'googleads';
|
|
4082
|
+
export type platform5 = 'tiktok' | 'instagram' | 'facebook' | 'youtube' | 'linkedin' | 'twitter' | 'threads' | 'pinterest' | 'reddit' | 'bluesky' | 'googlebusiness' | 'telegram' | 'snapchat' | 'discord' | 'whatsapp' | 'linkedinads' | 'metaads' | 'pinterestads' | 'tiktokads' | 'xads' | 'googleads' | 'openaiads';
|
|
4081
4083
|
|
|
4082
4084
|
/**
|
|
4083
4085
|
* Normalized, platform-agnostic ad-targeting spec. Every field is optional, an
|
|
@@ -12117,6 +12119,35 @@ export type ConnectBlueskyCredentialsError = (unknown | {
|
|
|
12117
12119
|
error?: string;
|
|
12118
12120
|
});
|
|
12119
12121
|
|
|
12122
|
+
export type ConnectOpenAiAdsCredentialsData = {
|
|
12123
|
+
body: {
|
|
12124
|
+
/**
|
|
12125
|
+
* API key from ChatGPT Ads Manager (Settings). Grants full read/write access on OpenAI's side; Zernio only ever reads with it.
|
|
12126
|
+
*/
|
|
12127
|
+
apiKey: string;
|
|
12128
|
+
/**
|
|
12129
|
+
* Your Zernio profile ID
|
|
12130
|
+
*/
|
|
12131
|
+
profileId: string;
|
|
12132
|
+
/**
|
|
12133
|
+
* Optional state passthrough for the connect flow.
|
|
12134
|
+
*/
|
|
12135
|
+
state?: string;
|
|
12136
|
+
/**
|
|
12137
|
+
* Optional URL to redirect to after successful connection
|
|
12138
|
+
*/
|
|
12139
|
+
redirectUri?: string;
|
|
12140
|
+
};
|
|
12141
|
+
};
|
|
12142
|
+
|
|
12143
|
+
export type ConnectOpenAiAdsCredentialsResponse = ({
|
|
12144
|
+
accountId?: string;
|
|
12145
|
+
adAccountName?: string;
|
|
12146
|
+
redirectUrl?: string;
|
|
12147
|
+
});
|
|
12148
|
+
|
|
12149
|
+
export type ConnectOpenAiAdsCredentialsError = (ErrorResponse | unknown);
|
|
12150
|
+
|
|
12120
12151
|
export type ConnectWhatsAppCredentialsData = {
|
|
12121
12152
|
body: {
|
|
12122
12153
|
/**
|
|
@@ -19729,7 +19760,7 @@ export type GetPhoneNumberKycFormResponse = ({
|
|
|
19729
19760
|
localTo?: (string) | null;
|
|
19730
19761
|
}>;
|
|
19731
19762
|
/**
|
|
19732
|
-
* Present when this account already has
|
|
19763
|
+
* Present when this account already has a reusable verification for the country (skip the form). `fromPhoneNumber`/`details` mirror the first option; `options` lists ALL reusable verifications (agencies hold one per end client), approved-first. Pass the chosen option's `id` as `reuseOptionId` on POST. Each option's `instant` says whether it activates in minutes (group-approved) or still queues for carrier review (1-3 days).
|
|
19733
19764
|
*/
|
|
19734
19765
|
reusable?: {
|
|
19735
19766
|
available?: boolean;
|
|
@@ -19745,10 +19776,25 @@ export type GetPhoneNumberKycFormResponse = ({
|
|
|
19745
19776
|
* One entry per distinct approved verification, newest first.
|
|
19746
19777
|
*/
|
|
19747
19778
|
options?: Array<{
|
|
19779
|
+
/**
|
|
19780
|
+
* Opaque option id — pass as `reuseOptionId` on POST. Stable selection key (a phone number is not unique across verifications).
|
|
19781
|
+
*/
|
|
19782
|
+
id?: string;
|
|
19783
|
+
/**
|
|
19784
|
+
* Display only — the number this verification was submitted for. Not a selection key.
|
|
19785
|
+
*/
|
|
19748
19786
|
fromPhoneNumber?: string;
|
|
19787
|
+
/**
|
|
19788
|
+
* true = group-approved, a new order activates in minutes; false = documents are reused but the order still queues for carrier review (1-3 days).
|
|
19789
|
+
*/
|
|
19790
|
+
instant?: boolean;
|
|
19749
19791
|
details?: Array<{
|
|
19750
19792
|
label?: string;
|
|
19751
19793
|
value?: string;
|
|
19794
|
+
/**
|
|
19795
|
+
* Present on document rows — the Telnyx document id. GET /v1/whatsapp/phone-numbers/kyc/document/{documentId} streams it (auth-scoped, inline PDF).
|
|
19796
|
+
*/
|
|
19797
|
+
documentId?: string;
|
|
19752
19798
|
}>;
|
|
19753
19799
|
}>;
|
|
19754
19800
|
} | null;
|
|
@@ -19775,7 +19821,11 @@ export type SubmitPhoneNumberKycData = {
|
|
|
19775
19821
|
*/
|
|
19776
19822
|
reuse?: boolean;
|
|
19777
19823
|
/**
|
|
19778
|
-
* Which
|
|
19824
|
+
* Which reusable verification to use (GET reusable.options[].id). The unambiguous selection key. Omitted = the approved default. No match = 409.
|
|
19825
|
+
*/
|
|
19826
|
+
reuseOptionId?: string;
|
|
19827
|
+
/**
|
|
19828
|
+
* Legacy fallback for `reuseOptionId`: the source phone number (GET reusable.options[].fromPhoneNumber). Ambiguous when a number labels two verifications — prefer `reuseOptionId`. Omitted = the approved default. No match = 409.
|
|
19779
19829
|
*/
|
|
19780
19830
|
reuseFrom?: string;
|
|
19781
19831
|
/**
|
|
@@ -19845,6 +19895,21 @@ export type SubmitPhoneNumberKycError = (unknown | {
|
|
|
19845
19895
|
error?: string;
|
|
19846
19896
|
});
|
|
19847
19897
|
|
|
19898
|
+
export type ViewPhoneNumberKycDocumentData = {
|
|
19899
|
+
path: {
|
|
19900
|
+
/**
|
|
19901
|
+
* The Telnyx document id (from `reusable.options[].details[].documentId`).
|
|
19902
|
+
*/
|
|
19903
|
+
documentId: string;
|
|
19904
|
+
};
|
|
19905
|
+
};
|
|
19906
|
+
|
|
19907
|
+
export type ViewPhoneNumberKycDocumentResponse = ((Blob | File));
|
|
19908
|
+
|
|
19909
|
+
export type ViewPhoneNumberKycDocumentError = (ErrorResponse | {
|
|
19910
|
+
error?: string;
|
|
19911
|
+
} | unknown);
|
|
19912
|
+
|
|
19848
19913
|
export type UploadPhoneNumberKycDocumentData = {
|
|
19849
19914
|
body: (Blob | File);
|
|
19850
19915
|
headers: {
|
|
@@ -20352,6 +20417,40 @@ export type RemediatePhoneNumberError = (unknown | {
|
|
|
20352
20417
|
error?: string;
|
|
20353
20418
|
});
|
|
20354
20419
|
|
|
20420
|
+
export type ReplyToPhoneNumberReviewerData = {
|
|
20421
|
+
body: {
|
|
20422
|
+
/**
|
|
20423
|
+
* The reply message to the reviewer.
|
|
20424
|
+
*/
|
|
20425
|
+
text?: string;
|
|
20426
|
+
/**
|
|
20427
|
+
* Files (PDF/JPG/PNG/WEBP, max 10 MB each) whose links are added to the reply.
|
|
20428
|
+
*/
|
|
20429
|
+
attachments?: Array<{
|
|
20430
|
+
filename: string;
|
|
20431
|
+
/**
|
|
20432
|
+
* Base64-encoded file bytes.
|
|
20433
|
+
*/
|
|
20434
|
+
base64: string;
|
|
20435
|
+
}>;
|
|
20436
|
+
};
|
|
20437
|
+
path: {
|
|
20438
|
+
id: string;
|
|
20439
|
+
};
|
|
20440
|
+
};
|
|
20441
|
+
|
|
20442
|
+
export type ReplyToPhoneNumberReviewerResponse = ({
|
|
20443
|
+
posted?: boolean;
|
|
20444
|
+
/**
|
|
20445
|
+
* Number of attachments uploaded.
|
|
20446
|
+
*/
|
|
20447
|
+
attachments?: number;
|
|
20448
|
+
});
|
|
20449
|
+
|
|
20450
|
+
export type ReplyToPhoneNumberReviewerError = (ErrorResponse | {
|
|
20451
|
+
error?: string;
|
|
20452
|
+
} | unknown);
|
|
20453
|
+
|
|
20355
20454
|
export type GetWhatsAppNumberKycFormData = {
|
|
20356
20455
|
query: {
|
|
20357
20456
|
country: string;
|
|
@@ -20387,7 +20486,7 @@ export type GetWhatsAppNumberKycFormResponse = ({
|
|
|
20387
20486
|
audience?: ('business' | 'individual') | null;
|
|
20388
20487
|
}>;
|
|
20389
20488
|
/**
|
|
20390
|
-
* Present when this account already has
|
|
20489
|
+
* Present when this account already has a reusable verification for the country (skip the form). `fromPhoneNumber`/`details` mirror the first option; `options` lists ALL reusable verifications (agencies hold one per end client), approved-first. Pass the chosen option's `id` as `reuseOptionId` on POST. Each option's `instant` says whether it activates in minutes (group-approved) or still queues for carrier review (1-3 days).
|
|
20391
20490
|
*/
|
|
20392
20491
|
reusable?: {
|
|
20393
20492
|
available?: boolean;
|
|
@@ -20403,10 +20502,25 @@ export type GetWhatsAppNumberKycFormResponse = ({
|
|
|
20403
20502
|
* One entry per distinct approved verification, newest first.
|
|
20404
20503
|
*/
|
|
20405
20504
|
options?: Array<{
|
|
20505
|
+
/**
|
|
20506
|
+
* Opaque option id — pass as `reuseOptionId` on POST. Stable selection key (a phone number is not unique across verifications).
|
|
20507
|
+
*/
|
|
20508
|
+
id?: string;
|
|
20509
|
+
/**
|
|
20510
|
+
* Display only — the number this verification was submitted for. Not a selection key.
|
|
20511
|
+
*/
|
|
20406
20512
|
fromPhoneNumber?: string;
|
|
20513
|
+
/**
|
|
20514
|
+
* true = group-approved, a new order activates in minutes; false = documents are reused but the order still queues for carrier review (1-3 days).
|
|
20515
|
+
*/
|
|
20516
|
+
instant?: boolean;
|
|
20407
20517
|
details?: Array<{
|
|
20408
20518
|
label?: string;
|
|
20409
20519
|
value?: string;
|
|
20520
|
+
/**
|
|
20521
|
+
* Present on document rows — the Telnyx document id. GET /v1/whatsapp/phone-numbers/kyc/document/{documentId} streams it (auth-scoped, inline PDF).
|
|
20522
|
+
*/
|
|
20523
|
+
documentId?: string;
|
|
20410
20524
|
}>;
|
|
20411
20525
|
}>;
|
|
20412
20526
|
} | null;
|
|
@@ -20433,7 +20547,11 @@ export type SubmitWhatsAppNumberKycData = {
|
|
|
20433
20547
|
*/
|
|
20434
20548
|
reuse?: boolean;
|
|
20435
20549
|
/**
|
|
20436
|
-
* Which
|
|
20550
|
+
* Which reusable verification to use (GET reusable.options[].id). The unambiguous selection key. Omitted = the approved default. No match = 409.
|
|
20551
|
+
*/
|
|
20552
|
+
reuseOptionId?: string;
|
|
20553
|
+
/**
|
|
20554
|
+
* Legacy fallback for `reuseOptionId`: the source phone number (GET reusable.options[].fromPhoneNumber). Ambiguous when a number labels two verifications — prefer `reuseOptionId`. Omitted = the approved default. No match = 409.
|
|
20437
20555
|
*/
|
|
20438
20556
|
reuseFrom?: string;
|
|
20439
20557
|
/**
|
|
@@ -23858,7 +23976,7 @@ export type ListAdsData = {
|
|
|
23858
23976
|
* Page number (1-based)
|
|
23859
23977
|
*/
|
|
23860
23978
|
page?: number;
|
|
23861
|
-
platform?: 'facebook' | 'instagram' | 'tiktok' | 'linkedin' | 'pinterest' | 'google' | 'twitter';
|
|
23979
|
+
platform?: 'facebook' | 'instagram' | 'tiktok' | 'linkedin' | 'pinterest' | 'google' | 'twitter' | 'openai';
|
|
23862
23980
|
/**
|
|
23863
23981
|
* Meta ad ID. Returns the ad with this platform-side ad ID.
|
|
23864
23982
|
*/
|
|
@@ -23911,7 +24029,7 @@ export type ListAdCampaignsData = {
|
|
|
23911
24029
|
* Page number (1-based)
|
|
23912
24030
|
*/
|
|
23913
24031
|
page?: number;
|
|
23914
|
-
platform?: 'facebook' | 'instagram' | 'tiktok' | 'linkedin' | 'pinterest' | 'google' | 'twitter';
|
|
24032
|
+
platform?: 'facebook' | 'instagram' | 'tiktok' | 'linkedin' | 'pinterest' | 'google' | 'twitter' | 'openai';
|
|
23915
24033
|
/**
|
|
23916
24034
|
* Profile ID
|
|
23917
24035
|
*/
|
|
@@ -23985,7 +24103,7 @@ export type CreateAdCampaignError = (unknown | {
|
|
|
23985
24103
|
export type UpdateAdCampaignStatusData = {
|
|
23986
24104
|
body: {
|
|
23987
24105
|
status: 'active' | 'paused';
|
|
23988
|
-
platform: 'facebook' | 'instagram' | 'tiktok' | 'linkedin' | 'pinterest' | 'google' | 'twitter';
|
|
24106
|
+
platform: 'facebook' | 'instagram' | 'tiktok' | 'linkedin' | 'pinterest' | 'google' | 'twitter' | 'openai';
|
|
23989
24107
|
};
|
|
23990
24108
|
path: {
|
|
23991
24109
|
/**
|
|
@@ -24097,7 +24215,7 @@ export type BulkUpdateAdCampaignStatusData = {
|
|
|
24097
24215
|
status: 'active' | 'paused';
|
|
24098
24216
|
campaigns: Array<{
|
|
24099
24217
|
platformCampaignId: string;
|
|
24100
|
-
platform: 'facebook' | 'instagram' | 'tiktok' | 'linkedin' | 'pinterest' | 'google' | 'twitter';
|
|
24218
|
+
platform: 'facebook' | 'instagram' | 'tiktok' | 'linkedin' | 'pinterest' | 'google' | 'twitter' | 'openai';
|
|
24101
24219
|
}>;
|
|
24102
24220
|
};
|
|
24103
24221
|
};
|
|
@@ -24290,7 +24408,7 @@ export type GetAdSetDetailsError = (unknown | {
|
|
|
24290
24408
|
|
|
24291
24409
|
export type UpdateAdSetData = {
|
|
24292
24410
|
body: {
|
|
24293
|
-
platform: 'facebook' | 'instagram' | 'tiktok' | 'linkedin' | 'pinterest' | 'google' | 'twitter';
|
|
24411
|
+
platform: 'facebook' | 'instagram' | 'tiktok' | 'linkedin' | 'pinterest' | 'google' | 'twitter' | 'openai';
|
|
24294
24412
|
/**
|
|
24295
24413
|
* Omit if not updating budget
|
|
24296
24414
|
*/
|
|
@@ -24308,23 +24426,27 @@ export type UpdateAdSetData = {
|
|
|
24308
24426
|
name?: string;
|
|
24309
24427
|
/**
|
|
24310
24428
|
* Ad-set-level bid strategy. Overrides the campaign-level default.
|
|
24311
|
-
* Supported on Meta (facebook, instagram) and
|
|
24429
|
+
* Supported on Meta (facebook, instagram), TikTok, and OpenAI. On TikTok the
|
|
24312
24430
|
* Meta-style enum is mapped to bid_type / bid_price / deep_bid_type
|
|
24313
|
-
* automatically.
|
|
24314
|
-
*
|
|
24431
|
+
* automatically. On OpenAI, LOWEST_COST_WITH_BID_CAP and COST_CAP both map to
|
|
24432
|
+
* the ad group's `bidding_config.max_bid_micros` (one knob covers both);
|
|
24433
|
+
* LOWEST_COST_WITH_MIN_ROAS is rejected with 422 (OpenAI has no ROAS-based
|
|
24434
|
+
* bidding). Other platforms (linkedin, pinterest, google, twitter) return 501
|
|
24435
|
+
* Not Implemented when bidStrategy is set.
|
|
24315
24436
|
*
|
|
24316
24437
|
*/
|
|
24317
24438
|
bidStrategy?: (BidStrategy);
|
|
24318
24439
|
/**
|
|
24319
24440
|
* Bid cap in WHOLE currency units (USD: 5 = $5.00; JPY: 100 = ¥100). Required when
|
|
24320
24441
|
* bidStrategy is LOWEST_COST_WITH_BID_CAP or COST_CAP. Internally converted to Meta's
|
|
24321
|
-
* smallest-denomination integer.
|
|
24442
|
+
* smallest-denomination integer, or (on OpenAI) to micros (× 1,000,000).
|
|
24322
24443
|
*
|
|
24323
24444
|
*/
|
|
24324
24445
|
bidAmount?: number;
|
|
24325
24446
|
/**
|
|
24326
24447
|
* Minimum ROAS as a decimal multiplier (2.0 = 2.0x). Required when bidStrategy is
|
|
24327
24448
|
* LOWEST_COST_WITH_MIN_ROAS. Sent to Meta as `bid_constraints.roas_average_floor` × 10000.
|
|
24449
|
+
* Not supported on OpenAI (422).
|
|
24328
24450
|
*
|
|
24329
24451
|
*/
|
|
24330
24452
|
roasAverageFloor?: number;
|
|
@@ -24396,7 +24518,7 @@ export type UpdateAdSetError = (unknown | {
|
|
|
24396
24518
|
export type UpdateAdSetStatusData = {
|
|
24397
24519
|
body: {
|
|
24398
24520
|
status: 'active' | 'paused';
|
|
24399
|
-
platform: 'facebook' | 'instagram' | 'tiktok' | 'linkedin' | 'pinterest' | 'google' | 'twitter';
|
|
24521
|
+
platform: 'facebook' | 'instagram' | 'tiktok' | 'linkedin' | 'pinterest' | 'google' | 'twitter' | 'openai';
|
|
24400
24522
|
};
|
|
24401
24523
|
path: {
|
|
24402
24524
|
/**
|
|
@@ -24445,7 +24567,7 @@ export type GetAdTreeData = {
|
|
|
24445
24567
|
* Page number (1-based)
|
|
24446
24568
|
*/
|
|
24447
24569
|
page?: number;
|
|
24448
|
-
platform?: 'facebook' | 'instagram' | 'tiktok' | 'linkedin' | 'pinterest' | 'google' | 'twitter';
|
|
24570
|
+
platform?: 'facebook' | 'instagram' | 'tiktok' | 'linkedin' | 'pinterest' | 'google' | 'twitter' | 'openai';
|
|
24449
24571
|
/**
|
|
24450
24572
|
* Profile ID
|
|
24451
24573
|
*/
|
|
@@ -24503,7 +24625,7 @@ export type GetAdsTimelineData = {
|
|
|
24503
24625
|
/**
|
|
24504
24626
|
* Restrict to one platform.
|
|
24505
24627
|
*/
|
|
24506
|
-
platform?: 'facebook' | 'instagram' | 'tiktok' | 'linkedin' | 'pinterest' | 'google' | 'twitter';
|
|
24628
|
+
platform?: 'facebook' | 'instagram' | 'tiktok' | 'linkedin' | 'pinterest' | 'google' | 'twitter' | 'openai';
|
|
24507
24629
|
/**
|
|
24508
24630
|
* Inclusive end of metrics range (YYYY-MM-DD). Defaults to today. Max 730-day range.
|
|
24509
24631
|
*/
|
|
@@ -24596,6 +24718,9 @@ export type UpdateAdData = {
|
|
|
24596
24718
|
* Minimum varies by platform: TikTok=$20, Pinterest=$5, others=$1
|
|
24597
24719
|
*/
|
|
24598
24720
|
amount?: number;
|
|
24721
|
+
/**
|
|
24722
|
+
* OpenAI Ads accepts lifetime only; sending daily returns 422.
|
|
24723
|
+
*/
|
|
24599
24724
|
type?: 'daily' | 'lifetime';
|
|
24600
24725
|
};
|
|
24601
24726
|
/**
|
|
@@ -26260,6 +26385,9 @@ export type CreateStandaloneAdData = {
|
|
|
26260
26385
|
* - `job_applicants` requires a `platformSpecificData.jobs` creative.
|
|
26261
26386
|
* - For `lead_generation` or `conversions` on LinkedIn, or to promote an existing post, use POST /v1/ads/boost.
|
|
26262
26387
|
*
|
|
26388
|
+
* **OpenAI Ads**
|
|
26389
|
+
* - Only `traffic`, `awareness`, and `conversions` are supported (other goals return 400). Maps to OpenAI's `bidding_type` (clicks, impressions, conversions respectively). `conversions` requires an active conversion event setting on the account; create a tracking tag with `defaultEventType` via the tracking-tags API (`POST /v1/accounts/{accountId}/tracking-tags`), or configure a conversion event in OpenAI Ads Manager, or the request returns 422.
|
|
26390
|
+
*
|
|
26263
26391
|
*/
|
|
26264
26392
|
goal?: 'engagement' | 'traffic' | 'awareness' | 'video_views' | 'lead_generation' | 'lead_conversion' | 'conversions' | 'app_promotion' | 'catalog_sales' | 'job_applicants';
|
|
26265
26393
|
/**
|
|
@@ -26289,11 +26417,11 @@ export type CreateStandaloneAdData = {
|
|
|
26289
26417
|
*/
|
|
26290
26418
|
validateOnly?: boolean;
|
|
26291
26419
|
/**
|
|
26292
|
-
* Required on legacy + multi-creative shapes. Inherited on attach.
|
|
26420
|
+
* Required on legacy + multi-creative shapes. Inherited on attach. OpenAI Ads requires a $1 minimum (its budget is lifetime-only, see budgetType).
|
|
26293
26421
|
*/
|
|
26294
26422
|
budgetAmount?: number;
|
|
26295
26423
|
/**
|
|
26296
|
-
* Required on legacy + multi-creative shapes. Inherited on attach.
|
|
26424
|
+
* Required on legacy + multi-creative shapes. Inherited on attach. OpenAI Ads accepts lifetime only (no daily-budget concept on the platform); sending daily returns 422. OpenAI Ads lifetime budgets require `endDate` to give the lifetime cap a spend window.
|
|
26297
26425
|
*/
|
|
26298
26426
|
budgetType?: 'daily' | 'lifetime';
|
|
26299
26427
|
/**
|
|
@@ -26314,7 +26442,7 @@ export type CreateStandaloneAdData = {
|
|
|
26314
26442
|
budgetLevel?: 'adset' | 'campaign';
|
|
26315
26443
|
currency?: string;
|
|
26316
26444
|
/**
|
|
26317
|
-
* Required for Meta, Google, Pinterest, and
|
|
26445
|
+
* Required for Meta, Google, Pinterest, LinkedIn, and OpenAI Ads on legacy + attach shapes (skip for multi-creative — use `creatives[].headline`). Ignored for TikTok and X/Twitter. Max: Meta=255, Google=30, Pinterest=100, LinkedIn=400, OpenAI=50 (min 3). On LinkedIn this is the ad's headline (the bold text on the creative); for traffic ads it's the link card title. On OpenAI Ads this is the chat card's title.
|
|
26318
26446
|
*/
|
|
26319
26447
|
headline?: string;
|
|
26320
26448
|
/**
|
|
@@ -26322,7 +26450,7 @@ export type CreateStandaloneAdData = {
|
|
|
26322
26450
|
*/
|
|
26323
26451
|
longHeadline?: string;
|
|
26324
26452
|
/**
|
|
26325
|
-
* Required on legacy + attach shapes. For X/Twitter this is the tweet text (max 280 chars including a ~24-char URL when `linkUrl` is set). On LinkedIn this is the post commentary (the intro text shown above the ad). Max: Google=90, Pinterest=500.
|
|
26453
|
+
* Required on legacy + attach shapes. For X/Twitter this is the tweet text (max 280 chars including a ~24-char URL when `linkUrl` is set). On LinkedIn this is the post commentary (the intro text shown above the ad). On OpenAI Ads this is the chat card's body text. Max: Google=90, Pinterest=500, OpenAI=100.
|
|
26326
26454
|
*/
|
|
26327
26455
|
body?: string;
|
|
26328
26456
|
/**
|
|
@@ -26334,7 +26462,7 @@ export type CreateStandaloneAdData = {
|
|
|
26334
26462
|
*/
|
|
26335
26463
|
callToAction?: 'LEARN_MORE' | 'SHOP_NOW' | 'SIGN_UP' | 'BOOK_TRAVEL' | 'CONTACT_US' | 'DOWNLOAD' | 'GET_OFFER' | 'GET_QUOTE' | 'SUBSCRIBE' | 'WATCH_MORE' | 'ADD_TO_CART' | 'APPLY_NOW' | 'BOOK_NOW' | 'BUY_TICKETS' | 'DONATE' | 'DONATE_NOW' | 'GET_DIRECTIONS' | 'GET_SHOWTIMES' | 'LISTEN_NOW' | 'ORDER_NOW' | 'PLAY_GAME' | 'REQUEST_TIME' | 'SEE_MENU' | 'START_ORDER' | 'INSTALL_MOBILE_APP' | 'USE_APP' | 'REGISTER' | 'JOIN' | 'ATTEND' | 'REQUEST_DEMO' | 'VIEW_QUOTE' | 'APPLY' | 'SEE_MORE' | 'BUY_NOW';
|
|
26336
26464
|
/**
|
|
26337
|
-
* Required on legacy + attach shapes (skip for multi-creative). On LinkedIn it's the ad's destination URL; required for `traffic` ads, optional for `engagement` / `awareness`. NOT required when `goal` is `lead_generation` (the ad opens a Lead Gen form instead of a destination). On LinkedIn, `imageUrl` + `linkUrl` publishes an ARTICLE-content creative; this is LinkedIn's article ad format, with the image as thumbnail and `longHeadline` as description.
|
|
26465
|
+
* Required on legacy + attach shapes (skip for multi-creative). On LinkedIn it's the ad's destination URL; required for `traffic` ads, optional for `engagement` / `awareness`. NOT required when `goal` is `lead_generation` (the ad opens a Lead Gen form instead of a destination). On LinkedIn, `imageUrl` + `linkUrl` publishes an ARTICLE-content creative; this is LinkedIn's article ad format, with the image as thumbnail and `longHeadline` as description. Required for OpenAI Ads (the chat card's target_url).
|
|
26338
26466
|
*/
|
|
26339
26467
|
linkUrl?: string;
|
|
26340
26468
|
/**
|
|
@@ -26342,7 +26470,7 @@ export type CreateStandaloneAdData = {
|
|
|
26342
26470
|
*/
|
|
26343
26471
|
leadGenFormId?: string;
|
|
26344
26472
|
/**
|
|
26345
|
-
* Image creative for Meta/Google/Pinterest/LinkedIn on legacy + attach shapes (mutually exclusive with `video`). Required for LinkedIn ads unless `video` is set. Not required for Google Search campaigns. For TikTok, this field carries the VIDEO URL (the TikTok ads endpoint is video-only; the field retains the `imageUrl` name for cross-platform consistency). Ignored for X/Twitter. For Google Display, treated as the landscape image (alias of `images.landscape`); supply `images.square` alongside or the request is rejected. For LinkedIn the image is uploaded to LinkedIn under the authoring Company Page (see `organizationId`); recommended ratio 1.91:1 (e.g. 1200×627).
|
|
26473
|
+
* Image creative for Meta/Google/Pinterest/LinkedIn on legacy + attach shapes (mutually exclusive with `video`). Required for LinkedIn ads unless `video` is set. Not required for Google Search campaigns. For TikTok, this field carries the VIDEO URL (the TikTok ads endpoint is video-only; the field retains the `imageUrl` name for cross-platform consistency). Ignored for X/Twitter. For Google Display, treated as the landscape image (alias of `images.landscape`); supply `images.square` alongside or the request is rejected. For LinkedIn the image is uploaded to LinkedIn under the authoring Company Page (see `organizationId`); recommended ratio 1.91:1 (e.g. 1200×627). Required for OpenAI Ads (uploaded as the chat card's image; OpenAI has no video ad format).
|
|
26346
26474
|
*/
|
|
26347
26475
|
imageUrl?: string;
|
|
26348
26476
|
/**
|
|
@@ -26483,7 +26611,7 @@ export type CreateStandaloneAdData = {
|
|
|
26483
26611
|
*/
|
|
26484
26612
|
targeting?: (TargetingSpec);
|
|
26485
26613
|
/**
|
|
26486
|
-
* ISO 3166-1 alpha-2 country codes (e.g. ['NL']). Defaults to ['US'] when no other geo targeting (flat or nested `targeting`) is provided. (LinkedIn currently
|
|
26614
|
+
* ISO 3166-1 alpha-2 country codes (e.g. ['NL']). Defaults to ['US'] when no other geo targeting (flat or nested `targeting`) is provided. (LinkedIn and OpenAI Ads currently honour country-level targeting only; any other targeting field returns 400 for OpenAI Ads.)
|
|
26487
26615
|
*/
|
|
26488
26616
|
countries?: Array<(string)>;
|
|
26489
26617
|
/**
|
|
@@ -28010,20 +28138,21 @@ export type GetConversionsQualityError = (ErrorResponse | {
|
|
|
28010
28138
|
export type SendConversionsData = {
|
|
28011
28139
|
body: {
|
|
28012
28140
|
/**
|
|
28013
|
-
* SocialAccount ID (metaads, googleads, linkedinads, or
|
|
28141
|
+
* SocialAccount ID (metaads, googleads, linkedinads, tiktokads, or openaiads).
|
|
28014
28142
|
*/
|
|
28015
28143
|
accountId: string;
|
|
28016
28144
|
/**
|
|
28017
28145
|
* Platform destination identifier. For Meta, the pixel/dataset
|
|
28018
28146
|
* ID. For Google, the conversion action resource name. For
|
|
28019
28147
|
* LinkedIn, the conversion rule ID or full
|
|
28020
|
-
* `urn:lla:llaPartnerConversion:{id}` URN.
|
|
28148
|
+
* `urn:lla:llaPartnerConversion:{id}` URN. For OpenAI Ads, the
|
|
28149
|
+
* pixel wire id.
|
|
28021
28150
|
*
|
|
28022
28151
|
*/
|
|
28023
28152
|
destinationId: string;
|
|
28024
28153
|
events: Array<ConversionEvent>;
|
|
28025
28154
|
/**
|
|
28026
|
-
* Meta `test_event_code` passthrough. Ignored by Google and
|
|
28155
|
+
* Meta `test_event_code` passthrough. Ignored by Google, LinkedIn, and OpenAI Ads.
|
|
28027
28156
|
*/
|
|
28028
28157
|
testCode?: string;
|
|
28029
28158
|
/**
|
|
@@ -28044,7 +28173,7 @@ export type SendConversionsData = {
|
|
|
28044
28173
|
};
|
|
28045
28174
|
|
|
28046
28175
|
export type SendConversionsResponse = ({
|
|
28047
|
-
platform?: 'metaads' | 'googleads' | 'linkedinads' | 'tiktokads';
|
|
28176
|
+
platform?: 'metaads' | 'googleads' | 'linkedinads' | 'tiktokads' | 'openaiads';
|
|
28048
28177
|
/**
|
|
28049
28178
|
* Events accepted by the platform.
|
|
28050
28179
|
*/
|
|
@@ -28068,7 +28197,8 @@ export type SendConversionsResponse = ({
|
|
|
28068
28197
|
/**
|
|
28069
28198
|
* Platform trace ID for debugging. fbtrace_id for Meta,
|
|
28070
28199
|
* requestId for Google. Absent for LinkedIn (LinkedIn's
|
|
28071
|
-
* conversionEvents endpoint does not surface a trace ID)
|
|
28200
|
+
* conversionEvents endpoint does not surface a trace ID)
|
|
28201
|
+
* and OpenAI Ads (no trace ID surfaced).
|
|
28072
28202
|
*
|
|
28073
28203
|
*/
|
|
28074
28204
|
traceId?: string;
|
|
@@ -28157,19 +28287,20 @@ export type AdjustConversionsError = (unknown | {
|
|
|
28157
28287
|
export type ListConversionDestinationsData = {
|
|
28158
28288
|
path: {
|
|
28159
28289
|
/**
|
|
28160
|
-
* SocialAccount ID (metaads, googleads, linkedinads, or
|
|
28290
|
+
* SocialAccount ID (metaads, googleads, linkedinads, tiktokads, or openaiads).
|
|
28161
28291
|
*/
|
|
28162
28292
|
accountId: string;
|
|
28163
28293
|
};
|
|
28164
28294
|
};
|
|
28165
28295
|
|
|
28166
28296
|
export type ListConversionDestinationsResponse = ({
|
|
28167
|
-
platform?: 'metaads' | 'googleads' | 'linkedinads' | 'tiktokads';
|
|
28297
|
+
platform?: 'metaads' | 'googleads' | 'linkedinads' | 'tiktokads' | 'openaiads';
|
|
28168
28298
|
destinations?: Array<{
|
|
28169
28299
|
/**
|
|
28170
28300
|
* Destination identifier. Meta: pixel ID. Google:
|
|
28171
28301
|
* conversion action resource name. LinkedIn:
|
|
28172
|
-
* numeric conversion rule ID.
|
|
28302
|
+
* numeric conversion rule ID. OpenAI Ads: pixel wire
|
|
28303
|
+
* id.
|
|
28173
28304
|
*
|
|
28174
28305
|
*/
|
|
28175
28306
|
id?: string;
|
|
@@ -28731,20 +28862,20 @@ export type CreateCtwaAdError = (unknown | {
|
|
|
28731
28862
|
export type ListTrackingTagsData = {
|
|
28732
28863
|
path: {
|
|
28733
28864
|
/**
|
|
28734
|
-
*
|
|
28865
|
+
* Ads SocialAccount id (platform `metaads` or `openaiads`).
|
|
28735
28866
|
*/
|
|
28736
28867
|
accountId: string;
|
|
28737
28868
|
};
|
|
28738
28869
|
query?: {
|
|
28739
28870
|
/**
|
|
28740
|
-
* Optional. Scope to one ad account, e.g. `act_123456789`.
|
|
28871
|
+
* Optional, Meta only. Scope to one ad account, e.g. `act_123456789`. Ignored for OpenAI Ads.
|
|
28741
28872
|
*/
|
|
28742
28873
|
adAccountId?: string;
|
|
28743
28874
|
};
|
|
28744
28875
|
};
|
|
28745
28876
|
|
|
28746
28877
|
export type ListTrackingTagsResponse = ({
|
|
28747
|
-
platform?: 'metaads';
|
|
28878
|
+
platform?: 'metaads' | 'openaiads';
|
|
28748
28879
|
tags?: Array<TrackingTag>;
|
|
28749
28880
|
});
|
|
28750
28881
|
|
|
@@ -28755,21 +28886,21 @@ export type ListTrackingTagsError = (unknown | {
|
|
|
28755
28886
|
export type CreateTrackingTagData = {
|
|
28756
28887
|
body: {
|
|
28757
28888
|
/**
|
|
28758
|
-
* Meta ad account id, e.g. `act_123456789`.
|
|
28889
|
+
* Meta ad account id, e.g. `act_123456789`. Required by this endpoint but ignored for OpenAI Ads.
|
|
28759
28890
|
*/
|
|
28760
28891
|
adAccountId: string;
|
|
28761
28892
|
name: string;
|
|
28762
28893
|
};
|
|
28763
28894
|
path: {
|
|
28764
28895
|
/**
|
|
28765
|
-
*
|
|
28896
|
+
* Ads SocialAccount id (platform `metaads` or `openaiads`).
|
|
28766
28897
|
*/
|
|
28767
28898
|
accountId: string;
|
|
28768
28899
|
};
|
|
28769
28900
|
};
|
|
28770
28901
|
|
|
28771
28902
|
export type CreateTrackingTagResponse = ({
|
|
28772
|
-
platform?: 'metaads';
|
|
28903
|
+
platform?: 'metaads' | 'openaiads';
|
|
28773
28904
|
tag?: TrackingTag;
|
|
28774
28905
|
});
|
|
28775
28906
|
|