跳至內容

角色維護 API ​

接口與控制台維護同一份角色資料;草稿和發布版本分開保存。以下接口使用 POST 及請求簽章。角色的外部 UID 在當前空間唯一,最長 128 字元,允許英文字母、數字和 ._:@-。

建立角色 ​

POST /api/open/v1/personas/create

欄位必填說明
personaUid是接入方角色帳號 UID;已綁定時返回 409
config是完整角色配置,見下方示例
publish否預設 false,只建草稿;true 同時嘗試發布

以下使用私聊配置,需當前應用已開通私聊;若空間配置了額外必填場景表單,請補齊其 sceneForms 值:

json
{
  "personaUid": "anchor-001",
  "config": {
    "base": {
      "nickname": "小雪",
      "bio": "喜歡旅行和日常聊天",
      "languages": [
        "zh-CN"
      ],
      "timezone": "Asia/Shanghai",
      "profile": {},
      "life": {},
      "appearance": {},
      "boundaries": {}
    },
    "scenes": {
      "privateChat": {
        "enabled": true,
        "style": "自然接話",
        "initiative": "NORMAL",
        "followUp": "NATURAL",
        "rejection": "REASSURE",
        "offer": {
          "enabled": false,
          "firstOfferMessages": 5,
          "offerInterval": 7,
          "tone": "GENTLE"
        },
        "gift": {
          "enabled": false,
          "cooldownMinutes": 30
        }
      },
      "liveRoom": {
        "enabled": false,
        "style": "",
        "engagement": "NORMAL",
        "followUp": "NATURAL"
      }
    }
  },
  "publish": true
}

發布需要至少啟用一個已開通的場景。建立與發布不是一個原子操作:發布校驗失敗時可能已留下草稿。請按 personaUid 查詢後修改,不要直接換 UID 重複建立。

修改角色 ​

POST /api/open/v1/personas/update

json
{"personaUid":"anchor-001","config":{"base":{"nickname":"小雪"}},"publish":true,"lockVersion":3}

可用 personaId 代替 personaUid;同傳時必須指向同一角色。config 使用 JSON Merge Patch:物件遞迴合併,null 刪除欄位,陣列整體替換;刪除必填欄位會校驗失敗。publish 預設 false。

  • 修改落到草稿;沒有草稿時先從發布版本建立。
  • lockVersion 是可選樂觀鎖。建議先查詢、帶回版本再修改;過期返回 409。省略並不防止覆蓋自己查詢之後的修改。
  • publish: true 發布整份草稿,包括營運在控制台尚未發布的其他修改。
  • 沒有通用請求冪等鍵保證發布只發生一次。遇到超時先查詢版本及內容,再決定是否重試。

查詢角色 ​

POST /api/open/v1/personas/get

json
{"personaUid":"anchor-001"}

成功響應示例(草稿內容作縮略展示):

json
{"code":"OK","message":"success","data":{"personaId":"11","personaUid":"anchor-001","status":"DRAFT","version":0,"lockVersion":0,"hasDraft":true,"draft":{},"published":null,"updatedAt":"2026-10-26T08:00:00Z"}}

上例 draft: {} 僅縮略展示,實際是保存的完整配置;建立/修改成功也返回同一結構。

欄位說明
statusDRAFT 未發布、ACTIVE 啟用、PAUSED 暫停
version發布版本;尚未發布為 0
lockVersion資料修改版本,用於並發控制,與發布版本不同
hasDraft是否有可編輯草稿
draft / published草稿及發布配置;無發布版本時 published 為 null
updatedAtUTC ISO 8601 時間

配置欄位 ​

路徑主要欄位
basenickname(必填,40 字)、bio(160 字)、timezone(必填)、languages(必填,最多 4 項,zh-CN / en / ja / es)
base.profilebirthday(YYYY-MM-DD)、height、weight、occupation
base.lifeinterests、likes、dislikes、personality、speakingStyle、background
base.appearanceethnicity、skinTone、facialFeatures、hairstyle、bodyDescription
base.boundariesprohibitedTopics、handoffNotes(設定文字,不代表已提供人工接管 API)
scenes.privateChatenabled、style、initiative(QUIET / NORMAL / ACTIVE)、followUp(NONE / NATURAL / ACTIVE)、rejection、offer、gift
scenes.liveRoom直播配置;本頁不提供直播接入 API
sceneForms當前空間場景表單值;按控制台實際配置填寫

擴充欄位建議先在控制台設定,再用查詢接口取得規範結構。平台帳號登入、餘額及產品內封禁仍由接入方管理。變更同步見角色變更通知。

OmniChat · 讓互動自然發生