influship 0.2.0 → 0.3.2

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.
Files changed (262) hide show
  1. package/CHANGELOG.md +62 -30
  2. package/LICENSE +1 -1
  3. package/README.md +88 -43
  4. package/client.d.mts +49 -29
  5. package/client.d.mts.map +1 -1
  6. package/client.d.ts +49 -29
  7. package/client.d.ts.map +1 -1
  8. package/client.js +89 -56
  9. package/client.js.map +1 -1
  10. package/client.mjs +89 -56
  11. package/client.mjs.map +1 -1
  12. package/core/api-promise.d.mts +2 -2
  13. package/core/api-promise.d.mts.map +1 -1
  14. package/core/api-promise.d.ts +2 -2
  15. package/core/api-promise.d.ts.map +1 -1
  16. package/core/api-promise.js.map +1 -1
  17. package/core/api-promise.mjs.map +1 -1
  18. package/core/error.d.mts +2 -2
  19. package/core/error.d.mts.map +1 -1
  20. package/core/error.d.ts +2 -2
  21. package/core/error.d.ts.map +1 -1
  22. package/core/error.js +4 -4
  23. package/core/error.js.map +1 -1
  24. package/core/error.mjs +2 -2
  25. package/core/error.mjs.map +1 -1
  26. package/core/pagination.d.mts +75 -0
  27. package/core/pagination.d.mts.map +1 -0
  28. package/core/pagination.d.ts +75 -0
  29. package/core/pagination.d.ts.map +1 -0
  30. package/core/pagination.js +139 -0
  31. package/core/pagination.js.map +1 -0
  32. package/core/pagination.mjs +132 -0
  33. package/core/pagination.mjs.map +1 -0
  34. package/core/resource.d.mts +3 -3
  35. package/core/resource.d.mts.map +1 -1
  36. package/core/resource.d.ts +3 -3
  37. package/core/resource.d.ts.map +1 -1
  38. package/core/resource.js.map +1 -1
  39. package/core/resource.mjs.map +1 -1
  40. package/index.d.mts +4 -3
  41. package/index.d.mts.map +1 -1
  42. package/index.d.ts +4 -3
  43. package/index.d.ts.map +1 -1
  44. package/index.js +6 -4
  45. package/index.js.map +1 -1
  46. package/index.mjs +4 -3
  47. package/index.mjs.map +1 -1
  48. package/internal/parse.d.mts +2 -2
  49. package/internal/parse.d.mts.map +1 -1
  50. package/internal/parse.d.ts +2 -2
  51. package/internal/parse.d.ts.map +1 -1
  52. package/internal/parse.js +5 -0
  53. package/internal/parse.js.map +1 -1
  54. package/internal/parse.mjs +5 -0
  55. package/internal/parse.mjs.map +1 -1
  56. package/internal/shims.js +1 -1
  57. package/internal/shims.js.map +1 -1
  58. package/internal/shims.mjs +1 -1
  59. package/internal/shims.mjs.map +1 -1
  60. package/internal/tslib.js +17 -17
  61. package/internal/uploads.d.mts +4 -4
  62. package/internal/uploads.d.mts.map +1 -1
  63. package/internal/uploads.d.ts +4 -4
  64. package/internal/uploads.d.ts.map +1 -1
  65. package/internal/uploads.js.map +1 -1
  66. package/internal/uploads.mjs.map +1 -1
  67. package/internal/utils/base64.js +2 -2
  68. package/internal/utils/base64.js.map +1 -1
  69. package/internal/utils/base64.mjs +3 -3
  70. package/internal/utils/base64.mjs.map +1 -1
  71. package/internal/utils/log.d.mts +3 -3
  72. package/internal/utils/log.d.mts.map +1 -1
  73. package/internal/utils/log.d.ts +3 -3
  74. package/internal/utils/log.d.ts.map +1 -1
  75. package/internal/utils/log.js.map +1 -1
  76. package/internal/utils/log.mjs.map +1 -1
  77. package/internal/utils/path.js +1 -1
  78. package/internal/utils/path.js.map +1 -1
  79. package/internal/utils/path.mjs +2 -2
  80. package/internal/utils/path.mjs.map +1 -1
  81. package/internal/utils/query.d.mts +2 -0
  82. package/internal/utils/query.d.mts.map +1 -0
  83. package/internal/utils/query.d.ts +2 -0
  84. package/internal/utils/query.d.ts.map +1 -0
  85. package/internal/utils/query.js +10 -0
  86. package/internal/utils/query.js.map +1 -0
  87. package/internal/utils/query.mjs +6 -0
  88. package/internal/utils/query.mjs.map +1 -0
  89. package/internal/utils/values.js +5 -5
  90. package/internal/utils/values.js.map +1 -1
  91. package/internal/utils/values.mjs +6 -6
  92. package/internal/utils/values.mjs.map +1 -1
  93. package/internal/utils.d.mts +1 -0
  94. package/internal/utils.d.ts +1 -0
  95. package/internal/utils.js +1 -0
  96. package/internal/utils.js.map +1 -1
  97. package/internal/utils.mjs +1 -0
  98. package/package.json +24 -3
  99. package/pagination.d.mts +2 -0
  100. package/pagination.d.mts.map +1 -0
  101. package/pagination.d.ts +2 -0
  102. package/pagination.d.ts.map +1 -0
  103. package/pagination.js +6 -0
  104. package/pagination.js.map +1 -0
  105. package/pagination.mjs +2 -0
  106. package/pagination.mjs.map +1 -0
  107. package/resources/creators.d.mts +326 -247
  108. package/resources/creators.d.mts.map +1 -1
  109. package/resources/creators.d.ts +326 -247
  110. package/resources/creators.d.ts.map +1 -1
  111. package/resources/creators.js +80 -63
  112. package/resources/creators.js.map +1 -1
  113. package/resources/creators.mjs +80 -63
  114. package/resources/creators.mjs.map +1 -1
  115. package/resources/health.d.mts +13 -1
  116. package/resources/health.d.mts.map +1 -1
  117. package/resources/health.d.ts +13 -1
  118. package/resources/health.d.ts.map +1 -1
  119. package/resources/health.js +4 -1
  120. package/resources/health.js.map +1 -1
  121. package/resources/health.mjs +4 -1
  122. package/resources/health.mjs.map +1 -1
  123. package/resources/index.d.mts +6 -7
  124. package/resources/index.d.mts.map +1 -1
  125. package/resources/index.d.ts +6 -7
  126. package/resources/index.d.ts.map +1 -1
  127. package/resources/index.js +5 -7
  128. package/resources/index.js.map +1 -1
  129. package/resources/index.mjs +2 -3
  130. package/resources/index.mjs.map +1 -1
  131. package/resources/posts.d.mts +82 -202
  132. package/resources/posts.d.mts.map +1 -1
  133. package/resources/posts.d.ts +82 -202
  134. package/resources/posts.d.ts.map +1 -1
  135. package/resources/posts.js +17 -38
  136. package/resources/posts.js.map +1 -1
  137. package/resources/posts.mjs +17 -38
  138. package/resources/posts.mjs.map +1 -1
  139. package/resources/profiles.d.mts +208 -58
  140. package/resources/profiles.d.mts.map +1 -1
  141. package/resources/profiles.d.ts +208 -58
  142. package/resources/profiles.d.ts.map +1 -1
  143. package/resources/profiles.js +37 -41
  144. package/resources/profiles.js.map +1 -1
  145. package/resources/profiles.mjs +37 -41
  146. package/resources/profiles.mjs.map +1 -1
  147. package/resources/raw/index.d.mts +4 -0
  148. package/resources/raw/index.d.mts.map +1 -0
  149. package/resources/raw/index.d.ts +4 -0
  150. package/resources/raw/index.d.ts.map +1 -0
  151. package/resources/raw/index.js +11 -0
  152. package/resources/raw/index.js.map +1 -0
  153. package/resources/raw/index.mjs +5 -0
  154. package/resources/raw/index.mjs.map +1 -0
  155. package/resources/raw/instagram.d.mts +215 -0
  156. package/resources/raw/instagram.d.mts.map +1 -0
  157. package/resources/raw/instagram.d.ts +215 -0
  158. package/resources/raw/instagram.d.ts.map +1 -0
  159. package/resources/raw/instagram.js +31 -0
  160. package/resources/raw/instagram.js.map +1 -0
  161. package/resources/raw/instagram.mjs +27 -0
  162. package/resources/raw/instagram.mjs.map +1 -0
  163. package/resources/raw/raw.d.mts +14 -0
  164. package/resources/raw/raw.d.mts.map +1 -0
  165. package/resources/raw/raw.d.ts +14 -0
  166. package/resources/raw/raw.d.ts.map +1 -0
  167. package/resources/raw/raw.js +21 -0
  168. package/resources/raw/raw.js.map +1 -0
  169. package/resources/raw/raw.mjs +16 -0
  170. package/resources/raw/raw.mjs.map +1 -0
  171. package/resources/raw/youtube.d.mts +455 -0
  172. package/resources/raw/youtube.d.mts.map +1 -0
  173. package/resources/raw/youtube.d.ts +455 -0
  174. package/resources/raw/youtube.d.ts.map +1 -0
  175. package/resources/raw/youtube.js +61 -0
  176. package/resources/raw/youtube.js.map +1 -0
  177. package/resources/raw/youtube.mjs +57 -0
  178. package/resources/raw/youtube.mjs.map +1 -0
  179. package/resources/raw.d.mts +2 -0
  180. package/resources/raw.d.mts.map +1 -0
  181. package/resources/raw.d.ts +2 -0
  182. package/resources/raw.d.ts.map +1 -0
  183. package/resources/raw.js +6 -0
  184. package/resources/raw.js.map +1 -0
  185. package/resources/raw.mjs +3 -0
  186. package/resources/raw.mjs.map +1 -0
  187. package/resources/search.d.mts +126 -117
  188. package/resources/search.d.mts.map +1 -1
  189. package/resources/search.d.ts +126 -117
  190. package/resources/search.d.ts.map +1 -1
  191. package/resources/search.js +46 -13
  192. package/resources/search.js.map +1 -1
  193. package/resources/search.mjs +46 -13
  194. package/resources/search.mjs.map +1 -1
  195. package/resources/shared.d.mts +55 -0
  196. package/resources/shared.d.mts.map +1 -0
  197. package/resources/shared.d.ts +55 -0
  198. package/resources/shared.d.ts.map +1 -0
  199. package/resources/shared.js +4 -0
  200. package/resources/shared.js.map +1 -0
  201. package/resources/shared.mjs +3 -0
  202. package/resources/shared.mjs.map +1 -0
  203. package/src/client.ts +153 -127
  204. package/src/core/api-promise.ts +4 -4
  205. package/src/core/error.ts +2 -2
  206. package/src/core/pagination.ts +232 -0
  207. package/src/core/resource.ts +3 -3
  208. package/src/index.ts +4 -3
  209. package/src/internal/parse.ts +8 -2
  210. package/src/internal/shims.ts +1 -1
  211. package/src/internal/uploads.ts +5 -5
  212. package/src/internal/utils/base64.ts +3 -3
  213. package/src/internal/utils/log.ts +3 -3
  214. package/src/internal/utils/path.ts +2 -2
  215. package/src/internal/utils/query.ts +7 -0
  216. package/src/internal/utils/values.ts +6 -6
  217. package/src/internal/utils.ts +1 -0
  218. package/src/pagination.ts +2 -0
  219. package/src/resources/creators.ts +369 -271
  220. package/src/resources/health.ts +13 -1
  221. package/src/resources/index.ts +22 -41
  222. package/src/resources/posts.ts +89 -232
  223. package/src/resources/profiles.ts +252 -59
  224. package/src/resources/raw/index.ts +16 -0
  225. package/src/resources/raw/instagram.ts +271 -0
  226. package/src/resources/raw/raw.ts +47 -0
  227. package/src/resources/raw/youtube.ts +585 -0
  228. package/src/resources/raw.ts +3 -0
  229. package/src/resources/search.ts +145 -131
  230. package/src/resources/shared.ts +66 -0
  231. package/src/version.ts +1 -1
  232. package/version.d.mts +1 -1
  233. package/version.d.ts +1 -1
  234. package/version.js +1 -1
  235. package/version.mjs +1 -1
  236. package/resources/brand-safety.d.mts +0 -234
  237. package/resources/brand-safety.d.mts.map +0 -1
  238. package/resources/brand-safety.d.ts +0 -234
  239. package/resources/brand-safety.d.ts.map +0 -1
  240. package/resources/brand-safety.js +0 -75
  241. package/resources/brand-safety.js.map +0 -1
  242. package/resources/brand-safety.mjs +0 -71
  243. package/resources/brand-safety.mjs.map +0 -1
  244. package/resources/lookalike.d.mts +0 -142
  245. package/resources/lookalike.d.mts.map +0 -1
  246. package/resources/lookalike.d.ts +0 -142
  247. package/resources/lookalike.d.ts.map +0 -1
  248. package/resources/lookalike.js +0 -28
  249. package/resources/lookalike.js.map +0 -1
  250. package/resources/lookalike.mjs +0 -24
  251. package/resources/lookalike.mjs.map +0 -1
  252. package/resources/match.d.mts +0 -90
  253. package/resources/match.d.mts.map +0 -1
  254. package/resources/match.d.ts +0 -90
  255. package/resources/match.d.ts.map +0 -1
  256. package/resources/match.js +0 -22
  257. package/resources/match.js.map +0 -1
  258. package/resources/match.mjs +0 -18
  259. package/resources/match.mjs.map +0 -1
  260. package/src/resources/brand-safety.ts +0 -304
  261. package/src/resources/lookalike.ts +0 -186
  262. package/src/resources/match.ts +0 -115
