Social Publishing

Social Publishing

  • Social Publishing 可以将你在 MuAPI 上生成的媒体直接发布到社交账户。通过 OAuth 连接一次账户后,使用媒体 URL 和已连接账户的 ID 调用发布端点即可。

可用平台: YouTubeInstagramTikTok 已上线并完全支持。

How it works(工作原理)

发布分为三个步骤:

  1. 连接账户(一次性操作)——在 Integrations 页面授权 MuAPI 代表你发布内容。
  2. 查找账户 ID——列出已连接账户,获取数字形式的 account_id。
  3. 发布——使用 account_id 和公开可访问的 media_url 提交异步发布任务。

和其他 MuAPI 任务一样,发布采用“提交后轮询”模式:发布调用会返回 request_id,然后轮询(或接收 webhook)获取最终结果。

1. Connect an account(连接账户)

前往 Dashboard → Integrations,在目标平台旁点击 Connect。在跳转到平台 OAuth 授权页面前,可以为连接添加可选标签(例如 “品牌频道”)。授权完成后,你会返回 MuAPI,账户会出现在已连接列表中。

  • 每个平台支持多个账户——可以按需连接多个 YouTube/TikTok/Instagram 账户,每个账户都有自己的 account_id。
  • 可以在同一页面重命名断开连接

2. Find your account id(查找账户 ID)

列出已连接账户,获取要发布到的 account_id:

curl --location 'https://muapi.ai/api/social/accounts' \
--header 'x-api-key: YOUR_API_KEY'

响应:

[
  {
    "id": 42,
    "platform": 1,
    "platform_name": "youtube",
    "account_name": "Brand channel",
    "platform_user_id": "...",
    "connected": true,
    "connected_at": "2026-05-29T05:50:00Z"
  }
]

在发布请求中使用 id 字段(此处为 42)作为 account_id。platform 值为 1=YouTube、2=TikTok、3=Instagram。connected: false 表示账户已断开(见下文),重新连接后才能再次发布。

3. Publish a video (YouTube)(发布视频到 YouTube)

curl --location --request POST 'https://api.muapi.ai/api/v1/youtube-publish' \
--header 'x-api-key: YOUR_API_KEY' \
--header 'Content-Type: application/json' \
--data-raw '{
  "account_id": 42,
  "media_url": "https://cdn.muapi.ai/your-video.mp4",
  "title": "My generated video",
  "description": "Made with MuAPI",
  "tags": ["ai", "muapi"],
  "privacy": "public"
}'

响应:

{
  "request_id": "abc123xyz",
  "status": "processing"
}

YouTube parameters(YouTube 参数)

参数类型必填说明
account_idinteger已连接的 YouTube 账户 ID(来自 GET /api/social/accounts)。
media_urlstring(URL)要上传的视频公开 URL。
titlestring视频标题(最多 100 个字符)。
descriptionstring视频描述。默认为空字符串。
tagsstring[]关键词标签。
privacyenumpublic、private 或 unlisted。默认为 public。
category_idenumYouTube 类别 ID(字符串)。省略时默认为 "22"(People & Blogs)。参见下方类别表。
made_for_kidsbooleanCOPPA 面向儿童标记。默认为 false。

YouTube 类别 ID——将 id 作为字符串传入 category_id:

类别id
Film & Animation"1"
Autos & Vehicles"2"
Music"10"
Pets & Animals"15"
Sports"17"
Travel & Events"19"
Gaming"20"
People & Blogs(默认)"22"
Comedy"23"
Entertainment"24"
News & Politics"25"
Howto & Style"26"
Education"27"
Science & Technology"28"
Nonprofits & Activism"29"

4. Get the result(获取结果)

轮询结果(或传入 webhook 查询参数,在完成后接收通知;参见 Webhooks):

curl --location 'https://api.muapi.ai/api/v1/predictions/abc123xyz/result' \
--header 'x-api-key: YOUR_API_KEY'

完成后的响应:

{
  "id": "abc123xyz",
  "status": "completed",
  "output": {
    "platform": "youtube",
    "url": "https://youtube.com/watch?v=..."
  }
}

5. Publish to Instagram(发布到 Instagram)

