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,189 +1,198 @@
1
1
  import { APIResource } from "../core/resource.mjs";
2
- import * as CreatorsAPI from "./creators.mjs";
2
+ import * as SearchAPI from "./search.mjs";
3
+ import * as Shared from "./shared.mjs";
3
4
  import { APIPromise } from "../core/api-promise.mjs";
5
+ import { PagePromise, QueryCursor, type QueryCursorParams } from "../core/pagination.mjs";
4
6
  import { RequestOptions } from "../internal/request-options.mjs";
7
+ /**
8
+ * AI-powered semantic search to find creators using natural language queries. Understands intent and context to match creators based on content themes, audience, and style.
9
+ */
5
10
  export declare class Search extends APIResource {
6
11
  /**
7
- * Find influencers using AI-powered search with natural language queries and
8
- * optional filters.
12
+ * Search for creators using natural language queries. The AI understands intent
13
+ * and context to match creators based on content themes, audience demographics,
14
+ * and style.
15
+ *
16
+ * The response includes a `search_id` that can be used with `GET /v1/search/{id}`
17
+ * to paginate through results for free.
18
+ *
19
+ * **Use cases:**
9
20
  *
10
- * **Pricing**:
21
+ * - Find creators in a specific niche ("vegan food bloggers in LA")
22
+ * - Discover creators with specific audience characteristics ("fitness influencers
23
+ * with millennial audience")
24
+ * - Search by content style ("creators who post cinematic travel videos")
11
25
  *
12
- * - Base: 2.0 credits per creator returned
13
- * - Detailed mode: Additional 0.05 credits per social account profile
14
- * - **Example**: 10 creators in lite mode = 20 credits
15
- * - **Example**: 10 creators with avg 2 profiles each in detailed mode = 20 + (10
16
- * × 2 × 0.05) = 21 credits
26
+ * **Pricing**: 25 credits base + 2 credits per creator returned
17
27
  *
18
28
  * @example
19
29
  * ```ts
20
- * const response = await client.search.findCreators({
30
+ * const search = await client.search.create({
21
31
  * query:
22
- * 'fitness influencers with 100k+ followers who post workout content',
32
+ * 'fitness influencers with 100k+ followers who post workout videos',
23
33
  * });
24
34
  * ```
25
35
  */
26
- findCreators(params: SearchFindCreatorsParams, options?: RequestOptions): APIPromise<SearchFindCreatorsResponse>;
36
+ create(body: SearchCreateParams, options?: RequestOptions): APIPromise<SearchCreateResponse>;
37
+ /**
38
+ * Paginate through results from a previous search. Use the `search_id` returned by
39
+ * `POST /v1/search` to fetch additional pages.
40
+ *
41
+ * Search sessions expire after 1 hour. After expiry, a new search must be run.
42
+ *
43
+ * **Pricing**: 0 credits (included with initial search)
44
+ *
45
+ * @example
46
+ * ```ts
47
+ * // Automatically fetches more pages as needed.
48
+ * for await (const searchRetrieveResponse of client.search.retrieve(
49
+ * '123e4567-e89b-12d3-a456-426614174000',
50
+ * )) {
51
+ * // ...
52
+ * }
53
+ * ```
54
+ */
55
+ retrieve(id: string, query?: SearchRetrieveParams | null | undefined, options?: RequestOptions): PagePromise<SearchRetrieveResponsesQueryCursor, SearchRetrieveResponse>;
27
56
  }
57
+ export type SearchRetrieveResponsesQueryCursor = QueryCursor<SearchRetrieveResponse>;
28
58
  /**
29
- * Search result item containing creator information and all social media profiles
59
+ * Search match information
30
60
  */
