# AccountWithFollowerStats
## Properties
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**_id** | **String** | |
**platform** | **Platform** | (enum: tiktok, instagram, facebook, youtube, linkedin, twitter, threads, pinterest, reddit, bluesky, googlebusiness, telegram, snapchat, discord, slack, whatsapp, shopify, wordpress, wix, linkedinads, metaads, pinterestads, tiktokads, xads, googleads, openaiads, redditads, sms, phone, rcs, whopads, google, microsoft, hubspot, webflow, googleanalytics, imessage, tiktokshop, microsoftads) |
**profile_id** | [**models::SocialAccountProfileId**](SocialAccountProfileId.md) | |
**username** | Option<**String**> | | [optional]
**display_name** | Option<**String**> | | [optional]
**platform_user_id** | Option<**String**> | The account's id on its platform, as the platform reports it to Zernio. Stable across reconnects, so use it to match an account against your own records. - **Instagram Login accounts:** the app-scoped user id (the professional account id is in `metadata.instagramScopedId`). - **Instagram via Facebook Login:** the professional account id (`17841...`). - **TikTok:** the open_id of Zernio's TikTok app, which differs from the open_id any other app sees for the same user. Either value can be passed back as `expectedPlatformUserId` on GET /v1/connect/{platform}. | [optional]
**scope_areas** | Option<**Vec<String>**> | Accounts connected through your own OAuth app: the permission areas the connect requested. Null on accounts connected through Zernio's app. | [optional]
**oauth_app_id** | Option<**String**> | The id of your own OAuth app this account connected through (see /v1/connect/oauth-apps); null when it uses Zernio's app. | [optional]
**tiktok_account_type** | Option<**TiktokAccountType**> | TikTok accounts only. The account type TikTok reported when the account was connected. - `personal`: cannot use TikTok direct messages through the API (TikTok limits Business Messaging to Business Accounts). Skip the inbox for them and tell the user to switch to a Business Account in the TikTok app, then reconnect. - `business`: the prerequisite, not a guarantee. Messaging also needs the messaging scopes granted and TikTok's regional availability. - `unknown`: accounts connected before this was captured, or whose grant left out the account-type scope. (enum: business, personal, unknown) | [optional]
**profile_picture** | Option<**String**> | URL to the account's profile picture on the platform. May be null if the platform does not provide one. | [optional]
**profile_url** | Option<**String**> | Full profile URL for the connected account on its platform. | [optional]
**is_active** | **bool** | |
**needs_reconnection** | Option<**bool**> | The platform definitively reported the stored OAuth token as dead. While true, GET /v1/connect/{platform}/ads returns a fresh authUrl (implicit force=true) instead of alreadyConnected, so re-running the connect flow recovers the account. Cleared automatically when the account is re-authorized. | [optional]
**followers_count** | Option<**f64**> | Follower count (only included if user has analytics add-on) | [optional]
**followers_last_updated** | Option<**String**> | Last time follower count was updated (only included if user has analytics add-on) | [optional]
**parent_account_id** | Option<**String**> | Reference to the parent posting SocialAccount. Set for ads accounts that share or derive from a posting account's OAuth token. null for standalone ads (Google Ads) and all posting accounts. Meta ads business-login accounts also have no parent. | [optional]
**enabled** | Option<**bool**> | Whether the user explicitly activated this account. false means the account was created as a side effect (e.g., a posting account auto-created when the user connected ads first). - GET /v1/accounts still returns such accounts unless `excludeHidden=true` is passed. - They cannot be posted to (`ACCOUNT_NOT_ENABLED_FOR_POSTING`) and are not billed as connected accounts. - On an ads account (`metaads`, `googleads`, ...) the value does not hide the connection: ads accounts are listed whatever their `enabled` value and keep working for ads. | [optional]
**meta_ads_sync_enabled** | Option<**bool**> | Facebook accounts only (absent on every other platform). Whether this Facebook account syncs the Meta ads of the ad accounts it reaches, the way a `metaads` connection does. Off by default; set it with `PUT /v1/accounts/{accountId}`. Synced active ads count on the managed ads meter like ads from a Meta Ads connection. | [optional]
**rate_limited_until** | Option<**String**> | End of the account's publishing cooldown. Compare it with the current time: a value in the past means the cooldown has ended (the field is cleared on the next successful publish); null means no cooldown since the last successful publish. **When it starts.** A post to the account fails with `errorCategory` `user_abuse` (spam, abuse or rate-limit errors), or 10 or more posts to it fail within an hour with `user_content`, `platform_error`, `platform_rate_limit` or `unknown`. **How long.** It doubles with each start inside a 24-hour window that opens at the first one (10, 20, 40, 80 minutes and so on, capped at 24 hours). On a YouTube account with a recorded successful upload, it instead runs until 24 hours after that upload, or 1 hour when that upload is older than 24 hours. **Effect.** While it is in the future, POST /v1/posts (drafts excepted) and POST /v1/posts/{postId}/retry return 429 for this account. When it starts, this account's pending targets on posts scheduled before the cooldown ends are failed. | [optional]
**metadata** | Option<**serde_json::Value**> | Platform-specific metadata. Fields vary by platform. **WhatsApp accounts:** - qualityRating: phone number quality rating from Meta (GREEN, YELLOW, RED, or UNKNOWN). - nameStatus: display name review status (APPROVED, PENDING_REVIEW, DECLINED, or NONE). A declined or pending name does not by itself block sending; sendability is reported separately via health_status (can_send_message). - messagingLimitTier: maximum unique business-initiated conversations per 24h rolling window (TIER_250, TIER_1K, TIER_10K, TIER_100K, or TIER_UNLIMITED). Scales automatically as quality rating improves. - verifiedName: Meta-verified business display name. - displayPhoneNumber: formatted phone number (e.g., \"+1 555-123-4567\"). - wabaId: WhatsApp Business Account ID. - phoneNumberId: Meta phone number ID. **Meta ads business-login accounts:** - tokenType: system-user. - businessId: the owning Business Manager ID when there is one owner; null for multiple owners. - businessIds: owning Business Manager IDs discovered from granted ad accounts. - grantedAdAccountIds: ad-account IDs granted to the token. - adAccountBusinesses: map from ad-account ID to its owning business ID or null. - availablePages: granted Page IDs and names. No Page tokens are exposed. - selectedPageId: the Page selected for creatives and lead forms, or null. - scopedAdAccountIds: existing sync scope preserved on reconnect. Non-expiring tokens have no tokenExpiresAt field. Parent posting reconnects do not replace this token. **LinkedIn accounts:** profileData carries profile details refreshed on each daily snapshot. - profileData.bio: the member's headline (personal accounts) or the organization description (organization accounts). null when not set. - profileData.extraData.vanityName: the member's profile slug, the /in/{vanityName} segment of profileUrl. Personal accounts only; an organization's slug is in metadata.organizationInfo.vanityName. **Instagram accounts:** - loginMethod: \"facebook_login\" when connected through Facebook Login; absent for Instagram Login. On facebook_login accounts, comment reads leave hidden comments out entirely instead of returning them with isHidden true. - instagramScopedId: the Instagram professional account id (`17841...`). On Instagram Login accounts it is the same whichever app connected the account, while platformUserId is app-scoped. Facebook Login accounts hold this id as platformUserId. **X (Twitter) accounts:** - profileData.extraData.isPremium: whether X reports a paid subscription (Basic, Premium, Premium+, or a blue verified badge), which raises the post length limit from 280 to 25,000 characters. Read live at connect and reconnect, refreshed by the daily follower snapshot. - Because X intermittently reports no subscription for subscribed accounts, a cancellation is stored on the fourth consecutive daily snapshot reporting it (about four days). Accounts connected before the extraData layout carry the flag at profileData.isPremium. | [optional]
**current_followers** | Option<**f64**> | Current follower count | [optional]
**last_updated** | Option<**String**> | | [optional]
**growth** | Option<**f64**> | Follower change over period | [optional]
**growth_percentage** | Option<**f64**> | Percentage growth | [optional]
**data_points** | Option<**f64**> | Number of historical snapshots | [optional]
**account_stats** | Option<[**models::AccountWithFollowerStatsAllOfAccountStats**](AccountWithFollowerStatsAllOfAccountStats.md)> | | [optional]
[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)