@@ -1,114 +1,307 @@
1
1
  // File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
2
 
3
3
  import { APIResource } from '../core/resource';
4
- import * as CreatorsAPI from './creators';
5
4
  import { APIPromise } from '../core/api-promise';
6
5
  import { RequestOptions } from '../internal/request-options';
6
+ import { path } from '../internal/utils/path';
7
7
 
8
+ /**
9
+ * Access individual social media profiles with detailed metrics, growth data, and activity information. Profiles are platform-specific accounts linked to creators.
10
+ */
8
11
  export class Profiles extends APIResource {
9
12
  /**
10
- * **DISCOVERY ENDPOINT**: Look up social account data when you know a username and
11
- * platform.
13
+ * Retrieve detailed profile data including metrics, growth statistics, and
14
+ * activity information from our database.
12
15
  *
13
- * **🎯 When to use this endpoint:**
16
+ * **Response includes:**
14
17
  *
15
- * - You have a username and platform (e.g., @fitness_guru on Instagram)
16
- * - You want to discover who a social account belongs to
17
- * - You need to look up specific social accounts by username
18
- * - You want to get social account metrics for known usernames
18
+ * - Basic info (bio, avatar, verification status)
19
+ * - Performance metrics (followers, engagement rate, avg likes/comments)
20
+ * - Growth data (30-day follower growth, monthly rate)
21
+ * - Activity data (last post date, posting frequency)
19
22
  *
20
- * **❌ When NOT to use this endpoint:**
23
+ * **Pricing**: 0.1 credits per request ($0.001)
21
24
  *
22
- * - ❌ You already have a creator UUID (use `/v1/creators/{id}/profiles` instead)
23
- * - ❌ You want to get all accounts for a creator (use
24
- * `/v1/creators/{id}/profiles` instead)
25
- *
26
- * **📊 Response Format:** Returns `SocialAccountLite` or `SocialAccountDetailed`
27
- * objects with identical structure to `/v1/creators/{id}/profiles`. Both endpoints
28
- * return the same data structure for consistency.
29
- *
30
- * **🔗 Data Relationships:**
31
- *
32
- * - Use the `creator_profile_id` field to fetch creator-level data via
33
- * `/v1/creators`
34
- * - Use the `creator_profile_id` to get all social accounts via
35
- * `/v1/creators/{id}/profiles`
36
- * - Creator-level data includes: name, bio, avatar, ai_one_line_bio
37
- * - Social account data includes: follower_count, engagement_rate, verified,
38
- * platform-specific metrics
39
- *
40
- * **🔄 Typical Workflow:**
25
+ * @example
26
+ * ```ts
27
+ * const profile = await client.profiles.get(
28
+ * 'fitness_coach_jane',
29
+ * { platform: 'instagram' },
30
+ * );
31
+ * ```
32
+ */
33
+ get(username: string, params: ProfileGetParams, options?: RequestOptions): APIPromise<ProfileGetResponse> {
34
+ const { platform } = params;
35
+ return this._client.get(path`/v1/profiles/${platform}/${username}`, options);
36
+ }
37
+
38
+ /**
39
+ * Look up multiple profiles in a single request. Efficiently retrieve data for up
40
+ * to 100 profiles at once.
41
41
  *
42
- * 1. **Discovery**: Call `/v1/profiles` with username+platform → get social
43
- * account data + creator_profile_id
44
- * 2. **Creator Data**: Call `/v1/creators` with creator_profile_id → get
45
- * creator-level data
46
- * 3. **All Accounts**: Call `/v1/creators/{id}/profiles` with creator_profile_id →
47
- * get all social accounts for that creator
42
+ * **Response includes:**
48
43
  *
49
- * **⚙️ Parameters:**
44
+ * - `found`: Array of profiles that exist in our database
45
+ * - `not_found`: Array of profiles that weren't found (consider live scraping
46
+ * these)
50
47
  *
51
- * - `mode`: `lite` (default) or `detailed` - controls response detail level
52
- * - `platforms`: Array of platform names to filter results (e.g.,
53
- * `["instagram", "tiktok"]`) **Pricing**: 0.01-0.05 credits per profile
54
- * (lite/detailed mode)
48
+ * **Pricing**: 0.1 credits per profile ($0.001)
55
49
  *
56
50
  * @example
57
51
  * ```ts
58
52
  * const response = await client.profiles.lookup({
59
53
  * profiles: [
60
- * { platform: 'instagram', username: 'fitness_guru' },
61
- * { platform: 'tiktok', username: 'fitness_guru' },
54
+ * {
55
+ * platform: 'instagram',
56
+ * username: 'fitness_coach_jane',
57
+ * },
62
58
  * ],
63
59
  * });
64
60
  * ```
65
61
  */
66
62
  lookup(body: ProfileLookupParams, options?: RequestOptions): APIPromise<ProfileLookupResponse> {
67
- return this._client.post('/v1/profiles', { body, ...options });
63
+ return this._client.post('/v1/profiles/lookup', { body, ...options });
68
64
  }
69
65
  }
