跳转到主要内容
POST
https://api.aisa.one/apis/v1
/
twitter
/
post_twitter
curl --request POST \
  --url https://api.aisa.one/apis/v1/twitter/post_twitter \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "text": "Hello, World!"
}
'
{
  "data": {
    "id": "1346889436626259968",
    "text": "Hello, World!"
  }
}
代表已认证的源用户发布推文。该端点代理官方 X v2 POST /2/tweets 端点,并通过位于 https://api.aisa.one/apis/v1/twitter/post_twitter 的 AIsa 网关进行路由。 一个端点涵盖所有变体:

纯文本

{ "text": "Hello, World!" }

回复

设置 reply.in_reply_to_tweet_id

引用推文

设置 quote_tweet_id

附带投票

设置 poll.options + poll.duration_minutes

附带媒体

设置 media.media_ids(1–4 个 ID)。

编辑推文

设置 edit_options.previous_post_id(须在 X 的编辑时限内)。

前置条件

  • 一个 AIsa API 密钥(每个请求均使用 Bearer token)。
  • 对源用户账户进行一次性 OAuth 授权。通过调用 POST /apis/v1/twitter/auth_twitter 关联你的 X 账户——AIsa 会将会话与 API 密钥关联存储,并在每次写入调用时自动使用该会话。
  • X 会话必须拥有 tweet.readtweet.writeusers.read

互斥字段

单个请求中最多只能出现以下字段中的一个
  • media
  • poll
  • quote_tweet_id
  • card_uri
如果设置了多个字段,X 将拒绝请求(400 invalid-request)。

响应

成功时,端点返回 201 Created
{
  "data": {
    "id": "1346889436626259968",
    "text": "Hello, World!"
  }
}
返回的 text 反映 X 实际存储的内容(例如缩短后的 URL)。可使用 data.id 在后续调用中引用该推文(回复、引用、点赞、编辑、删除)。

编辑推文

传入 edit_options.previous_post_id 可编辑现有推文,而不是创建新推文。编辑受 X 的编辑时限和编辑次数限制;如果已超过时限或编辑配额已用尽,端点将返回 409 conflict

回复设置

使用 reply_settings 限制可回复的用户:
可回复的用户
following你关注的人
mentionedUsers推文中明确提及的用户
subscribers你的 X Premium 订阅者
verified已认证账户
省略该字段则使用默认设置(所有人)。

常见 4xx 原因

  • 400 invalid-request——设置了两个互斥字段、文本过长、投票持续时间无效等。
  • 403 client-forbidden——OAuth 会话缺少 tweet.write scope。请通过 auth_twitter 重新关联。
  • 404 resource-not-found——引用的 in_reply_to_tweet_idquote_tweet_idprevious_post_id 不存在,或对源用户不可见。
  • 409 conflict——内容重复,或在允许的时限之外进行编辑。
完整列表请参阅错误代码,各层级上限请参阅速率限制

相关内容

关联 X 账户

启动此端点所需的 OAuth 流程。

关注用户

使用同一 OAuth 会话的另一个写入端点。

Twitter 自动驾驶技能

封装完整 Twitter 功能面的 Agent 技能。

授权

Authorization
string
header
必填

你的 AIsa API 密钥。经过身份验证的源用户(执行关注操作的账户)由附加到你的密钥的 OAuth 会话决定。

请求体

application/json
text
string

推文内容。发布媒体、投票或引用推文时可选;其他情况下必填。

示例:

"Hello from AIsa — shipping agent-friendly Twitter APIs."

reply
object

作为对另一条推文的回复发布。

quote_tweet_id
string

要引用的 Tweet ID。不能与 mediapollcard_uri 同时使用。

Pattern: ^[0-9]{1,19}$
media
object

附加媒体。不能与 pollquote_tweet_idcard_uri 同时使用。

poll
object

附加投票。不能与 mediaquote_tweet_idcard_uri 同时使用。

card_uri
string

卡片 URI。不能与 mediapollquote_tweet_iddirect_message_deep_link 同时使用。

将对话跳转至私信的深层链接。

geo
object

为推文附加地点。

reply_settings
enum<string>

允许回复的用户。

可用选项:
following,
mentionedUsers,
subscribers,
verified
for_super_followers_only
boolean
默认值:false

仅超级关注者可见。

nullcast
boolean
默认值:false

Nullcast(仅推广)推文——不会显示在公开时间线中,也不会向关注者显示。

paid_partnership
boolean

将推文标记为付费合作内容。

made_with_ai
boolean

标记该推文包含 AI 生成的媒体。

community_id
string

发布到指定社区。

Pattern: ^[0-9]{1,19}$
share_with_followers
boolean
默认值:false

同时向你的关注者分享该社区帖子。

edit_options
object

编辑现有推文,而不是创建新推文(受 X 的编辑时间窗口限制)。

响应

Tweet 已成功创建(或编辑)。

data
object