API v2

使用 v2 REST API 進行代理程式管理、串流聊天、對話、意見回饋、來源、聯絡人、潛在客戶與設定。

API v2 是一套結構化的 REST API,用於管理代理程式並建立自訂聊天體驗。它新增了代理程式管理、串流聊天、對話紀錄、訊息意見回饋、聯絡人、潛在客戶、來源、設定與訓練端點。

使用 API 需要 Hobby 方案以上,且帳單狀態為有效。

基礎 URL

https://your-domain.com/api/v2

身分驗證

除了健康檢查端點外,請以你工作區的 API 金鑰作為 Bearer 權杖傳送:

Authorization: Bearer YOUR_API_KEY

設定 > API 金鑰 中建立與撤銷 API 金鑰。

回應格式

大多數成功回應會回傳資源物件,或以 data 封裝:

{
  "data": []
}

清單端點包含游標分頁:

{
  "data": [],
  "pagination": {
    "cursor": null,
    "hasMore": false,
    "total": 0
  }
}

錯誤會使用結構化的 error 物件:

{
  "error": {
    "code": "VALIDATION_INVALID_BODY",
    "message": "Invalid request body"
  }
}

每個 v2 回應都包含 x-request-id 標頭。聯絡支援團隊回報 API 請求問題時,請附上此值。

對話範圍

唯讀對話端點預設使用 source=api_v2。設定 source=widget 可回傳小工具與 Playground 對話;Playground 記錄會以 widget 來源儲存。設定 source=all 可回傳 API v2、小工具與 Playground 對話。結果永遠僅限於已驗證帳戶所擁有的代理程式。無效的 source 值,或帶有一個以上的 source 查詢參數,會回傳 400 VALIDATION_INVALID_BODY。對話延續、重試、意見回饋、訊息列表與依使用者查詢,僅適用於 API v2 對話。

健康檢查

GET /api/v2/health

健康檢查端點不需要身分驗證。

成功200 OK

{
  "status": "ok",
  "timestamp": 1784332800
}

timestamp 為目前的 Unix 時間戳記(秒)。

聊天

POST /api/v2/agents/{agentId}/chat

請求:

{
  "message": "What plans do you offer?",
  "conversationId": "optional-existing-conversation-id",
  "userId": "optional-user-id",
  "stream": true
}
欄位是否必填說明
message1 到 32,000 字元。
conversationId延續一個 API v2 對話。未知的 ID 會回傳 404。
userId用於分組 API 對話的穩定終端使用者 ID。允許使用字母、數字、._-
stream預設為 true。設為 false 可取得單一 JSON 回應。

串流回應使用 Server-Sent Events。串流內容包含 message-starttext-starttext-deltatext-endmessage-metadatafinish[DONE] 等事件。當串流或完成掛鉤(completion hook)失敗時,會發出 error 事件,其 error.code 設為 CHAT_STREAMING_ERROR;這個僅用於 SSE 的協定代碼獨立於結構化的 REST 錯誤目錄message-metadata 在訊息成功持久化時,會包含助理訊息 ID,並附上對話 ID、使用者 ID、完成原因(finish reason)與用量資訊。當沒有助理訊息被持久化時,其 messageIdnull。當回覆因用戶端動作而暫停時,串流也會發出帶有 { "id", "name", "arguments" }tool-call 事件;請將結果提交至 tool-result 端點 以繼續對話——該請求的回應會以串流方式傳回後續內容。

非串流回應會回傳:

{
  "data": {
    "id": "123",
    "role": "assistant",
    "parts": [{ "type": "text", "text": "..." }],
    "pendingToolCall": null,
    "metadata": {
      "userMessageId": "122",
      "conversationId": "abc123",
      "userId": "user_123",
      "finishReason": "stop",
      "usage": { "credits": 1 }
    }
  }
}

非串流回應中的 data.idmetadata.userMessageId 是以字串序列化的數字訊息 ID;若對應的訊息未被持久化,則為 nullmetadata.userId 為傳入或已儲存的使用者 ID,若無則為 nullpendingToolCallnull,除非回覆在用戶端工具呼叫處暫停;此時它會包含 { "id", "name", "arguments" },供工具結果端點使用。

端點摘要

