@brandazine/solari-sdk 0.2.11 → 0.2.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/tools.generated.d.ts +38 -32
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -2,7 +2,7 @@ import type { SolariToolMap, SolariToolName, SolariTools, SolariToolsWithoutRequ
|
|
|
2
2
|
export * from "./tools.generated.js";
|
|
3
3
|
export declare const DEFAULT_BASE_URL = "https://solari.sh";
|
|
4
4
|
export declare const API_PREFIX = "/mcp/api/v1";
|
|
5
|
-
export declare const SDK_VERSION = "0.2.
|
|
5
|
+
export declare const SDK_VERSION = "0.2.13";
|
|
6
6
|
export declare const TOKEN_ENV = "SOLARI_TOKEN";
|
|
7
7
|
export interface SolariTool {
|
|
8
8
|
name: string;
|
package/dist/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export * from "./tools.generated.js";
|
|
2
2
|
export const DEFAULT_BASE_URL = "https://solari.sh";
|
|
3
3
|
export const API_PREFIX = "/mcp/api/v1";
|
|
4
|
-
export const SDK_VERSION = "0.2.
|
|
4
|
+
export const SDK_VERSION = "0.2.13";
|
|
5
5
|
export const TOKEN_ENV = "SOLARI_TOKEN";
|
|
6
6
|
const DEFAULT_TIMEOUT_MS = 150_000;
|
|
7
7
|
export class SolariError extends Error {
|
|
@@ -11,7 +11,7 @@ export interface CatalogInstagramAccountHistoryArgs {
|
|
|
11
11
|
/** day keeps the last point of each UTC day; all returns every recorded point. */
|
|
12
12
|
"granularity"?: "day" | "all" | undefined;
|
|
13
13
|
}
|
|
14
|
-
/** Posts by one collected Instagram account, newest first, with pagination and filters. Identify the account by account_id (UUID from solari_catalog_instagram_account_search) or by username (Instagram handle). Each item has post_id (SOLARI post UUID), slug and url (public Instagram permalink), post_type (reel, video, photo, or carousel), posted_at, caption
|
|
14
|
+
/** Posts by one collected Instagram account, newest first, with pagination and filters. Stored posts can be sparse or stale: when completeness or freshness matters (every recent post, current reel views), call solari_fetch_instagram_posts instead, which collects them live. Identify the account by account_id (UUID from solari_catalog_instagram_account_search) or by username (Instagram handle). Each item has post_id (SOLARI post UUID), slug and url (public Instagram permalink), post_type (reel, video, photo, or carousel), posted_at, caption, like/comment/play counts, likes_hidden (true when the author hid likes; like_count is then null, as Instagram gives only a placeholder), media_count, is_paid_partnership, a medias array (every media in carousel order, each with media_type, media/thumbnail URLs, video_duration, and tags — accounts and hashtags tagged on it, with account_id when tracked), and a representative thumbnail_url. The response carries found, account_id, username, total, has_more, and items; page with limit and offset, narrow with since/until (UTC dates, inclusive) and post_type. posts_collected_at is how far stored posts reach, stored_post_count below profile_post_count means collection is incomplete, and refreshes_regularly says whether it is re-collected on a schedule; when the requested dates run past posts_collected_at, note says later posts are not in the catalog yet — an empty result then does not mean the account posted nothing; collect them live with solari_fetch_instagram_posts. This reads the catalog only; found=false means the handle is not in the catalog (note says when Instagram no longer has it) — call solari_fetch_instagram_posts with that username first. Each post carries assets: its media files in order, each with a direct-download asset_url for the full-size image or video; when a response is too large, assets is replaced by an assets_omitted count — request fewer posts to keep it. Works with any signed-in SOLARI account. */
|
|
15
15
|
export interface CatalogInstagramAccountPostsArgs {
|
|
16
16
|
/** account_id of the account (SOLARI account UUID). Provide this or username. */
|
|
17
17
|
"account_id"?: string | undefined;
|
|
@@ -28,7 +28,7 @@ export interface CatalogInstagramAccountPostsArgs {
|
|
|
28
28
|
/** Only posts of this format. reel is short-form single-video; video is non-reel video. */
|
|
29
29
|
"post_type"?: "reel" | "video" | "photo" | "carousel" | undefined;
|
|
30
30
|
}
|
|
31
|
-
/** Full SOLARI catalog profile for one collected Instagram account: username, full name, bio, follower/following/post counts, verified flag, inferred account_type, view metrics (median and total views, ad count, month-over-month growth, region percentiles), plus embedded previews of recent posts and recent ad collaborations. Identify the account by account_id (UUID from solari_catalog_instagram_account_search) or by username (Instagram handle). collected_at is when the profile was last collected from Instagram and refreshes_regularly says whether it is re-collected on a schedule. This reads the catalog only; an unknown handle is not-found — call solari_fetch_instagram_account with that username first, then retry; a not-found that says the handle was renamed or deleted means Instagram has no account under that name, so search by display name instead. Works with any signed-in SOLARI account. */
|
|
31
|
+
/** Full SOLARI catalog profile for one collected Instagram account: username, full name, bio, follower/following/post counts, verified flag, inferred account_type, view metrics (median and total views, ad count, month-over-month growth, region percentiles), plus embedded previews of recent posts and recent ad collaborations (their like_count is null when likes_hidden=true: the author hid likes and Instagram gave only a placeholder). Identify the account by account_id (UUID from solari_catalog_instagram_account_search) or by username (Instagram handle). collected_at is when the profile was last collected from Instagram and refreshes_regularly says whether it is re-collected on a schedule. This reads the catalog only; an unknown handle is not-found — call solari_fetch_instagram_account with that username first, then retry; a not-found that says the handle was renamed or deleted means Instagram has no account under that name, so search by display name instead. Works with any signed-in SOLARI account. */
|
|
32
32
|
export interface CatalogInstagramAccountProfileArgs {
|
|
33
33
|
/** account_id of the account (SOLARI account UUID). Provide this or username. */
|
|
34
34
|
"account_id"?: string | undefined;
|
|
@@ -48,14 +48,14 @@ export interface CatalogInstagramAccountSearchArgs {
|
|
|
48
48
|
/** Optional region code such as KR, JP, or US. Leave unset unless the user asked for one country: it filters results to that region and drops the rest. */
|
|
49
49
|
"region"?: string | undefined;
|
|
50
50
|
}
|
|
51
|
-
/** Batch companion to solari_catalog_instagram_content_detail: hydrates up to 100 posts by their SOLARI post UUIDs in a single call. Each row carries slug, caption, posted_at, like/comment counts, play_count for videos, and the author's username and account_id. Untracked ids are omitted, so found can be lower than requested. Feed it post_id lists from solari_insight_instagram_brand_overview (full=true), solari_catalog_instagram_account_posts, solari_catalog_instagram_content_search, or the trend feeds. Each post carries assets: its media files in order, each with a direct-download asset_url for the full-size image or video; when a response is too large, assets is replaced by an assets_omitted count — request fewer posts to keep it. Works with any signed-in SOLARI account. */
|
|
51
|
+
/** Batch companion to solari_catalog_instagram_content_detail: hydrates up to 100 posts by their SOLARI post UUIDs in a single call. Each row carries slug, caption, posted_at, like/comment counts, play_count for videos, and the author's username and account_id; like_count is null when likes_hidden=true (the author hid likes and Instagram gave only a placeholder). Untracked ids are omitted, so found can be lower than requested. Feed it post_id lists from solari_insight_instagram_brand_overview (full=true), solari_catalog_instagram_account_posts, solari_catalog_instagram_content_search, or the trend feeds. Each post carries assets: its media files in order, each with a direct-download asset_url for the full-size image or video; when a response is too large, assets is replaced by an assets_omitted count — request fewer posts to keep it. Works with any signed-in SOLARI account. */
|
|
52
52
|
export interface CatalogInstagramContentBatchArgs {
|
|
53
53
|
/** SOLARI post UUIDs to hydrate, at most 100 per call. Not Instagram shortcodes/slugs. */
|
|
54
54
|
"post_ids": Array<string>;
|
|
55
55
|
/** Item order: posted_at descending (recent) or like+comment engagement descending. */
|
|
56
56
|
"sort"?: "recent" | "engagement" | undefined;
|
|
57
57
|
}
|
|
58
|
-
/** Detail for one Instagram post in the SOLARI catalog, in the same item shape as solari_insight_instagram_content_trending entries. Identify the post by post_id (SOLARI post UUID from solari_catalog_instagram_account_posts, solari_catalog_instagram_content_search, solari_insight_instagram_content_trending, or solari_insight_instagram_content_rising), by slug (the public Instagram shortcode), or by url (the public post URL). This reads the catalog only; item is null when the post is not stored — call solari_fetch_instagram_post with the same url or slug to collect it and learn its author, or solari_fetch_instagram_posts when you already know the author's username. Each post carries assets: its media files in order, each with a direct-download asset_url for the full-size image or video; when a response is too large, assets is replaced by an assets_omitted count — request fewer posts to keep it. Works with any signed-in SOLARI account. */
|
|
58
|
+
/** Detail for one Instagram post in the SOLARI catalog, in the same item shape as solari_insight_instagram_content_trending entries. like_count is null when likes_hidden=true (the author hid likes and Instagram gave only a placeholder). Identify the post by post_id (SOLARI post UUID from solari_catalog_instagram_account_posts, solari_catalog_instagram_content_search, solari_insight_instagram_content_trending, or solari_insight_instagram_content_rising), by slug (the public Instagram shortcode), or by url (the public post URL). This reads the catalog only; item is null when the post is not stored — call solari_fetch_instagram_post with the same url or slug to collect it and learn its author, or solari_fetch_instagram_posts when you already know the author's username. Each post carries assets: its media files in order, each with a direct-download asset_url for the full-size image or video; when a response is too large, assets is replaced by an assets_omitted count — request fewer posts to keep it. Works with any signed-in SOLARI account. */
|
|
59
59
|
export interface CatalogInstagramContentDetailArgs {
|
|
60
60
|
/** The SOLARI post_id UUID. Provide this, slug, or url. */
|
|
61
61
|
"post_id"?: string | undefined;
|
|
@@ -64,7 +64,7 @@ export interface CatalogInstagramContentDetailArgs {
|
|
|
64
64
|
/** Public Instagram post URL such as https://www.instagram.com/p/<shortcode>/ or .../reel/<shortcode>/. Ignored when post_id or slug is set. */
|
|
65
65
|
"url"?: string | undefined;
|
|
66
66
|
}
|
|
67
|
-
/** Recorded engagement of Instagram posts over time, for growth curves and engagement comparisons. Each item is one post (post_id, slug, url, posted_at, account_id, username) with points: like_count, comment_count, play_count, reshare_count, likes_hidden, and deleted, oldest first, each with captured_at: the moment the catalog collected those values. Choose posts with post_ids, slugs, or urls (up to 50 combined; missing lists the ones not in the catalog — collect them with solari_fetch_instagram_post), or give an account (account_id or username) to trace its newest posts, narrowed by posted_since/posted_until and limit (default 20, max 50). since/until narrow the recorded points (UTC dates, inclusive). granularity=day (default) keeps the last point of each UTC day per post; all returns every point; truncated=true means older points were dropped. Posts are re-collected mostly in their first days, so older posts have few points. likes_hidden=true means the author hid like
|
|
67
|
+
/** Recorded engagement of Instagram posts over time, for growth curves and engagement comparisons. Each item is one post (post_id, slug, url, posted_at, account_id, username) with points: like_count, comment_count, play_count, reshare_count, likes_hidden, and deleted, oldest first, each with captured_at: the moment the catalog collected those values. Choose posts with post_ids, slugs, or urls (up to 50 combined; missing lists the ones not in the catalog — collect them with solari_fetch_instagram_post), or give an account (account_id or username) to trace its newest posts, narrowed by posted_since/posted_until and limit (default 20, max 50). since/until narrow the recorded points (UTC dates, inclusive). granularity=day (default) keeps the last point of each UTC day per post; all returns every point; truncated=true means older points were dropped. Posts are re-collected mostly in their first days, so older posts have few points. likes_hidden=true means the author hid like counts: Instagram then returns a placeholder instead of the real number, so like_count comes back null — do not treat it as a measured value or as zero likes. This reads the catalog only. Works with any signed-in SOLARI account. */
|
|
68
68
|
export interface CatalogInstagramContentHistoryArgs {
|
|
69
69
|
/** SOLARI post UUIDs. Combine with slugs and urls, up to 50 posts in total. */
|
|
70
70
|
"post_ids"?: Array<string> | undefined;
|
|
@@ -89,7 +89,7 @@ export interface CatalogInstagramContentHistoryArgs {
|
|
|
89
89
|
/** day keeps the last point of each UTC day per post; all returns every recorded point. */
|
|
90
90
|
"granularity"?: "day" | "all" | undefined;
|
|
91
91
|
}
|
|
92
|
-
/** Lexical keyword search over tracked posts: matches captions, creator bios, and video transcription text (Korean-aware analysis plus n-gram partial matching), ranked by relevance with match highlights. Each item carries post_id, author account_id/username, caption, transcription text, engagement counts, and score — feed post_id into solari_catalog_instagram_content_detail or solari_catalog_instagram_content_batch and the account reference into the account tools. Coverage: only regions KR, JP, US, and TW are searchable, holding roughly the most recent 6 months of posts; total is exact up to 10,000 and saturates there. Narrow with since/until (UTC dates). Each post carries assets: its media files in order, each with a direct-download asset_url for the full-size image or video; when a response is too large, assets is replaced by an assets_omitted count — request fewer posts to keep it. Works with any signed-in SOLARI account. */
|
|
92
|
+
/** Lexical keyword search over tracked posts: matches captions, creator bios, and video transcription text (Korean-aware analysis plus n-gram partial matching), ranked by relevance with match highlights. Each item carries post_id, author account_id/username, caption, transcription text, engagement counts (like_count is null when likes_hidden=true: the author hid likes and Instagram gave only a placeholder), and score — feed post_id into solari_catalog_instagram_content_detail or solari_catalog_instagram_content_batch and the account reference into the account tools. Coverage: only regions KR, JP, US, and TW are searchable, holding roughly the most recent 6 months of posts; total is exact up to 10,000 and saturates there. Narrow with since/until (UTC dates). Each post carries assets: its media files in order, each with a direct-download asset_url for the full-size image or video; when a response is too large, assets is replaced by an assets_omitted count — request fewer posts to keep it. Works with any signed-in SOLARI account. */
|
|
93
93
|
export interface CatalogInstagramContentSearchArgs {
|
|
94
94
|
/** Free-text keyword query matched against captions, creator bios, and video transcriptions. */
|
|
95
95
|
"query": string;
|
|
@@ -104,7 +104,7 @@ export interface CatalogInstagramContentSearchArgs {
|
|
|
104
104
|
/** Only posts on or before this UTC date, YYYY-MM-DD inclusive. */
|
|
105
105
|
"until"?: string | undefined;
|
|
106
106
|
}
|
|
107
|
-
/** Every tracked post carrying one exact tag — '#ootd' for a hashtag, '@handle' for mentions of an account — hydrated into full rows, newest-collected first with cursor pagination. Exact whole-tag matching over the entire tracked history and every region, where solari_catalog_instagram_content_search does free-text over four regions and about six months. Each post carries assets: its media files in order, each with a direct-download asset_url for the full-size image or video; when a response is too large, assets is replaced by an assets_omitted count — request fewer posts to keep it. The tag index refreshes once a day: when a hashtag is missing or stale here, solari_fetch_instagram_hashtag_posts collects a live page of it. Works with any signed-in SOLARI account. */
|
|
107
|
+
/** Every tracked post carrying one exact tag — '#ootd' for a hashtag, '@handle' for mentions of an account — hydrated into full rows, newest-collected first with cursor pagination; like_count is null when likes_hidden=true (the author hid likes and Instagram gave only a placeholder). Exact whole-tag matching over the entire tracked history and every region, where solari_catalog_instagram_content_search does free-text over four regions and about six months. Each post carries assets: its media files in order, each with a direct-download asset_url for the full-size image or video; when a response is too large, assets is replaced by an assets_omitted count — request fewer posts to keep it. The tag index refreshes once a day: when a hashtag is missing or stale here, solari_fetch_instagram_hashtag_posts collects a live page of it. Works with any signed-in SOLARI account. */
|
|
108
108
|
export interface CatalogInstagramTagSearchArgs {
|
|
109
109
|
/** One exact tag. '#ootd' or 'ootd' searches a hashtag; '@oliveyoung_official' searches mentions of that account. No spaces, no wildcards. */
|
|
110
110
|
"query": string;
|
|
@@ -206,7 +206,7 @@ export interface FetchInstagramAccountSearchArgs {
|
|
|
206
206
|
/** Name or handle fragment, with or without a leading @. */
|
|
207
207
|
"query": string;
|
|
208
208
|
}
|
|
209
|
-
/** Collects one page of an Instagram hashtag feed live, stores every post in the SOLARI catalog and returns them in feed order. Stored posts reach solari_catalog_instagram_tag_search only after its next daily refresh, so read this page's posts from the response itself. Every call goes out to Instagram, so use it when a hashtag is missing or stale in solari_catalog_instagram_tag_search, not as the default way to read a tag. tab picks the feed: recent (default), top, or clips for reels. One page is roughly 20 to 30 posts and takes several seconds; pass next_cursor back as cursor for the next page of the same hashtag and tab. The feed ends only when next_cursor is null: a page can come back with found 0 and a next_cursor, which means keep going. fetched_count is how many posts Instagram returned; found is lower when some could not be stored. A hashtag that is hidden, restricted, or unknown to Instagram answers is_hidden=true with no posts; Instagram does not tell these apart, so check the spelling with solari_fetch_instagram_hashtag_search. Each post carries assets with a direct-download asset_url. Works with any signed-in SOLARI account. */
|
|
209
|
+
/** Collects one page of an Instagram hashtag feed live, stores every post in the SOLARI catalog and returns them in feed order. Stored posts reach solari_catalog_instagram_tag_search only after its next daily refresh, so read this page's posts from the response itself. Every call goes out to Instagram, so use it when a hashtag is missing or stale in solari_catalog_instagram_tag_search, not as the default way to read a tag. tab picks the feed: recent (default), top, or clips for reels. One page is roughly 20 to 30 posts and takes several seconds; pass next_cursor back as cursor for the next page of the same hashtag and tab. The feed ends only when next_cursor is null: a page can come back with found 0 and a next_cursor, which means keep going. fetched_count is how many posts Instagram returned; found is lower when some could not be stored. A hashtag that is hidden, restricted, or unknown to Instagram answers is_hidden=true with no posts; Instagram does not tell these apart, so check the spelling with solari_fetch_instagram_hashtag_search. Like_count is null when likes_hidden=true (the author hid likes and Instagram gave only a placeholder). Each post carries assets with a direct-download asset_url. Works with any signed-in SOLARI account. */
|
|
210
210
|
export interface FetchInstagramHashtagPostsArgs {
|
|
211
211
|
/** One exact hashtag, with or without a leading #. No spaces, no wildcards. */
|
|
212
212
|
"hashtag": string;
|
|
@@ -227,10 +227,16 @@ export interface FetchInstagramPostArgs {
|
|
|
227
227
|
/** Public Instagram shortcode, the segment after /p/, /reel/, or /tv/ in a post URL. Wins over url when both are set. */
|
|
228
228
|
"slug"?: string | undefined;
|
|
229
229
|
}
|
|
230
|
-
/** Collects
|
|
230
|
+
/** Collects one tab of an Instagram account live at call time and returns the collected posts in the same call, in tab order, each with views (play_count), likes and comments, in the same item shape as solari_catalog_instagram_account_posts; like_count is null when likes_hidden=true (the author hid likes and Instagram gave only a placeholder). type picks the tab: posts (default) is the profile grid; reels is the reels tab, the one to use for view-count questions, though Instagram leaves some reels off that tab while still showing them on the grid, so read type=posts as well when every reel must be counted; tagged_posts is other accounts' posts that tag this account, and each of those items carries author_username and author_account_id. pages reads 1 to 3 pages of the tab per call, roughly 12 posts each, starting from the newest; when collection.next_cursor is set the tab goes further back, so call again with cursor=<next_cursor> and the same username and type to continue. Prefer this over solari_catalog_instagram_account_posts whenever completeness or freshness matters, because the stored catalog can be sparse or stale. A call usually takes 5 to 45 seconds. play_count is null when Instagram gave no view count, as for most photos. A private account returns no items and collection.skipped_reason=private. An unknown handle is collected first; found=false means Instagram has no account under that name. Everything collected is also stored in the catalog. Works with any signed-in SOLARI account. */
|
|
231
231
|
export interface FetchInstagramPostsArgs {
|
|
232
232
|
/** Instagram handle, with or without a leading @. */
|
|
233
233
|
"username": string;
|
|
234
|
+
/** Tab to collect: posts (profile grid, default), reels (reels tab, use for view counts), or tagged_posts (other accounts' posts that tag this account). */
|
|
235
|
+
"type"?: "posts" | "reels" | "tagged_posts" | undefined;
|
|
236
|
+
/** Pages of the tab to collect, default 1, roughly 12 posts per page. Values above 3 are clamped to 3. */
|
|
237
|
+
"pages"?: number | undefined;
|
|
238
|
+
/** collection.next_cursor from a previous call with the same username and type; continues further back instead of starting from the newest posts. */
|
|
239
|
+
"cursor"?: string | undefined;
|
|
234
240
|
}
|
|
235
241
|
/** Reads one Meta Threads account by exact username and returns its profile: display name, biography, follower count, verified and private flags, bio links, profile picture and URL. When you only know a name, find the handle with solari_fetch_threads_account_search first. A handle SOLARI has never collected is collected live now, which takes roughly 5 to 30 seconds, and fetched_on_demand=true marks that case; repeat calls within an hour return the stored copy (fetched_on_demand=false) unless refresh=true forces a new collection. stale=true means the live collection failed and an older stored copy is returned; collected_at says when. Media URLs right after a collection may be temporary, so read them promptly. Nothing is enrolled in ongoing tracking. A handle with no Threads profile answers a not-found error. Works with any signed-in SOLARI account. */
|
|
236
242
|
export interface FetchThreadsAccountArgs {
|
|
@@ -306,7 +312,7 @@ export interface FetchTiktokPostsArgs {
|
|
|
306
312
|
/** TikTok handle, with or without a leading @. */
|
|
307
313
|
"username": string;
|
|
308
314
|
}
|
|
309
|
-
/** Paginated row-level list of the identified sponsored posts one creator authored, newest first, with the target brand attached to each row — one row per post-brand pair, so a multi-brand post appears once per target. Each item carries post_id, slug and url, post_type, posted_at, caption text, like/comment/play counts, media_count, is_paid_partnership, and target_account_id/target_username. Filter to one brand with target (its account_id or Instagram handle). Widen the lookback with months (default 3, up to 24). Row-level companion to solari_insight_instagram_account_collabs, which groups the same history by brand. Identify the creator by account_id (SOLARI account UUID) or by username (Instagram handle); an unknown reference returns a not-found error. Each post carries assets: its media files in order, each with a direct-download asset_url for the full-size image or video; when a response is too large, assets is replaced by an assets_omitted count — request fewer posts to keep it. Works with any signed-in SOLARI account. */
|
|
315
|
+
/** Paginated row-level list of the identified sponsored posts one creator authored, newest first, with the target brand attached to each row — one row per post-brand pair, so a multi-brand post appears once per target. Each item carries post_id, slug and url, post_type, posted_at, caption text, like/comment/play counts, likes_hidden (true when the author hid likes; like_count is then null, as Instagram gives only a placeholder), media_count, is_paid_partnership, and target_account_id/target_username. Filter to one brand with target (its account_id or Instagram handle). Widen the lookback with months (default 3, up to 24). Row-level companion to solari_insight_instagram_account_collabs, which groups the same history by brand. Identify the creator by account_id (SOLARI account UUID) or by username (Instagram handle); an unknown reference returns a not-found error. Each post carries assets: its media files in order, each with a direct-download asset_url for the full-size image or video; when a response is too large, assets is replaced by an assets_omitted count — request fewer posts to keep it. Works with any signed-in SOLARI account. */
|
|
310
316
|
export interface InsightInstagramAccountAdPostsArgs {
|
|
311
317
|
/** account_id of the creator (SOLARI account UUID). Provide this or username. */
|
|
312
318
|
"account_id"?: string | undefined;
|
|
@@ -373,7 +379,7 @@ export interface InsightInstagramAccountDiscoverArgs {
|
|
|
373
379
|
/** How many top usernames to preview, default 20. Values above 60 are clamped to 60. The full list is always paged separately. */
|
|
374
380
|
"limit"?: number | undefined;
|
|
375
381
|
}
|
|
376
|
-
/** Pages the full creator list of one solari_insight_instagram_account_discover run. Each item carries account_id, username, full name, bio, follower count, 3-month median and total views, view growth, ad count, and the creator's top recent posts. Results stay available after the search, so re-sort or page without searching again. Works with any signed-in SOLARI account. */
|
|
382
|
+
/** Pages the full creator list of one solari_insight_instagram_account_discover run. Each item carries account_id, username, full name, bio, follower count, 3-month median and total views, view growth, ad count, and the creator's top recent posts (their like_count is null when likes_hidden=true (the author hid likes and Instagram gave only a placeholder)). Results stay available after the search, so re-sort or page without searching again. Works with any signed-in SOLARI account. */
|
|
377
383
|
export interface InsightInstagramAccountDiscoverResultsArgs {
|
|
378
384
|
/** search_id returned by solari_insight_instagram_account_discover. */
|
|
379
385
|
"search_id": string;
|
|
@@ -391,7 +397,7 @@ export interface InsightInstagramAccountSimilarArgs {
|
|
|
391
397
|
/** Number of similar accounts to return, default 50. Values above 100 are clamped to 100. */
|
|
392
398
|
"limit"?: number | undefined;
|
|
393
399
|
}
|
|
394
|
-
/** Paginated row-level list of the identified sponsored posts targeting a brand, each hydrated with slug, caption, posted_at, like/comment counts, play_count for videos, and the authoring creator's username and account_id. sort=recent pages the full window newest-first with an exact total; sort=engagement ranks within a bounded recent window whose size is reported as ranking_window (non-null means the ordering covers a slice, not everything). Widen the lookback with months (default 3, up to 24). Row-level companion to solari_insight_instagram_brand_ad_stats. Takes the brand's Instagram handle (no @). Each post carries assets: its media files in order, each with a direct-download asset_url for the full-size image or video; when a response is too large, assets is replaced by an assets_omitted count — request fewer posts to keep it. Works with any signed-in SOLARI account. Returns 404 if the handle is not tracked. */
|
|
400
|
+
/** Paginated row-level list of the identified sponsored posts targeting a brand, each hydrated with slug, caption, posted_at, like/comment counts, play_count for videos, and the authoring creator's username and account_id; like_count is null when likes_hidden=true (the author hid likes and Instagram gave only a placeholder). sort=recent pages the full window newest-first with an exact total; sort=engagement ranks within a bounded recent window whose size is reported as ranking_window (non-null means the ordering covers a slice, not everything). Widen the lookback with months (default 3, up to 24). Row-level companion to solari_insight_instagram_brand_ad_stats. Takes the brand's Instagram handle (no @). Each post carries assets: its media files in order, each with a direct-download asset_url for the full-size image or video; when a response is too large, assets is replaced by an assets_omitted count — request fewer posts to keep it. Works with any signed-in SOLARI account. Returns 404 if the handle is not tracked. */
|
|
395
401
|
export interface InsightInstagramBrandAdPostsArgs {
|
|
396
402
|
/** Brand Instagram handle without the leading @. */
|
|
397
403
|
"username": string;
|
|
@@ -409,7 +415,7 @@ export interface InsightInstagramBrandAdStatsArgs {
|
|
|
409
415
|
/** Brand Instagram handle without the leading @. */
|
|
410
416
|
"username": string;
|
|
411
417
|
}
|
|
412
|
-
/** For one brand and up to 100 creator account_ids, returns each creator's sponsored posts targeting that brand — per creator: post_count, reels_count, images_count, follower_count, and the posts themselves (slug, caption, posted_at, like/comment counts) — sorted by total engagement. All-time history, one call instead of one per creator. Get creator account_ids from solari_insight_instagram_brand_top_collaborators or solari_insight_instagram_brand_overview. Identify the brand by account_id (SOLARI account UUID) or by username (Instagram handle); an unknown reference returns a not-found error. Each post carries assets: its media files in order, each with a direct-download asset_url for the full-size image or video; when a response is too large, assets is replaced by an assets_omitted count — request fewer posts to keep it. Works with any signed-in SOLARI account. */
|
|
418
|
+
/** For one brand and up to 100 creator account_ids, returns each creator's sponsored posts targeting that brand — per creator: post_count, reels_count, images_count, follower_count, and the posts themselves (slug, caption, posted_at, like/comment counts; like_count is null when likes_hidden=true: the author hid likes and Instagram gave only a placeholder) — sorted by total engagement. All-time history, one call instead of one per creator. Get creator account_ids from solari_insight_instagram_brand_top_collaborators or solari_insight_instagram_brand_overview. Identify the brand by account_id (SOLARI account UUID) or by username (Instagram handle); an unknown reference returns a not-found error. Each post carries assets: its media files in order, each with a direct-download asset_url for the full-size image or video; when a response is too large, assets is replaced by an assets_omitted count — request fewer posts to keep it. Works with any signed-in SOLARI account. */
|
|
413
419
|
export interface InsightInstagramBrandCollaboratorPostsArgs {
|
|
414
420
|
/** Brand account_id (SOLARI account UUID). Provide this or username. */
|
|
415
421
|
"account_id"?: string | undefined;
|
|
@@ -476,7 +482,7 @@ export interface InsightInstagramContentAggregateArgs {
|
|
|
476
482
|
/** Maximum groups returned when group_by is set, default 20. Values above 50 are clamped to 50. */
|
|
477
483
|
"limit"?: number | undefined;
|
|
478
484
|
}
|
|
479
|
-
/** Instagram posts whose recent performance is accelerating faster than baseline in the region. Same shape as solari_insight_instagram_content_trending including cursor pagination and optional brand personalization via a brand account_id or username. Each post carries assets: its media files in order, each with a direct-download asset_url for the full-size image or video; when a response is too large, assets is replaced by an assets_omitted count — request fewer posts to keep it. Works with any signed-in SOLARI account. */
|
|
485
|
+
/** Instagram posts whose recent performance is accelerating faster than baseline in the region. Same shape as solari_insight_instagram_content_trending including cursor pagination and optional brand personalization via a brand account_id or username. like_count is null when likes_hidden=true (the author hid likes and Instagram gave only a placeholder). Each post carries assets: its media files in order, each with a direct-download asset_url for the full-size image or video; when a response is too large, assets is replaced by an assets_omitted count — request fewer posts to keep it. Works with any signed-in SOLARI account. */
|
|
480
486
|
export interface InsightInstagramContentRisingArgs {
|
|
481
487
|
/** Region code such as KR, JP, or US. */
|
|
482
488
|
"region"?: string | undefined;
|
|
@@ -515,7 +521,7 @@ export interface InsightInstagramContentTrendClustersArgs {
|
|
|
515
521
|
/** Rerank clusters by brand affinity when account_id is provided. */
|
|
516
522
|
"brand_aware"?: boolean | undefined;
|
|
517
523
|
}
|
|
518
|
-
/** Instagram posts currently trending in the region, enriched with creator profile fields. Supports cursor pagination via next_cursor from the previous response. Optionally personalizes ranking with a brand account_id or username. Each post carries assets: its media files in order, each with a direct-download asset_url for the full-size image or video; when a response is too large, assets is replaced by an assets_omitted count — request fewer posts to keep it. Works with any signed-in SOLARI account. Use solari_insight_instagram_content_rising for velocity-led accelerating posts instead. */
|
|
524
|
+
/** Instagram posts currently trending in the region, enriched with creator profile fields. like_count is null when likes_hidden=true (the author hid likes and Instagram gave only a placeholder). Supports cursor pagination via next_cursor from the previous response. Optionally personalizes ranking with a brand account_id or username. Each post carries assets: its media files in order, each with a direct-download asset_url for the full-size image or video; when a response is too large, assets is replaced by an assets_omitted count — request fewer posts to keep it. Works with any signed-in SOLARI account. Use solari_insight_instagram_content_rising for velocity-led accelerating posts instead. */
|
|
519
525
|
export interface InsightInstagramContentTrendingArgs {
|
|
520
526
|
/** Region code such as KR, JP, or US. */
|
|
521
527
|
"region"?: string | undefined;
|
|
@@ -541,7 +547,7 @@ export interface InsightInstagramHashtagDetailArgs {
|
|
|
541
547
|
/** Optional brand Instagram handle, used like brand_account_id. Ignored when brand_account_id is set. */
|
|
542
548
|
"brand_username"?: string | undefined;
|
|
543
549
|
}
|
|
544
|
-
/** Posts carrying one hashtag inside a trend window, most viewed first or newest first — the examples behind a leaderboard entry. Each item carries post_id, slug, author account_id and username, posted_at, play count and like count. Unlike solari_catalog_instagram_tag_search, it is limited to the window and can follow a brand lens. Works with any signed-in SOLARI account. */
|
|
550
|
+
/** Posts carrying one hashtag inside a trend window, most viewed first or newest first — the examples behind a leaderboard entry. Each item carries post_id, slug, author account_id and username, posted_at, play count and like count; like_count is null when likes_hidden=true (the author hid likes and Instagram gave only a placeholder). Unlike solari_catalog_instagram_tag_search, it is limited to the window and can follow a brand lens. Works with any signed-in SOLARI account. */
|
|
545
551
|
export interface InsightInstagramHashtagPostsArgs {
|
|
546
552
|
/** Hashtag, with or without the leading #. */
|
|
547
553
|
"tag": string;
|
|
@@ -771,25 +777,25 @@ export interface SolariTools {
|
|
|
771
777
|
account: {
|
|
772
778
|
/** Recorded profile values of one collected Instagram account over time, for follower growth and trend comparisons. points lists follower_count, following_count, post_count, is_verified, and is_private, oldest first, each with captured_at: the moment the catalog collected those values. current holds the catalog's current values, and current.collected_at says when the profile was last collected from Instagram; check it before treating the numbers as today's. granularity=day (default) keeps the last point of each UTC day; all returns every recorded point. The range is since/until (UTC dates, inclusive) and defaults to the last 90 days; truncated=true means older points were dropped, so narrow since. Points exist only when the account was collected, so gaps are normal, and most accounts have no points from 2025-08-26 to 2025-09-27. Identify the account by account_id (UUID from solari_catalog_instagram_account_search) or by username. This reads the catalog only; found=false means the handle is not in the catalog — call solari_fetch_instagram_account first, which cannot backfill past values. Works with any signed-in SOLARI account. */
|
|
773
779
|
history<T = unknown>(args?: CatalogInstagramAccountHistoryArgs): Promise<T>;
|
|
774
|
-
/** Posts by one collected Instagram account, newest first, with pagination and filters. Identify the account by account_id (UUID from solari_catalog_instagram_account_search) or by username (Instagram handle). Each item has post_id (SOLARI post UUID), slug and url (public Instagram permalink), post_type (reel, video, photo, or carousel), posted_at, caption
|
|
780
|
+
/** Posts by one collected Instagram account, newest first, with pagination and filters. Stored posts can be sparse or stale: when completeness or freshness matters (every recent post, current reel views), call solari_fetch_instagram_posts instead, which collects them live. Identify the account by account_id (UUID from solari_catalog_instagram_account_search) or by username (Instagram handle). Each item has post_id (SOLARI post UUID), slug and url (public Instagram permalink), post_type (reel, video, photo, or carousel), posted_at, caption, like/comment/play counts, likes_hidden (true when the author hid likes; like_count is then null, as Instagram gives only a placeholder), media_count, is_paid_partnership, a medias array (every media in carousel order, each with media_type, media/thumbnail URLs, video_duration, and tags — accounts and hashtags tagged on it, with account_id when tracked), and a representative thumbnail_url. The response carries found, account_id, username, total, has_more, and items; page with limit and offset, narrow with since/until (UTC dates, inclusive) and post_type. posts_collected_at is how far stored posts reach, stored_post_count below profile_post_count means collection is incomplete, and refreshes_regularly says whether it is re-collected on a schedule; when the requested dates run past posts_collected_at, note says later posts are not in the catalog yet — an empty result then does not mean the account posted nothing; collect them live with solari_fetch_instagram_posts. This reads the catalog only; found=false means the handle is not in the catalog (note says when Instagram no longer has it) — call solari_fetch_instagram_posts with that username first. Each post carries assets: its media files in order, each with a direct-download asset_url for the full-size image or video; when a response is too large, assets is replaced by an assets_omitted count — request fewer posts to keep it. Works with any signed-in SOLARI account. */
|
|
775
781
|
posts<T = unknown>(args?: CatalogInstagramAccountPostsArgs): Promise<T>;
|
|
776
|
-
/** Full SOLARI catalog profile for one collected Instagram account: username, full name, bio, follower/following/post counts, verified flag, inferred account_type, view metrics (median and total views, ad count, month-over-month growth, region percentiles), plus embedded previews of recent posts and recent ad collaborations. Identify the account by account_id (UUID from solari_catalog_instagram_account_search) or by username (Instagram handle). collected_at is when the profile was last collected from Instagram and refreshes_regularly says whether it is re-collected on a schedule. This reads the catalog only; an unknown handle is not-found — call solari_fetch_instagram_account with that username first, then retry; a not-found that says the handle was renamed or deleted means Instagram has no account under that name, so search by display name instead. Works with any signed-in SOLARI account. */
|
|
782
|
+
/** Full SOLARI catalog profile for one collected Instagram account: username, full name, bio, follower/following/post counts, verified flag, inferred account_type, view metrics (median and total views, ad count, month-over-month growth, region percentiles), plus embedded previews of recent posts and recent ad collaborations (their like_count is null when likes_hidden=true: the author hid likes and Instagram gave only a placeholder). Identify the account by account_id (UUID from solari_catalog_instagram_account_search) or by username (Instagram handle). collected_at is when the profile was last collected from Instagram and refreshes_regularly says whether it is re-collected on a schedule. This reads the catalog only; an unknown handle is not-found — call solari_fetch_instagram_account with that username first, then retry; a not-found that says the handle was renamed or deleted means Instagram has no account under that name, so search by display name instead. Works with any signed-in SOLARI account. */
|
|
777
783
|
profile<T = unknown>(args?: CatalogInstagramAccountProfileArgs): Promise<T>;
|
|
778
784
|
/** Resolves a brand/creator name or Instagram handle to candidate tracked accounts via fast deterministic index search — like a typeahead, all candidates are returned — and also searches profile bio text. query_type picks what the query is matched against: auto (default) matches handles by prefix and profile display names (Korean or English) by text match; username or full_name narrows to just one of those; bio runs a full-text search over profile bio text, which is how you discover accounts by what they say about themselves ("skincare", "협찬 문의", "コスメ") rather than by name. Ranked by match quality and follower count. Returns found plus items ordered best-first (items[0] is the top match), each with account_id (the SOLARI account UUID every other tool takes), username, full_name, biography, follower_count, region, is_verified, and profile_pic_url; found=false with empty items means nothing matched. In the name modes the query must actually appear in the handle or display name — phonetic aliases and abbreviations do not resolve, so retry with the native spelling (for example the English brand name). Set brands_only=true when resolving a brand name to filter out fan and meme accounts; pair it with query_type=bio to sweep a category of brands. Leave region unset unless the user asked for one country — it drops every account outside that region. Works with any signed-in SOLARI account. Use this first to resolve any entity mentioned by name. */
|
|
779
785
|
search<T = unknown>(args: CatalogInstagramAccountSearchArgs): Promise<T>;
|
|
780
786
|
};
|
|
781
787
|
content: {
|
|
782
|
-
/** Batch companion to solari_catalog_instagram_content_detail: hydrates up to 100 posts by their SOLARI post UUIDs in a single call. Each row carries slug, caption, posted_at, like/comment counts, play_count for videos, and the author's username and account_id. Untracked ids are omitted, so found can be lower than requested. Feed it post_id lists from solari_insight_instagram_brand_overview (full=true), solari_catalog_instagram_account_posts, solari_catalog_instagram_content_search, or the trend feeds. Each post carries assets: its media files in order, each with a direct-download asset_url for the full-size image or video; when a response is too large, assets is replaced by an assets_omitted count — request fewer posts to keep it. Works with any signed-in SOLARI account. */
|
|
788
|
+
/** Batch companion to solari_catalog_instagram_content_detail: hydrates up to 100 posts by their SOLARI post UUIDs in a single call. Each row carries slug, caption, posted_at, like/comment counts, play_count for videos, and the author's username and account_id; like_count is null when likes_hidden=true (the author hid likes and Instagram gave only a placeholder). Untracked ids are omitted, so found can be lower than requested. Feed it post_id lists from solari_insight_instagram_brand_overview (full=true), solari_catalog_instagram_account_posts, solari_catalog_instagram_content_search, or the trend feeds. Each post carries assets: its media files in order, each with a direct-download asset_url for the full-size image or video; when a response is too large, assets is replaced by an assets_omitted count — request fewer posts to keep it. Works with any signed-in SOLARI account. */
|
|
783
789
|
batch<T = unknown>(args: CatalogInstagramContentBatchArgs): Promise<T>;
|
|
784
|
-
/** Detail for one Instagram post in the SOLARI catalog, in the same item shape as solari_insight_instagram_content_trending entries. Identify the post by post_id (SOLARI post UUID from solari_catalog_instagram_account_posts, solari_catalog_instagram_content_search, solari_insight_instagram_content_trending, or solari_insight_instagram_content_rising), by slug (the public Instagram shortcode), or by url (the public post URL). This reads the catalog only; item is null when the post is not stored — call solari_fetch_instagram_post with the same url or slug to collect it and learn its author, or solari_fetch_instagram_posts when you already know the author's username. Each post carries assets: its media files in order, each with a direct-download asset_url for the full-size image or video; when a response is too large, assets is replaced by an assets_omitted count — request fewer posts to keep it. Works with any signed-in SOLARI account. */
|
|
790
|
+
/** Detail for one Instagram post in the SOLARI catalog, in the same item shape as solari_insight_instagram_content_trending entries. like_count is null when likes_hidden=true (the author hid likes and Instagram gave only a placeholder). Identify the post by post_id (SOLARI post UUID from solari_catalog_instagram_account_posts, solari_catalog_instagram_content_search, solari_insight_instagram_content_trending, or solari_insight_instagram_content_rising), by slug (the public Instagram shortcode), or by url (the public post URL). This reads the catalog only; item is null when the post is not stored — call solari_fetch_instagram_post with the same url or slug to collect it and learn its author, or solari_fetch_instagram_posts when you already know the author's username. Each post carries assets: its media files in order, each with a direct-download asset_url for the full-size image or video; when a response is too large, assets is replaced by an assets_omitted count — request fewer posts to keep it. Works with any signed-in SOLARI account. */
|
|
785
791
|
detail<T = unknown>(args?: CatalogInstagramContentDetailArgs): Promise<T>;
|
|
786
|
-
/** Recorded engagement of Instagram posts over time, for growth curves and engagement comparisons. Each item is one post (post_id, slug, url, posted_at, account_id, username) with points: like_count, comment_count, play_count, reshare_count, likes_hidden, and deleted, oldest first, each with captured_at: the moment the catalog collected those values. Choose posts with post_ids, slugs, or urls (up to 50 combined; missing lists the ones not in the catalog — collect them with solari_fetch_instagram_post), or give an account (account_id or username) to trace its newest posts, narrowed by posted_since/posted_until and limit (default 20, max 50). since/until narrow the recorded points (UTC dates, inclusive). granularity=day (default) keeps the last point of each UTC day per post; all returns every point; truncated=true means older points were dropped. Posts are re-collected mostly in their first days, so older posts have few points. likes_hidden=true means the author hid like
|
|
792
|
+
/** Recorded engagement of Instagram posts over time, for growth curves and engagement comparisons. Each item is one post (post_id, slug, url, posted_at, account_id, username) with points: like_count, comment_count, play_count, reshare_count, likes_hidden, and deleted, oldest first, each with captured_at: the moment the catalog collected those values. Choose posts with post_ids, slugs, or urls (up to 50 combined; missing lists the ones not in the catalog — collect them with solari_fetch_instagram_post), or give an account (account_id or username) to trace its newest posts, narrowed by posted_since/posted_until and limit (default 20, max 50). since/until narrow the recorded points (UTC dates, inclusive). granularity=day (default) keeps the last point of each UTC day per post; all returns every point; truncated=true means older points were dropped. Posts are re-collected mostly in their first days, so older posts have few points. likes_hidden=true means the author hid like counts: Instagram then returns a placeholder instead of the real number, so like_count comes back null — do not treat it as a measured value or as zero likes. This reads the catalog only. Works with any signed-in SOLARI account. */
|
|
787
793
|
history<T = unknown>(args?: CatalogInstagramContentHistoryArgs): Promise<T>;
|
|
788
|
-
/** Lexical keyword search over tracked posts: matches captions, creator bios, and video transcription text (Korean-aware analysis plus n-gram partial matching), ranked by relevance with match highlights. Each item carries post_id, author account_id/username, caption, transcription text, engagement counts, and score — feed post_id into solari_catalog_instagram_content_detail or solari_catalog_instagram_content_batch and the account reference into the account tools. Coverage: only regions KR, JP, US, and TW are searchable, holding roughly the most recent 6 months of posts; total is exact up to 10,000 and saturates there. Narrow with since/until (UTC dates). Each post carries assets: its media files in order, each with a direct-download asset_url for the full-size image or video; when a response is too large, assets is replaced by an assets_omitted count — request fewer posts to keep it. Works with any signed-in SOLARI account. */
|
|
794
|
+
/** Lexical keyword search over tracked posts: matches captions, creator bios, and video transcription text (Korean-aware analysis plus n-gram partial matching), ranked by relevance with match highlights. Each item carries post_id, author account_id/username, caption, transcription text, engagement counts (like_count is null when likes_hidden=true: the author hid likes and Instagram gave only a placeholder), and score — feed post_id into solari_catalog_instagram_content_detail or solari_catalog_instagram_content_batch and the account reference into the account tools. Coverage: only regions KR, JP, US, and TW are searchable, holding roughly the most recent 6 months of posts; total is exact up to 10,000 and saturates there. Narrow with since/until (UTC dates). Each post carries assets: its media files in order, each with a direct-download asset_url for the full-size image or video; when a response is too large, assets is replaced by an assets_omitted count — request fewer posts to keep it. Works with any signed-in SOLARI account. */
|
|
789
795
|
search<T = unknown>(args: CatalogInstagramContentSearchArgs): Promise<T>;
|
|
790
796
|
};
|
|
791
797
|
tag: {
|
|
792
|
-
/** Every tracked post carrying one exact tag — '#ootd' for a hashtag, '@handle' for mentions of an account — hydrated into full rows, newest-collected first with cursor pagination. Exact whole-tag matching over the entire tracked history and every region, where solari_catalog_instagram_content_search does free-text over four regions and about six months. Each post carries assets: its media files in order, each with a direct-download asset_url for the full-size image or video; when a response is too large, assets is replaced by an assets_omitted count — request fewer posts to keep it. The tag index refreshes once a day: when a hashtag is missing or stale here, solari_fetch_instagram_hashtag_posts collects a live page of it. Works with any signed-in SOLARI account. */
|
|
798
|
+
/** Every tracked post carrying one exact tag — '#ootd' for a hashtag, '@handle' for mentions of an account — hydrated into full rows, newest-collected first with cursor pagination; like_count is null when likes_hidden=true (the author hid likes and Instagram gave only a placeholder). Exact whole-tag matching over the entire tracked history and every region, where solari_catalog_instagram_content_search does free-text over four regions and about six months. Each post carries assets: its media files in order, each with a direct-download asset_url for the full-size image or video; when a response is too large, assets is replaced by an assets_omitted count — request fewer posts to keep it. The tag index refreshes once a day: when a hashtag is missing or stale here, solari_fetch_instagram_hashtag_posts collects a live page of it. Works with any signed-in SOLARI account. */
|
|
793
799
|
search<T = unknown>(args: CatalogInstagramTagSearchArgs): Promise<T>;
|
|
794
800
|
};
|
|
795
801
|
};
|
|
@@ -825,14 +831,14 @@ export interface SolariTools {
|
|
|
825
831
|
search<T = unknown>(args: FetchInstagramAccountSearchArgs): Promise<T>;
|
|
826
832
|
};
|
|
827
833
|
hashtag: {
|
|
828
|
-
/** Collects one page of an Instagram hashtag feed live, stores every post in the SOLARI catalog and returns them in feed order. Stored posts reach solari_catalog_instagram_tag_search only after its next daily refresh, so read this page's posts from the response itself. Every call goes out to Instagram, so use it when a hashtag is missing or stale in solari_catalog_instagram_tag_search, not as the default way to read a tag. tab picks the feed: recent (default), top, or clips for reels. One page is roughly 20 to 30 posts and takes several seconds; pass next_cursor back as cursor for the next page of the same hashtag and tab. The feed ends only when next_cursor is null: a page can come back with found 0 and a next_cursor, which means keep going. fetched_count is how many posts Instagram returned; found is lower when some could not be stored. A hashtag that is hidden, restricted, or unknown to Instagram answers is_hidden=true with no posts; Instagram does not tell these apart, so check the spelling with solari_fetch_instagram_hashtag_search. Each post carries assets with a direct-download asset_url. Works with any signed-in SOLARI account. */
|
|
834
|
+
/** Collects one page of an Instagram hashtag feed live, stores every post in the SOLARI catalog and returns them in feed order. Stored posts reach solari_catalog_instagram_tag_search only after its next daily refresh, so read this page's posts from the response itself. Every call goes out to Instagram, so use it when a hashtag is missing or stale in solari_catalog_instagram_tag_search, not as the default way to read a tag. tab picks the feed: recent (default), top, or clips for reels. One page is roughly 20 to 30 posts and takes several seconds; pass next_cursor back as cursor for the next page of the same hashtag and tab. The feed ends only when next_cursor is null: a page can come back with found 0 and a next_cursor, which means keep going. fetched_count is how many posts Instagram returned; found is lower when some could not be stored. A hashtag that is hidden, restricted, or unknown to Instagram answers is_hidden=true with no posts; Instagram does not tell these apart, so check the spelling with solari_fetch_instagram_hashtag_search. Like_count is null when likes_hidden=true (the author hid likes and Instagram gave only a placeholder). Each post carries assets with a direct-download asset_url. Works with any signed-in SOLARI account. */
|
|
829
835
|
posts<T = unknown>(args: FetchInstagramHashtagPostsArgs): Promise<T>;
|
|
830
836
|
/** Looks hashtags up on Instagram live by keyword and returns up to 20 candidates with the number of posts Instagram reports under each. Use it to find the exact spelling or the biggest variant of a tag before solari_catalog_instagram_tag_search or solari_fetch_instagram_hashtag_posts. Nothing is stored and there is no pagination. Works with any signed-in SOLARI account. */
|
|
831
837
|
search<T = unknown>(args: FetchInstagramHashtagSearchArgs): Promise<T>;
|
|
832
838
|
};
|
|
833
839
|
/** Collects one Instagram post into the SOLARI catalog by its public URL or shortcode and returns it with its author. Use it when solari_catalog_instagram_content_detail answers item=null for a link you were given and you do not know who posted it. If the post is already stored, nothing is scraped. A first-time collect takes a few seconds. The author arrives as a name-only account: call solari_fetch_instagram_account with the returned username to crawl their profile and posts. item is null when Instagram has no public post at that reference. The post carries assets with a direct-download asset_url. Works with any signed-in SOLARI account. */
|
|
834
840
|
post<T = unknown>(args?: FetchInstagramPostArgs): Promise<T>;
|
|
835
|
-
/** Collects
|
|
841
|
+
/** Collects one tab of an Instagram account live at call time and returns the collected posts in the same call, in tab order, each with views (play_count), likes and comments, in the same item shape as solari_catalog_instagram_account_posts; like_count is null when likes_hidden=true (the author hid likes and Instagram gave only a placeholder). type picks the tab: posts (default) is the profile grid; reels is the reels tab, the one to use for view-count questions, though Instagram leaves some reels off that tab while still showing them on the grid, so read type=posts as well when every reel must be counted; tagged_posts is other accounts' posts that tag this account, and each of those items carries author_username and author_account_id. pages reads 1 to 3 pages of the tab per call, roughly 12 posts each, starting from the newest; when collection.next_cursor is set the tab goes further back, so call again with cursor=<next_cursor> and the same username and type to continue. Prefer this over solari_catalog_instagram_account_posts whenever completeness or freshness matters, because the stored catalog can be sparse or stale. A call usually takes 5 to 45 seconds. play_count is null when Instagram gave no view count, as for most photos. A private account returns no items and collection.skipped_reason=private. An unknown handle is collected first; found=false means Instagram has no account under that name. Everything collected is also stored in the catalog. Works with any signed-in SOLARI account. */
|
|
836
842
|
posts<T = unknown>(args: FetchInstagramPostsArgs): Promise<T>;
|
|
837
843
|
};
|
|
838
844
|
threads: {
|
|
@@ -872,7 +878,7 @@ export interface SolariTools {
|
|
|
872
878
|
instagram: {
|
|
873
879
|
account: {
|
|
874
880
|
ad: {
|
|
875
|
-
/** Paginated row-level list of the identified sponsored posts one creator authored, newest first, with the target brand attached to each row — one row per post-brand pair, so a multi-brand post appears once per target. Each item carries post_id, slug and url, post_type, posted_at, caption text, like/comment/play counts, media_count, is_paid_partnership, and target_account_id/target_username. Filter to one brand with target (its account_id or Instagram handle). Widen the lookback with months (default 3, up to 24). Row-level companion to solari_insight_instagram_account_collabs, which groups the same history by brand. Identify the creator by account_id (SOLARI account UUID) or by username (Instagram handle); an unknown reference returns a not-found error. Each post carries assets: its media files in order, each with a direct-download asset_url for the full-size image or video; when a response is too large, assets is replaced by an assets_omitted count — request fewer posts to keep it. Works with any signed-in SOLARI account. */
|
|
881
|
+
/** Paginated row-level list of the identified sponsored posts one creator authored, newest first, with the target brand attached to each row — one row per post-brand pair, so a multi-brand post appears once per target. Each item carries post_id, slug and url, post_type, posted_at, caption text, like/comment/play counts, likes_hidden (true when the author hid likes; like_count is then null, as Instagram gives only a placeholder), media_count, is_paid_partnership, and target_account_id/target_username. Filter to one brand with target (its account_id or Instagram handle). Widen the lookback with months (default 3, up to 24). Row-level companion to solari_insight_instagram_account_collabs, which groups the same history by brand. Identify the creator by account_id (SOLARI account UUID) or by username (Instagram handle); an unknown reference returns a not-found error. Each post carries assets: its media files in order, each with a direct-download asset_url for the full-size image or video; when a response is too large, assets is replaced by an assets_omitted count — request fewer posts to keep it. Works with any signed-in SOLARI account. */
|
|
876
882
|
posts<T = unknown>(args?: InsightInstagramAccountAdPostsArgs): Promise<T>;
|
|
877
883
|
};
|
|
878
884
|
/** Recent ad collaborations produced by one creator within a month window. Each item is a target brand (target_account_id, target_username) with collab_count, last_posted_at, and a sample collaboration post. Returns items, has_more, and total; page with limit/offset. Identify the creator by account_id (SOLARI account UUID) or by username (Instagram handle); an unknown reference returns a not-found error. Mirror view of solari_insight_instagram_brand_top_collaborators, which starts from the brand instead. Works with any signed-in SOLARI account. */
|
|
@@ -880,7 +886,7 @@ export interface SolariTools {
|
|
|
880
886
|
discover: {
|
|
881
887
|
/** Finds Instagram creators that fit a brief: topic phrases matched against captions, transcripts and visual style, bio traits, a reference creator to find lookalikes of, trending growth, and a product the creator should have advertised before — then filtered by follower, 3-month total view and 3-month median view ranges and excluded keywords. Use it to build a shortlist; use solari_catalog_instagram_account_search instead when you already have a name. Returns a search_id, the total found, the top usernames and result sections; page the full creator list (profile metrics and each creator's top recent posts) with solari_insight_instagram_account_discover_results. Broad briefs can take up to a minute. Works with any signed-in SOLARI account. */
|
|
882
888
|
<T = unknown>(args: InsightInstagramAccountDiscoverArgs): Promise<T>;
|
|
883
|
-
/** Pages the full creator list of one solari_insight_instagram_account_discover run. Each item carries account_id, username, full name, bio, follower count, 3-month median and total views, view growth, ad count, and the creator's top recent posts. Results stay available after the search, so re-sort or page without searching again. Works with any signed-in SOLARI account. */
|
|
889
|
+
/** Pages the full creator list of one solari_insight_instagram_account_discover run. Each item carries account_id, username, full name, bio, follower count, 3-month median and total views, view growth, ad count, and the creator's top recent posts (their like_count is null when likes_hidden=true (the author hid likes and Instagram gave only a placeholder)). Results stay available after the search, so re-sort or page without searching again. Works with any signed-in SOLARI account. */
|
|
884
890
|
results<T = unknown>(args: InsightInstagramAccountDiscoverResultsArgs): Promise<T>;
|
|
885
891
|
};
|
|
886
892
|
/** Finds Instagram accounts similar to the given username based on relationship-graph overlap. Takes an Instagram handle (no @), not a UUID. Works with any signed-in SOLARI account. */
|
|
@@ -888,13 +894,13 @@ export interface SolariTools {
|
|
|
888
894
|
};
|
|
889
895
|
brand: {
|
|
890
896
|
ad: {
|
|
891
|
-
/** Paginated row-level list of the identified sponsored posts targeting a brand, each hydrated with slug, caption, posted_at, like/comment counts, play_count for videos, and the authoring creator's username and account_id. sort=recent pages the full window newest-first with an exact total; sort=engagement ranks within a bounded recent window whose size is reported as ranking_window (non-null means the ordering covers a slice, not everything). Widen the lookback with months (default 3, up to 24). Row-level companion to solari_insight_instagram_brand_ad_stats. Takes the brand's Instagram handle (no @). Each post carries assets: its media files in order, each with a direct-download asset_url for the full-size image or video; when a response is too large, assets is replaced by an assets_omitted count — request fewer posts to keep it. Works with any signed-in SOLARI account. Returns 404 if the handle is not tracked. */
|
|
897
|
+
/** Paginated row-level list of the identified sponsored posts targeting a brand, each hydrated with slug, caption, posted_at, like/comment counts, play_count for videos, and the authoring creator's username and account_id; like_count is null when likes_hidden=true (the author hid likes and Instagram gave only a placeholder). sort=recent pages the full window newest-first with an exact total; sort=engagement ranks within a bounded recent window whose size is reported as ranking_window (non-null means the ordering covers a slice, not everything). Widen the lookback with months (default 3, up to 24). Row-level companion to solari_insight_instagram_brand_ad_stats. Takes the brand's Instagram handle (no @). Each post carries assets: its media files in order, each with a direct-download asset_url for the full-size image or video; when a response is too large, assets is replaced by an assets_omitted count — request fewer posts to keep it. Works with any signed-in SOLARI account. Returns 404 if the handle is not tracked. */
|
|
892
898
|
posts<T = unknown>(args: InsightInstagramBrandAdPostsArgs): Promise<T>;
|
|
893
899
|
/** Exact sponsored-post and collaborating-creator counts for a brand's recent window, plus a bounded play-count sum. Use this for accurate ad-volume figures since solari_insight_instagram_brand_overview ID lists are capped; for the underlying row-level posts use solari_insight_instagram_brand_ad_posts. Takes the brand's Instagram handle (no @). Works with any signed-in SOLARI account. */
|
|
894
900
|
stats<T = unknown>(args: InsightInstagramBrandAdStatsArgs): Promise<T>;
|
|
895
901
|
};
|
|
896
902
|
collaborator: {
|
|
897
|
-
/** For one brand and up to 100 creator account_ids, returns each creator's sponsored posts targeting that brand — per creator: post_count, reels_count, images_count, follower_count, and the posts themselves (slug, caption, posted_at, like/comment counts) — sorted by total engagement. All-time history, one call instead of one per creator. Get creator account_ids from solari_insight_instagram_brand_top_collaborators or solari_insight_instagram_brand_overview. Identify the brand by account_id (SOLARI account UUID) or by username (Instagram handle); an unknown reference returns a not-found error. Each post carries assets: its media files in order, each with a direct-download asset_url for the full-size image or video; when a response is too large, assets is replaced by an assets_omitted count — request fewer posts to keep it. Works with any signed-in SOLARI account. */
|
|
903
|
+
/** For one brand and up to 100 creator account_ids, returns each creator's sponsored posts targeting that brand — per creator: post_count, reels_count, images_count, follower_count, and the posts themselves (slug, caption, posted_at, like/comment counts; like_count is null when likes_hidden=true: the author hid likes and Instagram gave only a placeholder) — sorted by total engagement. All-time history, one call instead of one per creator. Get creator account_ids from solari_insight_instagram_brand_top_collaborators or solari_insight_instagram_brand_overview. Identify the brand by account_id (SOLARI account UUID) or by username (Instagram handle); an unknown reference returns a not-found error. Each post carries assets: its media files in order, each with a direct-download asset_url for the full-size image or video; when a response is too large, assets is replaced by an assets_omitted count — request fewer posts to keep it. Works with any signed-in SOLARI account. */
|
|
898
904
|
posts<T = unknown>(args: InsightInstagramBrandCollaboratorPostsArgs): Promise<T>;
|
|
899
905
|
};
|
|
900
906
|
lookalike: {
|
|
@@ -911,7 +917,7 @@ export interface SolariTools {
|
|
|
911
917
|
content: {
|
|
912
918
|
/** Counts and engagement rollups over tracked posts, for questions answered by numbers rather than by individual posts: posts per account per month, which hashtags dominate a topic, average likes by format. Group by account, post_type, hashtag, mention, caption_keyword, or transcription_keyword, and optionally split each group by day, week, or month. post_count always comes back; request metrics for like/comment/view sums and averages, mean follower count, and distinct account counts. Narrow the set with a free-text query, usernames, hashtags, mentions, or post_types. Filtering by mentions and grouping by account answers which accounts tagged a given handle. Coverage: regions KR, JP, US, and TW, holding roughly the most recent 6 months — a since older than that is clamped and the applied value is echoed back. Buckets are largest-first; truncated=true means more groups existed than limit returned. Use solari_catalog_instagram_content_search when the posts themselves are needed instead of counts. Works with any signed-in SOLARI account. */
|
|
913
919
|
aggregate<T = unknown>(args?: InsightInstagramContentAggregateArgs): Promise<T>;
|
|
914
|
-
/** Instagram posts whose recent performance is accelerating faster than baseline in the region. Same shape as solari_insight_instagram_content_trending including cursor pagination and optional brand personalization via a brand account_id or username. Each post carries assets: its media files in order, each with a direct-download asset_url for the full-size image or video; when a response is too large, assets is replaced by an assets_omitted count — request fewer posts to keep it. Works with any signed-in SOLARI account. */
|
|
920
|
+
/** Instagram posts whose recent performance is accelerating faster than baseline in the region. Same shape as solari_insight_instagram_content_trending including cursor pagination and optional brand personalization via a brand account_id or username. like_count is null when likes_hidden=true (the author hid likes and Instagram gave only a placeholder). Each post carries assets: its media files in order, each with a direct-download asset_url for the full-size image or video; when a response is too large, assets is replaced by an assets_omitted count — request fewer posts to keep it. Works with any signed-in SOLARI account. */
|
|
915
921
|
rising<T = unknown>(args?: InsightInstagramContentRisingArgs): Promise<T>;
|
|
916
922
|
/** Instagram posts that look and read like one given post — same subject, format and mood — ranked best first, for collecting references around a post you already have. Each item carries post_id, slug, author account_id, thumbnail and media URL, media type, play count, posted_at and is_ad (whether it was identified as sponsored). Identify the post by post_id (SOLARI post UUID from any content tool). Covers roughly the last 4 months; pages reach at most 180 results. Use solari_insight_instagram_brand_lookalike_content to start from a brand's ads instead. Works with any signed-in SOLARI account. */
|
|
917
923
|
similar<T = unknown>(args: InsightInstagramContentSimilarArgs): Promise<T>;
|
|
@@ -919,13 +925,13 @@ export interface SolariTools {
|
|
|
919
925
|
/** The SOLARI trend digest: recent content trend clusters for a region with cluster metadata and member posts, optionally reranked by brand affinity when a brand account_id or username is supplied. Works with any signed-in SOLARI account. */
|
|
920
926
|
clusters<T = unknown>(args?: InsightInstagramContentTrendClustersArgs): Promise<T>;
|
|
921
927
|
};
|
|
922
|
-
/** Instagram posts currently trending in the region, enriched with creator profile fields. Supports cursor pagination via next_cursor from the previous response. Optionally personalizes ranking with a brand account_id or username. Each post carries assets: its media files in order, each with a direct-download asset_url for the full-size image or video; when a response is too large, assets is replaced by an assets_omitted count — request fewer posts to keep it. Works with any signed-in SOLARI account. Use solari_insight_instagram_content_rising for velocity-led accelerating posts instead. */
|
|
928
|
+
/** Instagram posts currently trending in the region, enriched with creator profile fields. like_count is null when likes_hidden=true (the author hid likes and Instagram gave only a placeholder). Supports cursor pagination via next_cursor from the previous response. Optionally personalizes ranking with a brand account_id or username. Each post carries assets: its media files in order, each with a direct-download asset_url for the full-size image or video; when a response is too large, assets is replaced by an assets_omitted count — request fewer posts to keep it. Works with any signed-in SOLARI account. Use solari_insight_instagram_content_rising for velocity-led accelerating posts instead. */
|
|
923
929
|
trending<T = unknown>(args?: InsightInstagramContentTrendingArgs): Promise<T>;
|
|
924
930
|
};
|
|
925
931
|
hashtag: {
|
|
926
932
|
/** One hashtag in depth for a market and window: post count, unique creators, views, sponsored percent, share of all posts, growth against the previous window, momentum, the share series over time, the tags used together with it, and the creators who used it most (account_id, username, posts, views, followers). Use the same brand as the leaderboard to keep the same lens. Works with any signed-in SOLARI account. */
|
|
927
933
|
detail<T = unknown>(args: InsightInstagramHashtagDetailArgs): Promise<T>;
|
|
928
|
-
/** Posts carrying one hashtag inside a trend window, most viewed first or newest first — the examples behind a leaderboard entry. Each item carries post_id, slug, author account_id and username, posted_at, play count and like count. Unlike solari_catalog_instagram_tag_search, it is limited to the window and can follow a brand lens. Works with any signed-in SOLARI account. */
|
|
934
|
+
/** Posts carrying one hashtag inside a trend window, most viewed first or newest first — the examples behind a leaderboard entry. Each item carries post_id, slug, author account_id and username, posted_at, play count and like count; like_count is null when likes_hidden=true (the author hid likes and Instagram gave only a placeholder). Unlike solari_catalog_instagram_tag_search, it is limited to the window and can follow a brand lens. Works with any signed-in SOLARI account. */
|
|
929
935
|
posts<T = unknown>(args: InsightInstagramHashtagPostsArgs): Promise<T>;
|
|
930
936
|
/** Hashtag leaderboard for a market and window, in two lists: rising (share growing fastest against the previous window) and top (volume weighted by how much more it is used than usual). Each entry carries post count, unique creators, views, sponsored percent, growth multiple against the previous window, a NEW flag, a daily share series and momentum. Pass a brand to see the tags moving around that brand's creators instead of the whole market; lens and lens_reason say which view you got. Use solari_insight_instagram_hashtag_detail and solari_insight_instagram_hashtag_posts to drill into one tag. Works with any signed-in SOLARI account. */
|
|
931
937
|
trending<T = unknown>(args?: InsightInstagramHashtagTrendingArgs): Promise<T>;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@brandazine/solari-sdk",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.13",
|
|
4
4
|
"description": "TypeScript client for the SOLARI API — creator and brand intelligence across Instagram and TikTok, plus Meta Threads profiles and posts.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"homepage": "https://solari.sh/api",
|