API 簡介
超越訊息發送:您的客戶互動與增長引擎
歡迎來到 WINGSING 開發者中心。我們為您呈現的是一套企業級、多渠道的雲通訊 API,旨在成為您業務增長的核心引擎。我們的 API 設計不僅涵蓋了穩定可靠的全球 SMS 發送,更延伸至完整的營銷活動管理、智能化的聯絡人分群、自動化的帳戶工具,以及前瞻性的語音和驗證碼服務。
我們堅持以開發者體驗為核心,提供遵循 RESTful 原則的接口、純淨的 JSON 數據格式、可預測的行為模式,以及清晰詳盡的文檔。無論您是想提升用戶驗證的安全級別,還是策劃一場複雜的全球營銷活動,WINGSING API 都將是您最可靠的技術夥伴。
平台核心能力
多渠道通訊: 整合 SMS、語音 TTS 及 2FA 驗證碼於一體,觸達不同場景的用戶。
營銷活動管理: 從建立、排程、執行到分析,提供完整的營銷活動生命週期管理。
聯絡人與範本: 透過 API 管理您的聯絡人列表和預審核訊息範本,實現高效營運。
深度分析與洞察: 提供從單則訊息到整個營銷活動的多維度數據報告與統計。
自動化與工具: 以 API 驅動帳戶管理、黑名單同步等,將通訊能力無縫嵌入您的自動化工作流。
核心概念
我們採用業界標準的 API Key 和 API Secret 進行認證。只需在每次 API 請求的 JSON 主體中,附上您在控制台獲取的 api_key 和 api_secret 即可。
請求格式 (Request Format)
我們所有的 API 端點均接受 Content-Type: application/json 的請求。所有 POST / PUT / DELETE 請求的參數都應置於 JSON 主體內。
Webhooks
Webhooks 是實現實時數據同步的關鍵。您可以在控制台設定一個或多個接收端點,並訂閱您感興趣的事件類型(如 sms.status_update, campaign.completed)。當事件觸發時,我們會立即將相關數據 POST 到您的 URL。
WINGSING 雲通訊平台 API 開發文檔 (V2.0)
1. 概述
歡迎使用 WINGSING 雲通訊平台 API。本文件旨在為開發者提供清晰、完整的接口說明,以實現您的應用系統與 WINGSING 平台之間的高效整合。
我們的 API 採用業界通用的 REST 風格設計,同時支持 HTTP 及 HTTPS 協議,並兼容 GET 與 POST 請求方式。為保障帳戶安全,每次 API 請求均須攜帶 username 和 password 參數,否則將被視為未經授權的請求並被系統拒絕。
API 請求基礎 URL:
HTTP: http://%%SERVERIP:PORT%%/api
HTTPS: https://%%SERVERIP:PORT%%/api
2. 短信提交接口 (Submit SMS)
此接口用於向 WINGSING 平台提交單則或多則短信以進行發送。
2.1 請求參數說明
必填參數
參數名 | 類型 | 描述 |
|---|---|---|
username | String | 您的 WINGSING 帳戶用戶名。 |
password | String | 您的 WINGSING 帳戶密碼。 |
command | String | 提交短信時,此參數值固定為 "submit"。 |
ani | String | 發送方ID (Sender ID)。字母或字母數字組合長度不超過11位;純數字長度不超過21位。注意: 根據目的地運營商規則,部分地區的自定義 Sender ID 可能需要預先註冊。 |
dnis | String | 目的地手機號碼,需為 E.164 格式。多個號碼請使用英文逗號 (,) 分隔,單次請求最多不超過100個號碼。 |
message | String | 短信內容文本。 |
longMessageMode | String | 長短信處理模式:<br> • cut (預設值): 短信將被截斷,僅發送前160個字節。<br> • split (推薦): 短信將被拆分,每個分片返回獨立的 message_id。<br> • single_id_split: 短信將被拆分,所有分片返回相同的 message_id。<br> (拆分規則詳見附錄) |
選填參數
參數名 | 類型 | 描述 |
|---|---|---|
dataCoding | String | 數據編碼格式。<br> • 0: GSM 7-bit (適用於純英文內容)。<br> • 8: UCS2 (適用於包含非英文字符的內容)。<br> 注意: 若不提交此參數,系統會根據您的 message 內容自動適配編碼。 |
serviceType | String | 業務類型代碼,此參數由 WINGSING 在對接時提供,可留空。 |
incMsgid | String | 客戶自定義的 Message ID (最長64字符)。此功能僅在 longMessageMode 為 cut 或 split 時適用。若長短信被拆分,系統將在您提供的ID後附加分片序號,如 your_id-1, your_id-2。 |
srcTon, srcNpi | Integer | SMPP 協議相關參數,對應 ani 的 TON 和 NPI。 |
dstTon, dstNpi | Integer | SMPP 協議相關參數,對應 dnis 的 TON 和 NPI。 |
priorityFlag | Integer | SMPP 協議相關參數 (0-255)。 |
esmClass | Integer | SMPP 協議相關參數 (0-255)。 |
registeredDelivery | Integer | SMPP 協議相關參數 (0-255)。 |
replaceIfPresentFlag | Integer | SMPP 協議相關參數 (0-255)。 |
silent | Integer | 靜音短信標誌。<br> • 0: 非靜音 (預設)。<br> • 1: 靜音。<br> 注意: 最終效果取決於終端設備及運營商網絡的支持。 |
2.2 請求示例
GET 請求
http://%%SERVERIP:PORT%%/api?username=WS_USER_01&password=user_password&command=submit&ani=WINGSING&dnis=85291234567&message=Your%20verification%20code%20is%206688.&longMessageMode=split
POST 請求 (JSON)
curl -X POST 'http://%%SERVERIP:PORT%%/api?username=WS_USER_01&password=user_password&command=submit' \
-H 'Content-Type: application/json' \
-d '{
"ani": "WINGSING",
"dnis": "85291234567,85298765432",
"message": "【WINGSING】This is a test message.",
"longMessageMode": "split"
}'
2.3 響應格式
成功響應 (單號碼或群發) 系統返回 HTTP 200 OK,響應主體為 JSON 格式。
單號碼:
{ "message_id": "ws-a1b2c3d4-e5f67890" }多號碼:
[ { "dnis": "85291234567", "message_id": "ws-c0d59d-908efa-515011" }, { "dnis": "85298765432", "message_id": "ws-09c84c-226060-864263" } ]
成功響應 (長短信 split 模式)
[
{
"dnis": "85291234567",
"message_id": "ws-3bef56819305-f55f-44b4",
"segment_num": "1"
},
{
"dnis": "85291234567",
"message_id": "ws-7d4e5a0d14af-4a16-7ee6",
"segment_num": "2"
}
]
失敗響應
無可用路由: HTTP/1.1 400 Bad Request NO ROUTES
認證失敗: HTTP/1.1 401 Unauthorized Not authorized (check login and password)
(更多 HTTP 狀態碼詳見附錄)
3. 回執狀態推送接口 (Delivery Receipt Push - Webhook)
當短信的最終投遞狀態更新時,WINGSING 平台會主動將狀態報告推送到您預先設定的 URL 地址。
3.1 推送格式
平台將以 GET 或 POST 方式向您的 URL 發送請求。
GET 示例 http://your.server.com/dlr_receiver?msgid=ws-b159d0-8d0c77&state=DELIVRD&reasoncode=000&to=85291234567&time=2025-08-10T18:13:00Z&mcc=454&mnc=00
POST 示例 (JSON Body)
{
"msgid": "ws-440896-49e938-838927",
"state": "DELIVRD",
"reasoncode": "000",
"to": "85291234567",
"time": "2025-08-10T17:45:00Z",
"mcc": "454",
"mnc": "00"
}
3.2 推送參數
參數名 | 必填 | 描述 |
|---|---|---|
msgid | 是 | 消息 ID,對應短信提交時返回的 message_id。 |
state | 是 | 回執狀態,DELIVRD 為成功,其他狀態詳見附錄。 |
reasoncode | 是 | 錯誤碼。成功時為 000。 |
to | 是 | 目的地手機號碼。 |
time | 是 | 回執接收時間。 |
mcc | 是 | 移動國家碼 (Mobile Country Code)。 |
mnc | 是 | 移動網絡碼 (Mobile Network Code)。 |
rate | 否 | 短信費用。 |
cur | 否 | 價格幣種。 |
parts | 否 | 短信分段數。 |
serviceType | 否 | 您在提交時攜帶的 serviceType 參數。 |
net_name | 否 | 網絡名稱。 |
4. 上行回覆推送接口 (MO Message Push - Webhook)
當用戶回覆您的短信時,WINGSING 平台會將上行內容實時推送到您預先設定的 URL 地址。
4.1 推送格式
平台將以 GET 或 POST 方式向您的 URL 發送請求。
GET 示例 http://your.server.com/mo_receiver?from=85291234567&to=WINGSING&time=250810192030&message=STOP&message_id=mo-xyz-789
4.2 推送參數
參數名 | 必填 | 描述 |
|---|---|---|
from | 是 | 用戶的手機號碼。 |
to | 是 | 您的接收號碼或 Sender ID。 |
time | 是 | 系統接收到上行內容的時間 (YYMMDDHHMMSS)。 |
message | 是 | 上行短信內容 (UTF-8)。 |
message_id | 是 | 該上行訊息的唯一 ID。 |
serviceType | 否 | 固定值為 "MO"。 |
result_code | 否 | 固定值為 "000"。 |
network | 否 | 網絡名稱。 |
udh | 否 | 長短信的 UDH 標識頭 (十六進制)。 |
5. 回執狀態查詢接口 (Query Delivery Status)
此接口用於主動查詢特定短信的投遞狀態,狀態報告在提交後24小時內可供查詢。
5.1 請求格式
GET https://%%SERVERIP:PORT%%/api?username=WS_USER_01&password=user_password&messageid=ws-a1b2c3d4-e5f67890&command=query
5.2 請求參數
參數名 | 必填 | 描述 |
|---|---|---|
username | 是 | 您的 WINGSING 帳戶用戶名。 |
password | 是 | 您的 WINGSING 帳戶密碼。 |
messageid | 是 | 您要查詢的 message_id。 |
command | 是 | 查詢時,此參數值固定為 "query"。 |
5.3 響應結果
{
"status": "DELIVRD",
"delivery_time": "250810193309",
"mccmnc": "45400",
"error_code": "000",
"system_delivery_time": "250810193309"
}
6. 附錄
6.1 長短信拆分規則
純 GSM 7-bit 字符 (如英文、數字): 內容長度(簽名+正文)不超過160字符,按1條計費。超過160字符,則按每153字符為一條進行拆分計費。
包含非 GSM 字符 (如中文、日文): 內容長度(簽名+正文)不超過70字符,按1條計費。超過70字符,則按每67字符為一條進行拆分計費。
6.2 回執狀態碼說明
狀態 (state) | 描述 |
|---|---|
DELIVRD | 短信已成功送達。 |
ENROUTE | 短信正在路由中。 |
EXPIRED | 短信因超時未送達而過期。 |
DELETED | 短信已被刪除。 |
UNDELIV | 短信無法送達。 |
ACCEPTD | 短信已被運營商網絡接受。 |
UNKNOWN | 未知狀態。 |
REJECTED | 短信被拒絕。 |
6.3 HTTP 響應狀態碼
HTTP 狀態碼 | 描述 |
|---|---|
1xx (資訊性) | |
100 | Continue |
101 | Switching Protocols |
102 | Processing |
2xx (成功) | |
200 | OK |
201 | Created |
202 | Accepted |
203 | Non-Authoritative Information |
204 | No Content |
205 | Reset Content |
206 | Partial Content |
207 | Multi-Status |
226 | IM Used |
3xx (重定向) | |
300 | Multiple Choices |
301 | Moved Permanently |
302 | Found / Moved Temporarily |
303 | See Other |
304 | Not Modified |
305 | Use Proxy |
307 | Temporary Redirect |
4xx (客戶端錯誤) | |
400 | Bad Request |
401 | Unauthorized |
402 | Payment Required |
403 | Forbidden |
404 | Not Found |
405 | Method Not Allowed |
406 | Not Acceptable |
407 | Proxy Authentication Required |
408 | Request Timeout |
409 | Conflict |
410 | Gone |
411 | Length Required |
412 | Precondition Failed |
413 | Request Entity Too Large |
414 | Request-URI Too Large |
415 | Unsupported Media Type |
416 | Requested Range Not Satisfiable |
417 | Expectation Failed |
422 | Unprocessable Entity |
423 | Locked |
424 | Failed Dependency |
426 | Upgrade Required |
428 | Precondition Required |
429 | Too Many Requests |
431 | Request Header Fields Too Large |
451 | Unavailable For Legal Reasons |
5xx (伺服器錯誤) | |
500 | Internal Server Error |
501 | Not Implemented |
502 | Bad Gateway |
503 | Service Unavailable |
504 | Gateway Timeout |
505 | HTTP Version Not Supported |
507 | Insufficient Storage |
508 | Loop Detected |
511 | Network Authentication Required |