Connect the account again
- Start
GET /apis/v1/social/connect/twitterwith your AIsa bearer key and an ownedprofileId. This starts a connection session; it is not a passive read. - Open the returned private
authUrlin the user’s browser. Use an allowlistedredirectUrlif needed; do not log or publish the authorization URL or session secret. - Poll
GET /apis/v1/social/connect/sessions/{sessionId}until completion. Use the returned ownedacc_…account ID for subsequent actions. Check the platform identity before reconnecting an existing binding. A different X subject needs an explicit account replacement flow.
aisa_api_key body field or legacy OAuth tokens into Social requests.
Replace the old calls
All replacement paths below begin with/apis/v1/social.
This migration guide describes the reviewed replacement routes. Use them after the corresponding Social service release and catalog activation. A route in this guide is not evidence that an immutable formal OpenAPI publication or ToolRouter index already contains it. If current discovery omits an action, do not fall back to the retired endpoint.
Publishing and compatibility limits
The supported paid X publishing scope is one account, one native post, with plain text, text containing a URL, up to four images, or one video. Per-targetcustomMedia replaces the post-level media. An image/video object’s URL does not count as a URL in the tweet text for pricing.
Use platformSpecificData.quoteTweetId or replyToTweetId for quote/reply targets. Quote and reply are mutually exclusive; quotes cannot include media or polls. Legacy card_uri, multi-item threads, multiple X targets, and arbitrary historical native-ID deletion are not equivalent replacements.
Unpublish requires an owned, managed pst_… post with a published X target; it cannot delete an arbitrary old tweet merely by its native ID. Like/unlike can use a numeric native post ID or a managed post ID accepted by the current operation. An old upload ID is not a new Social mediaId.
Use an Idempotency-Key for post creation. HTTP 202 means accepted/pending, not published. Follow the managed post with GET or verified events. A timeout or unknown result is not permission to resubmit. The publish charge remains pending until matched native-published confirmation; do not treat an accepted response as completed publication.