# solari catalog tiktok account posts

> Posts from a TikTok account.

- **CLI**: `solari catalog tiktok account posts`
- **MCP tool**: `solari_catalog_tiktok_account_posts`
- **Access**: `solari:read` — Works with any signed-in SOLARI account.
- **Required plan**: Free
- **Credit**: 0

List a TikTok account's posts. Turn on include_transcript only when the spoken words matter.

**When to use it** — When you need more posts than the profile preview, or a date range or format.

**What comes back** — Posts, with transcripts when you ask for them.

## Parameters

- `account_id` (string, optional, uuid, pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$) — Pass the TikTok account_id or username.
- `username` (string, optional, ≤ 64 chars) — TikTok username. Ignored when account_id is set.
- `limit` (integer, optional, ≥ 1) — How many posts per page.
- `offset` (integer, optional, default 0, ≥ 0) — How many posts to skip.
- `since` (string, optional, pattern ^\d{4}-\d{2}-\d{2}$) — Only posts on or after this UTC date (YYYY-MM-DD).
- `until` (string, optional, pattern ^\d{4}-\d{2}-\d{2}$) — Only posts on or before this UTC date (YYYY-MM-DD).
- `post_type` (enum, optional) — Limit to video or carousel. Values: `video`, `carousel`.
- `include_transcript` (boolean, optional, default false) — Include spoken transcripts.

## Response

### `Response`

- `found` (boolean) — false if the username is not on TikTok.
- `account_id / username` (string) — The resolved account.
- `total` (integer) — Posts matching the filters.
- `has_more` (boolean) — Whether there is another page.
- `items` (object[]) — Posts, newest first.
- `fetched_on_demand` (boolean) — true when only the most recent posts are available so far.

### `items[]`

- `post_id` (uuid) — TikTok post id. Not interchangeable with Instagram.
- `video_id` (string) — Public numeric id from the TikTok URL.
- `url` (string) — Public permalink.
- `account_id` (uuid) — Author account_id.
- `username` (string) — Author username.
- `post_type` (string) — video or carousel.
- `posted_at` (timestamp) — Published at (UTC).
- `caption` (string) — Caption.
- `duration_seconds` (integer) — Video length.
- `width / height` (integer) — Resolution.
- `play_count` (integer) — Plays.
- `like_count` (integer) — Likes.
- `comment_count` (integer) — Comments.
- `share_count` (integer) — Shares.
- `collect_count` (integer) — Saves.
- `is_ad` (boolean) — TikTok ad flag.
- `is_pinned` (boolean) — Pinned on the profile.
- `aigc_label_type` (string | null) — AI-content label, when TikTok sets one.
- `original_language_code` (string | null) — Source language.
- `cover_url` (string) — Cover image URL.
- `video_url` (string) — Video file URL.
- `images` (string[]) — Carousel slides. Empty for video.
- `hashtags` (string[]) — Hashtags from the caption.
- `mentions` (string[]) — Usernames mentioned in the caption.
- `transcript` (string | null) — Spoken transcript. Only when include_transcript=true.

## Example

```console
$ solari catalog tiktok account posts username=innisfree_official limit=2
```

_Long strings and repeated array entries are trimmed for readability._

```json
{
  "found": true,
  "account_id": "019b2137-f76e-7b33-9437-26044fa7b1ed",
  "username": "innisfree_official",
  "total": 87,
  "has_more": true,
  "items": [
    {
      "post_id": "01a0631e-f0df-7e9d-a09b-d84bc31d3834",
      "video_id": "7680375687139642645",
      "url": "https://www.tiktok.com/@innisfree_official/video/7680375687139642645",
      "account_id": "019b2137-f76e-7b33-9437-26044fa7b1ed",
      "username": "innisfree_official",
      "post_type": "video",
      "posted_at": "2026-09-02T12:00:00Z",
      "caption": "Deeply hydrated skin—NO OFF HOURS. 💚  wherever the day takes MINGYU—his hydration stays SUPERCHARGED ⚡️ Green Tea Ceramide Milk: Lightweight milky toner that won't clog your pores  Green Tea Ceramide Mist: Touch-free, fa …",
      "duration_seconds": 23,
      "width": 1080,
      "height": 1920,
      "play_count": 493,
      "like_count": 37,
      "comment_count": 2,
      "share_count": 0,
      "collect_count": 3,
      "is_ad": false,
      "is_pinned": false,
      "aigc_label_type": null,
      "original_language_code": null,
      "cover_url": "https://smr-images-b.bzine.co/tiktok/users/019b2137-f76e-7b33-9437-26044fa7b1ed/posts/01a0631e-f0df-7e9d-a09b-d84bc31d3834/medias/cover.jpg",
      "video_url": "https://smr-images-a.bzine.co/tiktok/users/019b2137-f76e-7b33-9437-26044fa7b1ed/posts/01a0631e-f0df-7e9d-a09b-d84bc31d3834/medias/origin.mp4",
      "images": [],
      "hashtags": [],
      "mentions": [],
      "transcript": null
    },
    "… 1 more"
  ],
  "fetched_on_demand": false
}
```

## As an MCP call

```json
{
  "name": "solari_catalog_tiktok_account_posts",
  "arguments": {
    "username": "innisfree_official",
    "limit": 2
  }
}
```

## Notes

- Transcripts are large, so include_transcript is off by default.
- This reads the catalog only. If the username is missing, call solari fetch tiktok posts username=… then retry.

## Related tools

- [`solari_catalog_tiktok_account_profile`](https://solari.sh/docs/tools/catalog-tiktok-account-profile.md)
- [`solari_catalog_tiktok_content_detail`](https://solari.sh/docs/tools/catalog-tiktok-content-detail.md)
- [`solari_catalog_instagram_account_posts`](https://solari.sh/docs/tools/catalog-instagram-account-posts.md)
