> ## Documentation Index
> Fetch the complete documentation index at: https://docs.social-api.ai/llms.txt
> Use this file to discover all available pages before exploring further.

> ## Agent Instructions
> Base URL: https://api.social-api.ai/v1. Send your API key in the Authorization header: Authorization: Bearer <your API key>.
> Every error response from /v1 is JSON: { "error": { "code", "message", "meta" (optional) }, "request_id" }. Branch on error.code; use error.message only for logs.
> A 429 response carries a Retry-After header, in seconds, when the limit has a known wait. Authenticated responses can carry X-RateLimit-Limit, X-RateLimit-Remaining, and X-RateLimit-Reset for the per-minute request budget your SocialAPI account shares across every API key (see /guides/rate-limits).
> Paginated list endpoints return next_cursor, at the top level or inside pagination (see /guides/pagination). Pass it as the cursor query parameter to get the next page. An absent or empty next_cursor means you have the last page.
> Treat every ID as an opaque string: do not parse it or assume a format.
> Support differs by platform and by operation. Check /platforms/overview before assuming an operation works on a platform. An unsupported operation returns 501 with error.code resource.not_supported.

# Changelog

> Changes to the SocialAPI API and documentation, newest first. Subscribe to the RSS feed to follow new entries.

**2026-10-26**

WhatsApp

## Connect WhatsApp with a redirect

