产品开发者
为你的产品加入发布功能。
一款虚构日记应用添加由用户确认的操作,以排程社交帖子并显示结果。
你的产品 + SOSOAPI
整合流程示意- 你的产品准备与确认
- SosoAPI排程一篇已确认帖子
- 社交账号跟进结果
三个步骤
准备内容
在你的产品中收集文案和图片。
让用户确认
排程前显示账号、内容与时间。
带回结果
显示进度与最终发布结果。
让社交发布成为你产品的一部分。
查看完整演练
场景
为虚构的日记产品添加一个有意识、可审核的“排程此更新”操作。让用户的工作区和确切已连接账号保持可见,并展示返回状态,不暗示平台已发布。

开始前
- 创建并验证 SosoAPI 账号,再选择预期的 工作区。
- 在「应用设置 → agent 与 API 访问权限」创建 API key。于服务器环境中存储为 SOSOAPI_API_KEY;这些 JavaScript 示例使用 Node.js 20+,不需要 SosoAPI 源代码仓库。
- 仅从当前已授权范围中选择真实的 工作区 UUID 与 Threads 社交账号 UUID。账号必须符合 Threads 文字帖子资格。
- API key 所有者需要所选工作区的 editor 或 owner 权限。将 key 保留在服务器上,不要放在浏览器代码、请求 JSON 和日志中。
输入示例
- 虚构产品
- Harborlight Journal · 私人日记应用构想;不代表有实际整合。
- 用户意图
- 为所选 Threads 账号,在未来本地时间排程一篇已审核的产品短讯。
- 文案示例
- “留给稍后的简短记录:Harborlight Journal 正为更简短的每日感想留出空间。留下一点思绪,其余留待明天。”
- 必需运行时范围
- 从当前用户已授权范围中获取 <workspace-uuid> 与 <threads-social-account-uuid>;切勿推测 ID。
- 排程
- <future ISO-8601 instant with offset>,display_timezone 设为 Asia/Hong_Kong。
- 重试识别
- <unique stable idempotency key for this one user intent>;仅在安全重试相同请求时复用。
操作指南
在 API 调用前设计产品确认步骤
在 SosoAPI 中打开此区域在 SosoAPI 应用中,选择目标工作区并审核已连接账号。在你的产品原型中,展示用户所选的同一工作区和账号,不要暗中代选。
在确认步骤中显示确切文案、账号、当地时间和时区。要求当事人选择 Schedule;打开表单不得提交任何内容。
预期结果
用户可在写入前看到目标和时间。虚构产品原型是设计练习,并非已安装的客户集成。
从你的服务器读取当前的排程帖子
将 <workspace-uuid> 替换为所选 工作区 ID,再于服务器执行此唯读请求:
const apiKey = process.env.SOSOAPI_API_KEY; if (!apiKey) throw new Error("Configure a SosoAPI API key on your server"); const response = await fetch( "https://gqeshlawtcexsapabaui.supabase.co/functions/v1/studio-api/scheduled-posts/list", { method: "POST", headers: { "Authorization": "Bearer " + apiKey, "Content-Type": "application/json" }, body: JSON.stringify({"workspace_id":"<workspace-uuid>"}) } ); const result = await response.json(); if (!response.ok) throw new Error("SosoAPI request failed: " + response.status); // Use result in your server response; never return or log the API key.使用返回资料更新产品清单。用户确认需与此读取分开处理。
预期结果
你会获取 工作区 当前帖子,或授权/验证错误。此唯读请求不会创建帖子。
仅在用户明确确认后提交
打开 Calendar 并选择 New Post,将审核步骤与应用中的相同操作对照。
将所有占位符替换为已授权 ID、带偏移量的未来 ISO 时间戳及唯一幂等键。运行此服务端请求前,审核账号、文案和时间。
const apiKey = process.env.SOSOAPI_API_KEY; if (!apiKey) throw new Error("Configure a SosoAPI API key on your server"); const response = await fetch( "https://gqeshlawtcexsapabaui.supabase.co/functions/v1/studio-api/scheduled-posts/create", { method: "POST", headers: { "Authorization": "Bearer " + apiKey, "Content-Type": "application/json" }, body: JSON.stringify({ "workspace_id": "<workspace-uuid>", "social_account_id": "<threads-social-account-uuid>", "caption": "A small note for later: Harborlight Journal is making room for shorter daily reflections. Keep one thought; leave the rest for tomorrow.", "hashtags": [], "media": [], "provider_payload": {"platform": "threads", "publish_options": {"post_type": "TEXT"}}, "scheduled_at": "<future ISO-8601 instant with offset>", "display_timezone": "Asia/Hong_Kong", "idempotency_key": "<unique-stable-key-for-this-intent>" }) } ); const result = await response.json(); if (!response.ok) throw new Error("SosoAPI request failed: " + response.status); // Use result in your server response; never return or log the API key.运行此请求会创建真实排程。仅在用户确认后提交,绝不向浏览器暴露 API key。
预期结果
有效的已接受响应会指出所创建的排程帖子;不代表平台已发布。能力遭拒、范围/账号无效、不支持的载荷或遭拒的排程,必须显示为错误,不得报告成功。
呈现返回状态,并为用户提供安全的后续操作
在 SosoAPI 中打开此区域存储返回的排程帖子 ID,并在产品中显示当前状态、目标及排程。
向用户提供对应 Scheduled Post 详情的链接。如交付需要人工处理,请链接到 Needs Attention 事项,不要暗中重新提交。
在记录平台确认的最终状态前,不要将请求标记为已发布。
预期结果
产品会区分请求收据与已排程、发布中、已发布、失败及未知的观测结果。未知结果会先针对现有帖子核对,再进行新的写入。
先有请求收据,再有发布结果。
下方示例展示了使用虚构值的部分 API 响应字段。创建排程后,保存 post.id 并用其检查该帖子的结果。
1. 创建响应
{
"post": {
"id": "10000000-0000-4000-8000-000000000001",
"status": "scheduled",
"scheduled_at": "2100-01-05T10:00:00+08:00",
"published_at": null,
"permalink": null
},
"deduped": false
}2. 读取同一篇帖子
POST /studio-api/scheduled-posts/get
{
"id": "10000000-0000-4000-8000-000000000001"
}平台确认后,详情响应可包含:
{
"post": {
"id": "10000000-0000-4000-8000-000000000001",
"status": "published",
"published_at": "2100-01-05T02:00:08Z",
"permalink": "https://www.threads.net/@example/post/EXAMPLE"
},
"delivery": {
"stage": "terminal",
"message": "Published on Threads."
}
}post.status- 使用实际状态,如 scheduled、publishing、published 或 failed。如连接中断,在判断发生了什么前先读取同一帖子。
post.permalink- 可获取时的平台帖子链接;可能为 null。上方 URL 为示例。
delivery / outcomes- 详细响应会显示发布进度,以及该帖子可获取的平台结果。如果失败,请先检查这些详情与「需要注意」事项,再决定后续操作。
这些是字段示例,并非实际发布收据。本页不会调用 API。
各状态的含义
Submitted请求响应- 已收到你的请求。将其视为已排程或已发布前,请先检查帖子当前状态。
Scheduled帖子详情- Scheduled Post 已被接受,将在未来时间执行。等待期间,让目标和排程时间保持可见。
Publishing帖子详情- 正在发送。请等待最终结果;进行中不代表成功。
Published帖子详情- 仅在 SosoAPI 已为 Scheduled Post 记录平台最终确认后使用。
Failed帖子详情- 终端失败需要审核。请检查帖子详情与可用操作,再决定变更或重试内容。
Unknown应用显示的内容- 如果连接中断且结果不明,请先检查排程帖子与需要注意事项,再重新提交。
相关指南
操作指南包含服务器端 API 示例。执行前请设置已授权的 ID 与 API key;本页本身不会发出请求。
试试你的第一个工作流。
创建账号,从 Free 开始。