# Get a TikTok user's public profile

Returns a TikTok user's public profile, with bio and follower, like and video counts. Use it to look up an account and get the sec_uid that tiktok.user.videos takes.

Tool `tiktok.user.profile` on TikTok. Contract version 1, released 2026-10-27.

## Example call

Over REST, send the input in the body. Over MCP, pass the same input to `call_tool`.

cURL:

```bash
curl https://api.voxoria.ai/v1/tools/tiktok.user.profile/calls \
  -H "Authorization: Bearer $VOXORIA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"input":{"username":"tiktok"}}'
```

Python:

```python
import os

import httpx

response = httpx.post(
    "https://api.voxoria.ai/v1/tools/tiktok.user.profile/calls",
    headers={"Authorization": f"Bearer {os.environ['VOXORIA_API_KEY']}"},
    json={"input": {"username": "tiktok"}},
    timeout=60,
)
print(response.json())
```

TypeScript:

```ts
const response = await fetch("https://api.voxoria.ai/v1/tools/tiktok.user.profile/calls", {
  method: "POST",
  headers: {
    Authorization: `Bearer ${process.env.VOXORIA_API_KEY}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({"input": {"username": "tiktok"}}),
});
console.log(await response.json());
```

MCP (`tools/call` params):

```json
{
  "name": "call_tool",
  "arguments": {
    "tool": "tiktok.user.profile",
    "input": {
      "username": "tiktok"
    }
  }
}
```

Both return [the full response](/docs/call-response.md): the call's ID, status and cost, with this tool's result in `output`.

## Input

| Input | Type | Required | Default | Description |
| --- | --- | --- | --- | --- |
| `username` | string | Yes |  | The user's handle, without the @. |

## Output

A successful call returns these blocks in its `output`. A field not marked required can be `null`.

### user

One object. Can be `null`.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `id` | string | No | TikTok's numeric identifier of the user, as a string. |
| `sec_uid` | string | No | TikTok's secure identifier of the user, which tiktok.user.videos takes. |
| `username` | string | Yes | The user's handle, without the @. The profile is at https://www.tiktok.com/@ followed by it. |
| `name` | string | No | The user's display name. |
| `bio` | string | No | The text of the user's profile. |
| `bio_link` | string | No | The link on the user's profile, as the user wrote it, which may lack a scheme. |
| `image_url` | string | No | Address of the user's profile picture. |
| `verified` | boolean | No | Whether TikTok marks the user as verified. |
| `private` | boolean | No | Whether the account is private, its videos shown only to approved followers. |
| `created_at` | string | No | When the account was created, in ISO 8601. |
| `follower_count` | integer | No |  |
| `following_count` | integer | No | Number of accounts the user follows. |
| `like_count` | integer | No | Number of likes the user's videos received, in all. |
| `video_count` | integer | No | Number of videos the user posted. |

## Example output

The `output` of a real call, each list cut to 3 items.

```json
{
  "user": {
    "id": "107955",
    "sec_uid": "MS4wLjABAAAAv7iSuuXDJGDvJkmH_vz1qkDZYo1apxgzaxdBSeIuPiM",
    "username": "tiktok",
    "name": "TikTok",
    "bio": "Your next discovery is waiting on TikTok.",
    "bio_link": "tiktok.com/discovermore",
    "image_url": "https://p19-common-sign.tiktokcdn-us.com/tos-useast5-avt-0068-tx/ba67b11de451691939223e9d978e613a~tplv-tiktokx-cropcenter:1080:1080.jpeg?dr=9640&refresh_token=bc102787&x-expires=1793332800&x-signature=YvpYWckR5tK8e%2FLw1saOLbSfOoM%3D&t=4d5b0474&ps=13740610&shp=a5d48078&shcp=81f88b70&idc=useast8",
    "verified": true,
    "private": false,
    "created_at": "2015-02-28T17:22:29Z",
    "follower_count": 96451792,
    "following_count": 1,
    "like_count": 466088452,
    "video_count": 1513
  }
}
```