Instagram 发布面向已连接的 Instagram Business 账户。视频会作为 Reels 发布,图片会发布到信息流。

curl --location --request POST 'https://api.muapi.ai/api/v1/instagram-publish' \
--header 'x-api-key: YOUR_API_KEY' \
--header 'Content-Type: application/json' \
--data-raw '{
  "account_id": 57,
  "media_url": "https://cdn.muapi.ai/your-video.mp4",
  "caption": "Made with MuAPI #ai",
  "media_type": "VIDEO"
}'

Instagram — POST /api/v1/instagram-publish

参数类型必填说明
account_idinteger已连接的 Instagram Business 账户 ID。
media_urlstring(URL)视频或图片的公开 URL。
captionstring帖子说明,支持 hashtags。
media_typeenumVIDEO 或 IMAGE。默认为 VIDEO。
cover_urlstring(URL)用作 Reel 网格缩略图的 JPEG/PNG 图片 URL。会作为 cover_url 传给 Meta;同时提供时优先于 thumb_offset。
thumb_offsetinteger从视频中提取封面帧的位置,单位为毫秒(例如 8000 表示第 8 秒)。设置 cover_url 时会忽略。
placementenumreels、stories 或 timeline。默认为 reels。
share_to_feedboolean除 Reels 标签页外是否同时显示在主信息流中。默认为 true。

输出:{ "platform": "instagram", "media_id": "..." }

视频必须符合 Instagram Reels 的要求(MP4/MOV、受支持的宽高比和时长)。发布任务会创建媒体容器,等待 Instagram 完成处理后再发布,因此可能比 YouTube 上传耗时更长。

6. Publish to TikTok(发布到 TikTok)

TikTok 发布会将生成的视频直接发布到已连接 TikTok 账户的信息流。

curl --location --request POST 'https://api.muapi.ai/api/v1/tiktok-publish' \
--header 'x-api-key: YOUR_API_KEY' \
--header 'Content-Type: application/json' \
--data-raw '{
  "account_id": 88,
  "media_url": "https://cdn.muapi.ai/your-video.mp4",
  "title": "My generated video #ai"
}'

TikTok — POST /api/v1/tiktok-publish

参数类型必填说明
account_idinteger已连接的 TikTok 账户 ID。
media_urlstring(URL)视频的公开 URL。
titlestring帖子标题/说明(最多 150 个字符,支持 hashtags)。
privacy_levelenumPUBLIC_TO_EVERYONE、MUTUAL_FOLLOW_FRIENDS、FOLLOWER_OF_CREATOR、SELF_ONLY。默认为 PUBLIC_TO_EVERYONE。
disable_commentboolean禁用视频评论。默认为 false。
disable_duetboolean禁用合拍。默认为 false。
disable_stitchboolean禁用 Stitch。默认为 false。

输出:{ "platform": "tiktok", "publish_id": "..." }

Publishing to your users' accounts(发布到用户账户)

如果你正在 MuAPI 之上构建应用,可以连接最终用户的 YouTube、TikTok、Instagram 或 Facebook 账户并代为发布,而无需用户拥有 MuAPI 账户。MuAPI 负责 OAuth 和 token 存储,你只需通过自己的 API Key 驱动整个流程。

How it works(工作原理)

  1. 为用户获取其想要连接的平台的 connect URL
  2. 将用户重定向到该 URL——用户会看到平台授权页面并批准访问。
  3. 列出其已连接账户,获取 account_id。
  4. 使用标准 POST /api/v1/{youtube,tiktok,instagram,facebook}-publish 端点和该 account_id 发布。

Step 1 — Get a connect URL(获取连接 URL)

# YouTube
curl -X POST 'https://api.muapi.ai/api/v1/social/youtube/connect-url' \
  --header 'x-api-key: YOUR_API_KEY' \
  --header 'Content-Type: application/json' \
  --data-raw '{
    "external_user_id": "user_123",
    "redirect_to": "https://yourapp.com/connected"
  }'

# TikTok
curl -X POST 'https://api.muapi.ai/api/v1/social/tiktok/connect-url' \
  --header 'x-api-key: YOUR_API_KEY' \
  --header 'Content-Type: application/json' \
  --data-raw '{
    "external_user_id": "user_123",
    "redirect_to": "https://yourapp.com/connected"
  }'

