簡訊驗證 API
三個呼叫就涵蓋整個流程:訂購號碼、輪詢直到驗證碼送達、沒收到就釋出號碼。Bearer token、JSON 輸入與輸出,而且後台能做的每一項操作,都能透過同一套 API 完成。
以 API 呼叫表示的流程
GET /api/v2/tn101/get-services:服務目錄,包含下單時要用的識別碼以及目前價格。POST /api/v2/tn101/request-number:訂購一個號碼。接受service_key,以及選填的state和區碼。回應訂單 ID、號碼和到期時間。GET /api/v2/tn101/get-number-details:用order_id輪詢。驗證碼送達前pin為 null,送達後就會包含驗證碼。這是 API 中成本最低的讀取操作,也是專為迴圈呼叫而設計的端點。POST /api/v2/tn101/reject-number:釋出一個沒有收到任何東西的號碼。費用也是透過這個呼叫退回。
這條路徑不會主動推送任何東西給你,所以第 3 步是輪詢。如果你寧願被通知而不是主動詢問,帳號也會在訂單事件發生時發送 webhook,可在後台設定。
身分驗證
每個請求都要帶上 Authorization: Bearer <token>。Token 在後台的 API 存取設定中產生,並可隨時在那裡更換。更換會立即讓舊 token 失效,所以請先更新你的設定。
沒有有效 token 的請求會收到 401。帳號被停權或關閉了 API 存取,會收到 403。當 API 在全站停用時,每個端點都會回應 503,而不是假裝一切正常。
回應格式
每個端點都以相同的三個欄位回應:
data 帶有資料內容,success 是用來判斷分支的布林值,summery 則是人類可讀的訊息。這個拼法不是本頁的筆誤:它是 API 一直以來使用的欄位名稱,存在於所有針對它撰寫的整合中,為了修正一個字母而改名會讓這些整合全部壞掉。請讀取 summery。
驗證失敗會回應 422,data 是一個欄位名稱對應錯誤訊息的物件,讓呼叫端能回報是哪個參數有誤,而不只是知道有東西錯了。
測試驗證流程
這套 API 是以真實電信路徑(而不是模擬環境)來測試註冊或密碼重設流程的實用方式:訂購號碼、用它操作你自己的表單、輪詢驗證碼,再驗證你的應用程式接下來的行為。它比 stub 慢,但能抓到 stub 抓不到的問題:號碼格式正規化、線路類型過濾,以及你的使用者實際會遇到的送達延遲。
限制
API 沒有每秒請求數的限制,但下單有兩項配額,和後台套用的配額相同:
- 未結訂單。 一個帳號同時能保留的號碼數量有限。請輪詢並釋出,而不是同時大量開單。
- 每日取消與到期的訂單數。 超過每日額度,下單功能會暫停一段時間,重複超過時暫停時間會延長。無論驗證碼是否送達,每次保留都會消耗真實的號碼資源,而這正是配額要保護的。
兩者在臨時號碼中有更詳細的說明,那裡解釋了一筆訂單如何進行。
常見問題
- 如何取得 token?
- 建立帳號後,在後台的 API 存取設定中產生。完整的 token 會顯示在那裡,需要時可隨時更換。
- 呼叫 API 要收費嗎?
- 請求是免費的,號碼則不是。當 `request-number` 核發號碼時才會收費,價格和在後台下單的每次驗證價格相同。
- 有沙盒環境嗎?
- 沒有獨立的沙盒。只有一個環境,訂購的號碼就是真實的號碼,也會產生真實的費用,而這也正是值得用它來測試的原因。
- 應該如何輪詢驗證碼?
- `get-number-details` 是一次有索引的查詢,不會呼叫上游,所以每次輪詢間隔幾秒是合理的。當 `pin` 有值或訂單超過到期時間時就停止,並釋出所有沒收到東西的號碼。
- 可以用通知取代輪詢嗎?
- 可以。Webhook 按帳號在後台設定,會在訂單事件發生時觸發,讓長時間執行的整合不必一直在迴圈中等待。
相關頁面
準備好接收驗證碼了嗎?
註冊只要一分鐘,而且只需為成功送達的號碼付費。
免費建立帳號