方法端點說明參考文件
GET/api/v2/health檢查 API 健康狀態。健康檢查
GET/api/v2/agents列出代理程式。代理程式與設定
POST/api/v2/agents建立代理程式。代理程式與設定
GET/api/v2/agents/{agentId}取得一個代理程式。代理程式與設定
PATCH/api/v2/agents/{agentId}更新代理程式名稱或 URL。代理程式與設定
DELETE/api/v2/agents/{agentId}刪除代理程式。代理程式與設定
POST/api/v2/agents/{agentId}/chat傳送一則聊天訊息。聊天
GET/api/v2/agents/{agentId}/conversations依來源列出對話。對話
GET/api/v2/agents/{agentId}/conversations/export匯出對話及其訊息。對話
GET/api/v2/agents/{agentId}/conversations/{conversationId}依來源取得一則對話。對話
GET/api/v2/agents/{agentId}/conversations/{conversationId}/messages列出一個 API v2 對話中的訊息。對話
POST/api/v2/agents/{agentId}/conversations/{conversationId}/retry重試一則 API v2 助理回覆。對話
POST/api/v2/agents/{agentId}/conversations/{conversationId}/tool-result提交用戶端工具結果。對話
PATCH/api/v2/agents/{agentId}/conversations/{conversationId}/messages/{messageId}/feedback設定或清除助理訊息的意見回饋。對話
GET/api/v2/agents/{agentId}/users/{userId}/conversations列出某終端使用者的 API v2 對話。對話
GET/api/v2/agents/{agentId}/sources列出訓練來源。來源與訓練
POST/api/v2/agents/{agentId}/sources/text新增文字來源。來源與訓練
POST/api/v2/agents/{agentId}/sources/qna新增問答(Q&A)來源。來源與訓練
POST/api/v2/agents/{agentId}/sources/url新增或重新訓練一個 URL 來源。來源與訓練
POST/api/v2/agents/{agentId}/sources/file/upload-url為直接檔案上傳建立簽署 URL。來源與訓練
POST/api/v2/agents/{agentId}/sources/file註冊已上傳的檔案並開始處理。來源與訓練
DELETE/api/v2/agents/{agentId}/sources/{documentId}刪除一個來源。來源與訓練
GET/api/v2/agents/{agentId}/contacts列出聯絡人。聯絡人
POST/api/v2/agents/{agentId}/contacts依外部 ID 建立或更新一位聯絡人。聯絡人
POST/api/v2/agents/{agentId}/contacts/import批次更新聯絡人。聯絡人
GET/api/v2/agents/{agentId}/leads列出已擷取的潛在客戶。聯絡人與潛在客戶
GET/PATCH/api/v2/agents/{agentId}/settings/ai讀取或更新 AI 設定。代理程式與設定
GET/PATCH/api/v2/agents/{agentId}/settings/design讀取或更新設計設定。代理程式與設定
GET/PATCH/api/v2/agents/{agentId}/settings/security讀取或更新安全性設定。代理程式與設定
GET/PATCH/api/v2/agents/{agentId}/settings/notifications讀取或更新通知設定。代理程式與設定
GET/PATCH/api/v2/agents/{agentId}/settings/training讀取或更新訓練設定。代理程式與設定
GET/api/v2/agents/{agentId}/channels/instagram取得 Instagram 連線、自動化功能與對話開場白。Instagram 頻道
GET/PATCH/api/v2/agents/{agentId}/channels/instagram/automations/{key}讀取或更新一項 Instagram 自動化功能。Instagram 頻道
GET/PATCH/api/v2/agents/{agentId}/channels/instagram/conversation-starters讀取或更新 Instagram 對話開場白。Instagram 頻道
GET/api/v2/agents/{agentId}/train取得訓練狀態。來源與訓練
POST/api/v2/agents/{agentId}/train開始重新訓練網頁來源。來源與訓練

意見回饋

使用意見回饋功能,將 API v2 助理訊息標記為 positivenegativenull。請求結構、回應內容與錯誤行為,請見對話、訊息與意見回饋

分頁

請將游標視為 API 回傳的不透明權杖。在下一次請求時原封不動地帶上 pagination.cursor 的值;請勿自行建構或解析它。

查詢參數說明
limit預設為 20。除非端點另有說明較低上限,否則必須是 1 到 100 之間的整數;對話匯出的上限為 20。
cursor前一頁回傳的不透明游標。無效的游標會回傳 400 VALIDATION_INVALID_BODY

聯絡人另外接受 search。潛在客戶接受包含邊界的 createdAftercreatedBefore ISO 8601 日期時間篩選條件。來源接受 sourceType,可為 web_crawlfile_uploadtext_snippetqna_entry

游標格式屬於內部實作細節。用戶端必須將每個游標都視為不透明權杖,原封不動地重複使用,不得自行建構或解析。

常見錯誤

代碼意義
AUTH_INVALID_API_KEY無法驗證此 Bearer API 金鑰。
SUBSCRIPTION_PLAN_REQUIRED工作區方案未包含 API 存取權限。
AGENT_NOT_FOUND該代理程式不存在,或不屬於此 API 金鑰所屬的帳戶。
VALIDATION_INVALID_BODY請求主體、路徑值、查詢參數、limit 或 cursor 驗證失敗。

完整的 27 個已宣告代碼、HTTP 狀態碼、觸發條件與保留代碼,請見完整的 API v2 錯誤目錄

參考文件

後續步驟