API 參考
訊息POST

傳送文字訊息

透過指定渠道帳號傳送標準化文字訊息。message.text 必須非空;provider_data 承載渠道專屬欄位,引用回覆使用頂層 reply_to。 WhatsApp 傳送成功且渠道提供可引用訊息識別字時可能回傳的不透明回覆句柄。請原樣回傳,它不是父訊息 id。

https://api.unifyport.ai/v1/messages

請求標頭

X-Api-Key
string必填

工作區 API Key,工作區會由此標頭解析得到。

Content-Type
string必填

傳送 JSON 請求內容時請使用 application/json。

路徑參數

此介面沒有路徑參數。

請求內容

account_id
string必填

傳送該訊息的渠道帳號。

minLength: 1

to
object必填

收件方目標,包含 id 與 type。

id
string必填

收件方在渠道側的識別碼。

minLength: 1

type
string必填

收件方類型:user、group 或 channel。

enum: user, group, channel

message
object必填

標準化訊息內容:文字使用 message.text,媒體使用 message.url。

type
string必填

訊息類型:text、image、video、audio、document、file 或 contact。

enum: text, image, video, audio, document, file, contact

text
string

message.type=text 時必填的非空文字。

minLength: 1

caption
string

image、video、document 或 file 訊息的選填說明文字。

url
string

非空絕對 HTTP(S) 媒體 URL;媒體訊息至少提供一個來源欄位。

format: uri · pattern: ^[Hh][Tt][Tt][Pp][Ss]?://

file_url
string

非空備用絕對 HTTP(S) 媒體 URL;媒體訊息至少提供一個來源欄位。

format: uri · pattern: ^[Hh][Tt][Tt][Pp][Ss]?://

file_key
string

非空渠道或儲存檔案引用;媒體訊息至少提供一個來源欄位。

minLength: 1

contacts[]
object[]

message.type=contact 時必填的非空名片陣列。

minItems: 1

name
string

每張名片必填的非空聯絡人顯示名稱。

minLength: 1

phones[]
object[]

名片包含的電話號碼清單。

number
string

電話號碼;每個 phone 項目都必須提供。

type
string

選填的電話類型,例如 CELL 或 WORK。

emails[]
object[]

名片包含的電子郵件清單。

address
string

電子郵件地址;每個 email 項目都必須提供。

format: email

type
string

選填的郵件類型,例如 WORK 或 HOME。

organization
string

聯絡人的選填組織名稱。

title
string

聯絡人的選填職稱。

provider_data
object

渠道專屬選項,例如 Telegram 的 parse_mode;WhatsApp audio / video 的 seconds 使用非負整數,僅在 video 時,取值範圍為 0 到 4294967295;waveform 僅適用於 audio。引用回覆請使用頂層 reply_to。

seconds
integer

WhatsApp audio 或 video 訊息的選填時長,單位為秒,使用非負整數;僅在 video 時,取值範圍為 0 到 4294967295。

minimum: 0

waveform
string

WhatsApp audio 訊息的選填音訊波形資料。非空值必須使用標準 Base64 編碼,且解碼後必須是可解析的 JSON 波形資料;空字串按未提供處理,其他格式錯誤會返回 HTTP 400 provider_invalid_request。

reply_to
object

引用回覆目標;把入站 Webhook 的 data.message.reply_token 原樣放入傳送請求的 reply_to.reply_token。

reply_token
string

從入站 Webhook 的 data.message.reply_token 原樣複製的不透明引用代符。

minLength: 1

mentions[]
object[]

群組訊息的 @ 目標列表。type=member 使用對應 Provider 的成員 id;type=all 表示 @所有人,僅在 Provider 支援時生效,否則返回 unsupported_message_type。

type
string

@ 目標類型。省略時按 member 處理以相容舊請求;type=member 必須傳 id,type=all 不傳 id 且僅適用於群組聊天。

enum: member, all

id
string

type=member 時必填的 Provider 成員識別碼。

minLength: 1

回應內容

message_id
string

已受理訊息的 UnifyPort 訊息識別字(msg_...)。

account_id
string

本回應所對應的渠道帳號。

status
string

受理狀態;accepted 表示訊息已排入佇列,準備傳送至渠道。

provider_ref
string

渠道側的訊息參考,於渠道指派後出現。

reply_token
string

WhatsApp 傳送成功且渠道提供可引用訊息識別字時可能回傳的不透明回覆句柄。請原樣回傳,它不是父訊息 id。

回應

200
200 OK

請求成功,回應內容範例如上。

400
請求錯誤

請求內容、路徑或參數無效。

401
未授權

X-Api-Key 請求標頭缺少或無效。

409
衝突

目前操作與既有的渠道帳號或資源衝突。

500
伺服器錯誤

服務遇到了未預期的錯誤。

501
渠道尚未實作

所選渠道尚未實作此操作。

502
上游閘道錯誤

渠道轉接器或上游渠道未能完成此操作。

請求

curl -X POST https://api.unifyport.ai/v1/messages \
  -H "X-Api-Key: <YOUR_API_KEY>" \
  -H "Content-Type: application/json" \
  -d '{
  "account_id": "acc_example",
  "to": {
    "id": "user_example",
    "type": "user"
  },
  "message": {
    "type": "text",
    "text": "Hello from UnifyPort"
  },
  "provider_data": {
    "parse_mode": "markdown"
  }
}'

回應

{
  "data": {
    "message_id": "msg_example",
    "account_id": "acc_example",
    "status": "accepted",
    "provider_ref": "provider_msg_example",
    "reply_token": "<opaque WhatsApp reply handle>"
  }
}