產品開發者
為您的產品加入發布功能。
一款虛構日記應用程式加入由使用者確認的操作,以排程社群貼文並顯示結果。
您的產品 + SOSOAPI
整合流程示意- 您的產品準備與確認
- SosoAPI排程一則已確認貼文
- 社群帳號跟進結果
三個步驟
準備內容
在您的產品中收集文案和圖片。
讓使用者確認
排程前顯示帳號、內容與時間。
帶回結果
顯示進度與最終發布結果。
讓社群發布成為您產品的一部分。
查看完整操作指南
場景
為虛構的日記產品加入一個有意識、可審核的“排程此更新”操作。讓使用者的工作空間和確切已連結帳號保持可見,並展示回傳狀態,不暗示平台已發布。

開始前
- 建立並驗證 SosoAPI 帳號,再選擇預期的 Workspace。
- 在「應用程式設定 → 代理程式與 API 存取權」建立 API key。於伺服器環境中儲存為 SOSOAPI_API_KEY;這些 JavaScript 範例使用 Node.js 20+,不需要 SosoAPI 原始碼儲存庫。
- 僅從目前已授權範圍中選擇真實的 Workspace 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> 替換為所選 Workspace 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.使用回傳資料更新產品清單。使用者確認需與此讀取分開處理。
預期結果
您會取得 Workspace 目前貼文,或授權/驗證錯誤。此唯讀請求不會建立貼文。
僅在使用者明確確認後提交
開啟 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,並在產品中顯示目前狀態、目標及排程。
向使用者提供對應排程貼文詳細資料的連結。如傳送需要人工處理,請連結到 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貼文詳細資料- 排程貼文已被接受,將在未來時間執行。等待期間,讓目標和排程時間保持可見。
Publishing貼文詳細資料- 正在傳送。請等待終端結果;進行中不代表成功。
Published貼文詳細資料- 僅在 SosoAPI 已為排程貼文記錄平台最終確認後使用。
Failed貼文詳細資料- 終端失敗需要審核。請檢查貼文詳細資料與可用操作,再決定變更或重試內容。
Unknown應用程式顯示的內容- 如果連線中斷且結果不明,請先檢查排程貼文與需要注意事項,再重新提交。
相關指南
操作指南包含伺服器端 API 範例。執行前請設定已授權的 ID 與 API key;本頁本身不會發出請求。
試試您的第一個工作流程。
建立帳號,從 Free 開始。