# Profile

Schemas

A public account (creator, channel, page, company or community) with its bio, links and follower metrics.

## Endpoints

5 endpoints return profiles on Instagram, Rumble, Threads, TikTok and YouTube.

- [GETInstagram Profile API`/v1/instagram/profile`](https://staging-fly.socialtap.dev/docs/reference/instagram/profile/index.md)
- [GETRumble Channel API`/v1/rumble/profile`](https://staging-fly.socialtap.dev/docs/reference/rumble/profile/index.md)
- [GETThreads Profile API`/v1/threads/profile`](https://staging-fly.socialtap.dev/docs/reference/threads/profile/index.md)
- [GETTikTok Profile API`/v1/tiktok/profile`](https://staging-fly.socialtap.dev/docs/reference/tiktok/profile/index.md)
- [GETYouTube Channel API`/v1/youtube/profile`](https://staging-fly.socialtap.dev/docs/reference/youtube/profile/index.md)

## Schema

Every endpoint above returns this object as `data`. The standard [`meta`](https://staging-fly.socialtap.dev/docs/reference/index.md#meta) comes with every response.

| Field | Type | Description |
| --- | --- | --- |
| `platform` | `string` | Platform ID (tiktok, youtube, …). |
| `id` | `string` | Platform-native account ID (string; YouTube UC…, Reddit without t2_). |
| `username` | `string` or `null` | Handle without the @; null when the account has none. |
| `display_name` | `string` or `null` | Display name, channel title or page name; null when empty or not exposed. |
| `url` | `string` (uri) | Canonical profile URL. |
| `type` | `string` | Coarse account kind, as the platform labels it; unknown when it does not (TikTok labels organizations only). New values may be added; treat unknown values as unknown.<br>One of `person`, `organization`, `community`, `unknown` |
| `bio` | `string` or `null` | Profile bio, channel description or page about text; null when empty or not exposed. |
| `avatar_url` | `string` (uri) or `null` | Profile picture URL (largest available). Platform CDN URLs can expire within hours. |
| `banner_url` | `string` (uri) or `null` | Header or cover image URL. |
| `is_verified` | `boolean` or `null` | Platform verification badge; null where the platform has no badge. |
| `is_private` | `boolean` or `null` | True when the account's posts are not public. |
| `category` | `string` or `null` | Platform category label (e.g. Musician, Media & Entertainment), as shown; not normalized. Often set only for business or creator accounts. |
| `external_links` | `object[]` | Links in the bio or channel links; \[\] if none or not exposed. |
| `external_links[].url` | `string` (uri) | Link target, absolute (https:// is added where the platform stores the link without a scheme). |
| `external_links[].title` | `string` or `null` | Link label shown by the platform. |
| `location` | `string` or `null` | Self-declared location text. |
| `country_code` | `string` or `null` | ISO 3166-1 alpha-2 country the platform states for the account. |
| `created_at` | `string` (date-time) or `null` | Account creation or join date, RFC 3339 UTC (some platforms give only the day: see approximate_fields). |
| `metrics` | `object` | Counts at fetch time; null = hidden or not exposed, 0 = zero. |
| `metrics.follower_count` | `integer` or `null` | Followers or subscribers. |
| `metrics.following_count` | `integer` or `null` | Accounts this profile follows. |
| `metrics.post_count` | `integer` or `null` | Posts or videos as the platform counts them on the profile (for a private account, posts the caller cannot see). |
| `metrics.total_like_count` | `integer` or `null` | Likes received across all of the profile's posts (not likes given). |
| `metrics.total_view_count` | `integer` or `null` | Lifetime views across all of the profile's posts. |
| `platform_specific` | `object` | Fields only this platform has, under its ID (platform_specific.\<platform>); each null when unknown. |
| `platform_specific.youtube` | `object` or `null` | A YouTube channel's own fields (core/profile_youtube.go). |
| `platform_specific.youtube.keywords` | `string[]` | The channel's keywords as its owner wrote them, a quoted phrase as one keyword; \[\] when it has none (listed in unknown_fields when the source cannot see them). |
| `platform_specific.youtube.is_official_artist_channel` | `boolean` or `null` | True for an Official Artist Channel (the note badge after its name), false for any other channel; null when the page shows no badge row (YouTube's built-in channels). |
| `platform_specific.youtube.is_subscriber_count_hidden` | `boolean` or `null` | True when the channel hides its subscriber count (metrics.follower_count is then null; neither its About panel nor its header shows one), false when YouTube shows it; null when that cannot be told (no About panel or header seen). |
| `platform_specific.youtube.is_business_email_listed` | `boolean` or `null` | True when the channel lists a business email (shown to signed-in users only; the address is not returned); null otherwise, since YouTube shows nothing for a channel without one. |
| `platform_specific.instagram` | `object` or `null` | An Instagram account's own fields (core/profile_instagram.go). |
| `platform_specific.instagram.fbid` | `string` or `null` | The account's Meta-wide ID (17841…), the one Meta's Instagram Graph API uses; id is Instagram's own user ID. Null when the source does not show it. |
| `platform_specific.instagram.is_memorialized` | `boolean` or `null` | True when Instagram has memorialized the account (its owner has died), false otherwise; null when unknown. |
| `platform_specific.instagram.is_story_live` | `boolean` or `null` | True when the account has a story up now (stories last 24 hours), false when it has none; null when unknown (Instagram does not say for private accounts). |
| `platform_specific.instagram.is_highlights_shown` | `boolean` or `null` | True when the profile shows story highlights, false when it shows none; null when unknown (private accounts, or a source that does not show them). |
| `platform_specific.instagram.pronouns` | `string[]` | The pronouns the owner chose to show on the profile, as shown; \[\] when none (listed in unknown_fields when the source cannot see them). |
| `platform_specific.rumble` | `object` or `null` | A Rumble channel's or user's own fields (core/profile_rumble.go). |
| `platform_specific.rumble.account_type` | `string` or `null` | channel for a Rumble channel (rumble.com/c/\<name>), user for a Rumble user (rumble.com/user/\<name>: the account that uploads, which can own channels). Null when unknown. New values may be added; treat unknown values as unknown.<br>One of `channel`, `user` |
| `platform_specific.rumble.numeric_id` | `string` or `null` | Rumble's numeric ID of the channel or the user, in decimal (the channel's is the number in its rumble.com/c/c-\<id> link). Channels and users are numbered separately, so the same number can name a channel and a user: id is the unambiguous reference. Null when unknown. |
| `platform_specific.rumble.user_id` | `string` or `null` | The id of the Rumble user that owns the channel (_u…, the id this endpoint answers for that user); for a user, its own id. Channels of one owner share it. Null when the page does not show it. |
| `platform_specific.threads` | `object` or `null` | A Threads account's own fields (core/profile_threads.go). |
| `platform_specific.threads.interest_tags` | `string[]` | Topic labels Threads shows on the profile, as shown; \[\] when it shows none (listed in unknown_fields when the source cannot see them). |
| `platform_specific.threads.verified_link_urls` | `string[]` | The external_links URLs Threads marks as verified, in the same form; \[\] when none is marked (listed in unknown_fields when the source cannot see the links). |
| `approximate_fields` | `string[]` | JSON paths of values rounded by the platform or parsed from display text (e.g. metrics.follower_count). A list path (external_links) means the list may be incomplete. \[\] when all exact. |
| `unknown_fields` | `string[]` | JSON paths of lists whose \[\] means unknown rather than none (a source that cannot see them); null already means unknown for every other field. \[\] when every list is known. |

## Item errors

Besides the [request-level errors](https://staging-fly.socialtap.dev/docs/errors/index.md) every endpoint can return, profile endpoints return:

| Code | HTTP | Retry | Meaning | What to do |
| --- | --- | --- | --- | --- |
| `not_found` | 404 | No | The item does not exist or was deleted. | Check the URL or ID; do not retry. |
| `private_or_unavailable` | 403 | No | The item exists but is private, age- or region-gated, or requires a login to view. It shares 403 with forbidden (which is about the key): branch on the code. | Only public items can be fetched; do not retry. |

---

[HTML version](https://staging-fly.socialtap.dev/resources/profile/) · [Docs index for AI agents](https://staging-fly.socialtap.dev/llms.txt) · [All docs in one file](https://staging-fly.socialtap.dev/llms-full.txt)
