Social Publishing
Social Publishing
- Social Publishing 可以将你在 MuAPI 上生成的媒体直接发布到社交账户。通过 OAuth 连接一次账户后,使用媒体 URL 和已连接账户的 ID 调用发布端点即可。
可用平台: YouTube、Instagram 和 TikTok 已上线并完全支持。
How it works(工作原理)
发布分为三个步骤:
- 连接账户(一次性操作)——在 Integrations 页面授权 MuAPI 代表你发布内容。
- 查找账户 ID——列出已连接账户,获取数字形式的 account_id。
- 发布——使用 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_id | integer | ✅ | 已连接的 YouTube 账户 ID(来自 GET /api/social/accounts)。 |
| media_url | string(URL) | ✅ | 要上传的视频公开 URL。 |
| title | string | ✅ | 视频标题(最多 100 个字符)。 |
| description | string | 视频描述。默认为空字符串。 | |
| tags | string[] | 关键词标签。 | |
| privacy | enum | public、private 或 unlisted。默认为 public。 | |
| category_id | enum | YouTube 类别 ID(字符串)。省略时默认为 "22"(People & Blogs)。参见下方类别表。 | |
| made_for_kids | boolean | COPPA 面向儿童标记。默认为 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_id | integer | ✅ | 已连接的 Instagram Business 账户 ID。 |
| media_url | string(URL) | ✅ | 视频或图片的公开 URL。 |
| caption | string | 帖子说明,支持 hashtags。 | |
| media_type | enum | VIDEO 或 IMAGE。默认为 VIDEO。 | |
| cover_url | string(URL) | 用作 Reel 网格缩略图的 JPEG/PNG 图片 URL。会作为 cover_url 传给 Meta;同时提供时优先于 thumb_offset。 | |
| thumb_offset | integer | 从视频中提取封面帧的位置,单位为毫秒(例如 8000 表示第 8 秒)。设置 cover_url 时会忽略。 | |
| placement | enum | reels、stories 或 timeline。默认为 reels。 | |
| share_to_feed | boolean | 除 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_id | integer | ✅ | 已连接的 TikTok 账户 ID。 |
| media_url | string(URL) | ✅ | 视频的公开 URL。 |
| title | string | 帖子标题/说明(最多 150 个字符,支持 hashtags)。 | |
| privacy_level | enum | PUBLIC_TO_EVERYONE、MUTUAL_FOLLOW_FRIENDS、FOLLOWER_OF_CREATOR、SELF_ONLY。默认为 PUBLIC_TO_EVERYONE。 | |
| disable_comment | boolean | 禁用视频评论。默认为 false。 | |
| disable_duet | boolean | 禁用合拍。默认为 false。 | |
| disable_stitch | boolean | 禁用 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(工作原理)
- 为用户获取其想要连接的平台的 connect URL。
- 将用户重定向到该 URL——用户会看到平台授权页面并批准访问。
- 列出其已连接账户,获取 account_id。
- 使用标准 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_id | string | ✅ | 你为最终用户设置的标识符(任意字符串,例如用户 ID、邮箱等),之后用于查找其账户。 |
| redirect_to | string(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。