@waldofyi/sdk 0.1.0
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.
Potentially problematic release.
This version of @waldofyi/sdk might be problematic. Click here for more details.
- package/LICENSE +40 -0
- package/README.md +37 -0
- package/dist/client/client.gen.d.ts +3 -0
- package/dist/client/client.gen.d.ts.map +1 -0
- package/dist/client/client.gen.js +218 -0
- package/dist/client/client.gen.js.map +1 -0
- package/dist/client/index.d.ts +11 -0
- package/dist/client/index.d.ts.map +1 -0
- package/dist/client/index.js +7 -0
- package/dist/client/index.js.map +1 -0
- package/dist/client/types.gen.d.ts +121 -0
- package/dist/client/types.gen.d.ts.map +1 -0
- package/dist/client/types.gen.js +3 -0
- package/dist/client/types.gen.js.map +1 -0
- package/dist/client/utils.gen.d.ts +38 -0
- package/dist/client/utils.gen.d.ts.map +1 -0
- package/dist/client/utils.gen.js +232 -0
- package/dist/client/utils.gen.js.map +1 -0
- package/dist/client.gen.d.ts +13 -0
- package/dist/client.gen.d.ts.map +1 -0
- package/dist/client.gen.js +4 -0
- package/dist/client.gen.js.map +1 -0
- package/dist/core/auth.gen.d.ts +26 -0
- package/dist/core/auth.gen.d.ts.map +1 -0
- package/dist/core/auth.gen.js +15 -0
- package/dist/core/auth.gen.js.map +1 -0
- package/dist/core/bodySerializer.gen.d.ts +26 -0
- package/dist/core/bodySerializer.gen.d.ts.map +1 -0
- package/dist/core/bodySerializer.gen.js +58 -0
- package/dist/core/bodySerializer.gen.js.map +1 -0
- package/dist/core/params.gen.d.ts +44 -0
- package/dist/core/params.gen.d.ts.map +1 -0
- package/dist/core/params.gen.js +113 -0
- package/dist/core/params.gen.js.map +1 -0
- package/dist/core/pathSerializer.gen.d.ts +34 -0
- package/dist/core/pathSerializer.gen.d.ts.map +1 -0
- package/dist/core/pathSerializer.gen.js +115 -0
- package/dist/core/pathSerializer.gen.js.map +1 -0
- package/dist/core/queryKeySerializer.gen.d.ts +19 -0
- package/dist/core/queryKeySerializer.gen.d.ts.map +1 -0
- package/dist/core/queryKeySerializer.gen.js +100 -0
- package/dist/core/queryKeySerializer.gen.js.map +1 -0
- package/dist/core/serverSentEvents.gen.d.ts +72 -0
- package/dist/core/serverSentEvents.gen.d.ts.map +1 -0
- package/dist/core/serverSentEvents.gen.js +137 -0
- package/dist/core/serverSentEvents.gen.js.map +1 -0
- package/dist/core/types.gen.d.ts +84 -0
- package/dist/core/types.gen.d.ts.map +1 -0
- package/dist/core/types.gen.js +3 -0
- package/dist/core/types.gen.js.map +1 -0
- package/dist/core/utils.gen.d.ts +20 -0
- package/dist/core/utils.gen.d.ts.map +1 -0
- package/dist/core/utils.gen.js +88 -0
- package/dist/core/utils.gen.js.map +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -0
- package/dist/sdk.gen.d.ts +408 -0
- package/dist/sdk.gen.d.ts.map +1 -0
- package/dist/sdk.gen.js +455 -0
- package/dist/sdk.gen.js.map +1 -0
- package/dist/types.gen.d.ts +2701 -0
- package/dist/types.gen.d.ts.map +1 -0
- package/dist/types.gen.js +3 -0
- package/dist/types.gen.js.map +1 -0
- package/package.json +49 -0
|
@@ -0,0 +1,2701 @@
|
|
|
1
|
+
export type ClientOptions = {
|
|
2
|
+
baseUrl: "https://data.waldo.fyi" | (string & {});
|
|
3
|
+
};
|
|
4
|
+
export type TeamFlagRow = {
|
|
5
|
+
name: string;
|
|
6
|
+
enabled: boolean;
|
|
7
|
+
updatedAt: string;
|
|
8
|
+
};
|
|
9
|
+
export type AdminTeamRow = {
|
|
10
|
+
teamId: number;
|
|
11
|
+
name: string;
|
|
12
|
+
slug: string;
|
|
13
|
+
billable: boolean;
|
|
14
|
+
createdAt: string;
|
|
15
|
+
updatedAt: string;
|
|
16
|
+
teamMemberCount: number;
|
|
17
|
+
agentCount: number;
|
|
18
|
+
creditsUsed: number | null;
|
|
19
|
+
creditsLimit: number | null;
|
|
20
|
+
creditsAvailable: number | null;
|
|
21
|
+
subscriptionName: string | null;
|
|
22
|
+
subscriptionStatus: string | null;
|
|
23
|
+
availableTokens: number;
|
|
24
|
+
redeemedTokens: number;
|
|
25
|
+
totalTokens: number;
|
|
26
|
+
};
|
|
27
|
+
export type AccountUsage = {
|
|
28
|
+
period: {
|
|
29
|
+
start: string;
|
|
30
|
+
end: string;
|
|
31
|
+
};
|
|
32
|
+
total_calls: number;
|
|
33
|
+
by_domain: Array<{
|
|
34
|
+
domain: string;
|
|
35
|
+
calls: number;
|
|
36
|
+
}>;
|
|
37
|
+
};
|
|
38
|
+
export type AccountBalance = {
|
|
39
|
+
/**
|
|
40
|
+
* Credits remaining in the current period.
|
|
41
|
+
*/
|
|
42
|
+
balance: number;
|
|
43
|
+
used: number;
|
|
44
|
+
limit: number;
|
|
45
|
+
plan: string | null;
|
|
46
|
+
status: string | null;
|
|
47
|
+
period: {
|
|
48
|
+
start: string | null;
|
|
49
|
+
end: string | null;
|
|
50
|
+
days_remaining: number | null;
|
|
51
|
+
};
|
|
52
|
+
};
|
|
53
|
+
export type AccountProfile = {
|
|
54
|
+
account_id: string;
|
|
55
|
+
email: string | null;
|
|
56
|
+
entities: {
|
|
57
|
+
brands: number;
|
|
58
|
+
categories: number;
|
|
59
|
+
audiences: number;
|
|
60
|
+
};
|
|
61
|
+
requests_this_month: number;
|
|
62
|
+
};
|
|
63
|
+
export type SearchResult = {
|
|
64
|
+
id: string;
|
|
65
|
+
brand_id: string | null;
|
|
66
|
+
brand_name: string | null;
|
|
67
|
+
platform: string;
|
|
68
|
+
ownership: string;
|
|
69
|
+
text: string | null;
|
|
70
|
+
url: string | null;
|
|
71
|
+
posted_at: string | null;
|
|
72
|
+
fetched_at: string;
|
|
73
|
+
source_type: string | null;
|
|
74
|
+
sentiment_polarity: string | null;
|
|
75
|
+
rank: number;
|
|
76
|
+
};
|
|
77
|
+
export type RedditSubredditDetails = {
|
|
78
|
+
id: string;
|
|
79
|
+
name: string;
|
|
80
|
+
prefixedName: string;
|
|
81
|
+
title?: string;
|
|
82
|
+
description?: string;
|
|
83
|
+
publicDescriptionText?: string;
|
|
84
|
+
subscribersCount?: number;
|
|
85
|
+
activeCount?: number;
|
|
86
|
+
createdAt?: string;
|
|
87
|
+
type?: string;
|
|
88
|
+
path?: string;
|
|
89
|
+
isNsfw?: boolean;
|
|
90
|
+
wikiPageStatus?: string;
|
|
91
|
+
wikiEditMode?: string;
|
|
92
|
+
icon?: string | null;
|
|
93
|
+
banner?: string | null;
|
|
94
|
+
taxonomyTopics?: Array<{
|
|
95
|
+
id: string;
|
|
96
|
+
displayName: string;
|
|
97
|
+
displayCopy: string;
|
|
98
|
+
}>;
|
|
99
|
+
};
|
|
100
|
+
export type RedditComment = {
|
|
101
|
+
id: string;
|
|
102
|
+
name: string;
|
|
103
|
+
createdAt: string;
|
|
104
|
+
contentPreview: string;
|
|
105
|
+
upvote: number;
|
|
106
|
+
postInfo: {
|
|
107
|
+
id: string;
|
|
108
|
+
title: string;
|
|
109
|
+
type: string;
|
|
110
|
+
prefixedName: string;
|
|
111
|
+
};
|
|
112
|
+
};
|
|
113
|
+
export type NormalizedPost = {
|
|
114
|
+
type: "post";
|
|
115
|
+
/**
|
|
116
|
+
* Opaque post token — pass to /v1/posts/{post_id} to enrich.
|
|
117
|
+
*/
|
|
118
|
+
post_id: string;
|
|
119
|
+
platform: {
|
|
120
|
+
source: string;
|
|
121
|
+
name: string;
|
|
122
|
+
id: string;
|
|
123
|
+
url?: string;
|
|
124
|
+
};
|
|
125
|
+
publishedAt?: string;
|
|
126
|
+
content: {
|
|
127
|
+
title?: string;
|
|
128
|
+
text?: string;
|
|
129
|
+
author: {
|
|
130
|
+
id: string;
|
|
131
|
+
username: string;
|
|
132
|
+
name?: string;
|
|
133
|
+
profileUrl?: string;
|
|
134
|
+
profilePicture?: string;
|
|
135
|
+
};
|
|
136
|
+
media?: Array<{
|
|
137
|
+
type: "image" | "video";
|
|
138
|
+
url: string;
|
|
139
|
+
thumbnail?: string;
|
|
140
|
+
}>;
|
|
141
|
+
metrics?: {
|
|
142
|
+
likes?: number;
|
|
143
|
+
comments?: number;
|
|
144
|
+
shares?: number;
|
|
145
|
+
views?: number;
|
|
146
|
+
saves?: number;
|
|
147
|
+
};
|
|
148
|
+
};
|
|
149
|
+
};
|
|
150
|
+
export type MentionsSummary = {
|
|
151
|
+
brand_id: string;
|
|
152
|
+
total_mentions: number;
|
|
153
|
+
mentions_per_day: number;
|
|
154
|
+
by_source: Array<{
|
|
155
|
+
source_type: "SOCIAL" | "NEWS";
|
|
156
|
+
count: number;
|
|
157
|
+
}>;
|
|
158
|
+
/**
|
|
159
|
+
* Polarity buckets over the window. `count` is the row count per bucket; `percentage` is the share of labeled mentions in that bucket (0–100, one decimal). Rows with NULL sentiment (not yet analyzed) are excluded — bucket counts sum to the labeled total, not total_mentions. When no rows are labeled in the window, all percentages are 0.
|
|
160
|
+
*/
|
|
161
|
+
sentiment_distribution: {
|
|
162
|
+
positive: {
|
|
163
|
+
count: number;
|
|
164
|
+
percentage: number;
|
|
165
|
+
};
|
|
166
|
+
neutral: {
|
|
167
|
+
count: number;
|
|
168
|
+
percentage: number;
|
|
169
|
+
};
|
|
170
|
+
negative: {
|
|
171
|
+
count: number;
|
|
172
|
+
percentage: number;
|
|
173
|
+
};
|
|
174
|
+
mixed: {
|
|
175
|
+
count: number;
|
|
176
|
+
percentage: number;
|
|
177
|
+
};
|
|
178
|
+
};
|
|
179
|
+
period: {
|
|
180
|
+
start: string;
|
|
181
|
+
end: string;
|
|
182
|
+
};
|
|
183
|
+
};
|
|
184
|
+
export type Mention = {
|
|
185
|
+
id: string;
|
|
186
|
+
brand_id: string;
|
|
187
|
+
/**
|
|
188
|
+
* Source category derived from the platform: SOCIAL for social platforms, NEWS for web articles.
|
|
189
|
+
*/
|
|
190
|
+
source_type: "SOCIAL" | "NEWS" | null;
|
|
191
|
+
source_platform: string | null;
|
|
192
|
+
/**
|
|
193
|
+
* Same shape as owned-media post authors
|
|
194
|
+
*/
|
|
195
|
+
author: {
|
|
196
|
+
handle: string | null;
|
|
197
|
+
name: string | null;
|
|
198
|
+
};
|
|
199
|
+
text: string | null;
|
|
200
|
+
url: string | null;
|
|
201
|
+
/**
|
|
202
|
+
* Polarity label written by the brand-post analyzer. Null on rows not yet analyzed (existing mentions collected before sentiment classification was wired stay null until re-analyzed).
|
|
203
|
+
*/
|
|
204
|
+
sentiment_polarity: "POSITIVE" | "NEGATIVE" | "NEUTRAL" | "MIXED" | null;
|
|
205
|
+
/**
|
|
206
|
+
* Intensity bucket paired with sentiment_polarity; null until analyzed.
|
|
207
|
+
*/
|
|
208
|
+
sentiment_intensity: "LOW" | "MEDIUM" | "HIGH" | null;
|
|
209
|
+
posted_at: string | null;
|
|
210
|
+
fetched_at: string;
|
|
211
|
+
/**
|
|
212
|
+
* First-seen-in-Waldo timestamp (alias of fetched_at — the column the post was inserted with).
|
|
213
|
+
*/
|
|
214
|
+
discovered_at: string;
|
|
215
|
+
};
|
|
216
|
+
export type PaidMediaSummary = {
|
|
217
|
+
brand_id: string;
|
|
218
|
+
total_ads: number;
|
|
219
|
+
active_ads: number;
|
|
220
|
+
/**
|
|
221
|
+
* Ads whose start_date falls inside the summary window.
|
|
222
|
+
*/
|
|
223
|
+
new_ads_in_period: number;
|
|
224
|
+
/**
|
|
225
|
+
* new_ads_in_period divided by days in the window.
|
|
226
|
+
*/
|
|
227
|
+
avg_new_ads_per_day: number;
|
|
228
|
+
/**
|
|
229
|
+
* Mean run length (end_date − start_date) in days over ads with both dates. Null when no ad in the window has both dates.
|
|
230
|
+
*/
|
|
231
|
+
avg_days_running: number | null;
|
|
232
|
+
/**
|
|
233
|
+
* Sum of estimated ad spend over the window. Null when no spend source is available (the absence of data, as distinct from a confirmed $0).
|
|
234
|
+
*/
|
|
235
|
+
estimated_total_spend: number | null;
|
|
236
|
+
by_platform: Array<{
|
|
237
|
+
platform: string;
|
|
238
|
+
ads: number;
|
|
239
|
+
/**
|
|
240
|
+
* Alias of `ads` — prefer this name; `ads` is retained for backward compatibility.
|
|
241
|
+
*/
|
|
242
|
+
ad_count: number;
|
|
243
|
+
active: number;
|
|
244
|
+
/**
|
|
245
|
+
* Estimated spend for this platform. Null when no spend source is available.
|
|
246
|
+
*/
|
|
247
|
+
estimated_spend: number | null;
|
|
248
|
+
}>;
|
|
249
|
+
period: {
|
|
250
|
+
start: string;
|
|
251
|
+
end: string;
|
|
252
|
+
};
|
|
253
|
+
};
|
|
254
|
+
export type AdLandingPage = {
|
|
255
|
+
ad_id: string;
|
|
256
|
+
/**
|
|
257
|
+
* Normalized destination URL the ad clicks through to (click-tracking params stripped). Null only when the ad carried no landing-page URL.
|
|
258
|
+
*/
|
|
259
|
+
url: string | null;
|
|
260
|
+
/**
|
|
261
|
+
* Public Waldo file URL for the full-page screenshot. Null when no capture was taken (see skip_reason).
|
|
262
|
+
*/
|
|
263
|
+
screenshot_url: string | null;
|
|
264
|
+
/**
|
|
265
|
+
* When the screenshot was captured (ISO 8601). Null on skip.
|
|
266
|
+
*/
|
|
267
|
+
captured_at: string | null;
|
|
268
|
+
/**
|
|
269
|
+
* Why no screenshot was taken — NO_URL (ad had no destination), UNRESOLVED_MACRO (URL carried literal {{...}} macros), APP_STORE (app-install link), or HOMEPAGE (bare advertiser homepage, not a campaign LP). Null on a real capture.
|
|
270
|
+
*/
|
|
271
|
+
skip_reason: "NO_URL" | "UNRESOLVED_MACRO" | "APP_STORE" | "HOMEPAGE" | null;
|
|
272
|
+
};
|
|
273
|
+
export type Ad = {
|
|
274
|
+
ad_id: string;
|
|
275
|
+
brand_id: string;
|
|
276
|
+
platform: string;
|
|
277
|
+
title: string | null;
|
|
278
|
+
body: string | null;
|
|
279
|
+
media_urls: Array<string> | null;
|
|
280
|
+
targeting: {
|
|
281
|
+
[key: string]: unknown;
|
|
282
|
+
};
|
|
283
|
+
/**
|
|
284
|
+
* CTA captured verbatim from the ad platform at ingest (the platform's own button text/type/URL), as opposed to the analyzer-derived `cta`/`cta_text`. Null when the platform provides none (Google ads, LinkedIn text/InMail ads).
|
|
285
|
+
*/
|
|
286
|
+
source_cta: {
|
|
287
|
+
text?: string;
|
|
288
|
+
type?: string;
|
|
289
|
+
url?: string;
|
|
290
|
+
} | null;
|
|
291
|
+
/**
|
|
292
|
+
* Analyzer-derived CTA type. Null on rows not yet analyzed or with no CTA.
|
|
293
|
+
*/
|
|
294
|
+
cta: "shop_now" | "learn_more" | "sign_up" | "download" | "watch_more" | "contact" | "subscribe" | "book" | "install" | "other" | null;
|
|
295
|
+
/**
|
|
296
|
+
* Analyzer-derived literal CTA button/link label.
|
|
297
|
+
*/
|
|
298
|
+
cta_text: string | null;
|
|
299
|
+
/**
|
|
300
|
+
* Text burned into the creative itself (overlays, end-cards, price/button labels), transcribed verbatim in reading order — distinct from `title`/`body` (the platform caption/headline). Null for text-only ads with no media pass, and on rows not yet analyzed.
|
|
301
|
+
*/
|
|
302
|
+
on_screen_text: string | null;
|
|
303
|
+
promotion: AdPromotion;
|
|
304
|
+
currency: string;
|
|
305
|
+
status: string;
|
|
306
|
+
start_date: string | null;
|
|
307
|
+
end_date: string | null;
|
|
308
|
+
/**
|
|
309
|
+
* Ad destination URL. Sourced from the platform CTA URL (source_cta.url) — populated for Meta ads that carry one; null for Google/LinkedIn until the collector captures a dedicated landing-page URL.
|
|
310
|
+
*/
|
|
311
|
+
landing_page_url: string | null;
|
|
312
|
+
/**
|
|
313
|
+
* Days the ad has been running: today − start_date while live, frozen at end_date once it has passed. Null until start_date is populated.
|
|
314
|
+
*/
|
|
315
|
+
days_running: number | null;
|
|
316
|
+
region: string | null;
|
|
317
|
+
/**
|
|
318
|
+
* Video duration in seconds for video creatives, read at collection time via a container-level media probe. Null for image-only ads, when the probe failed, or on rows collected before the probe was wired.
|
|
319
|
+
*/
|
|
320
|
+
length_seconds: number | null;
|
|
321
|
+
analysis: AdAnalysis;
|
|
322
|
+
fetched_at: string;
|
|
323
|
+
};
|
|
324
|
+
/**
|
|
325
|
+
* Analyzer enrichment (tone, target aspect, entities, audiences, etc.). Null on rows that have not yet been analyzed.
|
|
326
|
+
*/
|
|
327
|
+
export type AdAnalysis = {
|
|
328
|
+
tone: "aspirational" | "defensive" | "comedic" | "urgent" | "educational" | "celebratory" | "promotional" | "informational" | "emotional" | null;
|
|
329
|
+
target_aspect: string | null;
|
|
330
|
+
hook: string | null;
|
|
331
|
+
angle: string | null;
|
|
332
|
+
offers: Array<AdAnalysisOffer>;
|
|
333
|
+
topic_tags: Array<string>;
|
|
334
|
+
entities: Array<AdAnalysisEntity>;
|
|
335
|
+
brands: Array<string>;
|
|
336
|
+
audiences: Array<string>;
|
|
337
|
+
industries: Array<string>;
|
|
338
|
+
analyzed_at: string | null;
|
|
339
|
+
} | null;
|
|
340
|
+
export type AdAnalysisEntity = {
|
|
341
|
+
type: string;
|
|
342
|
+
value: string;
|
|
343
|
+
};
|
|
344
|
+
export type AdAnalysisOffer = {
|
|
345
|
+
type: string;
|
|
346
|
+
value?: string;
|
|
347
|
+
};
|
|
348
|
+
/**
|
|
349
|
+
* Structured offer extracted by the analyzer. Null when the ad carries no promotion or has not been analyzed yet.
|
|
350
|
+
*/
|
|
351
|
+
export type AdPromotion = {
|
|
352
|
+
is_promotional: boolean;
|
|
353
|
+
/**
|
|
354
|
+
* Open string (not an enum). Common values: percentage_off, dollar_off, free_trial, free_shipping, free_gift, bogo, bundle, clearance, sitewide_sale. May be null even when is_promotional is true.
|
|
355
|
+
*/
|
|
356
|
+
discount_type: string | null;
|
|
357
|
+
discount_value: string | null;
|
|
358
|
+
discount_unit: string | null;
|
|
359
|
+
discount_text: string | null;
|
|
360
|
+
promo_code: string | null;
|
|
361
|
+
conditions: string | null;
|
|
362
|
+
expires_at: string | null;
|
|
363
|
+
confidence: number | null;
|
|
364
|
+
} | null;
|
|
365
|
+
export type OwnedMediaSummary = {
|
|
366
|
+
brand_id: string;
|
|
367
|
+
total_posts: number;
|
|
368
|
+
avg_posts_per_day: number;
|
|
369
|
+
by_platform: Array<{
|
|
370
|
+
platform: string;
|
|
371
|
+
posts: number;
|
|
372
|
+
avg_posts_per_day: number;
|
|
373
|
+
}>;
|
|
374
|
+
top_themes: Array<{
|
|
375
|
+
theme: string;
|
|
376
|
+
frequency: number;
|
|
377
|
+
}>;
|
|
378
|
+
sentiment_distribution: {
|
|
379
|
+
positive: number;
|
|
380
|
+
neutral: number;
|
|
381
|
+
negative: number;
|
|
382
|
+
mixed: number;
|
|
383
|
+
};
|
|
384
|
+
period: {
|
|
385
|
+
start: string;
|
|
386
|
+
end: string;
|
|
387
|
+
};
|
|
388
|
+
};
|
|
389
|
+
export type PostDetail = Post & {
|
|
390
|
+
metadata: PostMetadata;
|
|
391
|
+
};
|
|
392
|
+
export type PostMetadata = {
|
|
393
|
+
/**
|
|
394
|
+
* Bucket derived from media_urls extensions: image, video, mixed, or null when there are no URLs or none can be classified.
|
|
395
|
+
*/
|
|
396
|
+
media_type: "image" | "video" | "mixed" | null;
|
|
397
|
+
/**
|
|
398
|
+
* ISO 639-1 code detected from `text` via a deterministic library. Null for empty, too-short, or undetermined input.
|
|
399
|
+
*/
|
|
400
|
+
language: string | null;
|
|
401
|
+
/**
|
|
402
|
+
* ASR/caption transcript of the post's video or audio. Null when the post has no transcribable media or transcription hasn't run.
|
|
403
|
+
*/
|
|
404
|
+
transcript: string | null;
|
|
405
|
+
/**
|
|
406
|
+
* Co-authors the brand co-published this post with (the `author` stays the brand); sourced from Instagram `coauthor_producers`. Present only on collaborative posts — its absence is the not-a-collab signal (no boolean is stored). An `invited_collaborators` sibling may be added later.
|
|
407
|
+
*/
|
|
408
|
+
collaborators?: Array<{
|
|
409
|
+
handle: string | null;
|
|
410
|
+
name: string | null;
|
|
411
|
+
}>;
|
|
412
|
+
};
|
|
413
|
+
export type Post = {
|
|
414
|
+
id: string;
|
|
415
|
+
brand_id: string | null;
|
|
416
|
+
platform: string;
|
|
417
|
+
posted_at: string | null;
|
|
418
|
+
text: string | null;
|
|
419
|
+
media_urls: Array<string> | null;
|
|
420
|
+
media_count: number;
|
|
421
|
+
/**
|
|
422
|
+
* Derived from post text when the collected column is empty; values are tag names without the # prefix
|
|
423
|
+
*/
|
|
424
|
+
hashtags: Array<string>;
|
|
425
|
+
url: string | null;
|
|
426
|
+
/**
|
|
427
|
+
* Market region of the source profile that published the post (e.g. "us"). Null on rows collected before region stamping. Filter the list endpoint with ?region=.
|
|
428
|
+
*/
|
|
429
|
+
region: string | null;
|
|
430
|
+
author: {
|
|
431
|
+
handle: string | null;
|
|
432
|
+
name: string | null;
|
|
433
|
+
};
|
|
434
|
+
/**
|
|
435
|
+
* Like/reaction count. Populated on every platform except YouTube; null where unavailable.
|
|
436
|
+
*/
|
|
437
|
+
likes: number | null;
|
|
438
|
+
/**
|
|
439
|
+
* Comment/reply count. Same platform coverage as likes.
|
|
440
|
+
*/
|
|
441
|
+
comments: number | null;
|
|
442
|
+
/**
|
|
443
|
+
* Share/repost count. Populated on TikTok/Facebook/LinkedIn/Twitter; null on Instagram and YouTube.
|
|
444
|
+
*/
|
|
445
|
+
shares: number | null;
|
|
446
|
+
/**
|
|
447
|
+
* Video/post view count. Populated on TikTok/YouTube/Twitter and most Instagram; null on Facebook and LinkedIn.
|
|
448
|
+
*/
|
|
449
|
+
views: number | null;
|
|
450
|
+
analysis: PostAnalysis;
|
|
451
|
+
fetched_at: string;
|
|
452
|
+
};
|
|
453
|
+
/**
|
|
454
|
+
* Analyzer enrichment (tone, topic tags, entities, audiences, etc.). Null on rows that have not yet been analyzed.
|
|
455
|
+
*/
|
|
456
|
+
export type PostAnalysis = {
|
|
457
|
+
tone: "aspirational" | "authoritative" | "celebratory" | "comedic" | "defensive" | "educational" | "informational" | "promotional" | "urgent" | null;
|
|
458
|
+
hook: string | null;
|
|
459
|
+
angle: string | null;
|
|
460
|
+
topic_tags: Array<string>;
|
|
461
|
+
entities: Array<PostAnalysisEntity>;
|
|
462
|
+
brands: Array<string>;
|
|
463
|
+
audiences: Array<string>;
|
|
464
|
+
industries: Array<string>;
|
|
465
|
+
analyzed_at: string | null;
|
|
466
|
+
} | null;
|
|
467
|
+
export type PostAnalysisEntity = {
|
|
468
|
+
type: string;
|
|
469
|
+
value: string;
|
|
470
|
+
};
|
|
471
|
+
export type Platform = {
|
|
472
|
+
platform: string;
|
|
473
|
+
handle: string | null;
|
|
474
|
+
url: string | null;
|
|
475
|
+
followers: number | null;
|
|
476
|
+
follower_growth_30d: number | null;
|
|
477
|
+
avg_engagement_rate: number | null;
|
|
478
|
+
last_synced: string | null;
|
|
479
|
+
/**
|
|
480
|
+
* Whether the daily collectors pull ads/posts from this identity. Disabled identities stay registered for reference but are skipped during collection.
|
|
481
|
+
*/
|
|
482
|
+
collection_enabled: boolean;
|
|
483
|
+
};
|
|
484
|
+
export type Timeseries = {
|
|
485
|
+
brand_id: string;
|
|
486
|
+
metric: string;
|
|
487
|
+
grain: string;
|
|
488
|
+
series: Array<{
|
|
489
|
+
period_start: string;
|
|
490
|
+
value: number;
|
|
491
|
+
}>;
|
|
492
|
+
deltas_vs_prior_window: {
|
|
493
|
+
total: number | null;
|
|
494
|
+
avg_per_period: number;
|
|
495
|
+
};
|
|
496
|
+
};
|
|
497
|
+
export type BrandDetail = BrandSummary & {
|
|
498
|
+
founded: number | null;
|
|
499
|
+
headquarters: string | null;
|
|
500
|
+
logo_url: string | null;
|
|
501
|
+
};
|
|
502
|
+
export type BrandSummary = {
|
|
503
|
+
id: string;
|
|
504
|
+
name: string;
|
|
505
|
+
/**
|
|
506
|
+
* Flat list of taxonomy nodes this brand is associated with. Subcategories carry parent_id/parent_name; top-level categories have null parent refs.
|
|
507
|
+
*/
|
|
508
|
+
categories: Array<BrandCategory>;
|
|
509
|
+
description: string | null;
|
|
510
|
+
audience_ids: Array<string>;
|
|
511
|
+
platform_count: number;
|
|
512
|
+
primary_region: string;
|
|
513
|
+
regions_tracked: Array<string>;
|
|
514
|
+
};
|
|
515
|
+
export type BrandCategory = {
|
|
516
|
+
id: string;
|
|
517
|
+
name: string;
|
|
518
|
+
parent_id: string | null;
|
|
519
|
+
parent_name: string | null;
|
|
520
|
+
};
|
|
521
|
+
export type BrandComparison = {
|
|
522
|
+
brand_id: string;
|
|
523
|
+
name: string;
|
|
524
|
+
owned_posts_30d: number;
|
|
525
|
+
mention_volume_30d: number;
|
|
526
|
+
avg_sentiment_30d: number | null;
|
|
527
|
+
ad_count_30d: number;
|
|
528
|
+
};
|
|
529
|
+
export type Meta = {
|
|
530
|
+
request_id: string;
|
|
531
|
+
/**
|
|
532
|
+
* Total number of items matching the request, across all pages. Omitted when no total is available for the endpoint — absence means unknown, not zero.
|
|
533
|
+
*/
|
|
534
|
+
total?: number;
|
|
535
|
+
/**
|
|
536
|
+
* ceil(total / limit). Present exactly when total is; paginate via next_cursor regardless.
|
|
537
|
+
*/
|
|
538
|
+
total_pages?: number;
|
|
539
|
+
next_cursor?: string | null;
|
|
540
|
+
};
|
|
541
|
+
export type UsageResponse = {
|
|
542
|
+
team: {
|
|
543
|
+
id: number;
|
|
544
|
+
name: string | null;
|
|
545
|
+
};
|
|
546
|
+
/**
|
|
547
|
+
* Per-bucket consumption state, keyed by bucket name (`VENDOR`, `DEFAULT`).
|
|
548
|
+
*/
|
|
549
|
+
buckets: {
|
|
550
|
+
[key: string]: RateLimitBucketState;
|
|
551
|
+
};
|
|
552
|
+
/**
|
|
553
|
+
* Which operations consume from each bucket. Derived live from the registry.
|
|
554
|
+
*/
|
|
555
|
+
operationsByBucket: {
|
|
556
|
+
[key: string]: Array<string>;
|
|
557
|
+
};
|
|
558
|
+
};
|
|
559
|
+
export type RateLimitBucketState = {
|
|
560
|
+
/**
|
|
561
|
+
* Bucket state. `UNTHROTTLED`: bucket disabled, no cap applies. `UNAVAILABLE`: Redis-backed state could not be read (fail-open in effect — back off as if rate-limited). `AVAILABLE`: live state, `remaining` and `resetMs` are numbers.
|
|
562
|
+
*/
|
|
563
|
+
status: "UNTHROTTLED" | "UNAVAILABLE" | "AVAILABLE";
|
|
564
|
+
requestsPerSecond: number;
|
|
565
|
+
burstAllowance: number;
|
|
566
|
+
enabled: boolean;
|
|
567
|
+
/**
|
|
568
|
+
* Tokens remaining in the bucket. `null` only when `status` is `UNTHROTTLED` or `UNAVAILABLE`.
|
|
569
|
+
*/
|
|
570
|
+
remaining: number | null;
|
|
571
|
+
/**
|
|
572
|
+
* Milliseconds until the bucket fully refills. `null` only when `status` is `UNTHROTTLED` or `UNAVAILABLE`.
|
|
573
|
+
*/
|
|
574
|
+
resetMs: number | null;
|
|
575
|
+
};
|
|
576
|
+
export type ApiKeyCreated = {
|
|
577
|
+
/**
|
|
578
|
+
* The raw key. Returned in plaintext exactly once — store it securely; it cannot be retrieved later.
|
|
579
|
+
*/
|
|
580
|
+
apiKey: string;
|
|
581
|
+
keyId: string;
|
|
582
|
+
expiresAt: string | null;
|
|
583
|
+
};
|
|
584
|
+
export type ApiKeyMetadata = {
|
|
585
|
+
apiKeyId: string;
|
|
586
|
+
/**
|
|
587
|
+
* User who minted the key (keys are team-scoped; this is provenance)
|
|
588
|
+
*/
|
|
589
|
+
userId: number;
|
|
590
|
+
name: string;
|
|
591
|
+
/**
|
|
592
|
+
* Minting provenance (MCP, REST, or OAUTH) — all key types authenticate identically.
|
|
593
|
+
*/
|
|
594
|
+
type: string;
|
|
595
|
+
createdAt: string;
|
|
596
|
+
expiresAt: string | null;
|
|
597
|
+
lastUsedAt: string | null;
|
|
598
|
+
revokedAt: string | null;
|
|
599
|
+
status: "ACTIVE" | "REVOKED" | "EXPIRED";
|
|
600
|
+
};
|
|
601
|
+
/**
|
|
602
|
+
* Execution detail. Summary form (default) carries status, final output, and key metadata; pass full=true for the complete row including the messages array.
|
|
603
|
+
*/
|
|
604
|
+
export type ExecutionDetail = {
|
|
605
|
+
[key: string]: unknown;
|
|
606
|
+
};
|
|
607
|
+
export type ExecutionSummary = {
|
|
608
|
+
agentExecutionId: string;
|
|
609
|
+
agentId: string | null;
|
|
610
|
+
status: string;
|
|
611
|
+
spaceId: string | null;
|
|
612
|
+
totalTokens: number | null;
|
|
613
|
+
creditsUsed: number | null;
|
|
614
|
+
createdAt: string;
|
|
615
|
+
updatedAt: string;
|
|
616
|
+
};
|
|
617
|
+
/**
|
|
618
|
+
* Full run row, including variables and linkage IDs (spaceId, scheduledSequenceId, conversationId, etc.).
|
|
619
|
+
*/
|
|
620
|
+
export type RunDetail = {
|
|
621
|
+
[key: string]: unknown;
|
|
622
|
+
};
|
|
623
|
+
export type RunSummary = {
|
|
624
|
+
runId: string;
|
|
625
|
+
type: string;
|
|
626
|
+
status: string;
|
|
627
|
+
agentId: string | null;
|
|
628
|
+
sequenceId: string | null;
|
|
629
|
+
startedAt: string;
|
|
630
|
+
completedAt: string | null;
|
|
631
|
+
failureReason: string | null;
|
|
632
|
+
};
|
|
633
|
+
export type Error = {
|
|
634
|
+
error: string;
|
|
635
|
+
};
|
|
636
|
+
export type CollectionWindow = {
|
|
637
|
+
windowKey: string;
|
|
638
|
+
period: "DAILY" | "WEEKLY";
|
|
639
|
+
/**
|
|
640
|
+
* Random per-window fraction in [0, 1) added to every schedule's golden-ratio offset, decorrelating windows from each other. Fixed at creation.
|
|
641
|
+
*/
|
|
642
|
+
phase: number;
|
|
643
|
+
/**
|
|
644
|
+
* High-water mark for fresh index allocations
|
|
645
|
+
*/
|
|
646
|
+
nextIndex: number;
|
|
647
|
+
/**
|
|
648
|
+
* Released indices awaiting reuse
|
|
649
|
+
*/
|
|
650
|
+
freeIndices: Array<number>;
|
|
651
|
+
createdAt: string;
|
|
652
|
+
updatedAt: string;
|
|
653
|
+
};
|
|
654
|
+
export type GetV1CollectionWindowsData = {
|
|
655
|
+
body?: never;
|
|
656
|
+
path?: never;
|
|
657
|
+
query?: never;
|
|
658
|
+
url: "/v1/collection-windows";
|
|
659
|
+
};
|
|
660
|
+
export type GetV1CollectionWindowsErrors = {
|
|
661
|
+
/**
|
|
662
|
+
* Admin required
|
|
663
|
+
*/
|
|
664
|
+
403: Error;
|
|
665
|
+
};
|
|
666
|
+
export type GetV1CollectionWindowsError = GetV1CollectionWindowsErrors[keyof GetV1CollectionWindowsErrors];
|
|
667
|
+
export type GetV1CollectionWindowsResponses = {
|
|
668
|
+
/**
|
|
669
|
+
* All collection windows
|
|
670
|
+
*/
|
|
671
|
+
200: {
|
|
672
|
+
data: Array<CollectionWindow>;
|
|
673
|
+
};
|
|
674
|
+
};
|
|
675
|
+
export type GetV1CollectionWindowsResponse = GetV1CollectionWindowsResponses[keyof GetV1CollectionWindowsResponses];
|
|
676
|
+
export type PostV1CollectionWindowsData = {
|
|
677
|
+
body?: {
|
|
678
|
+
/**
|
|
679
|
+
* Opaque UPPERCASE_SNAKE namespace, max 64 chars. Never parsed for cadence.
|
|
680
|
+
*/
|
|
681
|
+
windowKey: string;
|
|
682
|
+
/**
|
|
683
|
+
* Span the window's golden-ratio offsets spread over.
|
|
684
|
+
*/
|
|
685
|
+
period: "DAILY" | "WEEKLY";
|
|
686
|
+
};
|
|
687
|
+
path?: never;
|
|
688
|
+
query?: never;
|
|
689
|
+
url: "/v1/collection-windows";
|
|
690
|
+
};
|
|
691
|
+
export type PostV1CollectionWindowsErrors = {
|
|
692
|
+
/**
|
|
693
|
+
* Invalid key or period
|
|
694
|
+
*/
|
|
695
|
+
400: Error;
|
|
696
|
+
/**
|
|
697
|
+
* Admin required
|
|
698
|
+
*/
|
|
699
|
+
403: Error;
|
|
700
|
+
};
|
|
701
|
+
export type PostV1CollectionWindowsError = PostV1CollectionWindowsErrors[keyof PostV1CollectionWindowsErrors];
|
|
702
|
+
export type PostV1CollectionWindowsResponses = {
|
|
703
|
+
/**
|
|
704
|
+
* Window created (or already existed)
|
|
705
|
+
*/
|
|
706
|
+
201: {
|
|
707
|
+
data: CollectionWindow;
|
|
708
|
+
created: boolean;
|
|
709
|
+
};
|
|
710
|
+
};
|
|
711
|
+
export type PostV1CollectionWindowsResponse = PostV1CollectionWindowsResponses[keyof PostV1CollectionWindowsResponses];
|
|
712
|
+
export type RunListData = {
|
|
713
|
+
body?: never;
|
|
714
|
+
path?: never;
|
|
715
|
+
query?: {
|
|
716
|
+
/**
|
|
717
|
+
* Filter by run status
|
|
718
|
+
*/
|
|
719
|
+
status?: "RUNNING" | "COMPLETED" | "FAILED";
|
|
720
|
+
/**
|
|
721
|
+
* Filter by agent ID
|
|
722
|
+
*/
|
|
723
|
+
agentId?: string;
|
|
724
|
+
/**
|
|
725
|
+
* Filter by sequence ID
|
|
726
|
+
*/
|
|
727
|
+
sequenceId?: string;
|
|
728
|
+
/**
|
|
729
|
+
* Max results (default 50)
|
|
730
|
+
*/
|
|
731
|
+
limit?: number;
|
|
732
|
+
/**
|
|
733
|
+
* Offset for pagination
|
|
734
|
+
*/
|
|
735
|
+
offset?: number | null;
|
|
736
|
+
};
|
|
737
|
+
url: "/v1/runs";
|
|
738
|
+
};
|
|
739
|
+
export type RunListResponses = {
|
|
740
|
+
/**
|
|
741
|
+
* Runs, most recent first
|
|
742
|
+
*/
|
|
743
|
+
200: {
|
|
744
|
+
data: Array<RunSummary>;
|
|
745
|
+
};
|
|
746
|
+
};
|
|
747
|
+
export type RunListResponse = RunListResponses[keyof RunListResponses];
|
|
748
|
+
export type RunGetData = {
|
|
749
|
+
body?: never;
|
|
750
|
+
path: {
|
|
751
|
+
runId: string;
|
|
752
|
+
};
|
|
753
|
+
query?: never;
|
|
754
|
+
url: "/v1/runs/{runId}";
|
|
755
|
+
};
|
|
756
|
+
export type RunGetErrors = {
|
|
757
|
+
/**
|
|
758
|
+
* Run not found
|
|
759
|
+
*/
|
|
760
|
+
404: Error;
|
|
761
|
+
};
|
|
762
|
+
export type RunGetError = RunGetErrors[keyof RunGetErrors];
|
|
763
|
+
export type RunGetResponses = {
|
|
764
|
+
/**
|
|
765
|
+
* Run details
|
|
766
|
+
*/
|
|
767
|
+
200: {
|
|
768
|
+
data: RunDetail;
|
|
769
|
+
};
|
|
770
|
+
};
|
|
771
|
+
export type RunGetResponse = RunGetResponses[keyof RunGetResponses];
|
|
772
|
+
export type ExecutionListData = {
|
|
773
|
+
body?: never;
|
|
774
|
+
path?: never;
|
|
775
|
+
query?: {
|
|
776
|
+
/**
|
|
777
|
+
* Filter by run ID
|
|
778
|
+
*/
|
|
779
|
+
runId?: string;
|
|
780
|
+
/**
|
|
781
|
+
* Filter by agent ID
|
|
782
|
+
*/
|
|
783
|
+
agentId?: string;
|
|
784
|
+
/**
|
|
785
|
+
* Filter by space ID
|
|
786
|
+
*/
|
|
787
|
+
spaceId?: string;
|
|
788
|
+
/**
|
|
789
|
+
* Filter by execution status
|
|
790
|
+
*/
|
|
791
|
+
status?: string;
|
|
792
|
+
/**
|
|
793
|
+
* Include child executions (default false)
|
|
794
|
+
*/
|
|
795
|
+
includeChildren?: "0" | "1" | "true" | "false";
|
|
796
|
+
/**
|
|
797
|
+
* Max results (default 20)
|
|
798
|
+
*/
|
|
799
|
+
limit?: number;
|
|
800
|
+
/**
|
|
801
|
+
* Pagination token from a previous response
|
|
802
|
+
*/
|
|
803
|
+
cursor?: string;
|
|
804
|
+
};
|
|
805
|
+
url: "/v1/executions";
|
|
806
|
+
};
|
|
807
|
+
export type ExecutionListResponses = {
|
|
808
|
+
/**
|
|
809
|
+
* Executions
|
|
810
|
+
*/
|
|
811
|
+
200: {
|
|
812
|
+
data: Array<ExecutionSummary>;
|
|
813
|
+
/**
|
|
814
|
+
* Pass as `cursor` query param to fetch the next page. Null when no more results.
|
|
815
|
+
*/
|
|
816
|
+
nextCursor: string | null;
|
|
817
|
+
/**
|
|
818
|
+
* Whether additional pages of results exist beyond this response.
|
|
819
|
+
*/
|
|
820
|
+
hasMore: boolean;
|
|
821
|
+
};
|
|
822
|
+
};
|
|
823
|
+
export type ExecutionListResponse = ExecutionListResponses[keyof ExecutionListResponses];
|
|
824
|
+
export type ExecutionGetData = {
|
|
825
|
+
body?: never;
|
|
826
|
+
path: {
|
|
827
|
+
executionId: string;
|
|
828
|
+
};
|
|
829
|
+
query?: {
|
|
830
|
+
/**
|
|
831
|
+
* Return the complete record including messages (default false)
|
|
832
|
+
*/
|
|
833
|
+
full?: "0" | "1" | "true" | "false";
|
|
834
|
+
};
|
|
835
|
+
url: "/v1/executions/{executionId}";
|
|
836
|
+
};
|
|
837
|
+
export type ExecutionGetErrors = {
|
|
838
|
+
/**
|
|
839
|
+
* Execution not found
|
|
840
|
+
*/
|
|
841
|
+
404: Error;
|
|
842
|
+
};
|
|
843
|
+
export type ExecutionGetError = ExecutionGetErrors[keyof ExecutionGetErrors];
|
|
844
|
+
export type ExecutionGetResponses = {
|
|
845
|
+
/**
|
|
846
|
+
* Execution details
|
|
847
|
+
*/
|
|
848
|
+
200: {
|
|
849
|
+
data: ExecutionDetail;
|
|
850
|
+
};
|
|
851
|
+
};
|
|
852
|
+
export type ExecutionGetResponse = ExecutionGetResponses[keyof ExecutionGetResponses];
|
|
853
|
+
export type ApiKeyListData = {
|
|
854
|
+
body?: never;
|
|
855
|
+
path?: never;
|
|
856
|
+
query?: {
|
|
857
|
+
/**
|
|
858
|
+
* Filter by minting provenance
|
|
859
|
+
*/
|
|
860
|
+
type?: "MCP" | "REST" | "OAUTH";
|
|
861
|
+
};
|
|
862
|
+
url: "/v1/api-keys";
|
|
863
|
+
};
|
|
864
|
+
export type ApiKeyListErrors = {
|
|
865
|
+
/**
|
|
866
|
+
* No workspace selected
|
|
867
|
+
*/
|
|
868
|
+
400: Error;
|
|
869
|
+
};
|
|
870
|
+
export type ApiKeyListError = ApiKeyListErrors[keyof ApiKeyListErrors];
|
|
871
|
+
export type ApiKeyListResponses = {
|
|
872
|
+
/**
|
|
873
|
+
* API keys for the current workspace
|
|
874
|
+
*/
|
|
875
|
+
200: {
|
|
876
|
+
data: Array<ApiKeyMetadata>;
|
|
877
|
+
};
|
|
878
|
+
};
|
|
879
|
+
export type ApiKeyListResponse = ApiKeyListResponses[keyof ApiKeyListResponses];
|
|
880
|
+
export type ApiKeyCreateData = {
|
|
881
|
+
body?: {
|
|
882
|
+
/**
|
|
883
|
+
* Human-readable label for the key
|
|
884
|
+
*/
|
|
885
|
+
name: string;
|
|
886
|
+
/**
|
|
887
|
+
* Optional TTL in days (max 36500); omit for a non-expiring key
|
|
888
|
+
*/
|
|
889
|
+
expiresInDays?: number;
|
|
890
|
+
};
|
|
891
|
+
path?: never;
|
|
892
|
+
query?: never;
|
|
893
|
+
url: "/v1/api-keys";
|
|
894
|
+
};
|
|
895
|
+
export type ApiKeyCreateErrors = {
|
|
896
|
+
/**
|
|
897
|
+
* No workspace selected or invalid input
|
|
898
|
+
*/
|
|
899
|
+
400: Error;
|
|
900
|
+
};
|
|
901
|
+
export type ApiKeyCreateError = ApiKeyCreateErrors[keyof ApiKeyCreateErrors];
|
|
902
|
+
export type ApiKeyCreateResponses = {
|
|
903
|
+
/**
|
|
904
|
+
* Key created — the raw key appears only in this response
|
|
905
|
+
*/
|
|
906
|
+
200: {
|
|
907
|
+
data: ApiKeyCreated;
|
|
908
|
+
};
|
|
909
|
+
};
|
|
910
|
+
export type ApiKeyCreateResponse = ApiKeyCreateResponses[keyof ApiKeyCreateResponses];
|
|
911
|
+
export type ApiKeyRevokeData = {
|
|
912
|
+
body?: never;
|
|
913
|
+
path: {
|
|
914
|
+
/**
|
|
915
|
+
* The apiKeyId to revoke (from the list endpoint)
|
|
916
|
+
*/
|
|
917
|
+
keyId: string;
|
|
918
|
+
};
|
|
919
|
+
query?: never;
|
|
920
|
+
url: "/v1/api-keys/{keyId}";
|
|
921
|
+
};
|
|
922
|
+
export type ApiKeyRevokeErrors = {
|
|
923
|
+
/**
|
|
924
|
+
* No workspace selected
|
|
925
|
+
*/
|
|
926
|
+
400: Error;
|
|
927
|
+
/**
|
|
928
|
+
* Key not found in the current workspace
|
|
929
|
+
*/
|
|
930
|
+
404: Error;
|
|
931
|
+
};
|
|
932
|
+
export type ApiKeyRevokeError = ApiKeyRevokeErrors[keyof ApiKeyRevokeErrors];
|
|
933
|
+
export type ApiKeyRevokeResponses = {
|
|
934
|
+
/**
|
|
935
|
+
* Key revoked
|
|
936
|
+
*/
|
|
937
|
+
200: {
|
|
938
|
+
data: ApiKeyMetadata;
|
|
939
|
+
};
|
|
940
|
+
};
|
|
941
|
+
export type ApiKeyRevokeResponse = ApiKeyRevokeResponses[keyof ApiKeyRevokeResponses];
|
|
942
|
+
export type GetUsageData = {
|
|
943
|
+
body?: never;
|
|
944
|
+
path?: never;
|
|
945
|
+
query?: never;
|
|
946
|
+
url: "/v1/usage";
|
|
947
|
+
};
|
|
948
|
+
export type GetUsageResponses = {
|
|
949
|
+
/**
|
|
950
|
+
* Per-bucket consumption + operations-by-bucket
|
|
951
|
+
*/
|
|
952
|
+
200: UsageResponse;
|
|
953
|
+
};
|
|
954
|
+
export type GetUsageResponse = GetUsageResponses[keyof GetUsageResponses];
|
|
955
|
+
export type BrandSearchData = {
|
|
956
|
+
body?: never;
|
|
957
|
+
path?: never;
|
|
958
|
+
query?: {
|
|
959
|
+
/**
|
|
960
|
+
* Search query — matches against brand name
|
|
961
|
+
*/
|
|
962
|
+
q?: string;
|
|
963
|
+
/**
|
|
964
|
+
* Filter to brands in this category or subcategory (brand_taxonomy id). Matches the category and its direct subcategories.
|
|
965
|
+
*/
|
|
966
|
+
category_id?: string;
|
|
967
|
+
/**
|
|
968
|
+
* Maximum number of results to return (1–100)
|
|
969
|
+
*/
|
|
970
|
+
limit?: number;
|
|
971
|
+
/**
|
|
972
|
+
* Cursor for pagination — pass meta.next_cursor from the previous response
|
|
973
|
+
*/
|
|
974
|
+
cursor?: string;
|
|
975
|
+
};
|
|
976
|
+
url: "/v1/brands/search";
|
|
977
|
+
};
|
|
978
|
+
export type BrandSearchResponses = {
|
|
979
|
+
/**
|
|
980
|
+
* Paginated list of brands
|
|
981
|
+
*/
|
|
982
|
+
200: {
|
|
983
|
+
data: Array<BrandSummary>;
|
|
984
|
+
meta: Meta;
|
|
985
|
+
};
|
|
986
|
+
};
|
|
987
|
+
export type BrandSearchResponse = BrandSearchResponses[keyof BrandSearchResponses];
|
|
988
|
+
export type BrandCompareData = {
|
|
989
|
+
body?: never;
|
|
990
|
+
path?: never;
|
|
991
|
+
query: {
|
|
992
|
+
/**
|
|
993
|
+
* Comma-separated brand UUIDs (max 5)
|
|
994
|
+
*/
|
|
995
|
+
brand_ids: string;
|
|
996
|
+
/**
|
|
997
|
+
* Time window for comparison. Defaults to 30d.
|
|
998
|
+
*/
|
|
999
|
+
window?: "7d" | "30d" | "90d";
|
|
1000
|
+
};
|
|
1001
|
+
url: "/v1/brands/compare";
|
|
1002
|
+
};
|
|
1003
|
+
export type BrandCompareErrors = {
|
|
1004
|
+
/**
|
|
1005
|
+
* Invalid request
|
|
1006
|
+
*/
|
|
1007
|
+
400: Error;
|
|
1008
|
+
};
|
|
1009
|
+
export type BrandCompareError = BrandCompareErrors[keyof BrandCompareErrors];
|
|
1010
|
+
export type BrandCompareResponses = {
|
|
1011
|
+
/**
|
|
1012
|
+
* Brand comparison results
|
|
1013
|
+
*/
|
|
1014
|
+
200: {
|
|
1015
|
+
data: {
|
|
1016
|
+
comparison: Array<BrandComparison>;
|
|
1017
|
+
period: {
|
|
1018
|
+
start: string;
|
|
1019
|
+
end: string;
|
|
1020
|
+
};
|
|
1021
|
+
};
|
|
1022
|
+
meta: Meta;
|
|
1023
|
+
};
|
|
1024
|
+
};
|
|
1025
|
+
export type BrandCompareResponse = BrandCompareResponses[keyof BrandCompareResponses];
|
|
1026
|
+
export type BrandGetData = {
|
|
1027
|
+
body?: never;
|
|
1028
|
+
path: {
|
|
1029
|
+
/**
|
|
1030
|
+
* Brand ID (UUID)
|
|
1031
|
+
*/
|
|
1032
|
+
brand_id: string;
|
|
1033
|
+
};
|
|
1034
|
+
query?: never;
|
|
1035
|
+
url: "/v1/brands/{brand_id}";
|
|
1036
|
+
};
|
|
1037
|
+
export type BrandGetErrors = {
|
|
1038
|
+
/**
|
|
1039
|
+
* Brand not found
|
|
1040
|
+
*/
|
|
1041
|
+
404: Error;
|
|
1042
|
+
};
|
|
1043
|
+
export type BrandGetError = BrandGetErrors[keyof BrandGetErrors];
|
|
1044
|
+
export type BrandGetResponses = {
|
|
1045
|
+
/**
|
|
1046
|
+
* Brand details
|
|
1047
|
+
*/
|
|
1048
|
+
200: {
|
|
1049
|
+
data: BrandDetail;
|
|
1050
|
+
meta: Meta;
|
|
1051
|
+
};
|
|
1052
|
+
};
|
|
1053
|
+
export type BrandGetResponse = BrandGetResponses[keyof BrandGetResponses];
|
|
1054
|
+
export type BrandTimeseriesData = {
|
|
1055
|
+
body?: never;
|
|
1056
|
+
path: {
|
|
1057
|
+
/**
|
|
1058
|
+
* Brand ID (UUID)
|
|
1059
|
+
*/
|
|
1060
|
+
brand_id: string;
|
|
1061
|
+
/**
|
|
1062
|
+
* Dataset to query: owned-media, paid-media, mentions, or all
|
|
1063
|
+
*/
|
|
1064
|
+
dataset: "owned-media" | "paid-media" | "mentions" | "all";
|
|
1065
|
+
};
|
|
1066
|
+
query: {
|
|
1067
|
+
/**
|
|
1068
|
+
* Metric to chart
|
|
1069
|
+
*/
|
|
1070
|
+
metric: "post_count" | "mention_volume" | "ad_count" | "avg_sentiment" | "net_sentiment" | "followers" | "follower_growth";
|
|
1071
|
+
/**
|
|
1072
|
+
* Time grain for bucketing
|
|
1073
|
+
*/
|
|
1074
|
+
grain: "day" | "week" | "month";
|
|
1075
|
+
/**
|
|
1076
|
+
* Lookback window: 30d, 90d, 26w, or 12m
|
|
1077
|
+
*/
|
|
1078
|
+
window: "30d" | "90d" | "26w" | "12m";
|
|
1079
|
+
/**
|
|
1080
|
+
* Filter/breakout by platform
|
|
1081
|
+
*/
|
|
1082
|
+
platform?: string;
|
|
1083
|
+
/**
|
|
1084
|
+
* Filter/breakout by region
|
|
1085
|
+
*/
|
|
1086
|
+
region?: string;
|
|
1087
|
+
};
|
|
1088
|
+
url: "/v1/brands/{brand_id}/{dataset}/timeseries";
|
|
1089
|
+
};
|
|
1090
|
+
export type BrandTimeseriesErrors = {
|
|
1091
|
+
/**
|
|
1092
|
+
* Brand not found
|
|
1093
|
+
*/
|
|
1094
|
+
404: Error;
|
|
1095
|
+
};
|
|
1096
|
+
export type BrandTimeseriesError = BrandTimeseriesErrors[keyof BrandTimeseriesErrors];
|
|
1097
|
+
export type BrandTimeseriesResponses = {
|
|
1098
|
+
/**
|
|
1099
|
+
* Timeseries data with deltas vs. prior window
|
|
1100
|
+
*/
|
|
1101
|
+
200: {
|
|
1102
|
+
data: Timeseries;
|
|
1103
|
+
meta: Meta;
|
|
1104
|
+
};
|
|
1105
|
+
};
|
|
1106
|
+
export type BrandTimeseriesResponse = BrandTimeseriesResponses[keyof BrandTimeseriesResponses];
|
|
1107
|
+
export type BrandPlatformsListData = {
|
|
1108
|
+
body?: never;
|
|
1109
|
+
path: {
|
|
1110
|
+
/**
|
|
1111
|
+
* Brand ID (UUID)
|
|
1112
|
+
*/
|
|
1113
|
+
brand_id: string;
|
|
1114
|
+
};
|
|
1115
|
+
query?: {
|
|
1116
|
+
/**
|
|
1117
|
+
* Include ad-library identity rows (meta_ads, google_ads, linkedin_ads). Off by default — these drive ad collection and aren't social presence.
|
|
1118
|
+
*/
|
|
1119
|
+
include_ad_library?: "0" | "1" | "true" | "false";
|
|
1120
|
+
};
|
|
1121
|
+
url: "/v1/brands/{brand_id}/platforms";
|
|
1122
|
+
};
|
|
1123
|
+
export type BrandPlatformsListErrors = {
|
|
1124
|
+
/**
|
|
1125
|
+
* Brand not found
|
|
1126
|
+
*/
|
|
1127
|
+
404: Error;
|
|
1128
|
+
};
|
|
1129
|
+
export type BrandPlatformsListError = BrandPlatformsListErrors[keyof BrandPlatformsListErrors];
|
|
1130
|
+
export type BrandPlatformsListResponses = {
|
|
1131
|
+
/**
|
|
1132
|
+
* List of platform accounts
|
|
1133
|
+
*/
|
|
1134
|
+
200: {
|
|
1135
|
+
data: Array<Platform>;
|
|
1136
|
+
meta: Meta;
|
|
1137
|
+
};
|
|
1138
|
+
};
|
|
1139
|
+
export type BrandPlatformsListResponse = BrandPlatformsListResponses[keyof BrandPlatformsListResponses];
|
|
1140
|
+
export type BrandPlatformsGetData = {
|
|
1141
|
+
body?: never;
|
|
1142
|
+
path: {
|
|
1143
|
+
/**
|
|
1144
|
+
* Brand ID (UUID)
|
|
1145
|
+
*/
|
|
1146
|
+
brand_id: string;
|
|
1147
|
+
/**
|
|
1148
|
+
* Platform name (e.g. instagram, tiktok, twitter)
|
|
1149
|
+
*/
|
|
1150
|
+
platform: string;
|
|
1151
|
+
};
|
|
1152
|
+
query?: {
|
|
1153
|
+
/**
|
|
1154
|
+
* Allow resolving ad-library identity rows (meta_ads, google_ads, linkedin_ads). Off by default — these 404 unless opted in.
|
|
1155
|
+
*/
|
|
1156
|
+
include_ad_library?: "0" | "1" | "true" | "false";
|
|
1157
|
+
};
|
|
1158
|
+
url: "/v1/brands/{brand_id}/platforms/{platform}";
|
|
1159
|
+
};
|
|
1160
|
+
export type BrandPlatformsGetErrors = {
|
|
1161
|
+
/**
|
|
1162
|
+
* Brand or platform not found
|
|
1163
|
+
*/
|
|
1164
|
+
404: Error;
|
|
1165
|
+
};
|
|
1166
|
+
export type BrandPlatformsGetError = BrandPlatformsGetErrors[keyof BrandPlatformsGetErrors];
|
|
1167
|
+
export type BrandPlatformsGetResponses = {
|
|
1168
|
+
/**
|
|
1169
|
+
* Platform account details
|
|
1170
|
+
*/
|
|
1171
|
+
200: {
|
|
1172
|
+
data: Platform;
|
|
1173
|
+
meta: Meta;
|
|
1174
|
+
};
|
|
1175
|
+
};
|
|
1176
|
+
export type BrandPlatformsGetResponse = BrandPlatformsGetResponses[keyof BrandPlatformsGetResponses];
|
|
1177
|
+
export type BrandOwnedMediaPostsListData = {
|
|
1178
|
+
body?: never;
|
|
1179
|
+
path: {
|
|
1180
|
+
/**
|
|
1181
|
+
* Brand ID (UUID)
|
|
1182
|
+
*/
|
|
1183
|
+
brand_id: string;
|
|
1184
|
+
};
|
|
1185
|
+
query?: {
|
|
1186
|
+
/**
|
|
1187
|
+
* Filter to a single platform (e.g. instagram, tiktok, twitter). Mutually exclusive with exclude_platform.
|
|
1188
|
+
*/
|
|
1189
|
+
platform?: string;
|
|
1190
|
+
/**
|
|
1191
|
+
* Exclude a single platform from the results (e.g. facebook). Mutually exclusive with platform.
|
|
1192
|
+
*/
|
|
1193
|
+
exclude_platform?: string;
|
|
1194
|
+
/**
|
|
1195
|
+
* Filter posts on or after this date (ISO 8601)
|
|
1196
|
+
*/
|
|
1197
|
+
start_date?: string;
|
|
1198
|
+
/**
|
|
1199
|
+
* Filter posts on or before this date (ISO 8601)
|
|
1200
|
+
*/
|
|
1201
|
+
end_date?: string;
|
|
1202
|
+
/**
|
|
1203
|
+
* Filter by region
|
|
1204
|
+
*/
|
|
1205
|
+
region?: string;
|
|
1206
|
+
/**
|
|
1207
|
+
* Order results by posted_at (default, recency) or a raw engagement metric: likes, comments, shares, or views. Posts missing the chosen metric sort last.
|
|
1208
|
+
*/
|
|
1209
|
+
sort?: "posted_at" | "likes" | "comments" | "shares" | "views";
|
|
1210
|
+
/**
|
|
1211
|
+
* Sort direction: desc (default) or asc.
|
|
1212
|
+
*/
|
|
1213
|
+
order?: "asc" | "desc";
|
|
1214
|
+
/**
|
|
1215
|
+
* Maximum number of results to return (1–100)
|
|
1216
|
+
*/
|
|
1217
|
+
limit?: number;
|
|
1218
|
+
/**
|
|
1219
|
+
* Cursor for pagination — pass meta.next_cursor from the previous response
|
|
1220
|
+
*/
|
|
1221
|
+
cursor?: string;
|
|
1222
|
+
};
|
|
1223
|
+
url: "/v1/brands/{brand_id}/owned-media/posts";
|
|
1224
|
+
};
|
|
1225
|
+
export type BrandOwnedMediaPostsListErrors = {
|
|
1226
|
+
/**
|
|
1227
|
+
* Brand not found
|
|
1228
|
+
*/
|
|
1229
|
+
404: Error;
|
|
1230
|
+
};
|
|
1231
|
+
export type BrandOwnedMediaPostsListError = BrandOwnedMediaPostsListErrors[keyof BrandOwnedMediaPostsListErrors];
|
|
1232
|
+
export type BrandOwnedMediaPostsListResponses = {
|
|
1233
|
+
/**
|
|
1234
|
+
* Paginated list of owned posts
|
|
1235
|
+
*/
|
|
1236
|
+
200: {
|
|
1237
|
+
data: Array<Post>;
|
|
1238
|
+
meta: Meta;
|
|
1239
|
+
};
|
|
1240
|
+
};
|
|
1241
|
+
export type BrandOwnedMediaPostsListResponse = BrandOwnedMediaPostsListResponses[keyof BrandOwnedMediaPostsListResponses];
|
|
1242
|
+
export type BrandOwnedMediaPostsGetData = {
|
|
1243
|
+
body?: never;
|
|
1244
|
+
path: {
|
|
1245
|
+
/**
|
|
1246
|
+
* Brand ID (UUID)
|
|
1247
|
+
*/
|
|
1248
|
+
brand_id: string;
|
|
1249
|
+
/**
|
|
1250
|
+
* Post ID (UUID)
|
|
1251
|
+
*/
|
|
1252
|
+
post_id: string;
|
|
1253
|
+
};
|
|
1254
|
+
query?: never;
|
|
1255
|
+
url: "/v1/brands/{brand_id}/owned-media/posts/{post_id}";
|
|
1256
|
+
};
|
|
1257
|
+
export type BrandOwnedMediaPostsGetErrors = {
|
|
1258
|
+
/**
|
|
1259
|
+
* Brand or post not found
|
|
1260
|
+
*/
|
|
1261
|
+
404: Error;
|
|
1262
|
+
};
|
|
1263
|
+
export type BrandOwnedMediaPostsGetError = BrandOwnedMediaPostsGetErrors[keyof BrandOwnedMediaPostsGetErrors];
|
|
1264
|
+
export type BrandOwnedMediaPostsGetResponses = {
|
|
1265
|
+
/**
|
|
1266
|
+
* Post details
|
|
1267
|
+
*/
|
|
1268
|
+
200: {
|
|
1269
|
+
data: PostDetail;
|
|
1270
|
+
meta: Meta;
|
|
1271
|
+
};
|
|
1272
|
+
};
|
|
1273
|
+
export type BrandOwnedMediaPostsGetResponse = BrandOwnedMediaPostsGetResponses[keyof BrandOwnedMediaPostsGetResponses];
|
|
1274
|
+
export type BrandOwnedMediaSummaryData = {
|
|
1275
|
+
body?: never;
|
|
1276
|
+
path: {
|
|
1277
|
+
/**
|
|
1278
|
+
* Brand ID (UUID)
|
|
1279
|
+
*/
|
|
1280
|
+
brand_id: string;
|
|
1281
|
+
};
|
|
1282
|
+
query?: {
|
|
1283
|
+
/**
|
|
1284
|
+
* Start of date range (ISO 8601). Defaults to 30 days ago.
|
|
1285
|
+
*/
|
|
1286
|
+
start_date?: string;
|
|
1287
|
+
/**
|
|
1288
|
+
* End of date range (ISO 8601). Defaults to now.
|
|
1289
|
+
*/
|
|
1290
|
+
end_date?: string;
|
|
1291
|
+
/**
|
|
1292
|
+
* Filter by region (e.g. "us"). Matches the list endpoint's region filter so the summary totals stay consistent with a region-scoped list.
|
|
1293
|
+
*/
|
|
1294
|
+
region?: string;
|
|
1295
|
+
};
|
|
1296
|
+
url: "/v1/brands/{brand_id}/owned-media/summary";
|
|
1297
|
+
};
|
|
1298
|
+
export type BrandOwnedMediaSummaryErrors = {
|
|
1299
|
+
/**
|
|
1300
|
+
* Brand not found
|
|
1301
|
+
*/
|
|
1302
|
+
404: Error;
|
|
1303
|
+
};
|
|
1304
|
+
export type BrandOwnedMediaSummaryError = BrandOwnedMediaSummaryErrors[keyof BrandOwnedMediaSummaryErrors];
|
|
1305
|
+
export type BrandOwnedMediaSummaryResponses = {
|
|
1306
|
+
/**
|
|
1307
|
+
* Owned media summary
|
|
1308
|
+
*/
|
|
1309
|
+
200: {
|
|
1310
|
+
data: OwnedMediaSummary;
|
|
1311
|
+
meta: Meta;
|
|
1312
|
+
};
|
|
1313
|
+
};
|
|
1314
|
+
export type BrandOwnedMediaSummaryResponse = BrandOwnedMediaSummaryResponses[keyof BrandOwnedMediaSummaryResponses];
|
|
1315
|
+
export type BrandPaidMediaAdsListData = {
|
|
1316
|
+
body?: never;
|
|
1317
|
+
path: {
|
|
1318
|
+
/**
|
|
1319
|
+
* Brand ID (UUID)
|
|
1320
|
+
*/
|
|
1321
|
+
brand_id: string;
|
|
1322
|
+
};
|
|
1323
|
+
query?: {
|
|
1324
|
+
/**
|
|
1325
|
+
* Filter by ad platform (e.g. meta, google, tiktok)
|
|
1326
|
+
*/
|
|
1327
|
+
platform?: string;
|
|
1328
|
+
/**
|
|
1329
|
+
* Filter by ad status (ACTIVE or ENDED)
|
|
1330
|
+
*/
|
|
1331
|
+
status?: "ACTIVE" | "ENDED";
|
|
1332
|
+
/**
|
|
1333
|
+
* Maximum number of results to return (1–100)
|
|
1334
|
+
*/
|
|
1335
|
+
limit?: number;
|
|
1336
|
+
/**
|
|
1337
|
+
* Cursor for pagination — pass meta.next_cursor from the previous response
|
|
1338
|
+
*/
|
|
1339
|
+
cursor?: string;
|
|
1340
|
+
};
|
|
1341
|
+
url: "/v1/brands/{brand_id}/paid-media/ads";
|
|
1342
|
+
};
|
|
1343
|
+
export type BrandPaidMediaAdsListErrors = {
|
|
1344
|
+
/**
|
|
1345
|
+
* Brand not found
|
|
1346
|
+
*/
|
|
1347
|
+
404: Error;
|
|
1348
|
+
};
|
|
1349
|
+
export type BrandPaidMediaAdsListError = BrandPaidMediaAdsListErrors[keyof BrandPaidMediaAdsListErrors];
|
|
1350
|
+
export type BrandPaidMediaAdsListResponses = {
|
|
1351
|
+
/**
|
|
1352
|
+
* Paginated list of ads
|
|
1353
|
+
*/
|
|
1354
|
+
200: {
|
|
1355
|
+
data: Array<Ad>;
|
|
1356
|
+
meta: Meta;
|
|
1357
|
+
};
|
|
1358
|
+
};
|
|
1359
|
+
export type BrandPaidMediaAdsListResponse = BrandPaidMediaAdsListResponses[keyof BrandPaidMediaAdsListResponses];
|
|
1360
|
+
export type BrandPaidMediaAdsGetData = {
|
|
1361
|
+
body?: never;
|
|
1362
|
+
path: {
|
|
1363
|
+
/**
|
|
1364
|
+
* Brand ID (UUID)
|
|
1365
|
+
*/
|
|
1366
|
+
brand_id: string;
|
|
1367
|
+
/**
|
|
1368
|
+
* Ad ID (UUID)
|
|
1369
|
+
*/
|
|
1370
|
+
ad_id: string;
|
|
1371
|
+
};
|
|
1372
|
+
query?: never;
|
|
1373
|
+
url: "/v1/brands/{brand_id}/paid-media/ads/{ad_id}";
|
|
1374
|
+
};
|
|
1375
|
+
export type BrandPaidMediaAdsGetErrors = {
|
|
1376
|
+
/**
|
|
1377
|
+
* Brand or ad not found
|
|
1378
|
+
*/
|
|
1379
|
+
404: Error;
|
|
1380
|
+
};
|
|
1381
|
+
export type BrandPaidMediaAdsGetError = BrandPaidMediaAdsGetErrors[keyof BrandPaidMediaAdsGetErrors];
|
|
1382
|
+
export type BrandPaidMediaAdsGetResponses = {
|
|
1383
|
+
/**
|
|
1384
|
+
* Ad details
|
|
1385
|
+
*/
|
|
1386
|
+
200: {
|
|
1387
|
+
data: Ad;
|
|
1388
|
+
meta: Meta;
|
|
1389
|
+
};
|
|
1390
|
+
};
|
|
1391
|
+
export type BrandPaidMediaAdsGetResponse = BrandPaidMediaAdsGetResponses[keyof BrandPaidMediaAdsGetResponses];
|
|
1392
|
+
export type BrandPaidMediaAdsLandingPageGetData = {
|
|
1393
|
+
body?: never;
|
|
1394
|
+
path: {
|
|
1395
|
+
/**
|
|
1396
|
+
* Brand ID (UUID)
|
|
1397
|
+
*/
|
|
1398
|
+
brand_id: string;
|
|
1399
|
+
/**
|
|
1400
|
+
* Ad ID (UUID)
|
|
1401
|
+
*/
|
|
1402
|
+
ad_id: string;
|
|
1403
|
+
};
|
|
1404
|
+
query?: never;
|
|
1405
|
+
url: "/v1/brands/{brand_id}/paid-media/ads/{ad_id}/landing-page";
|
|
1406
|
+
};
|
|
1407
|
+
export type BrandPaidMediaAdsLandingPageGetErrors = {
|
|
1408
|
+
/**
|
|
1409
|
+
* Brand or ad not found
|
|
1410
|
+
*/
|
|
1411
|
+
404: Error;
|
|
1412
|
+
};
|
|
1413
|
+
export type BrandPaidMediaAdsLandingPageGetError = BrandPaidMediaAdsLandingPageGetErrors[keyof BrandPaidMediaAdsLandingPageGetErrors];
|
|
1414
|
+
export type BrandPaidMediaAdsLandingPageGetResponses = {
|
|
1415
|
+
/**
|
|
1416
|
+
* Landing-page snapshot (captured or skipped)
|
|
1417
|
+
*/
|
|
1418
|
+
200: {
|
|
1419
|
+
data: AdLandingPage;
|
|
1420
|
+
meta: Meta;
|
|
1421
|
+
};
|
|
1422
|
+
};
|
|
1423
|
+
export type BrandPaidMediaAdsLandingPageGetResponse = BrandPaidMediaAdsLandingPageGetResponses[keyof BrandPaidMediaAdsLandingPageGetResponses];
|
|
1424
|
+
export type BrandPaidMediaSummaryData = {
|
|
1425
|
+
body?: never;
|
|
1426
|
+
path: {
|
|
1427
|
+
/**
|
|
1428
|
+
* Brand ID (UUID)
|
|
1429
|
+
*/
|
|
1430
|
+
brand_id: string;
|
|
1431
|
+
};
|
|
1432
|
+
query?: {
|
|
1433
|
+
/**
|
|
1434
|
+
* Start of date range (ISO 8601). Defaults to 30 days ago.
|
|
1435
|
+
*/
|
|
1436
|
+
start_date?: string;
|
|
1437
|
+
/**
|
|
1438
|
+
* End of date range (ISO 8601). Defaults to now.
|
|
1439
|
+
*/
|
|
1440
|
+
end_date?: string;
|
|
1441
|
+
};
|
|
1442
|
+
url: "/v1/brands/{brand_id}/paid-media/summary";
|
|
1443
|
+
};
|
|
1444
|
+
export type BrandPaidMediaSummaryErrors = {
|
|
1445
|
+
/**
|
|
1446
|
+
* Brand not found
|
|
1447
|
+
*/
|
|
1448
|
+
404: Error;
|
|
1449
|
+
};
|
|
1450
|
+
export type BrandPaidMediaSummaryError = BrandPaidMediaSummaryErrors[keyof BrandPaidMediaSummaryErrors];
|
|
1451
|
+
export type BrandPaidMediaSummaryResponses = {
|
|
1452
|
+
/**
|
|
1453
|
+
* Paid media summary
|
|
1454
|
+
*/
|
|
1455
|
+
200: {
|
|
1456
|
+
data: PaidMediaSummary;
|
|
1457
|
+
meta: Meta;
|
|
1458
|
+
};
|
|
1459
|
+
};
|
|
1460
|
+
export type BrandPaidMediaSummaryResponse = BrandPaidMediaSummaryResponses[keyof BrandPaidMediaSummaryResponses];
|
|
1461
|
+
export type BrandMentionsListData = {
|
|
1462
|
+
body?: never;
|
|
1463
|
+
path: {
|
|
1464
|
+
/**
|
|
1465
|
+
* Brand ID (UUID)
|
|
1466
|
+
*/
|
|
1467
|
+
brand_id: string;
|
|
1468
|
+
};
|
|
1469
|
+
query?: {
|
|
1470
|
+
/**
|
|
1471
|
+
* Filter by source category: SOCIAL (social platforms) or NEWS (web articles)
|
|
1472
|
+
*/
|
|
1473
|
+
source_type?: "SOCIAL" | "NEWS";
|
|
1474
|
+
/**
|
|
1475
|
+
* Filter by platform (e.g. instagram, twitter, reddit)
|
|
1476
|
+
*/
|
|
1477
|
+
platform?: string;
|
|
1478
|
+
/**
|
|
1479
|
+
* Filter mentions on or after this date (ISO 8601)
|
|
1480
|
+
*/
|
|
1481
|
+
start_date?: string;
|
|
1482
|
+
/**
|
|
1483
|
+
* Filter mentions on or before this date (ISO 8601)
|
|
1484
|
+
*/
|
|
1485
|
+
end_date?: string;
|
|
1486
|
+
/**
|
|
1487
|
+
* Filter by region
|
|
1488
|
+
*/
|
|
1489
|
+
region?: string;
|
|
1490
|
+
/**
|
|
1491
|
+
* Maximum number of results to return (1–100)
|
|
1492
|
+
*/
|
|
1493
|
+
limit?: number;
|
|
1494
|
+
/**
|
|
1495
|
+
* Cursor for pagination — pass meta.next_cursor from the previous response
|
|
1496
|
+
*/
|
|
1497
|
+
cursor?: string;
|
|
1498
|
+
};
|
|
1499
|
+
url: "/v1/brands/{brand_id}/mentions";
|
|
1500
|
+
};
|
|
1501
|
+
export type BrandMentionsListErrors = {
|
|
1502
|
+
/**
|
|
1503
|
+
* Brand not found
|
|
1504
|
+
*/
|
|
1505
|
+
404: Error;
|
|
1506
|
+
};
|
|
1507
|
+
export type BrandMentionsListError = BrandMentionsListErrors[keyof BrandMentionsListErrors];
|
|
1508
|
+
export type BrandMentionsListResponses = {
|
|
1509
|
+
/**
|
|
1510
|
+
* Paginated list of mentions
|
|
1511
|
+
*/
|
|
1512
|
+
200: {
|
|
1513
|
+
data: Array<Mention>;
|
|
1514
|
+
meta: Meta;
|
|
1515
|
+
};
|
|
1516
|
+
};
|
|
1517
|
+
export type BrandMentionsListResponse = BrandMentionsListResponses[keyof BrandMentionsListResponses];
|
|
1518
|
+
export type BrandMentionsSummaryData = {
|
|
1519
|
+
body?: never;
|
|
1520
|
+
path: {
|
|
1521
|
+
/**
|
|
1522
|
+
* Brand ID (UUID)
|
|
1523
|
+
*/
|
|
1524
|
+
brand_id: string;
|
|
1525
|
+
};
|
|
1526
|
+
query?: {
|
|
1527
|
+
/**
|
|
1528
|
+
* Start of date range (ISO 8601). Defaults to 30 days ago.
|
|
1529
|
+
*/
|
|
1530
|
+
start_date?: string;
|
|
1531
|
+
/**
|
|
1532
|
+
* End of date range (ISO 8601). Defaults to now.
|
|
1533
|
+
*/
|
|
1534
|
+
end_date?: string;
|
|
1535
|
+
};
|
|
1536
|
+
url: "/v1/brands/{brand_id}/mentions/summary";
|
|
1537
|
+
};
|
|
1538
|
+
export type BrandMentionsSummaryErrors = {
|
|
1539
|
+
/**
|
|
1540
|
+
* Brand not found
|
|
1541
|
+
*/
|
|
1542
|
+
404: Error;
|
|
1543
|
+
};
|
|
1544
|
+
export type BrandMentionsSummaryError = BrandMentionsSummaryErrors[keyof BrandMentionsSummaryErrors];
|
|
1545
|
+
export type BrandMentionsSummaryResponses = {
|
|
1546
|
+
/**
|
|
1547
|
+
* Mentions summary
|
|
1548
|
+
*/
|
|
1549
|
+
200: {
|
|
1550
|
+
data: MentionsSummary;
|
|
1551
|
+
meta: Meta;
|
|
1552
|
+
};
|
|
1553
|
+
};
|
|
1554
|
+
export type BrandMentionsSummaryResponse = BrandMentionsSummaryResponses[keyof BrandMentionsSummaryResponses];
|
|
1555
|
+
export type BrandMentionsGetData = {
|
|
1556
|
+
body?: never;
|
|
1557
|
+
path: {
|
|
1558
|
+
/**
|
|
1559
|
+
* Brand ID (UUID)
|
|
1560
|
+
*/
|
|
1561
|
+
brand_id: string;
|
|
1562
|
+
/**
|
|
1563
|
+
* Mention ID (UUID — corresponds to the underlying post_id)
|
|
1564
|
+
*/
|
|
1565
|
+
mention_id: string;
|
|
1566
|
+
};
|
|
1567
|
+
query?: never;
|
|
1568
|
+
url: "/v1/brands/{brand_id}/mentions/{mention_id}";
|
|
1569
|
+
};
|
|
1570
|
+
export type BrandMentionsGetErrors = {
|
|
1571
|
+
/**
|
|
1572
|
+
* Brand or mention not found
|
|
1573
|
+
*/
|
|
1574
|
+
404: Error;
|
|
1575
|
+
};
|
|
1576
|
+
export type BrandMentionsGetError = BrandMentionsGetErrors[keyof BrandMentionsGetErrors];
|
|
1577
|
+
export type BrandMentionsGetResponses = {
|
|
1578
|
+
/**
|
|
1579
|
+
* Mention details
|
|
1580
|
+
*/
|
|
1581
|
+
200: {
|
|
1582
|
+
data: Mention;
|
|
1583
|
+
meta: Meta;
|
|
1584
|
+
};
|
|
1585
|
+
};
|
|
1586
|
+
export type BrandMentionsGetResponse = BrandMentionsGetResponses[keyof BrandMentionsGetResponses];
|
|
1587
|
+
export type DiscoverPostsData = {
|
|
1588
|
+
body?: never;
|
|
1589
|
+
path?: never;
|
|
1590
|
+
query: {
|
|
1591
|
+
/**
|
|
1592
|
+
* Social platform to search
|
|
1593
|
+
*/
|
|
1594
|
+
platform: "x" | "instagram" | "tiktok" | "linkedin" | "facebook" | "youtube" | "reddit";
|
|
1595
|
+
/**
|
|
1596
|
+
* Search query
|
|
1597
|
+
*/
|
|
1598
|
+
q: string;
|
|
1599
|
+
/**
|
|
1600
|
+
* Pagination cursor for next page
|
|
1601
|
+
*/
|
|
1602
|
+
cursor?: string;
|
|
1603
|
+
};
|
|
1604
|
+
url: "/v1/discover/posts";
|
|
1605
|
+
};
|
|
1606
|
+
export type DiscoverPostsResponses = {
|
|
1607
|
+
/**
|
|
1608
|
+
* Search results
|
|
1609
|
+
*/
|
|
1610
|
+
200: {
|
|
1611
|
+
data?: unknown;
|
|
1612
|
+
meta: Meta;
|
|
1613
|
+
};
|
|
1614
|
+
};
|
|
1615
|
+
export type DiscoverPostsResponse = DiscoverPostsResponses[keyof DiscoverPostsResponses];
|
|
1616
|
+
export type DiscoverPosts2Data = {
|
|
1617
|
+
body?: never;
|
|
1618
|
+
path?: never;
|
|
1619
|
+
query: {
|
|
1620
|
+
/**
|
|
1621
|
+
* Search query
|
|
1622
|
+
*/
|
|
1623
|
+
q: string;
|
|
1624
|
+
/**
|
|
1625
|
+
* Pagination cursor for next page
|
|
1626
|
+
*/
|
|
1627
|
+
cursor?: string;
|
|
1628
|
+
/**
|
|
1629
|
+
* Sort order: `top` (most relevant) or `latest` (most recent).
|
|
1630
|
+
*/
|
|
1631
|
+
sort?: "top" | "latest";
|
|
1632
|
+
};
|
|
1633
|
+
url: "/v1/discover/x/posts";
|
|
1634
|
+
};
|
|
1635
|
+
export type DiscoverPosts2Responses = {
|
|
1636
|
+
/**
|
|
1637
|
+
* Search results
|
|
1638
|
+
*/
|
|
1639
|
+
200: {
|
|
1640
|
+
data?: unknown;
|
|
1641
|
+
meta: Meta;
|
|
1642
|
+
};
|
|
1643
|
+
};
|
|
1644
|
+
export type DiscoverPosts2Response = DiscoverPosts2Responses[keyof DiscoverPosts2Responses];
|
|
1645
|
+
export type DiscoverPosts3Data = {
|
|
1646
|
+
body?: never;
|
|
1647
|
+
path?: never;
|
|
1648
|
+
query: {
|
|
1649
|
+
/**
|
|
1650
|
+
* Search query
|
|
1651
|
+
*/
|
|
1652
|
+
q: string;
|
|
1653
|
+
/**
|
|
1654
|
+
* Pagination cursor for next page
|
|
1655
|
+
*/
|
|
1656
|
+
cursor?: string;
|
|
1657
|
+
/**
|
|
1658
|
+
* Sort order: `relevance`, `likes` (most liked), or `date` (most recent).
|
|
1659
|
+
*/
|
|
1660
|
+
sort?: "relevance" | "likes" | "date";
|
|
1661
|
+
/**
|
|
1662
|
+
* Time window — posts from the last day, week, month, or year.
|
|
1663
|
+
*/
|
|
1664
|
+
since?: "day" | "week" | "month" | "year";
|
|
1665
|
+
/**
|
|
1666
|
+
* ISO-2 country code to adjust results by region (e.g. `US`).
|
|
1667
|
+
*/
|
|
1668
|
+
country?: string;
|
|
1669
|
+
};
|
|
1670
|
+
url: "/v1/discover/tiktok/posts";
|
|
1671
|
+
};
|
|
1672
|
+
export type DiscoverPosts3Responses = {
|
|
1673
|
+
/**
|
|
1674
|
+
* Search results
|
|
1675
|
+
*/
|
|
1676
|
+
200: {
|
|
1677
|
+
data?: unknown;
|
|
1678
|
+
meta: Meta;
|
|
1679
|
+
};
|
|
1680
|
+
};
|
|
1681
|
+
export type DiscoverPosts3Response = DiscoverPosts3Responses[keyof DiscoverPosts3Responses];
|
|
1682
|
+
export type DiscoverPosts4Data = {
|
|
1683
|
+
body?: never;
|
|
1684
|
+
path?: never;
|
|
1685
|
+
query: {
|
|
1686
|
+
/**
|
|
1687
|
+
* Search query
|
|
1688
|
+
*/
|
|
1689
|
+
q: string;
|
|
1690
|
+
/**
|
|
1691
|
+
* Pagination cursor for next page
|
|
1692
|
+
*/
|
|
1693
|
+
cursor?: string;
|
|
1694
|
+
/**
|
|
1695
|
+
* Sort order: relevance, hot, top, new, or comments.
|
|
1696
|
+
*/
|
|
1697
|
+
sort?: "relevance" | "hot" | "top" | "new" | "comments";
|
|
1698
|
+
/**
|
|
1699
|
+
* Time window: hour, today, week, month, year, or all. Reddit requires it when `sort` is top, comments, or relevance.
|
|
1700
|
+
*/
|
|
1701
|
+
since?: "hour" | "today" | "week" | "month" | "year" | "all";
|
|
1702
|
+
};
|
|
1703
|
+
url: "/v1/discover/reddit/posts";
|
|
1704
|
+
};
|
|
1705
|
+
export type DiscoverPosts4Responses = {
|
|
1706
|
+
/**
|
|
1707
|
+
* Search results
|
|
1708
|
+
*/
|
|
1709
|
+
200: {
|
|
1710
|
+
data?: unknown;
|
|
1711
|
+
meta: Meta;
|
|
1712
|
+
};
|
|
1713
|
+
};
|
|
1714
|
+
export type DiscoverPosts4Response = DiscoverPosts4Responses[keyof DiscoverPosts4Responses];
|
|
1715
|
+
export type DiscoverPosts5Data = {
|
|
1716
|
+
body?: never;
|
|
1717
|
+
path?: never;
|
|
1718
|
+
query: {
|
|
1719
|
+
/**
|
|
1720
|
+
* Search query
|
|
1721
|
+
*/
|
|
1722
|
+
q: string;
|
|
1723
|
+
/**
|
|
1724
|
+
* Pagination cursor for next page
|
|
1725
|
+
*/
|
|
1726
|
+
cursor?: string;
|
|
1727
|
+
/**
|
|
1728
|
+
* Sort order: `top` (most relevant, default) or `latest` (most recent).
|
|
1729
|
+
*/
|
|
1730
|
+
sort?: "top" | "latest";
|
|
1731
|
+
/**
|
|
1732
|
+
* Time window: day, week, or month.
|
|
1733
|
+
*/
|
|
1734
|
+
since?: "day" | "week" | "month";
|
|
1735
|
+
};
|
|
1736
|
+
url: "/v1/discover/linkedin/posts";
|
|
1737
|
+
};
|
|
1738
|
+
export type DiscoverPosts5Responses = {
|
|
1739
|
+
/**
|
|
1740
|
+
* Search results
|
|
1741
|
+
*/
|
|
1742
|
+
200: {
|
|
1743
|
+
data?: unknown;
|
|
1744
|
+
meta: Meta;
|
|
1745
|
+
};
|
|
1746
|
+
};
|
|
1747
|
+
export type DiscoverPosts5Response = DiscoverPosts5Responses[keyof DiscoverPosts5Responses];
|
|
1748
|
+
export type DiscoverPosts6Data = {
|
|
1749
|
+
body?: never;
|
|
1750
|
+
path?: never;
|
|
1751
|
+
query: {
|
|
1752
|
+
/**
|
|
1753
|
+
* Search query
|
|
1754
|
+
*/
|
|
1755
|
+
q: string;
|
|
1756
|
+
/**
|
|
1757
|
+
* Pagination cursor for next page
|
|
1758
|
+
*/
|
|
1759
|
+
cursor?: string;
|
|
1760
|
+
/**
|
|
1761
|
+
* Sort order: `relevance` or `popularity` (by view count).
|
|
1762
|
+
*/
|
|
1763
|
+
sort?: "relevance" | "popularity";
|
|
1764
|
+
/**
|
|
1765
|
+
* Time window — videos from the last day, week, month, or year. Omit for all-time.
|
|
1766
|
+
*/
|
|
1767
|
+
since?: "day" | "week" | "month" | "year";
|
|
1768
|
+
};
|
|
1769
|
+
url: "/v1/discover/youtube/posts";
|
|
1770
|
+
};
|
|
1771
|
+
export type DiscoverPosts6Responses = {
|
|
1772
|
+
/**
|
|
1773
|
+
* Search results
|
|
1774
|
+
*/
|
|
1775
|
+
200: {
|
|
1776
|
+
data?: unknown;
|
|
1777
|
+
meta: Meta;
|
|
1778
|
+
};
|
|
1779
|
+
};
|
|
1780
|
+
export type DiscoverPosts6Response = DiscoverPosts6Responses[keyof DiscoverPosts6Responses];
|
|
1781
|
+
export type DiscoverPosts7Data = {
|
|
1782
|
+
body?: never;
|
|
1783
|
+
path?: never;
|
|
1784
|
+
query: {
|
|
1785
|
+
/**
|
|
1786
|
+
* Search query
|
|
1787
|
+
*/
|
|
1788
|
+
q: string;
|
|
1789
|
+
/**
|
|
1790
|
+
* Pagination cursor for next page
|
|
1791
|
+
*/
|
|
1792
|
+
cursor?: string;
|
|
1793
|
+
};
|
|
1794
|
+
url: "/v1/discover/instagram/posts";
|
|
1795
|
+
};
|
|
1796
|
+
export type DiscoverPosts7Responses = {
|
|
1797
|
+
/**
|
|
1798
|
+
* Search results
|
|
1799
|
+
*/
|
|
1800
|
+
200: {
|
|
1801
|
+
data?: unknown;
|
|
1802
|
+
meta: Meta;
|
|
1803
|
+
};
|
|
1804
|
+
};
|
|
1805
|
+
export type DiscoverPosts7Response = DiscoverPosts7Responses[keyof DiscoverPosts7Responses];
|
|
1806
|
+
export type DiscoverPosts8Data = {
|
|
1807
|
+
body?: never;
|
|
1808
|
+
path?: never;
|
|
1809
|
+
query: {
|
|
1810
|
+
/**
|
|
1811
|
+
* Search query
|
|
1812
|
+
*/
|
|
1813
|
+
q: string;
|
|
1814
|
+
/**
|
|
1815
|
+
* Pagination cursor for next page
|
|
1816
|
+
*/
|
|
1817
|
+
cursor?: string;
|
|
1818
|
+
};
|
|
1819
|
+
url: "/v1/discover/facebook/posts";
|
|
1820
|
+
};
|
|
1821
|
+
export type DiscoverPosts8Responses = {
|
|
1822
|
+
/**
|
|
1823
|
+
* Search results
|
|
1824
|
+
*/
|
|
1825
|
+
200: {
|
|
1826
|
+
data?: unknown;
|
|
1827
|
+
meta: Meta;
|
|
1828
|
+
};
|
|
1829
|
+
};
|
|
1830
|
+
export type DiscoverPosts8Response = DiscoverPosts8Responses[keyof DiscoverPosts8Responses];
|
|
1831
|
+
export type DiscoverAdsData = {
|
|
1832
|
+
body?: never;
|
|
1833
|
+
path?: never;
|
|
1834
|
+
query: {
|
|
1835
|
+
/**
|
|
1836
|
+
* Ad platform to search (meta, google, or linkedin)
|
|
1837
|
+
*/
|
|
1838
|
+
platform: "meta" | "google" | "linkedin";
|
|
1839
|
+
/**
|
|
1840
|
+
* Search query or advertiser name. For platform=google this is an advertiser domain (e.g. 'shopify.com') — the Google Ads Transparency Center has no free-text search.
|
|
1841
|
+
*/
|
|
1842
|
+
q: string;
|
|
1843
|
+
/**
|
|
1844
|
+
* Pagination cursor for next page
|
|
1845
|
+
*/
|
|
1846
|
+
cursor?: string;
|
|
1847
|
+
};
|
|
1848
|
+
url: "/v1/discover/ads";
|
|
1849
|
+
};
|
|
1850
|
+
export type DiscoverAdsResponses = {
|
|
1851
|
+
/**
|
|
1852
|
+
* Ad search results
|
|
1853
|
+
*/
|
|
1854
|
+
200: {
|
|
1855
|
+
data?: unknown;
|
|
1856
|
+
meta: Meta;
|
|
1857
|
+
};
|
|
1858
|
+
};
|
|
1859
|
+
export type DiscoverAdsResponse = DiscoverAdsResponses[keyof DiscoverAdsResponses];
|
|
1860
|
+
export type DiscoverTrendsData = {
|
|
1861
|
+
body?: never;
|
|
1862
|
+
path?: never;
|
|
1863
|
+
query: {
|
|
1864
|
+
/**
|
|
1865
|
+
* Trends platform (x or google_trends)
|
|
1866
|
+
*/
|
|
1867
|
+
platform: "x" | "google_trends" | "tiktok";
|
|
1868
|
+
/**
|
|
1869
|
+
* Search query (required for google_trends; ignored for x, which lists trends rather than searches them)
|
|
1870
|
+
*/
|
|
1871
|
+
q?: string;
|
|
1872
|
+
/**
|
|
1873
|
+
* Country filter (ISO 2-letter code)
|
|
1874
|
+
*/
|
|
1875
|
+
country?: string;
|
|
1876
|
+
};
|
|
1877
|
+
url: "/v1/discover/trends";
|
|
1878
|
+
};
|
|
1879
|
+
export type DiscoverTrendsResponses = {
|
|
1880
|
+
/**
|
|
1881
|
+
* Trending topics
|
|
1882
|
+
*/
|
|
1883
|
+
200: {
|
|
1884
|
+
data?: unknown;
|
|
1885
|
+
meta: Meta;
|
|
1886
|
+
};
|
|
1887
|
+
};
|
|
1888
|
+
export type DiscoverTrendsResponse = DiscoverTrendsResponses[keyof DiscoverTrendsResponses];
|
|
1889
|
+
export type DiscoverUsersData = {
|
|
1890
|
+
body?: never;
|
|
1891
|
+
path?: never;
|
|
1892
|
+
query: {
|
|
1893
|
+
/**
|
|
1894
|
+
* Social platform to search
|
|
1895
|
+
*/
|
|
1896
|
+
platform: "x" | "instagram" | "tiktok" | "linkedin" | "facebook" | "youtube";
|
|
1897
|
+
/**
|
|
1898
|
+
* Search query
|
|
1899
|
+
*/
|
|
1900
|
+
q: string;
|
|
1901
|
+
/**
|
|
1902
|
+
* Pagination cursor for next page
|
|
1903
|
+
*/
|
|
1904
|
+
cursor?: string;
|
|
1905
|
+
};
|
|
1906
|
+
url: "/v1/discover/users";
|
|
1907
|
+
};
|
|
1908
|
+
export type DiscoverUsersResponses = {
|
|
1909
|
+
/**
|
|
1910
|
+
* Creator search results
|
|
1911
|
+
*/
|
|
1912
|
+
200: {
|
|
1913
|
+
data?: unknown;
|
|
1914
|
+
meta: Meta;
|
|
1915
|
+
};
|
|
1916
|
+
};
|
|
1917
|
+
export type DiscoverUsersResponse = DiscoverUsersResponses[keyof DiscoverUsersResponses];
|
|
1918
|
+
export type DiscoverCompaniesData = {
|
|
1919
|
+
body?: never;
|
|
1920
|
+
path?: never;
|
|
1921
|
+
query: {
|
|
1922
|
+
/**
|
|
1923
|
+
* Company name or keyword
|
|
1924
|
+
*/
|
|
1925
|
+
q: string;
|
|
1926
|
+
/**
|
|
1927
|
+
* Pagination cursor for next page
|
|
1928
|
+
*/
|
|
1929
|
+
cursor?: string;
|
|
1930
|
+
};
|
|
1931
|
+
url: "/v1/discover/companies";
|
|
1932
|
+
};
|
|
1933
|
+
export type DiscoverCompaniesResponses = {
|
|
1934
|
+
/**
|
|
1935
|
+
* Company search results
|
|
1936
|
+
*/
|
|
1937
|
+
200: {
|
|
1938
|
+
data?: unknown;
|
|
1939
|
+
meta: Meta;
|
|
1940
|
+
};
|
|
1941
|
+
};
|
|
1942
|
+
export type DiscoverCompaniesResponse = DiscoverCompaniesResponses[keyof DiscoverCompaniesResponses];
|
|
1943
|
+
export type DiscoverJobsData = {
|
|
1944
|
+
body?: never;
|
|
1945
|
+
path?: never;
|
|
1946
|
+
query: {
|
|
1947
|
+
/**
|
|
1948
|
+
* Job title or keyword
|
|
1949
|
+
*/
|
|
1950
|
+
q: string;
|
|
1951
|
+
/**
|
|
1952
|
+
* Pagination cursor for next page
|
|
1953
|
+
*/
|
|
1954
|
+
cursor?: string;
|
|
1955
|
+
};
|
|
1956
|
+
url: "/v1/discover/jobs";
|
|
1957
|
+
};
|
|
1958
|
+
export type DiscoverJobsResponses = {
|
|
1959
|
+
/**
|
|
1960
|
+
* Job search results
|
|
1961
|
+
*/
|
|
1962
|
+
200: {
|
|
1963
|
+
data?: unknown;
|
|
1964
|
+
meta: Meta;
|
|
1965
|
+
};
|
|
1966
|
+
};
|
|
1967
|
+
export type DiscoverJobsResponse = DiscoverJobsResponses[keyof DiscoverJobsResponses];
|
|
1968
|
+
export type DiscoverCommunitiesData = {
|
|
1969
|
+
body?: never;
|
|
1970
|
+
path?: never;
|
|
1971
|
+
query: {
|
|
1972
|
+
/**
|
|
1973
|
+
* Community name or topic
|
|
1974
|
+
*/
|
|
1975
|
+
q: string;
|
|
1976
|
+
};
|
|
1977
|
+
url: "/v1/discover/communities";
|
|
1978
|
+
};
|
|
1979
|
+
export type DiscoverCommunitiesResponses = {
|
|
1980
|
+
/**
|
|
1981
|
+
* Community search results
|
|
1982
|
+
*/
|
|
1983
|
+
200: {
|
|
1984
|
+
data?: unknown;
|
|
1985
|
+
meta: Meta;
|
|
1986
|
+
};
|
|
1987
|
+
};
|
|
1988
|
+
export type DiscoverCommunitiesResponse = DiscoverCommunitiesResponses[keyof DiscoverCommunitiesResponses];
|
|
1989
|
+
export type EnrichmentPostLookupData = {
|
|
1990
|
+
body?: never;
|
|
1991
|
+
path?: never;
|
|
1992
|
+
query: {
|
|
1993
|
+
/**
|
|
1994
|
+
* Full post URL (LinkedIn, Twitter/X, Instagram, TikTok, Facebook, YouTube, Reddit)
|
|
1995
|
+
*/
|
|
1996
|
+
url: string;
|
|
1997
|
+
/**
|
|
1998
|
+
* Optional override when the URL host doesn't disambiguate the platform.
|
|
1999
|
+
*/
|
|
2000
|
+
platform?: "x" | "instagram" | "tiktok" | "linkedin" | "facebook" | "youtube" | "reddit";
|
|
2001
|
+
};
|
|
2002
|
+
url: "/v1/posts/lookup";
|
|
2003
|
+
};
|
|
2004
|
+
export type EnrichmentPostLookupResponses = {
|
|
2005
|
+
/**
|
|
2006
|
+
* Enriched post data with minted post_id
|
|
2007
|
+
*/
|
|
2008
|
+
200: {
|
|
2009
|
+
data?: unknown;
|
|
2010
|
+
meta: Meta;
|
|
2011
|
+
};
|
|
2012
|
+
};
|
|
2013
|
+
export type EnrichmentPostLookupResponse = EnrichmentPostLookupResponses[keyof EnrichmentPostLookupResponses];
|
|
2014
|
+
export type EnrichmentPostGetData = {
|
|
2015
|
+
body?: never;
|
|
2016
|
+
path: {
|
|
2017
|
+
/**
|
|
2018
|
+
* Opaque pid_… token (returned in discover/search/profile-posts items and /v1/posts/lookup responses) OR a bare platform ID paired with the `platform` query — both forms are first-class. Do NOT pass a raw post URL: encoded slashes die at the API gateway and return a bare 404 before the handler runs. Use /v1/posts/lookup?url=… when you only have a URL.
|
|
2019
|
+
*/
|
|
2020
|
+
post_id: string;
|
|
2021
|
+
};
|
|
2022
|
+
query?: {
|
|
2023
|
+
/**
|
|
2024
|
+
* Required only when `post_id` is a bare platform ID; ignored when a synthetic pid_ token is supplied.
|
|
2025
|
+
*/
|
|
2026
|
+
platform?: "x" | "instagram" | "tiktok" | "linkedin" | "facebook" | "youtube" | "reddit";
|
|
2027
|
+
};
|
|
2028
|
+
url: "/v1/posts/{post_id}";
|
|
2029
|
+
};
|
|
2030
|
+
export type EnrichmentPostGetResponses = {
|
|
2031
|
+
/**
|
|
2032
|
+
* Enriched post data
|
|
2033
|
+
*/
|
|
2034
|
+
200: {
|
|
2035
|
+
data?: unknown;
|
|
2036
|
+
meta: Meta;
|
|
2037
|
+
};
|
|
2038
|
+
};
|
|
2039
|
+
export type EnrichmentPostGetResponse = EnrichmentPostGetResponses[keyof EnrichmentPostGetResponses];
|
|
2040
|
+
export type EnrichmentPostCommentsData = {
|
|
2041
|
+
body?: never;
|
|
2042
|
+
path: {
|
|
2043
|
+
/**
|
|
2044
|
+
* Opaque pid_… token (returned in discover/search/profile-posts items and /v1/posts/lookup responses) OR a bare platform ID paired with the `platform` query — both forms are first-class. Do NOT pass a raw post URL: encoded slashes die at the API gateway and return a bare 404 before the handler runs. Use /v1/posts/lookup?url=… when you only have a URL.
|
|
2045
|
+
*/
|
|
2046
|
+
post_id: string;
|
|
2047
|
+
};
|
|
2048
|
+
query?: {
|
|
2049
|
+
/**
|
|
2050
|
+
* Required only when `post_id` is a bare platform ID; ignored when a synthetic pid_ token is supplied.
|
|
2051
|
+
*/
|
|
2052
|
+
platform?: "x" | "instagram" | "tiktok" | "linkedin" | "facebook" | "youtube" | "reddit";
|
|
2053
|
+
/**
|
|
2054
|
+
* Pagination cursor for next page
|
|
2055
|
+
*/
|
|
2056
|
+
cursor?: string;
|
|
2057
|
+
};
|
|
2058
|
+
url: "/v1/posts/{post_id}/comments";
|
|
2059
|
+
};
|
|
2060
|
+
export type EnrichmentPostCommentsResponses = {
|
|
2061
|
+
/**
|
|
2062
|
+
* Post comments
|
|
2063
|
+
*/
|
|
2064
|
+
200: {
|
|
2065
|
+
data?: unknown;
|
|
2066
|
+
meta: Meta;
|
|
2067
|
+
};
|
|
2068
|
+
};
|
|
2069
|
+
export type EnrichmentPostCommentsResponse = EnrichmentPostCommentsResponses[keyof EnrichmentPostCommentsResponses];
|
|
2070
|
+
export type EnrichmentProfileGetData = {
|
|
2071
|
+
body?: never;
|
|
2072
|
+
path: {
|
|
2073
|
+
/**
|
|
2074
|
+
* Social platform
|
|
2075
|
+
*/
|
|
2076
|
+
platform: "x" | "instagram" | "tiktok" | "linkedin" | "facebook" | "youtube" | "reddit";
|
|
2077
|
+
/**
|
|
2078
|
+
* Username or handle (without @)
|
|
2079
|
+
*/
|
|
2080
|
+
username: string;
|
|
2081
|
+
};
|
|
2082
|
+
query?: never;
|
|
2083
|
+
url: "/v1/profiles/{platform}/{username}";
|
|
2084
|
+
};
|
|
2085
|
+
export type EnrichmentProfileGetResponses = {
|
|
2086
|
+
/**
|
|
2087
|
+
* Profile data
|
|
2088
|
+
*/
|
|
2089
|
+
200: {
|
|
2090
|
+
data?: unknown;
|
|
2091
|
+
meta: Meta;
|
|
2092
|
+
};
|
|
2093
|
+
};
|
|
2094
|
+
export type EnrichmentProfileGetResponse = EnrichmentProfileGetResponses[keyof EnrichmentProfileGetResponses];
|
|
2095
|
+
export type EnrichmentProfilePostsData = {
|
|
2096
|
+
body?: never;
|
|
2097
|
+
path: {
|
|
2098
|
+
/**
|
|
2099
|
+
* Social platform
|
|
2100
|
+
*/
|
|
2101
|
+
platform: "x" | "instagram" | "tiktok" | "linkedin" | "facebook" | "youtube" | "reddit";
|
|
2102
|
+
/**
|
|
2103
|
+
* Username or handle (without @)
|
|
2104
|
+
*/
|
|
2105
|
+
username: string;
|
|
2106
|
+
};
|
|
2107
|
+
query?: {
|
|
2108
|
+
/**
|
|
2109
|
+
* YouTube only — selects which upload stream to fetch. Required when `platform=youtube`.
|
|
2110
|
+
*/
|
|
2111
|
+
type?: "videos" | "shorts";
|
|
2112
|
+
/**
|
|
2113
|
+
* Pagination cursor for next page. One request returns one page; follow `meta.next_cursor` for deeper history.
|
|
2114
|
+
*/
|
|
2115
|
+
cursor?: string;
|
|
2116
|
+
};
|
|
2117
|
+
url: "/v1/profiles/{platform}/{username}/posts";
|
|
2118
|
+
};
|
|
2119
|
+
export type EnrichmentProfilePostsResponses = {
|
|
2120
|
+
/**
|
|
2121
|
+
* User's posts (single page)
|
|
2122
|
+
*/
|
|
2123
|
+
200: {
|
|
2124
|
+
data?: unknown;
|
|
2125
|
+
meta: Meta;
|
|
2126
|
+
};
|
|
2127
|
+
};
|
|
2128
|
+
export type EnrichmentProfilePostsResponse = EnrichmentProfilePostsResponses[keyof EnrichmentProfilePostsResponses];
|
|
2129
|
+
export type EnrichmentProfileFollowingData = {
|
|
2130
|
+
body?: never;
|
|
2131
|
+
path: {
|
|
2132
|
+
/**
|
|
2133
|
+
* Social platform (x, instagram, tiktok, facebook)
|
|
2134
|
+
*/
|
|
2135
|
+
platform: "x" | "instagram" | "tiktok" | "facebook";
|
|
2136
|
+
/**
|
|
2137
|
+
* Username or handle (without @)
|
|
2138
|
+
*/
|
|
2139
|
+
username: string;
|
|
2140
|
+
};
|
|
2141
|
+
query?: {
|
|
2142
|
+
/**
|
|
2143
|
+
* Pagination cursor for the next page. One request returns one page; pass back the `meta.next_cursor` returned in the response for more.
|
|
2144
|
+
*/
|
|
2145
|
+
cursor?: string;
|
|
2146
|
+
};
|
|
2147
|
+
url: "/v1/profiles/{platform}/{username}/following";
|
|
2148
|
+
};
|
|
2149
|
+
export type EnrichmentProfileFollowingResponses = {
|
|
2150
|
+
/**
|
|
2151
|
+
* Accounts the user follows (single page)
|
|
2152
|
+
*/
|
|
2153
|
+
200: {
|
|
2154
|
+
data?: unknown;
|
|
2155
|
+
meta: Meta;
|
|
2156
|
+
};
|
|
2157
|
+
};
|
|
2158
|
+
export type EnrichmentProfileFollowingResponse = EnrichmentProfileFollowingResponses[keyof EnrichmentProfileFollowingResponses];
|
|
2159
|
+
export type EnrichmentVideoTranscriptData = {
|
|
2160
|
+
body?: never;
|
|
2161
|
+
path: {
|
|
2162
|
+
/**
|
|
2163
|
+
* YouTube video ID
|
|
2164
|
+
*/
|
|
2165
|
+
video_id: string;
|
|
2166
|
+
};
|
|
2167
|
+
query?: never;
|
|
2168
|
+
url: "/v1/videos/{video_id}/transcript";
|
|
2169
|
+
};
|
|
2170
|
+
export type EnrichmentVideoTranscriptResponses = {
|
|
2171
|
+
/**
|
|
2172
|
+
* Video transcript
|
|
2173
|
+
*/
|
|
2174
|
+
200: {
|
|
2175
|
+
data?: unknown;
|
|
2176
|
+
meta: Meta;
|
|
2177
|
+
};
|
|
2178
|
+
};
|
|
2179
|
+
export type EnrichmentVideoTranscriptResponse = EnrichmentVideoTranscriptResponses[keyof EnrichmentVideoTranscriptResponses];
|
|
2180
|
+
export type EnrichmentCompanySearchData = {
|
|
2181
|
+
body?: never;
|
|
2182
|
+
path: {
|
|
2183
|
+
/**
|
|
2184
|
+
* Platform (linkedin and facebook supported today)
|
|
2185
|
+
*/
|
|
2186
|
+
platform: "x" | "instagram" | "tiktok" | "linkedin" | "facebook" | "youtube" | "reddit";
|
|
2187
|
+
};
|
|
2188
|
+
query: {
|
|
2189
|
+
/**
|
|
2190
|
+
* Search query (typically a brand name)
|
|
2191
|
+
*/
|
|
2192
|
+
q: string;
|
|
2193
|
+
/**
|
|
2194
|
+
* Pagination cursor for next page. One request returns one page; follow `meta.next_cursor` for more.
|
|
2195
|
+
*/
|
|
2196
|
+
cursor?: string;
|
|
2197
|
+
/**
|
|
2198
|
+
* ISO 2-letter country code (Facebook / Meta Ad Library only)
|
|
2199
|
+
*/
|
|
2200
|
+
country?: string;
|
|
2201
|
+
};
|
|
2202
|
+
url: "/v1/companies/{platform}/search";
|
|
2203
|
+
};
|
|
2204
|
+
export type EnrichmentCompanySearchResponses = {
|
|
2205
|
+
/**
|
|
2206
|
+
* Company search results (single page)
|
|
2207
|
+
*/
|
|
2208
|
+
200: {
|
|
2209
|
+
data?: unknown;
|
|
2210
|
+
meta: Meta;
|
|
2211
|
+
};
|
|
2212
|
+
};
|
|
2213
|
+
export type EnrichmentCompanySearchResponse = EnrichmentCompanySearchResponses[keyof EnrichmentCompanySearchResponses];
|
|
2214
|
+
export type EnrichmentCompanyGetData = {
|
|
2215
|
+
body?: never;
|
|
2216
|
+
path: {
|
|
2217
|
+
/**
|
|
2218
|
+
* Platform (linkedin supported today)
|
|
2219
|
+
*/
|
|
2220
|
+
platform: "x" | "instagram" | "tiktok" | "linkedin" | "facebook" | "youtube" | "reddit";
|
|
2221
|
+
/**
|
|
2222
|
+
* Company URL, slug, or numeric identifier
|
|
2223
|
+
*/
|
|
2224
|
+
identifier: string;
|
|
2225
|
+
};
|
|
2226
|
+
query?: never;
|
|
2227
|
+
url: "/v1/companies/{platform}/{identifier}";
|
|
2228
|
+
};
|
|
2229
|
+
export type EnrichmentCompanyGetResponses = {
|
|
2230
|
+
/**
|
|
2231
|
+
* Company profile
|
|
2232
|
+
*/
|
|
2233
|
+
200: {
|
|
2234
|
+
data?: unknown;
|
|
2235
|
+
meta: Meta;
|
|
2236
|
+
};
|
|
2237
|
+
};
|
|
2238
|
+
export type EnrichmentCompanyGetResponse = EnrichmentCompanyGetResponses[keyof EnrichmentCompanyGetResponses];
|
|
2239
|
+
export type EnrichmentCompanyJobsData = {
|
|
2240
|
+
body?: never;
|
|
2241
|
+
path: {
|
|
2242
|
+
/**
|
|
2243
|
+
* Platform (linkedin supported today)
|
|
2244
|
+
*/
|
|
2245
|
+
platform: "x" | "instagram" | "tiktok" | "linkedin" | "facebook" | "youtube" | "reddit";
|
|
2246
|
+
/**
|
|
2247
|
+
* Company URL, slug, or numeric identifier
|
|
2248
|
+
*/
|
|
2249
|
+
identifier: string;
|
|
2250
|
+
};
|
|
2251
|
+
query?: {
|
|
2252
|
+
/**
|
|
2253
|
+
* Pagination cursor for the next page. One request returns one page; pass back the `meta.next_cursor` returned in the response for more.
|
|
2254
|
+
*/
|
|
2255
|
+
cursor?: string;
|
|
2256
|
+
};
|
|
2257
|
+
url: "/v1/companies/{platform}/{identifier}/jobs";
|
|
2258
|
+
};
|
|
2259
|
+
export type EnrichmentCompanyJobsResponses = {
|
|
2260
|
+
/**
|
|
2261
|
+
* Company job listings
|
|
2262
|
+
*/
|
|
2263
|
+
200: {
|
|
2264
|
+
data?: unknown;
|
|
2265
|
+
meta: Meta;
|
|
2266
|
+
};
|
|
2267
|
+
};
|
|
2268
|
+
export type EnrichmentCompanyJobsResponse = EnrichmentCompanyJobsResponses[keyof EnrichmentCompanyJobsResponses];
|
|
2269
|
+
export type EnrichmentCompanyPeopleData = {
|
|
2270
|
+
body?: never;
|
|
2271
|
+
path: {
|
|
2272
|
+
/**
|
|
2273
|
+
* Platform (linkedin supported today)
|
|
2274
|
+
*/
|
|
2275
|
+
platform: "x" | "instagram" | "tiktok" | "linkedin" | "facebook" | "youtube" | "reddit";
|
|
2276
|
+
/**
|
|
2277
|
+
* Company URL, slug, or numeric identifier
|
|
2278
|
+
*/
|
|
2279
|
+
identifier: string;
|
|
2280
|
+
};
|
|
2281
|
+
query?: {
|
|
2282
|
+
/**
|
|
2283
|
+
* Pagination cursor for the next page. One request returns one page; pass back the `meta.next_cursor` returned in the response for more.
|
|
2284
|
+
*/
|
|
2285
|
+
cursor?: string;
|
|
2286
|
+
};
|
|
2287
|
+
url: "/v1/companies/{platform}/{identifier}/people";
|
|
2288
|
+
};
|
|
2289
|
+
export type EnrichmentCompanyPeopleResponses = {
|
|
2290
|
+
/**
|
|
2291
|
+
* Company people
|
|
2292
|
+
*/
|
|
2293
|
+
200: {
|
|
2294
|
+
data?: unknown;
|
|
2295
|
+
meta: Meta;
|
|
2296
|
+
};
|
|
2297
|
+
};
|
|
2298
|
+
export type EnrichmentCompanyPeopleResponse = EnrichmentCompanyPeopleResponses[keyof EnrichmentCompanyPeopleResponses];
|
|
2299
|
+
export type CommunityUserPostsData = {
|
|
2300
|
+
body?: never;
|
|
2301
|
+
path: {
|
|
2302
|
+
/**
|
|
2303
|
+
* Reddit username, without the u/ prefix
|
|
2304
|
+
*/
|
|
2305
|
+
name: string;
|
|
2306
|
+
};
|
|
2307
|
+
query?: {
|
|
2308
|
+
/**
|
|
2309
|
+
* Sort order. `range` is required when sort is TOP or CONTROVERSIAL.
|
|
2310
|
+
*/
|
|
2311
|
+
sort?: "CONTROVERSIAL" | "HOT" | "TOP" | "NEW";
|
|
2312
|
+
/**
|
|
2313
|
+
* Time window. Required when sort is TOP or CONTROVERSIAL.
|
|
2314
|
+
*/
|
|
2315
|
+
range?: "PAST_HOUR" | "TODAY" | "PAST_WEEK" | "PAST_MONTH" | "PAST_YEAR" | "ALL_TIME";
|
|
2316
|
+
/**
|
|
2317
|
+
* Pagination cursor. One request returns one page; follow `meta.next_cursor` for more.
|
|
2318
|
+
*/
|
|
2319
|
+
cursor?: string;
|
|
2320
|
+
};
|
|
2321
|
+
url: "/v1/communities/reddit/users/{name}/posts";
|
|
2322
|
+
};
|
|
2323
|
+
export type CommunityUserPostsResponses = {
|
|
2324
|
+
/**
|
|
2325
|
+
* A page of the user's posts
|
|
2326
|
+
*/
|
|
2327
|
+
200: {
|
|
2328
|
+
data: {
|
|
2329
|
+
items: Array<NormalizedPost>;
|
|
2330
|
+
};
|
|
2331
|
+
meta: Meta;
|
|
2332
|
+
};
|
|
2333
|
+
};
|
|
2334
|
+
export type CommunityUserPostsResponse = CommunityUserPostsResponses[keyof CommunityUserPostsResponses];
|
|
2335
|
+
export type CommunityUserCommentsData = {
|
|
2336
|
+
body?: never;
|
|
2337
|
+
path: {
|
|
2338
|
+
/**
|
|
2339
|
+
* Reddit username, without the u/ prefix
|
|
2340
|
+
*/
|
|
2341
|
+
name: string;
|
|
2342
|
+
};
|
|
2343
|
+
query?: {
|
|
2344
|
+
/**
|
|
2345
|
+
* Pagination cursor. One request returns one page; follow `meta.next_cursor` for more.
|
|
2346
|
+
*/
|
|
2347
|
+
cursor?: string;
|
|
2348
|
+
};
|
|
2349
|
+
url: "/v1/communities/reddit/users/{name}/comments";
|
|
2350
|
+
};
|
|
2351
|
+
export type CommunityUserCommentsResponses = {
|
|
2352
|
+
/**
|
|
2353
|
+
* A page of the user's comments
|
|
2354
|
+
*/
|
|
2355
|
+
200: {
|
|
2356
|
+
data: {
|
|
2357
|
+
items: Array<RedditComment>;
|
|
2358
|
+
};
|
|
2359
|
+
meta: Meta;
|
|
2360
|
+
};
|
|
2361
|
+
};
|
|
2362
|
+
export type CommunityUserCommentsResponse = CommunityUserCommentsResponses[keyof CommunityUserCommentsResponses];
|
|
2363
|
+
export type CommunityPostsData = {
|
|
2364
|
+
body?: never;
|
|
2365
|
+
path: {
|
|
2366
|
+
/**
|
|
2367
|
+
* Subreddit name, without the r/ prefix
|
|
2368
|
+
*/
|
|
2369
|
+
name: string;
|
|
2370
|
+
};
|
|
2371
|
+
query?: {
|
|
2372
|
+
/**
|
|
2373
|
+
* Feed sort order. `range` is required when sort is TOP or CONTROVERSIAL.
|
|
2374
|
+
*/
|
|
2375
|
+
sort?: "BEST" | "HOT" | "NEW" | "TOP" | "CONTROVERSIAL" | "RISING";
|
|
2376
|
+
/**
|
|
2377
|
+
* Time window. Required when sort is TOP or CONTROVERSIAL.
|
|
2378
|
+
*/
|
|
2379
|
+
range?: "PAST_HOUR" | "TODAY" | "PAST_WEEK" | "PAST_MONTH" | "PAST_YEAR" | "ALL_TIME";
|
|
2380
|
+
/**
|
|
2381
|
+
* Pagination cursor. One request returns one page; follow `meta.next_cursor` for more.
|
|
2382
|
+
*/
|
|
2383
|
+
cursor?: string;
|
|
2384
|
+
};
|
|
2385
|
+
url: "/v1/communities/reddit/{name}/posts";
|
|
2386
|
+
};
|
|
2387
|
+
export type CommunityPostsResponses = {
|
|
2388
|
+
/**
|
|
2389
|
+
* A page of subreddit posts
|
|
2390
|
+
*/
|
|
2391
|
+
200: {
|
|
2392
|
+
data: {
|
|
2393
|
+
items: Array<NormalizedPost>;
|
|
2394
|
+
};
|
|
2395
|
+
meta: Meta;
|
|
2396
|
+
};
|
|
2397
|
+
};
|
|
2398
|
+
export type CommunityPostsResponse = CommunityPostsResponses[keyof CommunityPostsResponses];
|
|
2399
|
+
export type CommunityGetData = {
|
|
2400
|
+
body?: never;
|
|
2401
|
+
path: {
|
|
2402
|
+
/**
|
|
2403
|
+
* Subreddit name, without the r/ prefix
|
|
2404
|
+
*/
|
|
2405
|
+
name: string;
|
|
2406
|
+
};
|
|
2407
|
+
query?: never;
|
|
2408
|
+
url: "/v1/communities/reddit/{name}";
|
|
2409
|
+
};
|
|
2410
|
+
export type CommunityGetResponses = {
|
|
2411
|
+
/**
|
|
2412
|
+
* Subreddit metadata
|
|
2413
|
+
*/
|
|
2414
|
+
200: {
|
|
2415
|
+
data: RedditSubredditDetails;
|
|
2416
|
+
meta: Meta;
|
|
2417
|
+
};
|
|
2418
|
+
};
|
|
2419
|
+
export type CommunityGetResponse = CommunityGetResponses[keyof CommunityGetResponses];
|
|
2420
|
+
export type GetV1BrandSearchData = {
|
|
2421
|
+
body?: never;
|
|
2422
|
+
path?: never;
|
|
2423
|
+
query: {
|
|
2424
|
+
/**
|
|
2425
|
+
* Search query (required)
|
|
2426
|
+
*/
|
|
2427
|
+
q: string;
|
|
2428
|
+
/**
|
|
2429
|
+
* Filter to a specific brand
|
|
2430
|
+
*/
|
|
2431
|
+
brand_id?: string;
|
|
2432
|
+
/**
|
|
2433
|
+
* Filter to brands in a category
|
|
2434
|
+
*/
|
|
2435
|
+
category_id?: string;
|
|
2436
|
+
/**
|
|
2437
|
+
* Filter by platform (e.g. instagram, tiktok, twitter)
|
|
2438
|
+
*/
|
|
2439
|
+
platform?: string;
|
|
2440
|
+
/**
|
|
2441
|
+
* Filter by dataset: owned_media (brand-published) or mentions (earned/mention)
|
|
2442
|
+
*/
|
|
2443
|
+
dataset?: "owned_media" | "mentions";
|
|
2444
|
+
/**
|
|
2445
|
+
* Filter posts on or after this date (ISO 8601)
|
|
2446
|
+
*/
|
|
2447
|
+
start_date?: string;
|
|
2448
|
+
/**
|
|
2449
|
+
* Filter posts on or before this date (ISO 8601)
|
|
2450
|
+
*/
|
|
2451
|
+
end_date?: string;
|
|
2452
|
+
/**
|
|
2453
|
+
* Maximum number of results to return (1–100)
|
|
2454
|
+
*/
|
|
2455
|
+
limit?: number;
|
|
2456
|
+
/**
|
|
2457
|
+
* Cursor for pagination — pass meta.next_cursor from the previous response
|
|
2458
|
+
*/
|
|
2459
|
+
cursor?: string;
|
|
2460
|
+
};
|
|
2461
|
+
url: "/v1/brand-search";
|
|
2462
|
+
};
|
|
2463
|
+
export type GetV1BrandSearchErrors = {
|
|
2464
|
+
/**
|
|
2465
|
+
* Invalid search query
|
|
2466
|
+
*/
|
|
2467
|
+
400: Error;
|
|
2468
|
+
};
|
|
2469
|
+
export type GetV1BrandSearchError = GetV1BrandSearchErrors[keyof GetV1BrandSearchErrors];
|
|
2470
|
+
export type GetV1BrandSearchResponses = {
|
|
2471
|
+
/**
|
|
2472
|
+
* Search results ranked by relevance
|
|
2473
|
+
*/
|
|
2474
|
+
200: {
|
|
2475
|
+
data: Array<SearchResult>;
|
|
2476
|
+
meta: Meta;
|
|
2477
|
+
};
|
|
2478
|
+
};
|
|
2479
|
+
export type GetV1BrandSearchResponse = GetV1BrandSearchResponses[keyof GetV1BrandSearchResponses];
|
|
2480
|
+
export type GetV1AccountData = {
|
|
2481
|
+
body?: never;
|
|
2482
|
+
path?: never;
|
|
2483
|
+
query?: never;
|
|
2484
|
+
url: "/v1/account";
|
|
2485
|
+
};
|
|
2486
|
+
export type GetV1AccountResponses = {
|
|
2487
|
+
/**
|
|
2488
|
+
* Account profile
|
|
2489
|
+
*/
|
|
2490
|
+
200: {
|
|
2491
|
+
data: AccountProfile;
|
|
2492
|
+
meta: Meta;
|
|
2493
|
+
};
|
|
2494
|
+
};
|
|
2495
|
+
export type GetV1AccountResponse = GetV1AccountResponses[keyof GetV1AccountResponses];
|
|
2496
|
+
export type GetV1AccountBalanceData = {
|
|
2497
|
+
body?: never;
|
|
2498
|
+
path?: never;
|
|
2499
|
+
query?: never;
|
|
2500
|
+
url: "/v1/account/balance";
|
|
2501
|
+
};
|
|
2502
|
+
export type GetV1AccountBalanceResponses = {
|
|
2503
|
+
/**
|
|
2504
|
+
* Credit balance
|
|
2505
|
+
*/
|
|
2506
|
+
200: {
|
|
2507
|
+
data: AccountBalance;
|
|
2508
|
+
meta: Meta;
|
|
2509
|
+
};
|
|
2510
|
+
};
|
|
2511
|
+
export type GetV1AccountBalanceResponse = GetV1AccountBalanceResponses[keyof GetV1AccountBalanceResponses];
|
|
2512
|
+
export type GetV1AccountUsageData = {
|
|
2513
|
+
body?: never;
|
|
2514
|
+
path?: never;
|
|
2515
|
+
query?: never;
|
|
2516
|
+
url: "/v1/account/usage";
|
|
2517
|
+
};
|
|
2518
|
+
export type GetV1AccountUsageResponses = {
|
|
2519
|
+
/**
|
|
2520
|
+
* Usage breakdown
|
|
2521
|
+
*/
|
|
2522
|
+
200: {
|
|
2523
|
+
data: AccountUsage;
|
|
2524
|
+
meta: Meta;
|
|
2525
|
+
};
|
|
2526
|
+
};
|
|
2527
|
+
export type GetV1AccountUsageResponse = GetV1AccountUsageResponses[keyof GetV1AccountUsageResponses];
|
|
2528
|
+
export type TeamListData = {
|
|
2529
|
+
body?: never;
|
|
2530
|
+
path?: never;
|
|
2531
|
+
query?: {
|
|
2532
|
+
/**
|
|
2533
|
+
* Substring match on name or team_id
|
|
2534
|
+
*/
|
|
2535
|
+
query?: string;
|
|
2536
|
+
creditFilter?: "ALL" | "UNLIMITED";
|
|
2537
|
+
limit?: number;
|
|
2538
|
+
offset?: number | null;
|
|
2539
|
+
};
|
|
2540
|
+
url: "/v1/teams";
|
|
2541
|
+
};
|
|
2542
|
+
export type TeamListErrors = {
|
|
2543
|
+
/**
|
|
2544
|
+
* Admin required
|
|
2545
|
+
*/
|
|
2546
|
+
403: Error;
|
|
2547
|
+
};
|
|
2548
|
+
export type TeamListError = TeamListErrors[keyof TeamListErrors];
|
|
2549
|
+
export type TeamListResponses = {
|
|
2550
|
+
/**
|
|
2551
|
+
* Teams listed
|
|
2552
|
+
*/
|
|
2553
|
+
200: {
|
|
2554
|
+
data: Array<AdminTeamRow>;
|
|
2555
|
+
/**
|
|
2556
|
+
* True when more rows exist past the returned page. Increment offset by limit to fetch the next page.
|
|
2557
|
+
*/
|
|
2558
|
+
hasMore: boolean;
|
|
2559
|
+
};
|
|
2560
|
+
};
|
|
2561
|
+
export type TeamListResponse = TeamListResponses[keyof TeamListResponses];
|
|
2562
|
+
export type TeamCreateData = {
|
|
2563
|
+
body?: {
|
|
2564
|
+
name: string;
|
|
2565
|
+
slug: string;
|
|
2566
|
+
autoInviteDomain?: string;
|
|
2567
|
+
/**
|
|
2568
|
+
* Override default billable=true. Pass false for an unlimited-credits team.
|
|
2569
|
+
*/
|
|
2570
|
+
billable?: boolean;
|
|
2571
|
+
};
|
|
2572
|
+
path?: never;
|
|
2573
|
+
query?: never;
|
|
2574
|
+
url: "/v1/teams";
|
|
2575
|
+
};
|
|
2576
|
+
export type TeamCreateErrors = {
|
|
2577
|
+
/**
|
|
2578
|
+
* Admin required
|
|
2579
|
+
*/
|
|
2580
|
+
403: Error;
|
|
2581
|
+
};
|
|
2582
|
+
export type TeamCreateError = TeamCreateErrors[keyof TeamCreateErrors];
|
|
2583
|
+
export type TeamCreateResponses = {
|
|
2584
|
+
/**
|
|
2585
|
+
* Team created
|
|
2586
|
+
*/
|
|
2587
|
+
201: {
|
|
2588
|
+
data: AdminTeamRow;
|
|
2589
|
+
};
|
|
2590
|
+
};
|
|
2591
|
+
export type TeamCreateResponse = TeamCreateResponses[keyof TeamCreateResponses];
|
|
2592
|
+
export type TeamGetData = {
|
|
2593
|
+
body?: never;
|
|
2594
|
+
path: {
|
|
2595
|
+
team_id: number;
|
|
2596
|
+
};
|
|
2597
|
+
query?: never;
|
|
2598
|
+
url: "/v1/teams/{team_id}";
|
|
2599
|
+
};
|
|
2600
|
+
export type TeamGetErrors = {
|
|
2601
|
+
/**
|
|
2602
|
+
* Admin required
|
|
2603
|
+
*/
|
|
2604
|
+
403: Error;
|
|
2605
|
+
/**
|
|
2606
|
+
* Team not found
|
|
2607
|
+
*/
|
|
2608
|
+
404: Error;
|
|
2609
|
+
};
|
|
2610
|
+
export type TeamGetError = TeamGetErrors[keyof TeamGetErrors];
|
|
2611
|
+
export type TeamGetResponses = {
|
|
2612
|
+
/**
|
|
2613
|
+
* Team
|
|
2614
|
+
*/
|
|
2615
|
+
200: {
|
|
2616
|
+
data: AdminTeamRow;
|
|
2617
|
+
};
|
|
2618
|
+
};
|
|
2619
|
+
export type TeamGetResponse = TeamGetResponses[keyof TeamGetResponses];
|
|
2620
|
+
export type TeamSetBillableData = {
|
|
2621
|
+
body?: {
|
|
2622
|
+
billable: boolean;
|
|
2623
|
+
};
|
|
2624
|
+
path: {
|
|
2625
|
+
team_id: number;
|
|
2626
|
+
};
|
|
2627
|
+
query?: never;
|
|
2628
|
+
url: "/v1/teams/{team_id}/billable";
|
|
2629
|
+
};
|
|
2630
|
+
export type TeamSetBillableErrors = {
|
|
2631
|
+
/**
|
|
2632
|
+
* Admin required
|
|
2633
|
+
*/
|
|
2634
|
+
403: Error;
|
|
2635
|
+
};
|
|
2636
|
+
export type TeamSetBillableError = TeamSetBillableErrors[keyof TeamSetBillableErrors];
|
|
2637
|
+
export type TeamSetBillableResponses = {
|
|
2638
|
+
/**
|
|
2639
|
+
* Team updated
|
|
2640
|
+
*/
|
|
2641
|
+
200: {
|
|
2642
|
+
data: AdminTeamRow;
|
|
2643
|
+
};
|
|
2644
|
+
};
|
|
2645
|
+
export type TeamSetBillableResponse = TeamSetBillableResponses[keyof TeamSetBillableResponses];
|
|
2646
|
+
export type TeamListFlagsData = {
|
|
2647
|
+
body?: never;
|
|
2648
|
+
path: {
|
|
2649
|
+
team_id: number;
|
|
2650
|
+
};
|
|
2651
|
+
query?: never;
|
|
2652
|
+
url: "/v1/teams/{team_id}/flags";
|
|
2653
|
+
};
|
|
2654
|
+
export type TeamListFlagsErrors = {
|
|
2655
|
+
/**
|
|
2656
|
+
* Admin required
|
|
2657
|
+
*/
|
|
2658
|
+
403: Error;
|
|
2659
|
+
};
|
|
2660
|
+
export type TeamListFlagsError = TeamListFlagsErrors[keyof TeamListFlagsErrors];
|
|
2661
|
+
export type TeamListFlagsResponses = {
|
|
2662
|
+
/**
|
|
2663
|
+
* Flags listed
|
|
2664
|
+
*/
|
|
2665
|
+
200: {
|
|
2666
|
+
data: Array<TeamFlagRow>;
|
|
2667
|
+
};
|
|
2668
|
+
};
|
|
2669
|
+
export type TeamListFlagsResponse = TeamListFlagsResponses[keyof TeamListFlagsResponses];
|
|
2670
|
+
export type TeamSetFlagData = {
|
|
2671
|
+
body?: {
|
|
2672
|
+
flag: string;
|
|
2673
|
+
enabled: boolean;
|
|
2674
|
+
};
|
|
2675
|
+
path: {
|
|
2676
|
+
team_id: number;
|
|
2677
|
+
};
|
|
2678
|
+
query?: never;
|
|
2679
|
+
url: "/v1/teams/{team_id}/flags";
|
|
2680
|
+
};
|
|
2681
|
+
export type TeamSetFlagErrors = {
|
|
2682
|
+
/**
|
|
2683
|
+
* Bad flag name
|
|
2684
|
+
*/
|
|
2685
|
+
400: Error;
|
|
2686
|
+
/**
|
|
2687
|
+
* Admin required
|
|
2688
|
+
*/
|
|
2689
|
+
403: Error;
|
|
2690
|
+
};
|
|
2691
|
+
export type TeamSetFlagError = TeamSetFlagErrors[keyof TeamSetFlagErrors];
|
|
2692
|
+
export type TeamSetFlagResponses = {
|
|
2693
|
+
/**
|
|
2694
|
+
* Flag set
|
|
2695
|
+
*/
|
|
2696
|
+
200: {
|
|
2697
|
+
data: TeamFlagRow;
|
|
2698
|
+
};
|
|
2699
|
+
};
|
|
2700
|
+
export type TeamSetFlagResponse = TeamSetFlagResponses[keyof TeamSetFlagResponses];
|
|
2701
|
+
//# sourceMappingURL=types.gen.d.ts.map
|