Edit own TikTok profile
TL;DR
About
Rewriting a TikTok bio from an agent pays off when the bio changes on a schedule. Take a streamer's assistant who has Claude rewrite it every Monday with that week's live slot, say "Live Thu 8pm CET". Back come the old and new text plus account_used, the handle that got the edit. When the slot has not moved, nothing is written and already_present comes back true, so the weekly job can fire without checking first. For a one-off promo, save before.bio. That string is what you send afterwards to put the usual bio back. Interface language does not matter, since the form is found by TikTok's data-e2e markers, not button labels. If the cookie banner is up, the run clicks its first button (decline optional cookies), because the banner covers Save. TikTok's Display API reads display_name and bio_description through GET /v2/user/info/ but has no write endpoint, hence the trip through the profile editor in a signed-in browser.
Input
bio optionalNew bio text. Pass an empty string to clear the bio. TikTok caps the bio at 80 characters and stores its own truncation, which is what gets reported back. Omit to leave it unchanged.
displayName optionalNew display name (the bold name above the handle). TikTok allows this change only once every seven days and rejects it inside that window. Omit to leave it unchanged.
Output
after requiredValues read back from the reloaded profile after saving.
before requiredValues read from the profile before any edit.
changed requiredWhich fields were actually written. Empty when nothing needed changing.
account_used requiredHandle of the account that was actually edited, read from the signed-in session rather than assumed.
already_present requiredTrue when every requested value already matched the profile, so nothing was written.
verified_on_page requiredTrue when the profile was reloaded after saving and the stored values matched what was asked for.
Example output
Shape only: placeholder values generated from the output schema, not a real run.
{
"after": {
"bio": "…",
"displayName": "…"
},
"before": {
"bio": "…",
"displayName": "…"
},
"changed": [
"displayName"
],
"account_used": "…",
"already_present": true,
"verified_on_page": true
}