Kwai User Posts API
Kwai profile posts — caption ("" when none), engagement, mp4 + transcript (~1 credit/post).
Pass a Kwai profile URL or @handle and get that creator's public posts as clean JSON. Each post: id/url, text (the post caption only — empty string when none; never Kwai's SEO title / "Áudio original criado por …" boilerplate), hashtags[] (always present — [] when the caption has no tags), publishedAt, durationSeconds, thumbnailUrl, videoUrl with videoType ("mp4" or "hls"), mediaUrlsExpireAt parsed from the signed CDN tag=, engagement{views,likes,comments,shares}, and transcript when Kwai's JSON-LD auto-captions are present (duplicate merged tracks are deduped). Author{id,username,displayName,avatar,url} is returned once at the top — not repeated on every row. Envelope uses url (the requested profile) — same key as /kwai/post and /kwai/profile. HARD PAGE LIMIT: Kwai's public web only SSR-embeds a first-page window of posts (typically a handful — observed ~6 on large accounts), not the full postCount from /kwai/profile. hasMore/nextCursor page within that window; hasMore=false means the window is exhausted, not that the account has no more posts upstream. ~1 credit per post returned (min 2; default limit 20 → ~20 credits). Transcript is included when Kwai publishes it — not a separate transcription bill. Shares _normalize_post with /kwai/post.
Request
- Base URL: https://api.captapi.com
- URL: https://api.captapi.com/v1/kwai/user-posts
- Auth: one of:
- HTTP bearer
- API key in header X-API-Key
Query parameters
Kwai profile URL or @handle, e.g. https://www.kwai.com/@topfilmeseseriesnatv. The URL platform must match this endpoint's platform. Do not pass cross-platform URLs, e.g. YouTube to TikTok, Instagram to Facebook, LinkedIn to X/Twitter, or Pinterest to Rumble.
Max posts to return (1–200). Default 20. ~1 credit per post returned (min 2).
Opaque pagination cursor from the previous nextCursor. Pages within posts from one profile fetch.
Set true to serve from the 24h response cache (0 credits on hit). Default false — always fetch fresh.
Response
Success. The data object for this endpoint.
Changes
No recorded changes to this operation across all 3 revisions of this API.