70
66
 
71
- export interface CreatorReferenceByHandle {
67
+ /**
68
+ * Profile activity information
69
+ */
70
+ export interface ProfileActivity {
71
+ /**
72
+ * Timestamp of last post
73
+ */
74
+ last_post_at: string | null;
75
+ }
76
+
77
+ /**
78
+ * Profile growth statistics
79
+ */
80
+ export interface ProfileGrowth {
81
+ /**
82
+ * Follower growth percentage over 30 days (e.g. 2.5 means +2.5%)
83
+ */
84
+ followers_30d_pct: number;
85
+ }
86
+
87
+ /**
88
+ * Profile performance metrics
89
+ */
90
+ export interface ProfileMetrics {
91
+ /**
92
+ * Average comments on recent posts
93
+ */
94
+ avg_comments_recent: number;
95
+
96
+ /**
97
+ * Average likes on recent posts
98
+ */
99
+ avg_likes_recent: number;
100
+
101
+ /**
102
+ * Average views on recent posts (for video content)
103
+ */
104
+ avg_views_recent: number | null;
105
+
106
+ /**
107
+ * Engagement rate as a percentage (e.g. 3.5 means 3.5%)
108
+ */
109
+ engagement_rate: number;
110
+
111
+ /**
112
+ * Follower count
113
+ */
114
+ followers: number;
115
+
116
+ /**
117
+ * Following count
118
+ */
119
+ following: number;
120
+
121
+ /**
122
+ * Total post count
123
+ */
124
+ posts: number;
125
+
126
+ /**
127
+ * Posts in the last 30 days
128
+ */
129
+ posts_last_30d: number;
130
+
131
+ /**
132
+ * Average posts per week
133
+ */
134
+ posts_per_week: number;
135
+ }
136
+
137
+ /**
138
+ * Full profile details
139
+ */
140
+ export interface ProfileResponseData {
141
+ /**
142
+ * Profile unique identifier
143
+ */
144
+ id: string;
145
+
146
+ /**
147
+ * Profile activity information
148
+ */
149
+ activity: ProfileActivity;
150
+
151
+ /**
152
+ * Avatar URL
153
+ */
154
+ avatar_url: string | null;
155
+
156
+ /**
157
+ * Profile bio
158
+ */
159
+ bio: string | null;
160
+
161
+ /**
162
+ * Account category
163
+ */
164
+ category: string | null;
165
+
166
+ /**
167
+ * Creator unique identifier
168
+ */
169
+ creator_id: string;
170
+
171
+ /**
172
+ * Last data refresh timestamp
173
+ */
174
+ data_updated_at: string | null;
175
+
176
+ /**
177
+ * Display name
178
+ */
179
+ display_name: string | null;
180
+
181
+ /**
182
+ * External website URL from bio
183
+ */
184
+ external_url: string | null;
185
+
186
+ /**
187
+ * Profile growth statistics
188
+ */
189
+ growth: ProfileGrowth;
190
+
191
+ /**
192
+ * Whether this is a business account
193
+ */
194
+ is_business: boolean;
195
+
196
+ /**
197
+ * Whether the account is private
198
+ */
199
+ is_private: boolean;
200
+
201
+ /**
202
+ * Whether the account is verified
203
+ */
204
+ is_verified: boolean;
205
+
206
+ /**
207
+ * Profile performance metrics
208
+ */
209
+ metrics: ProfileMetrics;
210
+
211
+ /**
212
+ * Social media platform
213
+ */
214
+ platform: 'instagram';
215
+
216
+ /**
217
+ * Listed pronouns
218
+ */
219
+ pronouns: Array<string> | null;
220
+
72
221
  /**
73
- * Social platform where the creator exists
222
+ * Profile URL
74
223
  */
75
- platform: 'instagram' | 'tiktok';
224
+ url: string;
76
225
 
77
226
  /**
78
- * Username on the platform
227
+ * Profile username
79
228
  */
80
229
  username: string;
81
230
  }
82
231
 
232
+ export interface ProfileGetResponse {
233
+ /**
234
+ * Full profile details
235
+ */
236
+ data: ProfileResponseData;
237
+
238
+ /**
239
+ * Present when partial results were returned because profile metrics/data were
240
+ * skipped due to integrity issues.
241
+ */
242
+ warning?: string;
243
+ }
244
+
83
245
  export interface ProfileLookupResponse {
84
246
  /**
85
- * Array of social account objects. The structure depends on the `mode` parameter:
86
- *
87
- * - If `mode: "lite"`: Returns SocialAccountLite objects
88
- * - If `mode: "detailed"`: Returns SocialAccountDetailed objects with additional
89
- * fields
247
+ * Profiles that were found
248
+ */
249
+ data: Array<ProfileResponseData>;
250
+
251
+ /**
252
+ * Profiles that were not found
90
253
  */
91
- profiles?: Array<CreatorsAPI.SocialAccountLite | CreatorsAPI.SocialAccountDetailed>;
254
+ not_found: Array<ProfileLookupResponse.NotFound>;
92
255
  }
93
256
 
94
- export interface ProfileLookupParams {
95
- profiles: Array<CreatorReferenceByHandle>;
257
+ export namespace ProfileLookupResponse {
258
+ export interface NotFound {
259
+ /**
260
+ * Social media platform
261
+ */
262
+ platform: 'instagram';
263
+
264
+ username: string;
265
+ }
266
+ }
96
267
 
268
+ export interface ProfileGetParams {
97
269
  /**
98
- * Response detail level - lite for basic fields, detailed for additional metrics
270
+ * Platform name
99
271
  */
100
- mode?: 'lite' | 'detailed';
272
+ platform: string;
273
+ }
101
274
 
275
+ export interface ProfileLookupParams {
102
276
  /**
103
- * Filter results to only include these platforms
277
+ * Profiles to lookup
104
278
  */
105
- platforms?: Array<'instagram' | 'tiktok'>;
279
+ profiles: Array<ProfileLookupParams.Profile>;
280
+ }
281
+
282
+ export namespace ProfileLookupParams {
283
+ export interface Profile {
284
+ /**
285
+ * Social media platform
286
+ */
287
+ platform: 'instagram';
288
+
289
+ /**
290
+ * Username to lookup
291
+ */
292
+ username: string;
293
+ }
106
294
  }
107
295
 
108
296
  export declare namespace Profiles {
109
297
  export {
110
- type CreatorReferenceByHandle as CreatorReferenceByHandle,
298
+ type ProfileActivity as ProfileActivity,
299
+ type ProfileGrowth as ProfileGrowth,
300
+ type ProfileMetrics as ProfileMetrics,
301
+ type ProfileResponseData as ProfileResponseData,
302
+ type ProfileGetResponse as ProfileGetResponse,
111
303
  type ProfileLookupResponse as ProfileLookupResponse,
304
+ type ProfileGetParams as ProfileGetParams,
112
305
  type ProfileLookupParams as ProfileLookupParams,
113
306
  };
114
307
  }
@@ -0,0 +1,16 @@
1
+ // File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ export { Instagram, type InstagramGetProfileResponse, type InstagramGetProfileParams } from './instagram';
4
+ export { Raw } from './raw';
5
+ export {
6
+ Youtube,
7
+ type TranscriptSegment,
8
+ type YoutubeGetChannelResponse,
9
+ type YoutubeGetChannelTranscriptsResponse,
10
+ type YoutubeGetTranscriptResponse,
11
+ type YoutubeSearchResponse,
12
+ type YoutubeGetChannelParams,
13
+ type YoutubeGetChannelTranscriptsParams,
14
+ type YoutubeGetTranscriptParams,
15
+ type YoutubeSearchParams,
16
+ } from './youtube';
@@ -0,0 +1,271 @@
1
+ // File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ import { APIResource } from '../../core/resource';
4
+ import { APIPromise } from '../../core/api-promise';
5
+ import { RequestOptions } from '../../internal/request-options';
6
+ import { path } from '../../internal/utils/path';
7
+
8
+ /**
9
+ * Fetch fresh data directly from social platforms in real-time. Use when you need the most current information or data for profiles not yet in our database.
10
+ */
11
+ export class Instagram extends APIResource {
12
+ /**
13
+ * Fetch fresh Instagram profile data directly from Instagram in real-time. Use
14
+ * this when you need the most current follower counts, bio, or recent activity.
15
+ *
16
+ * **When to use live scraping:**
17
+ *
18
+ * - Profile not found in our database
19
+ * - Need real-time follower/engagement data
20
+ * - Verifying current profile status before campaign
21
+ *
22
+ * **Note:** Live scraping is slower than cached data (2-5 seconds) and costs more.
23
+ * Use cached endpoints when freshness isn't critical.
24
+ *
25
+ * **Pricing**: 0.5 credits per profile scraped ($0.005)
26
+ */
27
+ getProfile(
28
+ username: string,
29
+ query: InstagramGetProfileParams | null | undefined = {},
30
+ options?: RequestOptions,
31
+ ): APIPromise<InstagramGetProfileResponse> {
32
+ return this._client.get(path`/v1/raw/instagram/profile/${username}`, { query, ...options });
33
+ }
34
+ }
35
+
36
+ export interface InstagramGetProfileResponse {
37
+ /**
38
+ * Live scraped profile data
39
+ */
40
+ data: InstagramGetProfileResponse.Data;
41
+ }
42
+
43
+ export namespace InstagramGetProfileResponse {
44
+ /**
45
+ * Live scraped profile data
46
+ */
47
+ export interface Data {
48
+ /**
49
+ * Profile unique identifier
50
+ */
51
+ id: string;
52
+
53
+ activity: Data.Activity;
54
+
55
+ /**
56
+ * Avatar URL
57
+ */
58
+ avatar_url: string | null;
59
+
60
+ /**
61
+ * Profile bio
62
+ */
63
+ bio: string | null;
64
+
65
+ /**
66
+ * Account category
67
+ */
68
+ category: string | null;
69
+
70
+ /**
71
+ * Creator unique identifier
72
+ */
73
+ creator_id: string;
74
+
75
+ /**
76
+ * Last data refresh timestamp
77
+ */
78
+ data_updated_at: string | null;
79
+
80
+ /**
81
+ * Display name
82
+ */
83
+ display_name: string | null;
84
+
85
+ /**
86
+ * External website URL
87
+ */
88
+ external_url: string | null;
89
+
90
+ growth: Data.Growth;
91
+
92
+ /**
93
+ * Whether this is a business account
94
+ */
95
+ is_business: boolean;
96
+
97
+ /**
98
+ * Whether the account is private
99
+ */
100
+ is_private: boolean;
101
+
102
+ /**
103
+ * Whether the account is verified
104
+ */
105
+ is_verified: boolean;
106
+
107
+ metrics: Data.Metrics;
108
+
109
+ /**
110
+ * Social media platform
111
+ */
112
+ platform: 'instagram';
113
+
114
+ /**
115
+ * Listed pronouns
116
+ */
117
+ pronouns: Array<string> | null;
118
+
119
+ /**
120
+ * When this data was scraped
121
+ */
122
+ scraped_at: string;
123
+
124
+ /**
125
+ * Profile URL
126
+ */
127
+ url: string;
128
+
129
+ /**
130
+ * Profile username
131
+ */
132
+ username: string;
133
+
134
+ /**
135
+ * Recent posts (only included when include_posts=true)
136
+ */
137
+ posts?: Array<Data.Post>;
138
+ }
139
+
140
+ export namespace Data {
141
+ export interface Activity {
142
+ /**
143
+ * Timestamp of last post
144
+ */
145
+ last_post_at: string | null;
146
+ }
147
+
148
+ export interface Growth {
149
+ /**
150
+ * Follower growth percentage over 30 days (e.g. 2.5 means +2.5%)
151
+ */
152
+ followers_30d_pct: number;
153
+ }
154
+
155
+ export interface Metrics {
156
+ /**
157
+ * Average comments on recent posts
158
+ */
159
+ avg_comments_recent: number;
160
+
161
+ /**
162
+ * Average likes on recent posts
163
+ */
164
+ avg_likes_recent: number;
165
+
166
+ /**
167
+ * Average views on recent posts
168
+ */
169
+ avg_views_recent: number | null;
170
+
171
+ /**
172
+ * Engagement rate as a percentage (e.g. 3.5 means 3.5%)
173
+ */
174
+ engagement_rate: number;
175
+
176
+ /**
177
+ * Follower count
178
+ */
179
+ followers: number;
180
+
181
+ /**
182
+ * Following count
183
+ */
184
+ following: number;
185
+
186
+ /**
187
+ * Total post count
188
+ */
189
+ posts: number;
190
+
191
+ /**
192
+ * Posts in the last 30 days
193
+ */
194
+ posts_last_30d: number;
195
+
196
+ /**
197
+ * Average posts per week
198
+ */
199
+ posts_per_week: number;
200
+ }
201
+
202
+ /**
203
+ * Simplified post from live scrape
204
+ */
205
+ export interface Post {
206
+ /**
207
+ * Post unique identifier
208
+ */
209
+ id: string;
210
+
211
+ /**
212
+ * Post caption
213
+ */
214
+ caption: string | null;
215
+
216
+ /**
217
+ * Comment count
218
+ */
219
+ comments_count: number | null;
220
+
221
+ /**
222
+ * Like count
223
+ */
224
+ likes_count: number | null;
225
+
226
+ /**
227
+ * Primary media URL
228
+ */
229
+ media_url: string | null;
230
+
231
+ /**
232
+ * Platform-specific post ID
233
+ */
234
+ platform_id: string;
235
+
236
+ /**
237
+ * Post timestamp
238
+ */
239
+ posted_at: string;
240
+
241
+ /**
242
+ * Type of post
243
+ */
244
+ type: 'image' | 'video' | 'carousel' | 'reel' | 'story';
245
+
246
+ /**
247
+ * Post URL
248
+ */
249
+ url: string;
250
+ }
251
+ }
252
+ }
253
+
254
+ export interface InstagramGetProfileParams {
255
+ /**
256
+ * Include recent posts in response
257
+ */
258
+ include_posts?: boolean;
259
+
260
+ /**
261
+ * Number of posts to include
262
+ */
263
+ post_limit?: number;
264
+ }
265
+
266
+ export declare namespace Instagram {
267
+ export {
268
+ type InstagramGetProfileResponse as InstagramGetProfileResponse,
269
+ type InstagramGetProfileParams as InstagramGetProfileParams,
270
+ };
271
+ }
@@ -0,0 +1,47 @@
1
+ // File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ import { APIResource } from '../../core/resource';
4
+ import * as InstagramAPI from './instagram';
5
+ import { Instagram, InstagramGetProfileParams, InstagramGetProfileResponse } from './instagram';
6
+ import * as YoutubeAPI from './youtube';
7
+ import {
8
+ TranscriptSegment,
9
+ Youtube,
10
+ YoutubeGetChannelParams,
11
+ YoutubeGetChannelResponse,
12
+ YoutubeGetChannelTranscriptsParams,
13
+ YoutubeGetChannelTranscriptsResponse,
14
+ YoutubeGetTranscriptParams,
15
+ YoutubeGetTranscriptResponse,
16
+ YoutubeSearchParams,
17
+ YoutubeSearchResponse,
18
+ } from './youtube';
19
+
20
+ export class Raw extends APIResource {
21
+ instagram: InstagramAPI.Instagram = new InstagramAPI.Instagram(this._client);
22
+ youtube: YoutubeAPI.Youtube = new YoutubeAPI.Youtube(this._client);
23
+ }
24
+
25
+ Raw.Instagram = Instagram;
26
+ Raw.Youtube = Youtube;
27
+
28
+ export declare namespace Raw {
29
+ export {
30
+ Instagram as Instagram,
31
+ type InstagramGetProfileResponse as InstagramGetProfileResponse,
32
+ type InstagramGetProfileParams as InstagramGetProfileParams,
33
+ };
34
+
35
+ export {
36
+ Youtube as Youtube,
37
+ type TranscriptSegment as TranscriptSegment,
38
+ type YoutubeGetChannelResponse as YoutubeGetChannelResponse,
39
+ type YoutubeGetChannelTranscriptsResponse as YoutubeGetChannelTranscriptsResponse,
40
+ type YoutubeGetTranscriptResponse as YoutubeGetTranscriptResponse,
41
+ type YoutubeSearchResponse as YoutubeSearchResponse,
42
+ type YoutubeGetChannelParams as YoutubeGetChannelParams,
43
+ type YoutubeGetChannelTranscriptsParams as YoutubeGetChannelTranscriptsParams,
44
+ type YoutubeGetTranscriptParams as YoutubeGetTranscriptParams,
45
+ type YoutubeSearchParams as YoutubeSearchParams,
46
+ };
47
+ }