31
- export interface SearchItem {
61
+ export interface MatchInfo {
32
62
  /**
33
- * Unique creator identifier (UUID v4)
63
+ * Human-readable match reasons
34
64
  */
35
- id: string;
65
+ reasons: Array<string>;
36
66
  /**
37
- * AI-powered recommendation analysis explaining why this creator matches your
38
- * query
67
+ * Match relevance score (0-1)
39
68
  */
40
- ai_recommendation: SearchItem.AIRecommendation;
69
+ score: number;
70
+ }
71
+ export interface SearchCreateResponse {
72
+ data: Array<SearchCreateResponse.Data>;
41
73
  /**
42
- * Creator's display name or full name
74
+ * Whether more results are available
43
75
  */
44
- name: string;
76
+ has_more: boolean;
45
77
  /**
46
- * Array of ALL social media profiles for this creator
78
+ * Cursor for the next page
47
79
  */
48
- profiles: Array<CreatorsAPI.SocialAccountLite | CreatorsAPI.SocialAccountDetailed>;
80
+ next_cursor: string | null;
49
81
  /**
50
- * Profile picture URL. null if no avatar is available. URLs are typically valid
51
- * for 24 hours.
82
+ * Search ID. Use with GET /v1/search/{id} for free pagination.
52
83
  */
53
- avatar_url?: string | null;
84
+ search_id: string;
54
85
  /**
55
- * Creator's biography or description text. May be aggregated from multiple
56
- * platforms. null if unavailable.
86
+ * Total number of results across all pages
57
87
  */
58
- bio?: string | null;
88
+ total: number;
59
89
  }
60
- export declare namespace SearchItem {
61
- /**
62
- * AI-powered recommendation analysis explaining why this creator matches your
63
- * query
64
- */
65
- interface AIRecommendation {
90
+ export declare namespace SearchCreateResponse {
91
+ interface Data {
66
92
  /**
67
- * Human-readable explanation of why this creator was recommended. Highlights key
68
- * matching factors from the query.
93
+ * Basic creator information
69
94
  */
70
- explanation: string;
95
+ creator: Shared.CreatorBasic;
71
96
  /**
72
- * Relevance score from 0 to 1, where 1 is a perfect match. Scores above 0.7
73
- * indicate strong relevance.
97
+ * Search match information
74
98
  */
75
- score: number;
99
+ match: SearchAPI.MatchInfo;
76
100
  /**
77
- * Fact-level evidence from hybrid search explaining why this creator matched. Each
78
- * fact represents specific, verifiable information about the creator.
101
+ * Abbreviated profile information
79
102
  */
80
- evidence?: Array<AIRecommendation.Evidence>;
81
- }
82
- namespace AIRecommendation {
103
+ primary_profile: Shared.ProfileSummary | null;
83
104
  /**
84
- * Individual fact from hybrid search providing evidence for why a creator matched.
85
- * Facts are specific, verifiable pieces of information extracted from creator
86
- * data.
105
+ * Abbreviated profile information
87
106
  */
88
- interface Evidence {
89
- /**
90
- * The actual fact text describing specific information about the creator
91
- */
92
- fact: string;
93
- /**
94
- * Unique identifier for this fact
95
- */
96
- factId: string;
97
- /**
98
- * Combined relevance score (similarity × confidence × temporal decay). Higher
99
- * scores indicate stronger evidence for the match.
100
- */
101
- score: number;
102
- /**
103
- * When this fact was created or observed (ISO 8601 format)
104
- */
105
- created_at?: string;
106
- /**
107
- * Array of source post IDs where this fact originated. A single fact may come from
108
- * multiple posts.
109
- */
110
- source_post_id?: Array<string>;
111
- }
107
+ relevant_profile: Shared.ProfileSummary | null;
112
108
  }
113
109
  }
114
- export interface SearchFindCreatorsResponse {
110
+ export interface SearchRetrieveResponse {
111
+ /**
112
+ * Basic creator information
113
+ */
114
+ creator: Shared.CreatorBasic;
115
115
  /**
116
- * Total number of matching results in the database before pagination. Use this
117
- * with `has_more` to display "Showing 25 of 1,247 results" in your UI.
116
+ * Search match information
118
117
  */
119
- filtered_total?: number;
118
+ match: MatchInfo;
120
119
  /**
121
- * Whether there are more results available for pagination. If true, use the
122
- * `next_cursor` value in your next request.
120
+ * Abbreviated profile information
123
121
  */
124
- has_more?: boolean;
125
- items?: Array<SearchItem>;
122
+ primary_profile: Shared.ProfileSummary | null;
126
123
  /**
127
- * Opaque cursor for fetching the next page of results. Pass this value as the
128
- * `cursor` query parameter. Only present when `has_more` is true.
124
+ * Abbreviated profile information
129
125
  */
130
- next_cursor?: string;
126
+ relevant_profile: Shared.ProfileSummary | null;
131
127
  }
132
- export interface SearchFindCreatorsParams {
128
+ export interface SearchCreateParams {
133
129
  /**
134
- * Body param: Natural language search query
130
+ * Natural language search query
135
131
  */
136
132
  query: string;
137
133
  /**
138
- * Query param: Opaque pagination cursor from previous response's `next_cursor`. Do
139
- * not construct manually.
134
+ * Additional filters
140
135
  */
141
- cursor?: string;
136
+ filters?: SearchCreateParams.Filters;
142
137
  /**
143
- * Query param: Maximum number of results to return
138
+ * Maximum results to return
144
139
  */
145
140
  limit?: number;
146
141
  /**
147
- * Body param:
148
- */
149
- filters?: SearchFindCreatorsParams.Filters;
150
- /**
151
- * Body param: Filter social accounts to only these platforms. Reduces payload
152
- * size. Does not affect search results or costs.
142
+ * Filter results to specific platforms
153
143
  */
154
- include_platforms?: Array<'instagram' | 'tiktok'>;
144
+ platforms?: Array<'instagram'>;
145
+ }
146
+ export declare namespace SearchCreateParams {
155
147
  /**
156
- * Body param: Response detail level. `lite` returns basic fields (username,
157
- * follower_count, engagement_rate). `detailed` adds avg_comments_recent,
158
- * avg_video_views_recent, follower_change_rate, etc. Detailed mode costs 5x more
159
- * (0.05 vs 0.01 credits per profile).
148
+ * Additional filters
160
149
  */
161
- mode?: 'lite' | 'detailed';
162
- }
163
- export declare namespace SearchFindCreatorsParams {
164
150
  interface Filters {
165
151
  /**
166
- * Per-platform filter definitions
152
+ * Filter by engagement rate
153
+ */
154
+ engagement_rate?: Filters.EngagementRate;
155
+ /**
156
+ * Filter by follower count
167
157
  */
168
- platform_filters?: Array<Filters.PlatformFilter>;
158
+ followers?: Filters.Followers;
169
159
  /**
170
- * How to combine platform_filters. `OR` = creator matches ANY platform filter.
171
- * `AND` = creator must match ALL platform filters. Default: OR.
160
+ * Filter by verified status
172
161
  */
173
- platform_logic?: 'AND' | 'OR';
162
+ verified?: boolean;
174
163
  }
175
164
  namespace Filters {
176
- interface PlatformFilter {
177
- platform: 'instagram' | 'tiktok';
178
- max_engagement_rate?: number;
179
- max_followers?: number;
180
- min_engagement_rate?: number;
181
- min_followers?: number;
182
- verified_only?: boolean;
165
+ /**
166
+ * Filter by engagement rate
167
+ */
168
+ interface EngagementRate {
169
+ /**
170
+ * Maximum engagement rate (%)
171
+ */
172
+ max?: number;
173
+ /**
174
+ * Minimum engagement rate (%)
175
+ */
176
+ min?: number;
177
+ }
178
+ /**
179
+ * Filter by follower count
180
+ */
181
+ interface Followers {
182
+ /**
183
+ * Maximum follower count
184
+ */
185
+ max?: number;
186
+ /**
187
+ * Minimum follower count
188
+ */
189
+ min?: number;
183
190
  }
184
191
  }
185
192
  }
193
+ export interface SearchRetrieveParams extends QueryCursorParams {
194
+ }
186
195
  export declare namespace Search {
187
- export { type SearchItem as SearchItem, type SearchFindCreatorsResponse as SearchFindCreatorsResponse, type SearchFindCreatorsParams as SearchFindCreatorsParams, };
196
+ export { type MatchInfo as MatchInfo, type SearchCreateResponse as SearchCreateResponse, type SearchRetrieveResponse as SearchRetrieveResponse, type SearchRetrieveResponsesQueryCursor as SearchRetrieveResponsesQueryCursor, type SearchCreateParams as SearchCreateParams, type SearchRetrieveParams as SearchRetrieveParams, };
188
197
  }
189
198
  //# sourceMappingURL=search.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"search.d.mts","sourceRoot":"","sources":["../src/resources/search.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"search.d.mts","sourceRoot":"","sources":["../src/resources/search.ts"],"names":[],"mappings":"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"}
@@ -1,189 +1,198 @@
1
1
  import { APIResource } from "../core/resource.js";
2
- import * as CreatorsAPI from "./creators.js";
2
+ import * as SearchAPI from "./search.js";
3
+ import * as Shared from "./shared.js";
3
4
  import { APIPromise } from "../core/api-promise.js";
5
+ import { PagePromise, QueryCursor, type QueryCursorParams } from "../core/pagination.js";
4
6
  import { RequestOptions } from "../internal/request-options.js";
7
+ /**
8
+ * AI-powered semantic search to find creators using natural language queries. Understands intent and context to match creators based on content themes, audience, and style.
9
+ */
5
10
  export declare class Search extends APIResource {
6
11
  /**
7
- * Find influencers using AI-powered search with natural language queries and
8
- * optional filters.
12
+ * Search for creators using natural language queries. The AI understands intent
13
+ * and context to match creators based on content themes, audience demographics,
14
+ * and style.
15
+ *
16
+ * The response includes a `search_id` that can be used with `GET /v1/search/{id}`
17
+ * to paginate through results for free.
18
+ *
19
+ * **Use cases:**
9
20
  *
10
- * **Pricing**:
21
+ * - Find creators in a specific niche ("vegan food bloggers in LA")
22
+ * - Discover creators with specific audience characteristics ("fitness influencers
23
+ * with millennial audience")
24
+ * - Search by content style ("creators who post cinematic travel videos")
11
25
  *
12
- * - Base: 2.0 credits per creator returned
13
- * - Detailed mode: Additional 0.05 credits per social account profile
14
- * - **Example**: 10 creators in lite mode = 20 credits
15
- * - **Example**: 10 creators with avg 2 profiles each in detailed mode = 20 + (10
16
- * × 2 × 0.05) = 21 credits
26
+ * **Pricing**: 25 credits base + 2 credits per creator returned
17
27
  *
18
28
  * @example
19
29
  * ```ts
20
- * const response = await client.search.findCreators({
30
+ * const search = await client.search.create({
21
31
  * query:
22
- * 'fitness influencers with 100k+ followers who post workout content',
32
+ * 'fitness influencers with 100k+ followers who post workout videos',
23
33
  * });
24
34
  * ```
25
35
  */
26
- findCreators(params: SearchFindCreatorsParams, options?: RequestOptions): APIPromise<SearchFindCreatorsResponse>;
36
+ create(body: SearchCreateParams, options?: RequestOptions): APIPromise<SearchCreateResponse>;
37
+ /**
38
+ * Paginate through results from a previous search. Use the `search_id` returned by
39
+ * `POST /v1/search` to fetch additional pages.
40
+ *
41
+ * Search sessions expire after 1 hour. After expiry, a new search must be run.
42
+ *
43
+ * **Pricing**: 0 credits (included with initial search)
44
+ *
45
+ * @example
46
+ * ```ts
47
+ * // Automatically fetches more pages as needed.
48
+ * for await (const searchRetrieveResponse of client.search.retrieve(
49
+ * '123e4567-e89b-12d3-a456-426614174000',
50
+ * )) {
51
+ * // ...
52
+ * }
53
+ * ```
54
+ */
55
+ retrieve(id: string, query?: SearchRetrieveParams | null | undefined, options?: RequestOptions): PagePromise<SearchRetrieveResponsesQueryCursor, SearchRetrieveResponse>;
27
56
  }
57
+ export type SearchRetrieveResponsesQueryCursor = QueryCursor<SearchRetrieveResponse>;
28
58
  /**
29
- * Search result item containing creator information and all social media profiles
59
+ * Search match information
30
60
  */
31
- export interface SearchItem {
61
+ export interface MatchInfo {
32
62
  /**
33
- * Unique creator identifier (UUID v4)
63
+ * Human-readable match reasons
34
64
  */
35
- id: string;
65
+ reasons: Array<string>;
36
66
  /**
37
- * AI-powered recommendation analysis explaining why this creator matches your
38
- * query
67
+ * Match relevance score (0-1)
39
68
  */
40
- ai_recommendation: SearchItem.AIRecommendation;
69
+ score: number;
70
+ }
71
+ export interface SearchCreateResponse {
72
+ data: Array<SearchCreateResponse.Data>;
41
73
  /**
42
- * Creator's display name or full name
74
+ * Whether more results are available
43
75
  */
44
- name: string;
76
+ has_more: boolean;
45
77
  /**
46
- * Array of ALL social media profiles for this creator
78
+ * Cursor for the next page
47
79
  */
48
- profiles: Array<CreatorsAPI.SocialAccountLite | CreatorsAPI.SocialAccountDetailed>;
80
+ next_cursor: string | null;
49
81
  /**
50
- * Profile picture URL. null if no avatar is available. URLs are typically valid
51
- * for 24 hours.
82
+ * Search ID. Use with GET /v1/search/{id} for free pagination.
52
83
  */
53
- avatar_url?: string | null;
84
+ search_id: string;
54
85
  /**
55
- * Creator's biography or description text. May be aggregated from multiple
56
- * platforms. null if unavailable.
86
+ * Total number of results across all pages
57
87
  */
58
- bio?: string | null;
88
+ total: number;
59
89
  }
60
- export declare namespace SearchItem {
61
- /**
62
- * AI-powered recommendation analysis explaining why this creator matches your
63
- * query
64
- */
65
- interface AIRecommendation {
90
+ export declare namespace SearchCreateResponse {
91
+ interface Data {
66
92
  /**
67
- * Human-readable explanation of why this creator was recommended. Highlights key
68
- * matching factors from the query.
93
+ * Basic creator information
69
94
  */
70
- explanation: string;
95
+ creator: Shared.CreatorBasic;
71
96
  /**
72
- * Relevance score from 0 to 1, where 1 is a perfect match. Scores above 0.7
73
- * indicate strong relevance.
97
+ * Search match information
74
98
  */
75
- score: number;
99
+ match: SearchAPI.MatchInfo;
76
100
  /**
77
- * Fact-level evidence from hybrid search explaining why this creator matched. Each
78
- * fact represents specific, verifiable information about the creator.
101
+ * Abbreviated profile information
79
102
  */
80
- evidence?: Array<AIRecommendation.Evidence>;
81
- }
82
- namespace AIRecommendation {
103
+ primary_profile: Shared.ProfileSummary | null;
83
104
  /**
84
- * Individual fact from hybrid search providing evidence for why a creator matched.
85
- * Facts are specific, verifiable pieces of information extracted from creator
86
- * data.
105
+ * Abbreviated profile information
87
106
  */
88
- interface Evidence {
89
- /**
90
- * The actual fact text describing specific information about the creator
91
- */
92
- fact: string;
93
- /**
94
- * Unique identifier for this fact
95
- */
96
- factId: string;
97
- /**
98
- * Combined relevance score (similarity × confidence × temporal decay). Higher
99
- * scores indicate stronger evidence for the match.
100
- */
101
- score: number;
102
- /**
103
- * When this fact was created or observed (ISO 8601 format)
104
- */
105
- created_at?: string;
106
- /**
107
- * Array of source post IDs where this fact originated. A single fact may come from
108
- * multiple posts.
109
- */
110
- source_post_id?: Array<string>;
111
- }
107
+ relevant_profile: Shared.ProfileSummary | null;
112
108
  }
113
109
  }
114
- export interface SearchFindCreatorsResponse {
110
+ export interface SearchRetrieveResponse {
111
+ /**
112
+ * Basic creator information
113
+ */
114
+ creator: Shared.CreatorBasic;
115
115
  /**
116
- * Total number of matching results in the database before pagination. Use this
117
- * with `has_more` to display "Showing 25 of 1,247 results" in your UI.
116
+ * Search match information
118
117
  */
119
- filtered_total?: number;
118
+ match: MatchInfo;
120
119
  /**
121
- * Whether there are more results available for pagination. If true, use the
122
- * `next_cursor` value in your next request.
120
+ * Abbreviated profile information
123
121
  */
124
- has_more?: boolean;
125
- items?: Array<SearchItem>;
122
+ primary_profile: Shared.ProfileSummary | null;
126
123
  /**
127
- * Opaque cursor for fetching the next page of results. Pass this value as the
128
- * `cursor` query parameter. Only present when `has_more` is true.
124
+ * Abbreviated profile information
129
125
  */
130
- next_cursor?: string;
126
+ relevant_profile: Shared.ProfileSummary | null;
131
127
  }
132
- export interface SearchFindCreatorsParams {
128
+ export interface SearchCreateParams {
133
129
  /**
134
- * Body param: Natural language search query
130
+ * Natural language search query
135
131
  */
136
132
  query: string;
137
133
  /**
138
- * Query param: Opaque pagination cursor from previous response's `next_cursor`. Do
139
- * not construct manually.
134
+ * Additional filters
140
135
  */
141
- cursor?: string;
136
+ filters?: SearchCreateParams.Filters;
142
137
  /**
143
- * Query param: Maximum number of results to return
138
+ * Maximum results to return
144
139
  */
145
140
  limit?: number;
146
141
  /**
147
- * Body param:
148
- */
149
- filters?: SearchFindCreatorsParams.Filters;
150
- /**
151
- * Body param: Filter social accounts to only these platforms. Reduces payload
152
- * size. Does not affect search results or costs.
142
+ * Filter results to specific platforms
153
143
  */
154
- include_platforms?: Array<'instagram' | 'tiktok'>;
144
+ platforms?: Array<'instagram'>;
145
+ }
146
+ export declare namespace SearchCreateParams {
155
147
  /**
156
- * Body param: Response detail level. `lite` returns basic fields (username,
157
- * follower_count, engagement_rate). `detailed` adds avg_comments_recent,
158
- * avg_video_views_recent, follower_change_rate, etc. Detailed mode costs 5x more
159
- * (0.05 vs 0.01 credits per profile).
148
+ * Additional filters
160
149
  */
161
- mode?: 'lite' | 'detailed';
162
- }
163
- export declare namespace SearchFindCreatorsParams {
164
150
  interface Filters {
165
151
  /**
166
- * Per-platform filter definitions
152
+ * Filter by engagement rate
153
+ */
154
+ engagement_rate?: Filters.EngagementRate;
155
+ /**
156
+ * Filter by follower count
167
157
  */
168
- platform_filters?: Array<Filters.PlatformFilter>;
158
+ followers?: Filters.Followers;
169
159
  /**
170
- * How to combine platform_filters. `OR` = creator matches ANY platform filter.
171
- * `AND` = creator must match ALL platform filters. Default: OR.
160
+ * Filter by verified status
172
161
  */
173
- platform_logic?: 'AND' | 'OR';
162
+ verified?: boolean;
174
163
  }
175
164
  namespace Filters {
176
- interface PlatformFilter {
177
- platform: 'instagram' | 'tiktok';
178
- max_engagement_rate?: number;
179
- max_followers?: number;
180
- min_engagement_rate?: number;
181
- min_followers?: number;
182
- verified_only?: boolean;
165
+ /**
166
+ * Filter by engagement rate
167
+ */
168
+ interface EngagementRate {
169
+ /**
170
+ * Maximum engagement rate (%)
171
+ */
172
+ max?: number;
173
+ /**
174
+ * Minimum engagement rate (%)
175
+ */
176
+ min?: number;
177
+ }
178
+ /**
179
+ * Filter by follower count
180
+ */
181
+ interface Followers {
182
+ /**
183
+ * Maximum follower count
184
+ */
185
+ max?: number;
186
+ /**
187
+ * Minimum follower count
188
+ */
189
+ min?: number;
183
190
  }
184
191
  }
185
192
  }
193
+ export interface SearchRetrieveParams extends QueryCursorParams {
194
+ }
186
195
  export declare namespace Search {
187
- export { type SearchItem as SearchItem, type SearchFindCreatorsResponse as SearchFindCreatorsResponse, type SearchFindCreatorsParams as SearchFindCreatorsParams, };
196
+ export { type MatchInfo as MatchInfo, type SearchCreateResponse as SearchCreateResponse, type SearchRetrieveResponse as SearchRetrieveResponse, type SearchRetrieveResponsesQueryCursor as SearchRetrieveResponsesQueryCursor, type SearchCreateParams as SearchCreateParams, type SearchRetrieveParams as SearchRetrieveParams, };
188
197
  }
189
198
  //# sourceMappingURL=search.d.ts.map