# Instagram
curl -X POST 'https://api.muapi.ai/api/v1/social/instagram/connect-url' \
  --header 'x-api-key: YOUR_API_KEY' \
  --header 'Content-Type: application/json' \
  --data-raw '{
    "external_user_id": "user_123",
    "redirect_to": "https://yourapp.com/connected"
  }'

# Facebook
curl -X POST 'https://api.muapi.ai/api/v1/social/facebook/connect-url' \
  --header 'x-api-key: YOUR_API_KEY' \
  --header 'Content-Type: application/json' \
  --data-raw '{
    "external_user_id": "user_123",
    "redirect_to": "https://yourapp.com/connected"
  }'

四个平台返回相同结构:

{
  "url": "https://accounts.google.com/o/oauth2/auth?..."
}
参数类型必填说明
external_user_idstring你为最终用户设置的标识符(任意字符串,例如用户 ID、邮箱等),之后用于查找其账户。
redirect_tostring(URL)用户完成授权页面后要跳转到的位置。

Step 2 — Redirect your user(重定向用户)

将用户发送到第 1 步返回的 url。用户会看到平台的 OAuth 授权页面;批准后会被重定向到 redirect_to。

Instagram 连接的目标是 Instagram Business 账户,与上面的自助 Instagram 连接相同。

Step 3 — List their connected accounts(列出用户的已连接账户)

所有平台使用同一个端点——它会返回 external_user_id 下连接的所有 YouTube/TikTok/Instagram/Facebook 账户:

curl 'https://api.muapi.ai/api/v1/social/ext/accounts?external_user_id=user_123' \
  --header 'x-api-key: YOUR_API_KEY'

响应:

[
  {
    "id": 88,
    "platform_name": "youtube",
    "account_name": "user_123",
    "platform_user_id": "UCxxxxxx",
    "external_user_id": "user_123",
    "connected": true,
    "connected_at": "2026-06-02T10:00:00Z"
  },
  {
    "id": 91,
    "platform_name": "tiktok",
    "account_name": "user_123_tiktok",
    "platform_user_id": "spc_xxxxxx",
    "external_user_id": "user_123",
    "connected": true,
    "connected_at": "2026-07-25T10:00:00Z"
  }
]

在发布调用中使用 id 字段作为 account_id。connected: false 表示账户已断开,重新连接后才能发布。

Step 4 — Publish(发布)

与发布到自己的账户相同——将第 3 步得到的 account_id 传给对应平台的发布端点:

curl -X POST 'https://api.muapi.ai/api/v1/tiktok-publish' \
  --header 'x-api-key: YOUR_API_KEY' \
  --header 'Content-Type: application/json' \
  --data-raw '{
    "account_id": 91,
    "media_url": "https://cdn.muapi.ai/your-video.mp4",
    "title": "My generated video #ai"
  }'

Rename an account(重命名账户)

curl -X PATCH 'https://api.muapi.ai/api/v1/social/ext/accounts/88' \
  --header 'x-api-key: YOUR_API_KEY' \
  --header 'Content-Type: application/json' \
  --data-raw '{"account_name": "New label"}'

Disconnect an account(断开账户)

根据你是要永久删除账户还是暂时停用,有两种方式:

永久断开——完全移除账户。对于 TikTok/Instagram/Facebook,这也会撤销平台侧的访问权限,使同一账户之后可以由你或其他最终用户重新连接:

curl -X DELETE 'https://api.muapi.ai/api/v1/social/ext/accounts/88' \
  --header 'x-api-key: YOUR_API_KEY'

可恢复断开——撤销访问权限,但保留账户的 ID、名称和 external_user_id。此时对它的发布调用会以 409 失败,直到你再次通过 connect-url 让同一用户完成连接并重新激活:

curl -X POST 'https://api.muapi.ai/api/v1/social/ext/accounts/88/disconnect' \
  --header 'x-api-key: YOUR_API_KEY'

只有通过你的 API Key 连接的账户才能由你重命名或断开。尝试操作其他开发者的用户账户会返回 404。


Pricing(价格)

每次成功发布的费用为 $0.01。详情参见价格Credits

Social Publishing — Muapi Docs