501 with error.code: "resource.not_supported". Your code doesn’t need to branch per platform; just handle the 501.
Feature matrix
For the full per-feature, per-platform support table (reply, hide, like, delete, private reply, DMs, reviews, mentions, publishing), see Platform support. It is the single source of truth and is kept in sync with each connector page.OAuth app ownership
Every connector except Twitter uses SocialAPI’s managed platform app. You don’t need to create your own Meta App, Google Cloud project, or TikTok Developer registration.| Platform | OAuth app provided by |
|---|---|
| SocialAPI | |
| SocialAPI | |
| Threads | SocialAPI |
| TikTok | SocialAPI |
| SocialAPI | |
| YouTube | SocialAPI |
| SocialAPI | |
| Telegram | You (bot token from @BotFather) - no OAuth |
| X / Twitter | You (BYOK) - see setup guide |
| SocialAPI (beta) | |
| SocialAPI | |
| Trustpilot | API key (Coming soon) |
Account object
GET /v1/accounts returns an array of Account objects:
| Field | Type | Description |
|---|---|---|
id | string | Account ID. Pass this as :id in all account-scoped endpoints. |
platform | string | Platform identifier (e.g. instagram, facebook, tiktok, youtube, twitter). |
name | string | Display name of the connected page or profile. |
username | string | Platform handle or username. |
brand_id | string | Internal brand UUID this account belongs to. Always present. |
status | string | Account status. One of: active, reconnect_required. Always present. |
profile_picture_url | string | Profile picture URL. Omitted when not available. |
bio | string | Profile biography or description. Omitted when not available. |
reconnect_reason | string | Human-readable reason why reconnection is required. Only set when status is reconnect_required. |
Connect response metadata
Themetadata object is not included in the GET /v1/accounts account list response. It is returned only on the connect (POST /v1/accounts/connect) and OAuth exchange (POST /v1/oauth/exchange) responses. Use it to read platform-specific profile data at connection time.
The following platforms populate metadata:
| Key | Type | Platform |
|---|---|---|
avatar_url | string | TikTok |
follower_count | integer | TikTok |
following_count | integer | TikTok |
video_count | integer | TikTok, YouTube |
likes_count | integer | TikTok |
subscriber_count | integer | YouTube |
uploads_playlist_id | string | YouTube |
byok_source | string | X/Twitter (value: "user" or "brand") |
bot_id | string | Telegram |
phone_number_id | string | |
waba_id | string |
metadata entirely.
What “not supported” means
When a platform doesn’t support a feature (e.g. Instagram has no reviews), calling that endpoint returns:request_id field is always present on every error response. Use it when reporting issues.
This is expected behavior, not a bug. Design your app to handle 501 gracefully.
Auth types
| Type | How it works |
|---|---|
oauth2 | POST /accounts/connect with a top-level redirect_uri returns an auth_url. Send the user there; SocialAPI handles the platform callback and redirects the user to your redirect_uri with the result. See OAuth flows. |
apikey | Pass the platform API key in metadata in POST /accounts/connect. Returns account ID immediately. |
Private replies
On Instagram and Facebook, posting a reply with"private": true sends a DM to the commenter instead of a public reply. This is the platform’s native “Send Private Reply” feature. The private field is silently ignored on platforms that don’t support it.