OTP配信
OTP配信 API は、EngageLab プラットフォームを通じて認証コードを生成し、テンプレートで指定されたチャネル戦略に従って配信します。
EngageLab プラットフォームを使用せずに認証コードを自分で生成したい場合は、EngageLab OTP Custom Verification Code Delivery API を呼び出すことができます。
Endpoint
POST https://otp.api.engagelab.cc/v1/messages
認証
HTTP Basic Authentication を使用し、HTTP ヘッダーに Authorization を追加します。
Authorization: Basic ${base64_auth_string}
Authorization: Basic ${base64_auth_string}
このコードブロックはフローティングウィンドウ内に表示されます
base64_auth_string の生成アルゴリズムは次のとおりです: base64(dev_key:dev_secret)
リクエスト例
リクエストヘッダー
POST /v1/messages HTTP/1.1
Content-Type: application/json
Authorization: Basic amlndWFuZ2RldjpkZXZfc2VjcmV0
POST /v1/messages HTTP/1.1
Content-Type: application/json
Authorization: Basic amlndWFuZ2RldjpkZXZfc2VjcmV0
このコードブロックはフローティングウィンドウ内に表示されます
リクエストボディ
{
"to": "+6591234567",
"template": {
"id": "test-template-1",
"language": "default",
"params": {
"key1": "value1",
"key2": "value2"
}
}
}
{
"to": "+6591234567",
"template": {
"id": "test-template-1",
"language": "default",
"params": {
"key1": "value1",
"key2": "value2"
}
}
}
このコードブロックはフローティングウィンドウ内に表示されます
リクエストパラメーター
リクエストオブジェクトは JSON 形式で表現されるため、リクエストヘッダーには Content-Type: application/json を含める必要があります。
| Parameter | Type | Required | Description |
|---|---|---|---|
| to | String | 必須 | 送信先:電話番号またはメールアドレス。例:+6598765432 または support@engagelab.com |
| template | JSON Object | 必須 | テンプレート情報。ネストされたパラメーターは以下を参照してください。 |
| |_ id | String | 必須 | テンプレート ID |
| |_ language | String | 任意 | テンプレート言語。以下の言語に対応しています。default: デフォルト言語zh_CN: 中国語(簡体字)zh_HK: 中国語(繁体字)en: 英語ja: 日本語th: タイ語es: スペイン語指定しない場合、デフォルト値は default(デフォルト言語)です。 |
| |_ params | JSON Object | 任意 | カスタムテンプレート変数キーに対応する値です。テンプレート作成時にカスタム変数を定義した場合は、ここで値を設定します。指定しない場合、変数キーは {{var}} のようにそのまま配信されます。 |
params に関する注意事項
- テンプレート内のプリセットフィールド(例:
from_id)について、param_varsフィールドの値が指定されていない場合、メッセージ配信時にはテンプレートのプリセットfrom_idが使用されます。 param_varsフィールドの値が指定されている場合(例:param_vars:{"from_id":"12345"})、メッセージ配信時にテンプレートのfrom_idは12345に置き換えられます。- 同時に、テンプレート作成時にテンプレート内容内で作成されたカスタム変数フィールドも
param_varsを通じて割り当てられます。たとえば、テンプレート内容がHi {{name}}, your verify code is {{code}}の場合、割り当てパラメーターparam_vars:{"name":"Bob"}が必要です。
レスポンスパラメーター
成功レスポンス
| Field | Type | Required | Description |
|---|---|---|---|
| message_id | String | 必須 | メッセージ ID。メッセージを一意に識別します |
| send_channel | String | 必須 | 現在の配信チャネルを示します。指定可能な値は whatsapp、sms、email、voice です。 |
{
"message_id": "1725407449772531712",
"send_channel": "sms"
}
{
"message_id": "1725407449772531712",
"send_channel": "sms"
}
このコードブロックはフローティングウィンドウ内に表示されます
返される send_channel の値は、ユーザーにメッセージを最終的に配信するために使用されたチャネルを表すものではない点に注意してください。これは、現在使用中のチャネルのみを示します。たとえば、テンプレート戦略が WhatsApp チャネルでの配信に失敗した場合に SMS チャネルで自動的に再試行するよう設定されている場合、API レスポンスでは whatsapp が返されます。その後、一定時間が経過して配信失敗が検出されると、システムは SMS チャネルを通じてメッセージを送信します。
失敗レスポンス
HTTP ステータスコードは 4xx または 5xx で、レスポンスボディには以下のフィールドが含まれます。
| Field | Type | Required | Description |
|---|---|---|---|
| code | int | 必須 | エラーコード。詳細は Error Codes を参照してください |
| message | String | 必須 | エラーの詳細 |
{
"code": 5001,
"message": "sms send fail"
}
{
"code": 5001,
"message": "sms send fail"
}
このコードブロックはフローティングウィンドウ内に表示されます
Error Codes
| Error Code | HTTP Code | Description |
|---|---|---|
| 1000 | 500 | 内部エラー |
| 2001 | 401 | 認証に失敗しました。正しいトークンが提供されていません |
| 2002 | 401 | 認証に失敗しました。トークンの有効期限が切れているか、無効化されています |
| 2004 | 403 | この API を呼び出す権限がありません |
| 3001 | 400 | リクエストパラメーターの形式が無効です。JSON コンテンツが必要なパラメーター形式に一致しているか確認してください |
| 3002 | 400 | リクエストパラメーターが無効です。リクエストパラメーターが要件を満たしているか確認してください |
| 3003 | 400 | リクエストパラメーターが無効です。関連する業務検証に失敗しました。詳細は message フィールドのエラー説明を参照してください |
| 3004 | 400 | 頻度制限を超えています。同じテンプレートおよび同じ対象ユーザーに対して、認証コードの有効期間内は再度配信できません |
| 4001 | 400 | 関連リソースが存在しません。たとえば、テンプレートメッセージ送信時に存在しないテンプレートが使用されています |
| 5001 | 400 | 送信に失敗しました(一般/その他) |
| 5011 | 400 | 電話番号の形式が無効です |
| 5012 | 400 | 宛先に到達できません |
| 5013 | 400 | 番号がブラックリストに追加されています |
| 5014 | 400 | コンテンツが仕様に準拠していません |
| 5015 | 400 | メッセージがブロック/拒否されました |
| 5016 | 400 | 内部送信エラー |
| 5017 | 400 | 中国本土への送信権限がありません |
| 5018 | 400 | 電話の問題(電源オフ/回線停止) |
| 5019 | 400 | ユーザーは配信停止しています |
| 5020 | 400 | 番号が未登録、または無効な番号です |










