Profile
lookup · $0.0010One creator, by their opaque id.
Body
A type written with ? is optional. Unknown fields are rejected rather than ignored, and the whole body is capped at 64 KiB.
Example
curl -X POST https://api.sorina.sh/v1/tiktok/users \
-H "authorization: Bearer $SORINA_KEY" \
-H 'content-type: application/json' \
-d '{"sec_user_id":"MS4wLjABAAAAU9BRVzC8oCaegVnia8IbqWhPb_-dbU7s00Y3wS1_Nx8g5RUaYvyXrpejgjdxTwd6"}'What comes back
JSON, and not a flat user object: the platform answers with the profile screen, so the data is scattered through nested component trees rather than sitting at fixed paths.
common is the flat, stable part. common.user_profile_info carries uid, sec_uid, username, nickname and avatar; common.user_account_info carries is_private_account and verification; common.user_statics_info carries aweme_count.
Follower, following and like counts are not in common — they live in the header tree under nodes named relation_info_follower, relation_info_following and relation_info_like, and are repeated together in nav_bar under nav_bar_end_more, which is the convenient one to read.
Walk the tree for the keys you want rather than mirroring it into a struct. Which components appear is a rendering decision, and it changes.