`POST /v1/accounts/connect` with `platform: "whatsapp"` now returns an `auth_url`, like every other platform with a consent screen. Send your customer there and they come back to your `redirect_uri` with `account_id`. There is nothing to embed or host, and no domain to register with us, so the flow works from any domain. Set `onboarding: "business_app"` to connect a number that stays on the WhatsApp Business app. When the WhatsApp Business Account holds several numbers, the redirect carries `status=selection_required` and you pick one with `POST /v1/accounts/pending/{connection_id}/select`. See [Connecting](https://docs.social-api.ai/platforms/whatsapp.md#connecting).

**2026-10-25**

Comments

## Attachments in private replies

A private reply can now send an image, video, audio file, or document instead of text, on Instagram and Facebook. Set `attachment` on `POST /v1/inbox/comments/{postId}/{commentId}/private-reply` with a `url`, `media_id`, or `platform_attachment_id` source. A private reply is one message, so `attachment` cannot be combined with `text` or `buttons`. See [Send a private reply](https://docs.social-api.ai/guides/comments.md#send-a-private-reply).

A media URL the platform cannot fetch or accept now returns `422 platform.instagram.attachment_failed` or `422 platform.facebook.attachment_failed`, on DMs and private replies. It returned `404 platform.instagram.100` or `404 platform.facebook.100` on a DM before, and `400 private_reply_ineligible` on a private reply. See [Errors](https://docs.social-api.ai/guides/errors.md).

**2026-10-21**

Rate limits

## Request rate limit documented

The per-minute request budget your SocialAPI account shares across every API key, its `X-RateLimit-Limit`, `X-RateLimit-Remaining`, and `X-RateLimit-Reset` headers, and the `429 ratelimit.exceeded` error are now documented. See [Request rate limit](https://docs.social-api.ai/guides/rate-limits.md#request-rate-limit).

**2026-10-21**

Facebook

## Facebook Page selection documented

A Facebook connection, and an Instagram connection through Facebook Login, ends with `status=selection_required` when `facebook_page_selection` is `true` on your SocialAPI account. Choose Pages with `page_ids` on `POST /v1/accounts/pending/{connection_id}/select`. See [Choose Facebook Pages](https://docs.social-api.ai/guides/connect-accounts.md#choose-facebook-pages).

**2026-10-21**

Errors

## Lowercase keys in meta.issues

Breaking: each entry of `error.meta.issues` on `400 publishing.validation_failed` now uses the documented lowercase keys (`type`, `platform`, `field`, `message`, `target`, `segment_index`). It used `Type`, `Platform`, `Field`, and `Message` before. Read the lowercase keys. See [Publishing](https://docs.social-api.ai/guides/publishing.md#validate-before-you-publish).

**2026-10-21**

Accounts

## Specific error\_description for account.already\_linked

A redirect with `error=account.already_linked` now carries an `error_description` you can show the person, which says whether the brand already holds another account on the platform or the account belongs to another of your brands. See [Connect accounts](https://docs.social-api.ai/guides/connect-accounts.md#redirect-parameters).

**2026-10-19**

Scoped keys

## inbox:write on comment delete, like, and YouTube moderation

Deleting, liking, and unliking a comment, and moderating or editing a YouTube comment, now need `inbox:write`, in the REST API and in the MCP tools. A scoped key without it gets `403 auth.insufficient_scope`. A brand-restricted key can run these calls and reply to a review only on accounts in its brands: another brand's account returns `404`. Full-access keys are unaffected. A reply to a mention refused with `403 account.permission_missing` no longer costs an interaction credit. See [Scoped API keys](https://docs.social-api.ai/guides/scoped-keys.md#scopes).

**2026-10-18**

Webhooks

## brand\_id on webhook events

Webhook events now carry `brand_id` next to `account_id`, so one endpoint serving more than one customer can route each event by brand. `post.scheduled` carries it on each item of `targets[]`, and `post.published`, `post.partial`, and `post.failed` on each item of `results[]`. `dm.status.*` events now also carry `account_id`. See [Route events by brand](https://docs.social-api.ai/guides/webhook-events.md#route-events-by-brand).

**2026-10-17**

Threads

## Threads mentions, insights, reply moderation, and reply\_control

Threads mentions, insights, and hiding or unhiding replies are no longer in beta, and `reply_control` in a Threads target's `platform_data` now sets who can reply. A Threads connect requests `threads_manage_mentions`, `threads_manage_replies`, and `threads_manage_insights`, each with its permission: see [Scopes](https://docs.social-api.ai/platforms/threads#scopes). An account connected before 2026-10-17 does not hold them, and those calls return `403` with a `platform.threads.<code>` error code until the account is reconnected. `reply_control` applies only on an account whose last connect was on or after 2026-10-17 with `comments.write` or with no `permissions` selection: on any other account it is not sent and comes back as a validation warning. Profile discovery stays in beta. See [Threads](https://docs.social-api.ai/platforms/threads).

**2026-10-17**

Facebook

## Facebook Page insights

`GET /v1/platforms/facebook/accounts/{id}/summary` and `GET /v1/platforms/facebook/accounts/{id}/insights/daily` are open to every key and no longer return `403 platform.facebook.beta_required`. A connect with the `analytics.read` permission requests `read_insights`. A Page connected before 2026-10-17 returns `403 platform.facebook.insights_scope_missing` until the account is reconnected. Facebook DMs still send no `message_tag`. See [Page insights](https://docs.social-api.ai/platforms/facebook#page-insights).

**2026-10-17**

Instagram

## Instagram through Facebook Login

`POST /v1/accounts/connect` for `instagram` accepts `"metadata": {"connection_type": "facebook_login"}` for every key, which connects the account through Facebook Login for Business and its linked Facebook Page. It publishes the same posts as Instagram Login, including carousels and Stories, sends and reads the same DMs, including attachments, interactive messages, and reactions, handles collaboration invites, and also deletes published posts, likes comments, and sets the paid-partnership label. It sends no `message_tag`, and `content_type` is optional on it. See [Connect through Facebook Login](https://docs.social-api.ai/platforms/instagram#connect-through-facebook-login).

**2026-10-16**

Publishing

## Stagger post targets

`POST /v1/posts` and `social_api_create_post` accept `stagger` with `min_seconds` and `max_seconds`. The targets publish one after another in the order listed, each a random delay in that range after the previous one, starting at `scheduled_at` or immediately with `publish_now`. The post is returned as `scheduled`, and each target's planned time is in `targets[].scheduled_at`. `stagger` on a draft, or outside `0 <= min_seconds <= max_seconds <= 86400`, returns `400 validation.field_invalid`. See [Stagger targets](https://docs.social-api.ai/guides/scheduling.md#stagger-targets).

**2026-10-16**

TikTok

## TikTok creator connection

`POST /v1/accounts/connect` for `tiktok` accepts `"metadata": {"connection_type": "creator"}`, which connects the account through TikTok's Content Posting API instead of TikTok API for Business, so a personal or creator account does not need to be a TikTok Business Account. A creator connection publishes posts and drafts, lists posts, and reads creator info and the account summary. It has no comments or mentions. Connects without `connection_type` are unchanged. See [Creator connection](https://docs.social-api.ai/platforms/tiktok#creator-connection).

**2026-10-16**

YouTube

## YouTube comments turned off, and rate-limit status

Listing the comments of a YouTube video with comments turned off returns `422 platform.youtube.comments_disabled` instead of `501 resource.not_supported`. Stop polling that video until the channel owner turns comments back on. When the YouTube daily quota is used up, calls return `429 platform.youtube.rate_limit` as documented, instead of `502 platform.youtube.api_error`. See [YouTube](https://docs.social-api.ai/platforms/youtube).

**2026-10-15**

LinkedIn

## LinkedIn profile analytics (beta)

`GET /v1/platforms/linkedin/insights` now returns `kind` (`organization` or `member`). A LinkedIn personal profile connected with `connection_type` `profile` returns its follower count and counts for its 5 most recent posts published through SocialAPI, and `GET /v1/accounts` returns `connection_type` on these accounts. The profile connection requires beta access: an account without it gets `403 billing.platform_not_available`. See [Profile analytics](https://docs.social-api.ai/platforms/linkedin#insights-beta).

**2026-10-14**

Publishing

## Platform options on post targets

Each post target returns `platform_data` with the platform-specific options you set when the post was created or last updated, so a saved post reopens with its options. Chain continuation posts are returned in segments, not in `platform_data`. See [Publishing](https://docs.social-api.ai/guides/publishing.md#where-platform-data-goes).

**2026-10-13**

Accounts

## Account permissions

Send `permissions` on `POST /v1/accounts/connect` or `POST /v1/invites` to give a connected account only the permissions you need. `GET /v1/accounts` returns `permissions` and `effective_permissions`, and `PATCH /v1/accounts/{id}` changes them. A call the account lacks a permission for returns `403 account.permission_missing`, except publishing, which reports it on the target, and the other calls listed in [Account permissions](https://docs.social-api.ai/guides/permissions.md#what-an-account-can-do-right-now).

**2026-10-13**

Documentation

## Documentation restructure

The documentation has new URLs, grouped into Guides, Platforms, AI agents, and API reference. Old URLs redirect to the new pages. Start at [Supported platforms](https://docs.social-api.ai/platforms/overview.md).

**2026-10-13**

Pinterest

## Pinterest boards

AI agents can list a Pinterest account's boards with `social_api_list_pinterest_boards`. See [MCP tools reference](https://docs.social-api.ai/integrations/tools.md).

**2026-10-13**

TikTok

## TikTok comments and mentions

TikTok accounts support comments: list comments and replies on the account's posts, reply to them, like them, hide comments other people wrote, and delete comments the connected account wrote. A `comment.received` event fires when someone else comments, and a TikTok Business Account can list the posts and comments that mention it and reply to a mention made in a comment. On a TikTok account connected before 2026-10-13, comment and mention calls return `501 resource.not_supported` until you reconnect the account. See [TikTok comments](https://docs.social-api.ai/platforms/tiktok#comments) and [TikTok mentions](https://docs.social-api.ai/platforms/tiktok#mentions).

**2026-10-13**

Accounts

## TikTok connects through TikTok API for Business

TikTok connects, invites, and reconnects authorize the account through TikTok API for Business. Accounts that were already connected keep working until their owner reconnects. See [TikTok](https://docs.social-api.ai/platforms/tiktok).

**2026-10-13**

Publishing

## TikTok posts capped at 13 per 24 hours

SocialAPI caps each TikTok account at 13 posts per 24 hours, below TikTok's limit of 15 per day. A post beyond the cap returns `429 publishing.velocity_limit` with a `Retry-After` header. See [Posting velocity caps](https://docs.social-api.ai/guides/rate-limits.md#posting-velocity-caps).

**2026-10-13**

Billing

## Refused publishes and retries use no post credit

A publish or retry that returns `429 publishing.velocity_limit` does not use a post credit. See [Posting velocity caps](https://docs.social-api.ai/guides/rate-limits.md#posting-velocity-caps) and [Plans](https://docs.social-api.ai/guides/plans.md).

**2026-10-12**

Instagram

## Per-post Instagram insights

`GET /v1/posts/{pid}/metrics` now returns insights for an Instagram post, such as views, reach, interactions, and saves. See [Instagram live metrics](https://docs.social-api.ai/platforms/instagram/publishing.md#live-metrics-and-insights).

**2026-10-12**

LinkedIn

## LinkedIn escapes reserved characters

Characters LinkedIn reserves for formatting are escaped, so plain text appears as typed. Hashtags and mentions still use the syntax in [Text formatting](https://docs.social-api.ai/platforms/linkedin/publishing.md#text-formatting).

**2026-10-06**

Accounts

## Sync cooldown per account

`POST /v1/accounts/{id}/sync` allows 1 request per account every 5 minutes. A second request inside the window returns `429 accounts.sync_rate_limited`. See [Refresh an account's posts](https://docs.social-api.ai/guides/analytics.md#refresh-an-accounts-posts).

**2026-10-06**

Instagram and Facebook

## Photos and videos on post targets

Instagram and Facebook post targets return `platform_media`, the images and videos of the published post, including posts published outside SocialAPI. See [Instagram publishing](https://docs.social-api.ai/platforms/instagram/publishing.md).

**2026-10-06**

Instagram and Facebook

## Up to 500 posts per Instagram account and Facebook Page

Connecting an Instagram or Facebook account, and `POST /v1/accounts/{id}/sync`, cover up to the 500 most recent posts of an Instagram account and of each Facebook Page. See [Refresh an account's posts](https://docs.social-api.ai/guides/analytics.md#refresh-an-accounts-posts).

**2026-10-01**

Threads

## Threads connect fixed in some regions

Connecting a Threads account from some regions ended on the Threads home page instead of the authorization screen. Connect now opens the authorization screen from every region. See [Threads](https://docs.social-api.ai/platforms/threads).

**2026-09-30**

WhatsApp

## Banned WhatsApp numbers cannot be connected

Connecting a WhatsApp number that Meta has banned fails with `403 whatsapp.number_banned`. Reconnecting does not lift the ban. See [Errors](https://docs.social-api.ai/guides/errors.md#whatsapp).

**2026-09-30**

WhatsApp

## Numbers Meta no longer serves are flagged for reconnection

When Meta stops serving a WhatsApp number for a connection, the account is marked `reconnect_recommended` with the reason `whatsapp_number_unavailable`, and an `account.disconnected` webhook fires once. See [Account status](https://docs.social-api.ai/guides/connect-accounts.md#account-status).

**2026-09-29**

Automations

## Multi-step Automations, buttons, and the Follow gate

Automations run multi-step flows with postback buttons, and Instagram Automations can send a link only to people who follow the account. See [The Follow gate](https://docs.social-api.ai/guides/automations.md#the-follow-gate).

**2026-09-29**

WhatsApp

## WhatsApp numbers that stay in the WhatsApp Business app

A number that stays registered in the WhatsApp Business app can connect through Embedded Signup. Messages you send from the app appear in your inbox as outgoing messages, and imported message history arrives without firing webhooks. See [Keep using the WhatsApp Business app](https://docs.social-api.ai/platforms/whatsapp.md#keep-using-the-whatsapp-business-app).

**2026-09-29**

Mentions

## Reply to Threads mentions

`POST /v1/accounts/{id}/mentions/reply` now replies to a mention on Threads. Threads support is in beta. See [Reply to a mention](https://docs.social-api.ai/guides/mentions.md#reply-to-a-mention).

**2026-09-28**

Automations

## Keyword Automations

An Automation on an Instagram or Facebook account can react only to comments or messages that contain your keywords. See [Automations](https://docs.social-api.ai/guides/automations.md).

**2026-09-28**

Threads

## Full Threads account insights

Account insights on Threads now include likes, clicks, replies, reposts, quotes, and follower counts, along with follower demographics. Those values were missing from responses before. See [Threads insights](https://docs.social-api.ai/platforms/threads#insights).

**2026-09-27**

Instagram

## Instagram Reels require a video

Validation reports an error for a Reel draft that has no video. Use `content_type` `feed` for an image. See [Supported media](https://docs.social-api.ai/platforms/instagram/publishing.md#2-supported-media).

**2026-09-24**

Instagram and Facebook

## More platform\_data options on Instagram and Facebook

Instagram posts accept AI-generated labels, paid partnership, user tags, audio name, and thumbnail offset in `platform_data`. Facebook posts accept place, country targeting, link carousels, and video options. Validation reports a warning for any key the platform does not accept. See [Platform data fields](https://docs.social-api.ai/platforms/instagram/publishing.md#platform-data-fields).

**2026-09-22**

Analytics

## Stored analytics history

SocialAPI stores daily history for accounts, brands, and posts, and returns it from the account, brand, and post analytics endpoints. See [Analytics](https://docs.social-api.ai/guides/analytics.md).

**2026-09-22**

Billing

## Billing block fields on /v1/users/me

`GET /v1/users/me` returns `billing_blocked`, `billing_blocked_at`, and `billing_block_reason`. Use them to tell a customer why calls are refused and whether paying lifts the block. See [Past-due accounts](https://docs.social-api.ai/guides/plans.md#past-due-accounts).

**2026-09-22**

Accounts

## Last used time for API keys

API key responses include `last_used_at`, the time of the key's latest request, up to 1 minute out of date. The field is absent when the key has never been used. See [List keys](https://docs.social-api.ai/guides/authentication.md#list-keys).

**2026-09-21**

Pinterest

## Pinterest posting limits

A Pinterest publish target allows 1,000 posts per 24 hours and has no hourly cap. See [Posting velocity caps](https://docs.social-api.ai/guides/rate-limits.md#posting-velocity-caps).

**2026-09-20**

Google Business Profile

## Google platform\_data keys

Google Business Profile posts send only the `platform_data` fields that Google accepts. Other keys are dropped, so a key meant for another platform no longer fails the whole post. See [Platform data fields](https://docs.social-api.ai/platforms/google/publishing.md#platform-data-fields).

**2026-09-20**

Inbox

## Comments report liked\_by\_viewer

Each comment includes `liked_by_viewer`, which is `true` when the connected account liked it through SocialAPI. Instagram accounts connected with Facebook Login can like comments too. See [Like and unlike a comment](https://docs.social-api.ai/guides/comments.md#like-and-unlike-a-comment).

**2026-09-19**

MCP

## Output schemas for MCP tools

Every MCP tool declares an output schema, so a client can read the shape of each result before it calls the tool. See [MCP tools reference](https://docs.social-api.ai/integrations/tools.md).

**2026-09-17**

Direct messages

## Reply to a specific message

Messages carry `reply_to.platform_id` when they reply to an earlier message. See [Read messages](https://docs.social-api.ai/guides/direct-messages.md#read-messages).

**2026-09-17**

Accounts

## Team role on /v1/users/me

`GET /v1/users/me` returns `role`: `admin`, `developer`, or an empty string for the account Owner. See [Account permissions](https://docs.social-api.ai/guides/permissions.md).

**2026-09-16**

Pinterest

## Pinterest

Connect a Pinterest account to publish Pins to a board, and to list, create, rename, and delete its boards with `/v1/accounts/{id}/boards`. `GET /v1/platforms/pinterest/accounts/{id}/pins` lists the account's Pins, and `GET /v1/platforms/pinterest/accounts/{id}/summary` returns its follower, Pin, board, and view counts. See [Pinterest](https://docs.social-api.ai/platforms/pinterest).

**2026-09-14**

Billing

## Profile packs on Empire

Business (Empire) accounts add Profile packs automatically when their brand count reaches the scale threshold, 90% of the allowance by default, as Pro (Full Send) accounts do. See [Profile packs](https://docs.social-api.ai/guides/plans.md#profile-packs).

**2026-09-14**

MCP

## Write tools declare readOnlyHint false

MCP write tools send `readOnlyHint: false`, so a client knows which tools change data. See [MCP tools reference](https://docs.social-api.ai/integrations/tools.md).

**2026-09-12**

Instagram

## Instagram story replies arrive as DMs

A reply to one of your Instagram stories arrives as a `dm.received` event, with the story in the `story` field. See [Webhook events](https://docs.social-api.ai/guides/webhook-events.md#direct-messages).

**2026-09-10**

Billing

## Automatic Profile packs on Full Send

Pro (Full Send) accounts add a Profile pack of 50 brands automatically when brands reach the scale threshold, 90% of the allowance by default. See [Profile packs](https://docs.social-api.ai/guides/plans.md#profile-packs).

**2026-09-08**

WhatsApp

## Register Cloud API numbers

Register a WhatsApp Cloud API number with `POST /v1/platforms/whatsapp/phone-numbers/{id}/request-code`, `verify-code`, and `register`. Registration handles the two-step verification PIN. See [Connecting](https://docs.social-api.ai/platforms/whatsapp.md#connecting).

**2026-09-08**

Facebook

## Move a Page between brands

Assigning a Facebook Page to a brand moves it from the brand that holds it now. See [One login, many brands](https://docs.social-api.ai/platforms/facebook#one-login-many-brands).

**2026-09-07**

Inbox

## Private reply eligibility errors

A private reply that Instagram or Facebook refuses returns `platform.instagram.private_reply_ineligible` or `platform.facebook.private_reply_ineligible`. Examples are a comment older than the 7-day window, or a second private reply to the same comment. See [Send a private reply](https://docs.social-api.ai/guides/comments.md#send-a-private-reply).

**2026-09-06**

YouTube

## YouTube suspended accounts

When YouTube suspends or closes the account or its channel, every call for that account returns `403` with `platform.youtube.account_suspended`. See [Errors](https://docs.social-api.ai/guides/errors.md#x-linkedin-youtube-and-zalo).

**2026-09-06**

Instagram and Facebook

## Button taps are saved as messages

When someone taps a button in an Instagram or Facebook conversation, the tap is saved as an inbox message and raises `dm.postback`. See [Read messages](https://docs.social-api.ai/guides/direct-messages.md#read-messages).

**2026-09-06**

Instagram and Facebook

## platform\_id on DM webhook events

`dm.received`, `dm.sent`, and `dm.postback` carry `platform_id` in `data`. The value matches the `platform_id` of the same message in the API. See [Webhook events](https://docs.social-api.ai/guides/webhook-events.md#direct-messages).

**2026-09-05**

Direct messages

## Closed messaging windows return the same error

After Instagram or Facebook refuses a DM because the 24-hour messaging window has closed, later sends to that conversation return the same `400` error code as the first refusal, with `meta.blocked_locally` set to `true`. The block lifts when the person messages you again, or 24 hours after the refusal, whichever comes first. Sends that carry a `message_tag` are never blocked this way. See [The messaging window](https://docs.social-api.ai/guides/direct-messages.md#the-messaging-window).

**2026-09-05**

WhatsApp

## Connect WhatsApp from your own page

WhatsApp Embedded Signup runs in three legs: your backend starts the connection, Meta's popup collects the number, and your backend completes it. See [Connecting](https://docs.social-api.ai/platforms/whatsapp.md#connecting).

**2026-09-04**

Publishing

## Posting velocity caps

Each publish target can publish 25 posts per hour, and each platform has a 24-hour cap. Publishing past a cap returns `429 publishing.velocity_limit` with `Retry-After`, and creates nothing. A scheduled post is held until the window clears, not failed. See [Posting velocity caps](https://docs.social-api.ai/guides/rate-limits.md#posting-velocity-caps).

**2026-09-02**

Accounts

## Re-sync an account's posts

`POST /v1/accounts/{id}/sync` re-reads up to 100 of an account's most recent posts from the platform. See [Refresh an account's posts](https://docs.social-api.ai/guides/analytics.md#refresh-an-accounts-posts).

**2026-09-01**

Threads

## Threads platform\_data warnings

Threads draft validation reports a warning for each `platform_data` key it will ignore, so you can see which settings will not apply before you publish. See [Platform data fields](https://docs.social-api.ai/platforms/threads/publishing.md#platform-data-fields).

**2026-08-31**

Google

## Update a Google Business Profile location

`PUT /v1/platforms/google/accounts/{id}` changes a location's public profile: name, description, phone numbers, address, website, categories, opening hours, and service area. Only the fields you send are changed, and sending an empty value clears that field. Google moderates each edit, so a successful response means the edit was accepted for review. See [Update a location](https://docs.social-api.ai/platforms/google/locations.md#update-a-location).

**2026-08-31**

Google

## Photos and videos on Google locations

`GET`, `POST`, and `DELETE` on `/v1/platforms/google/accounts/{id}/media` manage the photos and videos on a location's public profile. Photos customers contributed can be read with `contributed=true`, but they cannot be deleted through the API. See [Profile media](https://docs.social-api.ai/platforms/google/locations.md#profile-media).

**2026-08-31**

Google

## Google performance metrics and search keywords

`GET /v1/platforms/google/accounts/{id}/insights` returns daily counts of how people found a location on Search and Maps and what they did next. `GET /v1/platforms/google/accounts/{id}/search-keywords` returns the monthly keywords that surfaced it. Google withholds exact counts for low-volume keywords, which come back as a threshold instead of a value. See [Performance metrics](https://docs.social-api.ai/platforms/google#performance-metrics).

**2026-08-31**

Google

## Review reply moderation events

Google moderates review replies. `review.updated` is sent when a reply is approved or rejected, with `change` set to `reply_approved` or `reply_rejected`. See [Review events](https://docs.social-api.ai/platforms/google/reviews.md#review-events).

**2026-08-31**

Bluesky

## Bluesky

Connect a Bluesky account with an app password to publish posts and read comments, mentions, and direct messages. Direct messages need an app password with direct message access. See [Bluesky](https://docs.social-api.ai/platforms/bluesky).

**2026-08-31**

WhatsApp

## Send media with a caption and filename

Messages can include media with an optional caption and filename. See [Sending media](https://docs.social-api.ai/platforms/whatsapp.md#sending-media).

**2026-08-31**

WhatsApp

## Interactive messages

Send a message with up to 3 reply buttons, or with a list menu. When a contact taps an option, it arrives as an inbound message in the same `messages` array as text and media. See [Interactive messages](https://docs.social-api.ai/platforms/whatsapp.md#interactive-messages).

**2026-08-31**

WhatsApp

## Inbound WhatsApp media

Media that contacts send is available from `GET /v1/inbox/media/{id}`, which returns the file. If the file is not ready yet, the call returns `504`, so retry it. See [Inbound media](https://docs.social-api.ai/platforms/whatsapp.md#inbound-media).

**2026-08-31**

WhatsApp

## Template sends return a message ID

A template send returns `message_id`, the SocialAPI ID of the message. See [Send a template](https://docs.social-api.ai/platforms/whatsapp.md#send-a-template).

**2026-08-30**

Google

## Review replies show their moderation state

A reply you send to a Google review returns `state`, which is `PENDING` until Google approves it. A reply is not published at the moment you send it. See [Replies are moderated](https://docs.social-api.ai/platforms/google/reviews.md#replies-are-moderated).

**2026-08-30**

WhatsApp

## WhatsApp webhooks include account and conversation IDs

Breaking: `dm.received` for WhatsApp now sets `account_id` to the SocialAPI account ID, and sets `conversation_id`. Before, `account_id` held the WhatsApp phone number ID, so update code that read it as one. See [dm.received](https://docs.social-api.ai/guides/webhook-events.md#dmreceived).

**2026-08-30**

Facebook

## Private replies reject buttons

A private reply that includes `buttons` returns `400 validation.field_not_supported` with `field` set to `buttons`, and the message asks you to send text only. Before, the buttons were dropped without an error. See [Private replies](https://docs.social-api.ai/platforms/facebook#private-replies).

**2026-08-29**

Google

## Google logins show their account email

`GET /v1/platforms/google/logins/{loginId}/locations` returns `login_name` and `login_email`, so you can tell Google logins apart. See [Connect another location to a brand](https://docs.social-api.ai/platforms/google/locations.md#connect-another-location-to-a-brand).

**2026-08-29**

Google

## Assign new locations without reconnecting

After a Google login is connected, its Business Profile locations can be assigned to brands without repeating OAuth. Locations added in Business Profile later appear in `GET /v1/platforms/google/logins/{loginId}/locations`. See [Connect another location to a brand](https://docs.social-api.ai/platforms/google/locations.md#connect-another-location-to-a-brand).

**2026-08-28**

WhatsApp

## WhatsApp replies inside the 24-hour window send

Replies to a contact inside the 24-hour service window are no longer rejected by SocialAPI with `whatsapp.window_closed`. WhatsApp decides whether a send is allowed. See [The 24-hour service window](https://docs.social-api.ai/platforms/whatsapp.md#the-24-hour-service-window).

**2026-08-28**

Instagram and Facebook

## React to direct messages

`POST /v1/inbox/conversations/{id}/messages/{messageId}/reaction` adds your account's emoji reaction to a message, and `DELETE` on the same path removes it. Send the emoji character itself. Supported on Instagram and Facebook Messenger. See [React to a message](https://docs.social-api.ai/guides/direct-messages.md#react-to-a-message).

**2026-08-24**

YouTube

## Studio tags on published videos

`PATCH /v1/platforms/youtube/accounts/{id}/videos/{videoId}` accepts `tags`, which sets the video's tags in YouTube Studio. See [Update post](https://docs.social-api.ai/platforms/youtube/publishing.md#4-update-post).

**2026-08-23**

Inbox

## Refresh an account's inbox on demand

`POST /v1/inbox/sync` refreshes one account's conversations, or one conversation when you send `conversation_id`. The call returns right away: poll `GET /v1/inbox/sync` until `state` is no longer `syncing`. Repeating a sync for the same target before its wait is over returns `429`, and `Retry-After` gives the seconds left. See [Refresh the inbox manually](https://docs.social-api.ai/guides/inbox.md#refresh-the-inbox-manually).

**2026-08-23**

Threads

## Threads insights and profile lookup (beta)

`GET /v1/platforms/threads/insights` returns engagement for one Threads post or for the account. `GET /v1/platforms/threads/profile-lookup` resolves a public profile by exact username. See [Insights](https://docs.social-api.ai/platforms/threads#insights).

**2026-08-23**

Zalo

## Zalo is open to every account

Zalo no longer needs a beta flag or an allowlist entry. See [Zalo](https://docs.social-api.ai/platforms/zalo).

**2026-08-23**

Publishing

## A publish without an ID fails

If Threads or Instagram accepts a publish without returning a media ID, or Google accepts a local post without returning its resource name, the target now fails instead of reporting success. See [Errors on a failed target](https://docs.social-api.ai/platforms/threads/publishing.md#errors-on-a-failed-target).

**2026-08-23**

YouTube

## YouTube daily reply limit

Each YouTube channel can post 5 comment replies per day, counted in Pacific time. A reply over the limit returns `validation.youtube_daily_reply_limit`. See [Comments](https://docs.social-api.ai/platforms/youtube#comments).

**2026-08-22**

Facebook

## Reel metrics on post metrics

`GET /v1/posts/{pid}/metrics` returns metrics for Facebook Reels. Before, Reel targets were dropped from the response without an error. See [Retrieve posts](https://docs.social-api.ai/platforms/facebook/publishing.md#6-retrieve-posts).

**2026-08-22**

Publishing

## One media list on posts

Post requests accept a single `media` array that mixes `url`, `media_id`, and `platform_attachment_id` items, in the order you send them. `platform_attachment_id` publishes only on Instagram, Threads, LinkedIn, LinkedIn Page, and X. `media_ids` still works but is ignored when `media` is set. See [Publish a platform attachment ID](https://docs.social-api.ai/guides/media.md#publish-a-platform-attachment-id).

**2026-08-21**

Instagram

## Messaging participant profiles

`GET /v1/platforms/instagram/accounts/{id}/participants/{participantId}/profile` returns a messaging participant's profile, with follow status in both directions. Instagram returns it only for users who messaged the account or tapped an icebreaker or persistent menu item. For anyone else the call returns `403 platform.instagram.230`: Instagram did not disclose the relationship, which does not mean the user does not follow the account. See [Participant profile](https://docs.social-api.ai/platforms/instagram#participant-profile).

**2026-08-20**

Inbox

## Comment and review endpoints accept SocialAPI IDs

Comment and review endpoints accept a SocialAPI interaction ID, such as `sapi_cmt_...` or `sapi_rev_...`, in place of the platform ID. See [What each endpoint accepts](https://docs.social-api.ai/guides/ids.md#what-each-endpoint-accepts).

**2026-08-19**

Instagram

## Instagram account summary

`GET /v1/platforms/instagram/accounts/{id}/summary` returns profile counts and trailing 30-day insight totals for an Instagram account, such as reach, views, interactions, engaged accounts, and net follower change. Accounts connected before the insights permission was requested return `403` until they are reconnected. See [Account summary](https://docs.social-api.ai/platforms/instagram#account-summary).

**2026-08-17**

TikTok

## TikTok refusals return 4xx

Some TikTok refusals now return `403`, and daily post limits return `429` so you know to back off. Before, these returned `502`. The `platform.tiktok.<code>` error code is unchanged. See [Errors on a failed target](https://docs.social-api.ai/platforms/tiktok/publishing.md#errors-on-a-failed-target).

**2026-08-15**

WhatsApp

## WhatsApp Business is open to every account

WhatsApp Business no longer needs a beta flag or an allowlist entry. See [WhatsApp](https://docs.social-api.ai/platforms/whatsapp.md).

**2026-08-15**

Accounts

## Redirect URIs keep their query string

A redirect URI you register can include a query string. SocialAPI keeps it and adds its own callback parameters. If your URI has a parameter with the same name as a callback parameter, SocialAPI's value replaces yours. See [Connect accounts](https://docs.social-api.ai/guides/connect-accounts.md).

**2026-08-14**

Accounts

## Deleting an account cancels its subscription

`DELETE /v1/users/me` cancels the account's paid subscription before the account is deleted. If the cancellation fails, the deletion still goes through. See [Change or cancel your plan](https://docs.social-api.ai/guides/plans.md#change-or-cancel-your-plan).

**2026-08-13**

Instagram

## Instagram collaboration invites

Collaborators are invited when you publish, through `collaborators` in the platform data, and `GET /v1/platforms/instagram/accounts/{id}/media/{mediaId}/collaborators` lists them for the publishing account only. The invited account accepts or declines with `POST` on `collab/accept` or `collab/decline`. Invites expire 14 days after they are sent. See [Collaboration invites](https://docs.social-api.ai/platforms/instagram#collaboration-invites).

**2026-08-12**

Billing

## Plan catalog and use case

`GET /v1/billing/plans` returns the plan catalog: names, taglines, prices, limits, and which plan is marked popular. `GET /v1/users/me` returns `use_case`. See [The plan catalog](https://docs.social-api.ai/guides/plans.md#the-plan-catalog).

**2026-08-12**

Webhooks

## Instagram comment events include the post permalink

Instagram `comment.received` events include `permalink`, the public URL of the post. The field is optional and set only for Instagram comments. See [comment.received](https://docs.social-api.ai/guides/webhook-events.md#commentreceived).

**2026-08-12**

Publishing

## Look up a post by its platform ID

`GET /v1/posts/{pid}` and `GET /v1/posts/{pid}/metrics` accept a platform post ID as well as a SocialAPI post ID. See [Publishing](https://docs.social-api.ai/guides/publishing.md).

**2026-08-10**

TikTok

## Send a TikTok video to the creator's inbox

Set `post_mode` to `inbox` in the TikTok platform data to upload a video to the creator's TikTok inbox as a draft instead of publishing it. The `video.upload` scope is required. See [Draft in the TikTok app](https://docs.social-api.ai/platforms/tiktok/publishing.md#draft-in-the-tiktok-app).

**2026-08-09**

Webhooks

## Replay protection headers

Each webhook delivery includes `X-SocialAPI-Timestamp`, `X-SocialAPI-Delivery`, and `X-SocialAPI-Signature-V2`. The V2 signature is an HMAC-SHA256 over the timestamp, a `.` character, and the raw request body. Use them to reject replayed deliveries. See [Replay protection](https://docs.social-api.ai/guides/webhooks.md#replay-protection).

**2026-08-09**

LinkedIn

## LinkedIn posts return a permalink

LinkedIn and LinkedIn Page posts return `permalink`, the URL of the published post. It was empty before. See [Retrieve posts](https://docs.social-api.ai/platforms/linkedin/publishing.md#6-retrieve-posts).

**2026-08-08**

Threads

## Threads publishes retry when the media is not ready

A Threads publish that fails because its media container is not ready yet is retried before it is reported as failed. See [Errors on a failed target](https://docs.social-api.ai/platforms/threads/publishing.md#errors-on-a-failed-target).

**2026-08-06**

Facebook

## Ineligible private replies return a stable error

A private reply that Meta rejects because the comment is not eligible returns `platform.facebook.private_reply_ineligible`. The message explains that the 7-day window has passed or that the comment already received a private reply. See [Private replies](https://docs.social-api.ai/platforms/facebook#private-replies).

**2026-08-06**

Facebook

## List every Facebook Page

Listing a user's Facebook Pages returns every Page. Accounts with more than 25 Pages were cut off at 25. See [Pages of an account](https://docs.social-api.ai/platforms/facebook#pages-of-an-account).

**2026-08-04**

TikTok

## TikTok profile fields in the account summary

`GET /v1/platforms/tiktok/accounts/{id}/summary` returns the creator's display name, username, avatar, follower, following, likes, and video counts, and bio. See [Account summary](https://docs.social-api.ai/platforms/tiktok#account-summary).

**2026-07-31**

Facebook and Instagram

## Specific error codes for Facebook messaging and Meta throttling

Sending a Facebook message after the 24-hour messaging window closes returns `400 platform.facebook.window_closed`. Other refusals with Meta error code 10 return `403 platform.facebook.permission_denied`. See [The messaging window](https://docs.social-api.ai/guides/direct-messages.md#the-messaging-window) and [Errors](https://docs.social-api.ai/guides/errors.md).

**2026-07-30**

TikTok

## TikTok account summary and video sync

`GET /v1/platforms/tiktok/accounts/{id}/summary` returns the profile and video statistics of a TikTok account. `POST /v1/platforms/tiktok/accounts/{id}/sync` re-syncs the account's videos. See [Account summary](https://docs.social-api.ai/platforms/tiktok#account-summary) and [Sync videos](https://docs.social-api.ai/platforms/tiktok#sync-videos).

**2026-07-28**

Announcements

## Service announcements

`GET /v1/announcements` lists current service announcements, newest first, with a `seen` flag for the calling user. `POST /v1/announcements/{id}/seen` marks one as seen, and repeating the call is safe. Both calls are free and work with restricted API keys. See [Announcements](https://docs.social-api.ai/guides/announcements.md).

**2026-07-27**

X / Twitter

## Images and video on X posts

Posts to X accept up to 4 images, 1 video, or 1 GIF. Uploads need the `media.write` scope, so an account connected before this change must reconnect before its first upload. A failed upload fails the whole post; the text is not published alone. See [Supported media](https://docs.social-api.ai/platforms/twitter/publishing.md#2-supported-media).

**2026-07-27**

X / Twitter

## Hide X replies

X comments report `can_hide: true`, so you can hide them through the inbox moderation calls. Deleting X replies is still not offered, because X only allows deleting posts the account wrote. See [X comments](https://docs.social-api.ai/platforms/twitter#comments).

**2026-07-27**

X / Twitter

## X comment lists

A post's X comments no longer include the post itself as its first comment. A `limit` below X's minimum no longer returns `400`; the list is trimmed to the number you asked for. See [X comments](https://docs.social-api.ai/platforms/twitter#comments).

**2026-07-27**

X / Twitter

## X DM replies go to the other person

When the newest message in an X conversation was sent by your account, the conversation now resolves to the other participant. Before this fix, a reply in that case went to your own account. See [Direct messages](https://docs.social-api.ai/platforms/twitter#direct-messages).

**2026-07-27**

X / Twitter

## X accounts stay connected after an unexplained 401

A 401 from X that does not name an invalid or expired token no longer marks the account as needing a reconnect. A token that X reports as invalid or expired still does. See [Account status](https://docs.social-api.ai/guides/connect-accounts.md#account-status).

**2026-07-17**

Threads

## Threads error details from Meta

A bare error code 10 from Threads returns `422 platform.threads.10` with Meta's message, subcode, and trace ID. Before, it returned "Operation not supported for this platform" and dropped those details. See [Errors](https://docs.social-api.ai/guides/errors.md).

**2026-07-16**

WhatsApp

## WhatsApp Business (beta)

WhatsApp Business is available in beta. Request access from the dashboard, then connect a phone number through Meta's signup flow to read and reply to messages, send message templates, and check the phone number status. See [Connecting](https://docs.social-api.ai/platforms/whatsapp.md#connecting).

**2026-07-14**

Google Business Profile

## Google 403 responses do not require a reconnect

A 403 from Google, such as posting disabled by a policy, returns `403 platform.google.access_denied` with Google's message. The account no longer needs a reconnect for it. Only a 401 from Google requires one. See [Account status](https://docs.social-api.ai/guides/connect-accounts.md#account-status).

**2026-07-12**

API keys

## Edit and rotate API keys

`PATCH /v1/keys/{id}` changes a key's name, scopes, and brand restrictions, and the key value stays the same. `POST /v1/keys/{id}/rotate` issues a new secret and stops the old one working immediately. The new secret is shown once. See [Scoped keys](https://docs.social-api.ai/guides/scoped-keys.md).

**2026-07-10**

API keys

## Scoped and brand-restricted API keys

`POST /v1/keys` accepts `scopes` and `brand_ids` to limit a key to the actions and brands you choose. `GET /v1/keys/scopes` lists the scopes you can assign. A call outside a key's scopes returns `403 auth.insufficient_scope`. See [Scoped keys](https://docs.social-api.ai/guides/scoped-keys.md).

**2026-07-10**

Direct messages

## Stable DM conversation IDs

A direct message conversation keeps the `conversation_id` first delivered for it. The ID no longer changes partway through a thread. See [Conversations](https://docs.social-api.ai/guides/direct-messages.md#conversations).

**2026-07-09**

X / Twitter

## X accounts stay connected after a duplicate post is refused

When X refuses a post as duplicate content, the account keeps working and does not need a reconnect. See [Account status](https://docs.social-api.ai/guides/connect-accounts.md#account-status).

**2026-07-06**

Inbox

## brand\_id filters on posts, comments, and conversations

`GET /v1/posts`, `GET /v1/inbox/comments`, and `GET /v1/inbox/conversations` now honor the `brand_id` parameter. Before, it was ignored and the results covered every brand. See [Concepts](https://docs.social-api.ai/guides/concepts.md).

**2026-07-06**

Reviews

## Reviews are listed per account

Breaking: `GET /v1/inbox/reviews` now returns your connected Google Business Profile accounts, each with its rating summary, including accounts with no reviews. To list reviews, call `GET /v1/inbox/reviews/{account_id}` for one account. See [The two list endpoints](https://docs.social-api.ai/guides/reviews.md#the-two-list-endpoints).

**2026-07-04**

Google Business Profile

## Choose one Google Business Profile

When a Google login manages more than one Business Profile, the connection stays in `selection_required` status until you choose one. `GET /v1/accounts/pending/{connection_id}` lists the candidates, and `POST /v1/accounts/pending/{connection_id}/select` connects the one you pick. The MCP tools `social_api_list_pending_profiles` and `social_api_select_pending_profile` do the same. See [Choose a Google Business Profile](https://docs.social-api.ai/guides/connect-accounts.md#choose-a-google-business-profile).

**2026-07-04**

Google Business Profile

## Every Google account and location is listed

Listing Google Business Profile accounts and locations now follows every page of results. Before, a long list was cut short, and the profiles past the cut could not be connected. See [Choose a Google Business Profile](https://docs.social-api.ai/guides/connect-accounts.md#choose-a-google-business-profile).

**2026-06-28**

Zalo

## Zalo Official Account (beta)

Zalo Official Account is available in beta. Connect an Official Account to read and send direct messages, and to create, update, list, and delete article posts. See [Zalo](https://docs.social-api.ai/platforms/zalo).

**2026-06-22**

Mentions

## Reply to a mention as a public comment

`POST /v1/accounts/{id}/mentions/reply` posts a public comment in reply to a mention on Instagram or Facebook, including on a third-party post where a normal comment reply is not allowed. Each reply uses 1 interaction credit. See [Mentions](https://docs.social-api.ai/guides/mentions.md).

**2026-06-20**

Publishing

## Post type on each target

Each target in a post response includes `media_type`, one of `feed`, `reel`, `stories`, or `carousel`. See [Publishing](https://docs.social-api.ai/guides/publishing.md).

**2026-06-18**

Publishing

## Platform settings on the post

`POST /v1/posts`, `PATCH /v1/posts/{pid}`, and `POST /v1/posts/validate` accept `platform_data` at the top level, keyed by platform name, for example `{"instagram": {"content_type": "feed"}}`. A target's own `platform_data` takes precedence over the top-level value. See [Publishing](https://docs.social-api.ai/guides/publishing.md).

**2026-06-17**

Instagram and Facebook

## Mention events include the mention content

`mention.received` events for Instagram and Facebook include the text, media, permalink, and author of the mention when the platform returns them. Any field can be empty. See [Webhook events](https://docs.social-api.ai/guides/webhook-events.md).

**2026-06-16**

LinkedIn

## LinkedIn post options

LinkedIn posts accept `platform_data` for `visibility`, `disable_reshare`, alt text for each image (`alt_text` or `alt_texts`), and `media_title`. Invalid values fail validation before the post is published. See [LinkedIn publishing](https://docs.social-api.ai/platforms/linkedin/publishing.md).

**2026-06-16**

LinkedIn

## LinkedIn article and link posts

LinkedIn article posts accept `article_url`, `article_title`, `article_description`, and a thumbnail image in `platform_data`. Posts can add a call-to-action button with `cta_label` and `cta_url`. See [LinkedIn publishing](https://docs.social-api.ai/platforms/linkedin/publishing.md).

**2026-06-16**

Instagram

## Quick replies, buttons, and carousels in DMs

`POST /v1/inbox/conversations/{id}/messages` accepts `quick_replies`, `buttons`, and `cards` for Instagram conversations. When a person taps a postback button on Instagram, SocialAPI sends a `dm.postback` webhook event. See [Direct messages](https://docs.social-api.ai/guides/direct-messages.md).

**2026-06-16**

Instagram and Facebook

## Multiple attachments and replies in DMs

A DM request can send more than one attachment, each as its own message, using `attachments` with a `source_type` of `url`, `media_id`, or `platform_attachment_id`. `reply_to_message_id` sends the first message as a reply to an earlier message. `attachment_url` is deprecated in favor of `attachments`. See [Direct messages](https://docs.social-api.ai/guides/direct-messages.md).

**2026-06-16**

Instagram

## Read Instagram stories

`GET /v1/platforms/instagram/accounts/{id}/stories` lists the account's active stories. It supports `limit` and `cursor`. See [Instagram](https://docs.social-api.ai/platforms/instagram).

**2026-06-14**

Publishing

## Posts are validated before they are scheduled or published

Scheduling or publishing a post runs the same checks as `POST /v1/posts/validate`. If the checks find errors, the request returns `400` with `publishing.validation_failed` and the list of issues. Send `skip_validation: true` to schedule or publish anyway. See [Publishing](https://docs.social-api.ai/guides/publishing.md).

**2026-06-14**

Facebook

## Removed Facebook Pages are reported

When a Facebook Page is removed or its access is revoked, SocialAPI sends a `page.removed` webhook event. If the account has no Pages left, its status becomes `reconnect_recommended`. See [Webhook events](https://docs.social-api.ai/guides/webhook-events.md).

**2026-06-14**

LinkedIn

## LinkedIn comment authors include a headline and profile link

Comments on LinkedIn Page posts include `author_headline` and `author_profile_url` when LinkedIn returns them. See [Comments](https://docs.social-api.ai/guides/comments.md).

**2026-06-11**

Accounts

## Connect without a registered redirect URI

`POST /v1/accounts/connect` accepts any valid `https` `redirect_uri`, or `http` on `localhost`, until you register at least one in the dashboard. After that, only registered URIs are accepted, and others return `400 validation.redirect_uri_not_whitelisted`. See [Connect accounts](https://docs.social-api.ai/guides/connect-accounts.md).

**2026-06-09**

TikTok

## Choose the cover photo for TikTok photo posts

Set `platform_data.photo_cover_index` on a TikTok photo post to choose which photo is the cover. The default is the first photo, index `0`. See [TikTok publishing](https://docs.social-api.ai/platforms/tiktok/publishing.md).

**2026-06-08**

Instagram and Facebook

## Message tags on DMs

`message_tag` on a DM request sends a message outside the standard 24-hour window on Instagram and Facebook. Instagram accepts only `HUMAN_AGENT`, which requires Meta's Human Agent access, and Facebook also accepts `ACCOUNT_UPDATE`, `CONFIRMED_EVENT_UPDATE`, `CUSTOMER_FEEDBACK`, and `POST_PURCHASE_UPDATE`. See [Direct messages](https://docs.social-api.ai/guides/direct-messages.md).

**2026-06-08**

Threads and X

## Thread chains on Threads and X

`segments` on `POST /v1/posts` adds up to 25 follow-up posts that publish as a native thread on Threads and X. Each segment takes `text`, plus `media_ids` on Threads (X publishes segment text only). The response lists the published segment IDs in `thread_post_ids`. See [Threads publishing](https://docs.social-api.ai/platforms/threads/publishing.md) and [X publishing](https://docs.social-api.ai/platforms/twitter/publishing.md).

**2026-06-08**

YouTube

## YouTube comments in the inbox list

`GET /v1/inbox/comments` includes YouTube posts only when the request includes `account_id`. The YouTube list returns a single page with no cursor. See [Comments](https://docs.social-api.ai/guides/comments.md).

**2026-06-07**

YouTube

## Moderate and edit YouTube comments

`POST /v1/platforms/youtube/comments/{commentId}/moderate` sets a comment to `published`, `held_for_review`, or `rejected`. Set `ban_author` to `true` to ban the author when the status is `rejected`. `PATCH /v1/platforms/youtube/comments/{commentId}` changes the comment text. Both calls require `account_id` and `post_id`. See [YouTube](https://docs.social-api.ai/platforms/youtube).

**2026-06-07**

Comments

## Filter comments by status, order, and keyword

`GET /v1/inbox/comments/{postId}` accepts `moderation_status` (`published`, `held_for_review`, or `likely_spam`), `order` (`recent` or `relevance`), and `q` to search comment text. Other platforms ignore these parameters. See [Comments](https://docs.social-api.ai/guides/comments.md).

**2026-06-06**

Telegram

## Telegram direct messages

Telegram is available to all accounts. Connect a Telegram bot to read and send direct messages. See [Telegram](https://docs.social-api.ai/platforms/telegram.md).

**2026-06-06**

YouTube

## YouTube channel summary, re-sync, and video edits

`GET /v1/platforms/youtube/accounts/{id}/summary` returns the channel summary. `POST /v1/platforms/youtube/accounts/{id}/sync` re-syncs the channel's videos. `PATCH /v1/platforms/youtube/accounts/{id}/videos/{videoId}` edits a published video. See [YouTube](https://docs.social-api.ai/platforms/youtube).

**2026-06-04**

Accounts

## Page IDs accept platform IDs

Requests that take a page ID accept either the SocialAPI page ID (`sapi_page_...`) or the platform's own page ID. See [IDs](https://docs.social-api.ai/guides/ids.md).

**2026-06-03**

Facebook

## Facebook Page details

Facebook Page responses from `GET /v1/accounts/{id}/pages` include `followers_count`, `category`, `username`, `link`, `about`, `cover_photo_url`, `verification_status`, and `enriched_at`. SocialAPI fills these when a Page is connected and refreshes them over time. See [Connect accounts](https://docs.social-api.ai/guides/connect-accounts.md).

**2026-06-01**

X

## X post settings in platform\_data

X posts accept `platform_data` for `reply_settings`, `community_id`, `geo` and `geo_place_id`, `for_super_followers_only`, and `nullcast`. See [X publishing](https://docs.social-api.ai/platforms/twitter/publishing.md).

**2026-06-01**

Facebook

## Publish Facebook Reels

Set `content_type` to `reel` in the Facebook `platform_data` to publish a Reel. A Reel takes a single video. A Reel fails with `422` when Facebook reports that processing failed, and with `504` when processing does not finish in time. See [Facebook publishing](https://docs.social-api.ai/platforms/facebook/publishing.md).

**2026-05-31**

LinkedIn

## LinkedIn member accounts

Connect a LinkedIn member account to publish text, images, and videos as that member, with multi-image posts limited to images. Comments, reactions, and reading the member's posts are not supported, and the member reconnects every 60 days when LinkedIn access expires. See [LinkedIn publishing](https://docs.social-api.ai/platforms/linkedin/publishing.md).

**2026-05-30**

Errors

## Send your own X-Request-ID

Send an `X-Request-ID` header to name a request. A valid value comes back on the response, and SocialAPI generates one when you send none. Log it with each call so you can match a request to a support ticket. See [Debugging](https://docs.social-api.ai/guides/debugging.md).

**2026-05-26**

Webhooks

## Post lifecycle webhook events

Subscribe to `post.scheduled`, `post.published`, `post.partial`, `post.failed`, `post.updated`, `post.deleted`, `post.unpublished`, and `post.retried` to follow posts you create. Each event carries the post's SocialAPI ID. See [Webhook events](https://docs.social-api.ai/guides/webhook-events.md).

**2026-05-26**

Direct messages

## Direct message status events

`dm.status.sent`, `dm.status.delivered`, `dm.status.read`, and `dm.status.failed` report the delivery state of a message you sent. Which statuses arrive depends on the platform. See [Webhook events](https://docs.social-api.ai/guides/webhook-events.md).

**2026-05-26**

Facebook

## Facebook multi-photo posts

A Facebook post with 2 to 10 images publishes as one multi-photo album. Images and videos cannot be mixed in one album: the request fails with `media_mixed`, and more than 10 images fail with `media_too_many`. See [Facebook publishing](https://docs.social-api.ai/platforms/facebook/publishing.md).

**2026-05-26**

Inbox

## Mention list pagination

`GET /v1/accounts/{id}/mentions` returns `next_cursor` when more mentions exist. Pass it back to get the next page, and stop when the field is absent. See [Mentions](https://docs.social-api.ai/guides/mentions.md).

**2026-05-26**

Inbox

## Author usernames

Authors in interactions and webhook events include a `username` when the platform provides one, next to `name` and `avatar_url`. See [Webhook events](https://docs.social-api.ai/guides/webhook-events.md#interaction-payload).

**2026-05-25**

Threads

## Threads carousel posts

A Threads post with more than one media item publishes as a carousel. See [Threads publishing](https://docs.social-api.ai/platforms/threads/publishing.md).

**2026-05-25**

Threads

## Threads like and reply counts

Threads posts report like and reply counts taken from the platform. A count the platform does not return reads as 0. See [Threads publishing](https://docs.social-api.ai/platforms/threads/publishing.md).

**2026-05-25**

Threads

## Threads reply deletion

A Threads reply can be deleted only when the connected account wrote it, and the reply's capability flags now say so. Replies to your own posts can still be hidden. See [Comments](https://docs.social-api.ai/guides/comments.md).

**2026-05-25**

Webhooks

## account.connected and account.disconnected events

Subscribe to `account.connected` to hear when an account finishes connecting, and to `account.disconnected` when one is disconnected. Each event carries the account's details. See [Webhook events](https://docs.social-api.ai/guides/webhook-events.md).

**2026-05-21**

Facebook

## Facebook connect requests business management access

Connecting a Facebook account asks for the `business_management` permission, which lets SocialAPI list Pages owned through a Meta Business Portfolio. See [Facebook publishing](https://docs.social-api.ai/platforms/facebook/publishing.md).

**2026-05-20**

Publishing

## Post text can live on each target

`text` on `POST /v1/posts` is optional when every entry in `targets` sets its own `text`. Otherwise the top-level `text` is still required. See [Publishing](https://docs.social-api.ai/guides/publishing.md).

**2026-05-18**

Publishing

## Post deletion reports each platform

`DELETE /v1/posts/{pid}` returns `deleted` and a `results` list with one outcome per platform: `deleted`, `not_supported`, or `failed`. A platform that cannot delete a published post keeps its copy live. See [Publishing](https://docs.social-api.ai/guides/publishing.md).

**2026-05-18**

TikTok

## TikTok comment, duet, and stitch are off unless you turn them on

Set `disable_comment`, `disable_duet`, or `disable_stitch` to `false` in `platform_data` to allow an interaction. An omitted flag disables that interaction, and an interaction the creator's TikTok account has turned off stays off whatever you send. See [TikTok publishing](https://docs.social-api.ai/platforms/tiktok/publishing.md).

**2026-05-17**

Errors

## Threads reconnect\_required error

When Threads rejects a write because the connected account lacks a permission, the call returns `403` with `platform.threads.reconnect_required`. Reconnect the Threads account to grant the permission. See [Errors](https://docs.social-api.ai/guides/errors.md).

**2026-05-17**

Instagram

## Instagram DM attachments and shared posts

Instagram direct messages now carry their attachments, including shared posts and shared stories, in direct message events and message lists. See [Direct messages](https://docs.social-api.ai/guides/direct-messages.md#attachments).

**2026-05-17**

TikTok

## Breaking: TikTok privacy level is required

Breaking: `platform_data.privacy_level` must now be set on every TikTok post. SocialAPI no longer picks a default, so a post without it fails with `validation.privacy_level_required`. Send one of the values TikTok lists for the creator. See [TikTok publishing](https://docs.social-api.ai/platforms/tiktok/publishing.md).

**2026-05-13**

YouTube

## YouTube open to every account

YouTube no longer requires beta access, so any account can connect a YouTube channel. See [YouTube publishing](https://docs.social-api.ai/platforms/youtube/publishing.md).

**2026-05-08**

Direct messages

## Direct message events include conversation and recipient

DM events include `conversation_id`, the SocialAPI ID of the conversation, and `recipient`, the person who received the message. See [Webhook events](https://docs.social-api.ai/guides/webhook-events.md).

**2026-05-07**

Facebook

## dm.sent and dm.referral events on Facebook

`dm.sent` and `dm.referral` now fire for Facebook Page conversations too. See [Webhook events](https://docs.social-api.ai/guides/webhook-events.md).

**2026-05-06**

Instagram

## dm.sent and dm.referral events

`dm.sent` fires for messages the connected Instagram account sends. `dm.referral` fires when an Instagram conversation starts from an ad or link click. See [Webhook events](https://docs.social-api.ai/guides/webhook-events.md).

**2026-05-02**

MCP

## Token endpoint accepts HTTP Basic client credentials

`POST /oauth/token` accepts the client ID and secret in an `Authorization: Basic` header, as RFC 6749 allows. A `client_secret` in the body still works. See [OAuth](https://docs.social-api.ai/integrations/oauth.md).

**2026-05-02**

MCP

## Token endpoint errors use OAuth error fields

Errors from `POST /oauth/token` return `error` and `error_description` with the codes OAuth defines, such as `invalid_request`, `unsupported_grant_type`, and `invalid_client`. See [OAuth](https://docs.social-api.ai/integrations/oauth.md).

**2026-05-02**

MCP

## Client registration returns expiry fields

`POST /oauth/register` returns `client_id_issued_at` and `client_secret_expires_at`. A `client_secret_expires_at` of `0` means the secret does not expire. See [OAuth](https://docs.social-api.ai/integrations/oauth.md).

**2026-04-29**

Accounts

## Send users back to your app after connecting

Pass `redirect_uri` and `state` on `POST /v1/accounts/connect` to send the user to your own URL when the connection finishes. The URL receives `status`, `platform`, `account_id` or `account_ids`, and your `state` as query parameters, or `status=error` with an `error` code on failure. The `redirect_uri` must be on your allowed list in the dashboard, or the call returns `400 validation.redirect_uri_not_whitelisted`. See [Redirect parameters](https://docs.social-api.ai/guides/connect-accounts.md#redirect-parameters).

**2026-04-24**

X / Twitter

## Connect X with your own developer app

X connections can use your own X developer app. Save its client ID and secret in the dashboard, for your account or for one brand. If X rejects the saved credentials, the call returns `byok.credentials_invalid`. See [Use your own X app](https://docs.social-api.ai/platforms/twitter/own-app.md).

**2026-04-22**

Instagram and Facebook

## Connect Instagram and Facebook without an access request

Any account can connect Instagram and Facebook now. Neither platform needs an access request first. See [Instagram](https://docs.social-api.ai/platforms/instagram) and [Facebook](https://docs.social-api.ai/platforms/facebook).

**2026-04-13**

MCP

## Webhook tools for AI agents

AI agents can read and test webhooks with `social_api_get_webhook` and `social_api_test_webhook`, and inspect deliveries with `social_api_list_webhook_deliveries`, `social_api_get_webhook_delivery`, and `social_api_retry_webhook_delivery`. See [MCP tools reference](https://docs.social-api.ai/integrations/tools.md#webhooks).

**2026-04-12**

TikTok

## TikTok privacy level is optional

`privacy_level` is optional on TikTok posts. When you leave it out, SocialAPI uses `SELF_ONLY` if TikTok allows it for the account, and otherwise the first option TikTok returns. Validation reports the default as a warning. Before this change, a missing `privacy_level` returned `400 validation.privacy_level_required`. See [Platform data fields](https://docs.social-api.ai/platforms/tiktok/publishing.md#platform-data-fields).

**2026-04-11**

Webhooks

## Webhook delivery history and retries

`GET /v1/webhooks/{id}/deliveries` lists the deliveries of a webhook endpoint, and `GET /v1/webhooks/{id}/deliveries/{did}` returns one. `POST /v1/webhooks/{id}/deliveries/{did}/retry` sends a delivery again, and `POST /v1/webhooks/{id}/test` sends a test event. Delivery history is kept for 3 days on Free, 7 days on Starter, 30 days on Pro, and 90 days on Business and Enterprise. See [Monitor deliveries](https://docs.social-api.ai/guides/webhooks.md#monitor-deliveries) and [Test an endpoint](https://docs.social-api.ai/guides/webhooks.md#test-an-endpoint).

**2026-04-11**

Events

## Event summary counts

`GET /v1/events/summary` returns event totals, failure counts, and breakdowns by category and error category for a time window. Pass `from` and `to` as RFC 3339 timestamps. The `social_api_events_summary` MCP tool returns the same counts. See [Events, usage, and your SocialAPI account](https://docs.social-api.ai/integrations/tools.md#events-usage-and-your-socialapi-account).

**2026-04-11**

Facebook

## Facebook post targets report their Page

A Facebook post target includes `metadata` with the `page_id` and `page_name` of the Page that published it. See [Facebook publishing](https://docs.social-api.ai/platforms/facebook/publishing.md).

**2026-04-10**

Instagram

## Instagram content types and validation

Instagram posts take a `content_type` of `feed`, `reel`, `carousel`, or `stories`, and `POST /v1/posts/validate` checks it along with the media, `alt_text`, `collaborators`, and cover settings for each Instagram target. See [Instagram publishing](https://docs.social-api.ai/platforms/instagram/publishing.md).

**2026-04-08**

Facebook

## Pages on Facebook accounts

A Facebook account can manage more than one Page: `GET /v1/accounts/{id}/pages` lists them, and `PATCH /v1/accounts/{id}/pages/{pageId}` sets `is_default` or `is_active`. Pass `page_id` to choose the Page on post targets, on `GET /v1/posts`, and on the inbox endpoints. The MCP tools are `social_api_list_account_pages` and `social_api_update_account_page`. See [Facebook Pages](https://docs.social-api.ai/guides/connect-accounts.md#facebook-pages).

**2026-04-07**

Errors

## Breaking: error responses have an error object

Error responses now put the details in an `error` object: `{"error": {"code": "...", "message": "...", "meta": {}}}`. Before, `error` was a string and `code` sat at the top level. Read `error.code` for the machine-readable code and `error.message` for the text; `meta` appears only when there are extra details, such as the name of the field that failed. See [Handling errors](https://docs.social-api.ai/guides/errors.md#handling-errors).

**2026-04-07**

Publishing

## Breaking: a post where every target fails returns 422

`POST /v1/posts` returns `422` when every target fails, instead of `502`. Partial failures still return `207`. If your code treats `502` as a failed publish, check for `422` instead. See [Publishing errors](https://docs.social-api.ai/guides/publishing.md#errors).

**2026-04-06**

TikTok

## Creator info for TikTok accounts

`GET /v1/accounts/{id}/creator-info` returns the privacy levels, interaction settings, and posting availability for a TikTok account. Read it before you publish. Other platforms return `501`. See [Creator info and validation](https://docs.social-api.ai/platforms/tiktok/publishing.md#creator-info-and-validation).

**2026-04-06**

Publishing

## Validation checks TikTok targets

`POST /v1/posts/validate` checks each TikTok target against TikTok's own rules for the account. Errors set `valid` to `false`, and warnings are returned without blocking the post. See [Validate before you publish](https://docs.social-api.ai/guides/publishing.md#validate-before-you-publish).

**2026-04-06**

TikTok

## Choose the TikTok video cover frame

TikTok video posts accept `video_cover_timestamp_ms` in `platform_data` to pick the frame used as the cover. See [Platform data fields](https://docs.social-api.ai/platforms/tiktok/publishing.md#platform-data-fields).

**2026-04-06**

YouTube

## YouTube (beta)

Connect a YouTube channel to publish, update, and delete videos, and to read, reply to, moderate, hide, and delete comments. Request access from the dashboard. See [YouTube](https://docs.social-api.ai/platforms/youtube).

**2026-04-05**

YouTube

## More YouTube publishing options

YouTube posts now apply these `platform_data` fields: `made_for_kids`, `license`, `embeddable`, `public_stats_viewable`, `publish_at`, `notify_subscribers`, `recording_date`, `default_language`, `playlist_id`, and `contains_synthetic_media`. The first comment is posted after upload, and `playlist_id` adds the video to that playlist. See [Platform data fields](https://docs.social-api.ai/platforms/youtube/publishing.md#platform-data-fields).

**2026-04-05**

LinkedIn

## LinkedIn comment replies, likes, and deletes

Replies, likes, and deletes work on LinkedIn comments, through the same endpoints as the other platforms. See [Comments](https://docs.social-api.ai/guides/comments.md#list-comments-and-replies) and [LinkedIn](https://docs.social-api.ai/platforms/linkedin).

**2026-04-04**

Comments

## Replies to a comment

`GET /v1/inbox/comments/{postId}/{commentId}/replies` returns the replies to a comment, with cursor pagination. The response has the same shape as the top-level comment list. See [List comments and replies](https://docs.social-api.ai/guides/comments.md#list-comments-and-replies).

**2026-04-02**

Analytics

## MCP tools for exports

AI agents can create, list, and read analytics exports with `social_api_create_export`, `social_api_list_exports`, `social_api_get_export`, and `social_api_get_export_videos`. See [MCP tools reference](https://docs.social-api.ai/integrations/tools.md#analytics-and-exports).

**2026-04-01**

Analytics

## Videos of an export

`GET /v1/exports/{id}/videos` returns the videos of a completed export. See [Exports](https://docs.social-api.ai/guides/analytics.md#exports).

**2026-03-28**

Analytics

## Analytics exports

`POST /v1/accounts/{id}/export` starts an Excel export of an account's analytics. Fetch an export with `GET /v1/exports/{id}` or list them with `GET /v1/exports`. The number of exports per billing period depends on your plan. See [Analytics](https://docs.social-api.ai/guides/analytics.md).

**2026-03-27**

Webhooks

## Event history

`GET /v1/events` returns events for your account, such as account connections and disconnections. How far back you can query depends on your plan.

**2026-03-27**

Publishing

## Post logs replaced by events

Breaking: `GET /v1/posts/logs` and `GET /v1/posts/{pid}/logs` are removed. Read event history from `GET /v1/events` instead.

**2026-03-27**

Accounts

## Invite links

`POST /v1/invites` creates a single-use link that lets someone connect an account to a brand. List a brand's links with `GET /v1/invites` and revoke one with `DELETE /v1/invites/{id}`. The same actions are available as MCP tools. See [Connect accounts](https://docs.social-api.ai/guides/connect-accounts.md).

**2026-03-27**

Accounts

## Platform access requests

Some platforms need access approval before an account can connect to them. A connect call for a platform you have no access to returns `403` with the error code `platform_not_available`. Request access from the dashboard; TikTok is open to every account. See [Platforms](https://docs.social-api.ai/platforms/overview.md).

**2026-03-27**

Authentication

## Authorization header without Bearer

The `Authorization` header accepts a raw API key as well as `Bearer <key>`. See [Authentication](https://docs.social-api.ai/guides/authentication.md).

**2026-03-27**

Instagram

## Comment replies include parent\_id

Instagram comment replies include `parent_id`, the ID of the comment they answer. See [Comments](https://docs.social-api.ai/guides/comments.md).

**2026-03-26**

Accounts

## Brands

A brand groups connected accounts. Manage brands with `GET /v1/brands`, `POST /v1/brands`, `PATCH /v1/brands/{id}`, and `DELETE /v1/brands/{id}`. Pass `brand_id` when you connect an account. See [Concepts](https://docs.social-api.ai/guides/concepts.md).

**2026-03-26**

Billing

## Usage reports brands

Breaking: `GET /v1/usage` returns `brands_used` and `brands_limit` in place of `accounts_used` and `accounts_limit`. Update clients that read the old names. See [Plans](https://docs.social-api.ai/guides/plans.md).

**2026-03-22**

Inbox

## Per-account inbox routes removed

Breaking: these routes are removed: `GET /v1/accounts/{id}/dms`, `GET /v1/accounts/{id}/reviews`, `GET /v1/accounts/{id}/posts/{pid}/comments`, `POST /v1/accounts/{id}/dms/{tid}/send`, `POST /v1/accounts/{id}/interactions/{iid}/reply`, and the moderation and reply-thread routes beside them. Use the `/v1/inbox` routes instead. `GET /v1/accounts/{id}/mentions` still works. See [Inbox](https://docs.social-api.ai/guides/inbox.md).

**2026-03-22**

Inbox

## Unified inbox

`GET /v1/inbox/conversations` lists direct message threads, and `GET /v1/inbox/comments` lists posts that have comments. Reply, hide, delete, like, and send private replies to comments from the same routes. Reviews are at `/v1/inbox/reviews`. See [Inbox](https://docs.social-api.ai/guides/inbox.md) and [Direct messages](https://docs.social-api.ai/guides/direct-messages.md).

**2026-03-22**

Publishing

## Post targets, validation, and import

`POST /v1/posts` takes a `targets` list with one entry per account. Each entry can set its own `text`, `title`, `media_ids`, `first_comment`, `visibility`, `scheduled_at`, and `platform_data`. Check a draft with `POST /v1/posts/validate`, read platform limits with `GET /v1/posts/validate`, import many posts with `POST /v1/posts/import`, and unpublish a post with `POST /v1/posts/{pid}/unpublish`. See [Publishing](https://docs.social-api.ai/guides/publishing.md).

**2026-03-22**

Publishing

## Platform options replaced by targets

Breaking: `platform_options` is removed from post requests. Send `title`, `visibility`, `first_comment`, and `platform_data` on each entry in `targets` instead. See [Publishing](https://docs.social-api.ai/guides/publishing.md).

**2026-03-22**

Facebook

## Facebook Pages inbox (beta)

Comments and direct messages on Facebook Pages appear in the inbox, and you can reply to them from the same routes. Facebook is available to beta testers. See [Facebook](https://docs.social-api.ai/platforms/facebook).

**2026-03-20**

Publishing

## Media library

`GET /v1/media` lists your media, up to 100 items per page. `DELETE /v1/media/{id}` removes an item, and `GET /v1/media/storage` shows your storage use. Upload with `POST /v1/media/upload`. See [Media](https://docs.social-api.ai/guides/media.md).

**2026-03-20**

Billing

## Unlimited posts and interactions on paid plans

Paid plans no longer cap posts or interactions per billing period. The Free plan keeps its limits. See [Plans](https://docs.social-api.ai/guides/plans.md).

**2026-03-19**

Publishing

## Publish right away

`POST /v1/posts` without `scheduled_at` publishes right away and returns the post: `201` when it is published, `207` when some accounts fail, and `502` when it fails. Publishing that runs longer than 90 seconds reports a timeout error. See [Publishing](https://docs.social-api.ai/guides/publishing.md).

**2026-03-19**

Publishing

## Reschedule and filter scheduled posts

`PATCH /v1/posts/{pid}` changes the scheduled time and accounts of a scheduled post. `GET /v1/posts` supports filters and pagination. See [Scheduling](https://docs.social-api.ai/guides/scheduling.md).

**2026-03-15**

Accounts

## Disconnect an account

`DELETE /v1/accounts/{id}` disconnects an account. See [Connect accounts](https://docs.social-api.ai/guides/connect-accounts.md).

**2026-03-14**

Publishing

## Retry a failed post

`POST /v1/accounts/{id}/posts/{pid}/retry` publishes a post again after its publish failed. See [Publishing](https://docs.social-api.ai/guides/publishing.md).

**2026-03-14**

TikTok

## TikTok (beta)

Connect TikTok accounts and publish videos and photo carousels. TikTok is available to beta testers. See [TikTok](https://docs.social-api.ai/platforms/tiktok).

**2026-03-14**

LinkedIn

## LinkedIn (beta)

Connect LinkedIn accounts, read and moderate comments, and publish text and media posts. LinkedIn is available to beta testers. See [LinkedIn](https://docs.social-api.ai/platforms/linkedin).

**2026-03-14**

Threads

## Threads (beta)

Connect Threads accounts, read mentions and replies, and publish posts. Threads is available to beta testers. See [Threads](https://docs.social-api.ai/platforms/threads).

**2026-03-14**

Google

## Google Business Profile (beta)

Connect Google Business Profile locations. Google is available to beta testers. See [Google](https://docs.social-api.ai/platforms/google).

**2026-03-11**

Billing

## Usage reports limits instead of credits

Breaking: `GET /v1/usage` no longer returns `credits_used` and `credits_limit`. It returns usage and limits for accounts, posts, and interactions in the current billing period. See [Plans](https://docs.social-api.ai/guides/plans.md).

**2026-03-11**

Facebook

## Facebook Pages publishing

Create, update, and delete posts on Facebook Pages with `POST /v1/accounts/{id}/posts`, `PATCH /v1/accounts/{id}/posts/{pid}`, and `DELETE /v1/accounts/{id}/posts/{pid}`. See [Facebook publishing](https://docs.social-api.ai/platforms/facebook/publishing.md).

**2026-03-11**

MCP

## Publishing from MCP

MCP clients can create, update, delete, and retry posts, and upload media. See [MCP tools](https://docs.social-api.ai/integrations/tools.md).

**2026-03-10**

Instagram

## Instagram publishing

Publish to Instagram accounts with `POST /v1/accounts/{id}/posts`, and delete a published post with `DELETE /v1/accounts/{id}/posts/{pid}`. Media for a post starts with `GET /v1/media/upload-url`. See [Instagram publishing](https://docs.social-api.ai/platforms/instagram/publishing.md).

**2026-03-07**

Facebook

## Facebook Pages

Facebook Pages are available to connect. See [Facebook](https://docs.social-api.ai/platforms/facebook).

**2026-03-07**

MCP

## Hosted MCP server

The API hosts an MCP server at `/mcp`. MCP clients register and sign in with OAuth 2.1, and a consent page confirms access. See [OAuth](https://docs.social-api.ai/integrations/oauth.md).

**2026-03-07**

Billing

## Annual billing

Paid plans can be billed yearly at a 20% discount. See [Plans](https://docs.social-api.ai/guides/plans.md).

**2026-03-06**

Comments

## Comments are scoped to a post

Breaking: `GET /v1/accounts/{id}/comments` is replaced by `GET /v1/accounts/{id}/posts/{pid}/comments`. Use `GET /v1/accounts/{id}/posts` to find post IDs. See [Comments](https://docs.social-api.ai/guides/comments.md).

**2026-03-01**

Initial release

## Initial release

SocialAPI is open to public signups, with:

* Instagram: connect accounts with `POST /v1/accounts/connect`, read comments, direct messages, and mentions, reply to comments, send direct messages, and moderate comments.
* API keys: create, list, and revoke keys with `/v1/keys`.
* Webhooks: create, list, update, and delete endpoints with `/v1/webhooks`.
* Usage: `GET /v1/usage`, and account deletion with `DELETE /v1/users/me`.
* Plans: paid plans with checkout and a billing portal in the dashboard.

See [Quickstart](https://docs.social-api.ai/quickstart.md).


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.