テンプレート管理 API
概要
テンプレート管理 API を使用すると、WABA のテンプレートの作成・読み取り・更新・削除を行い、カスタムタグでテンプレートをグループ分けできます。本ドキュメントは 2 種類のエンドポイントで構成されています。
- テンプレート系エンドポイント:テンプレートリストの取得、テンプレート情報の照会、サンプルメディアファイルのアップロード、テンプレートの作成、テンプレートの更新、テンプレートの削除。
- タグ系エンドポイント:テンプレートタグリストの取得、テンプレートタグの作成、テンプレートタグの変更、テンプレートタグの削除、テンプレートタグの設定。タグは現在の API キーが属する WABA 内で有効です。EngageLab 側のテンプレート管理にのみ使用され、WhatsApp のテンプレート内容を変更したり、Meta の再審査をトリガーしたりすることはありません。
認証
EngageLab REST API は、HTTP 基本認証を使用して検証を行います。HTTP ヘッダーに Authorization を追加してください:
Authorization: Basic ${base64_auth_string}
base64_auth_string は次のように生成されます:base64(dev_key:dev_secret)
- ヘッダー名は「Authorization」で、値は base64 エンコードされた「username:password」ペア(コロンで区切られています)です。
- WhatsApp API のコンテキストでは、username は DevKey、password は DevSecret です。コンソール - 設定管理 - API キーページから取得してください。
テンプレートリストの取得
エンドポイント
GET https://wa.api.engagelab.cc/v1/templates
リクエストパラメータ
| パラメータ | タイプ | オプション | 説明 |
|---|---|---|---|
| name | String | 任意 | テンプレート名。このフィールドは部分一致で検索されます。 |
| language_code | String | 任意 | テンプレートの言語。言語コードをご参照ください。 |
| category | String | 任意 | テンプレートのカテゴリ。 ● AUTHENTICATION:認証コード ● MARKETING:マーケティング ● UTILITY:サービス通知 |
| status | String | 任意 | テンプレートのステータス: 開発者が主に注目すべきなのは APPROVED/PENDING/REJECTED/DISABLED です。 |
| tag_id | String | 任意 | タグ ID。タグでテンプレートを絞り込むために使用します。指定できる値:ungrouped - タグが 1 つも設定されていないテンプレートのみを返す(大文字小文字を区別しない) |
tag_id は name、language_code、category、status などの検索条件と AND 関係になります。現在、複数のタグを一度に指定することはできません。tag_id の形式が不正な場合はエラーコード 3002、タグが存在しないか現在の WABA に属していない場合はエラーコード 4001 が返ります。
注意:WABA 内に「未分類」または ungrouped という名前のタグが存在する場合、そのタグで絞り込むには数値のタグ ID を指定する必要があります。ungrouped をそのまま指定した場合は、常に「タグが設定されていないテンプレートを絞り込む」として扱われます。
リクエスト例
タグで絞り込む:
GET https://wa.api.engagelab.cc/v1/templates?tag_id=101
タグが設定されていないテンプレートを絞り込む:
GET https://wa.api.engagelab.cc/v1/templates?tag_id=ungrouped
レスポンスパラメータ
| パラメータ | タイプ | オプション | 説明 |
|---|---|---|---|
| id | String | 必須 | テンプレート ID |
| name | String | 必須 | テンプレート名 |
| language | String | 必須 | テンプレートの言語。言語コードをご参照ください。 |
| category | String | 必須 | テンプレートのカテゴリ。 |
| components | Object Array | 必須 | テンプレート内容のコンポーネント。テンプレートの作成の components オブジェクトをご参照ください。 |
| status | String | 必須 | テンプレートのステータス: 開発者が主に注目すべきなのは APPROVED/PENDING/REJECTED/DISABLED です。 |
| tags | Object Array | 必須 | 現在テンプレートに設定されているタグ。タグが未設定の場合は空の配列を返します。 |
レスポンス例
// JSON 配列。配列内の各オブジェクトが 1 件のテンプレート情報です
[
{
"id": "406979728071589", // テンプレート ID
"name": "code", // テンプレート名
"language": "zh_CN", // テンプレートの言語
"status": "APPROVED", // ステータス。APPROVED は承認済みで利用可能
"category": "OTP", // カテゴリ。現在 OTP/TRANSACTIONAL/MARKETING に対応
"components": [ // テンプレートの内容。HEADER/BODY/FOOTER/BUTTON を含められます
{
"type": "HEADER",
"format": "text", // フォーマット。text/image/location/video/document に対応、既定は TEXT
"text": "登録認証コード" // テキスト内容。format が text の場合は必須
},
{
"type": "BODY",
"text": "認証コードは {{1}} です。5 分以内に入力してください。" // 二重波かっこ {{}} で囲まれた部分がテンプレート変数
}
],
"tags": [ // このテンプレートに設定されているタグ。未設定の場合は空の配列
{
"id": "101",
"name": "配送通知"
}
]
},
......
]
テンプレート情報の照会
エンドポイント
GET https://wa.api.engagelab.cc/v1/templates/{template_id}
{template_id} は照会するテンプレートの ID です。
リクエストパラメータ
NULL
リクエスト例
GET https://wa.api.engagelab.cc/v1/templates/406979728071589
レスポンスパラメータ
| パラメータ | タイプ | オプション | 説明 |
|---|---|---|---|
| id | String | 必須 | テンプレート ID |
| name | String | 必須 | テンプレート名 |
| language | String | 必須 | テンプレートの言語。言語コードをご参照ください。 |
| category | String | 必須 | テンプレートのカテゴリ。 注意:テンプレートのカテゴリは遅くとも 2023 年 5 月 1 日に次のとおり更新されました: |
| components | Object Array | 必須 | テンプレート内容のコンポーネント。テンプレートの作成の components オブジェクトをご参照ください。 |
| status | String | 必須 | テンプレートのステータス: APPROVED, IN_APPEAL, PENDING, REJECTED, PENDING_DELETION, DELETED, DISABLED, PAUSED, LIMIT_EXCEEDED |
| tags | Object Array | 必須 | 現在テンプレートに設定されているタグ。タグが未設定の場合は空の配列を返します。 |
レスポンス例
{
"id": "406979728071589", // テンプレート ID
"name": "code", // テンプレート名
"language": "zh_CN", // テンプレートの言語
"status": "APPROVED", // ステータス。APPROVED は承認済みで利用可能
"category": "OTP", // カテゴリ。現在 OTP/TRANSACTIONAL/MARKETING に対応
"components": [ // テンプレートの内容。HEADER/BODY/FOOTER/BUTTON を含められます
{
"type": "HEADER",
"format": "text", // フォーマット。text/image/location/video/document に対応、既定は TEXT
"text": "登録認証コード" // テキスト内容。format が text の場合は必須
},
{
"type": "BODY",
"text": "認証コードは {{1}} です。5 分以内に入力してください。" // 二重波かっこ {{}} で囲まれた部分がテンプレート変数
}
],
"tags": [ // このテンプレートに設定されているタグ。未設定の場合は空の配列
{
"id": "101",
"name": "配送通知"
}
]
}
サンプルメディアファイルのアップロード
メディア(image、video、document)ヘッダーを含むテンプレートを作成または編集する場合、Meta はメディアファイルを事前に Meta のサーバーへアップロードすることを求めています。この API はテンプレートのサンプルファイルをアップロードして handle_id を取得する機能を提供します。この ID を、テンプレートの作成/編集エンドポイントの header_handle フィールドに指定します。
エンドポイント
POST https://wa.api.engagelab.cc/v1/media/handles
リクエストパラメータ
Content-Type: multipart/form-data
| パラメータ | タイプ | オプション | 説明 |
|---|---|---|---|
| file | file | 必須 | サンプルメディアファイル。サイズ上限は 20 MB。フォーマット要件は メディアメッセージのフォーマット要件 をご参照ください。 |
リクエスト例
POST '/v1/media/handles'
--header 'Authorization: Basic amlndWFuZ2RldjpkZXZfc2VjcmV0'
--form 'file=@"/Users/demo/files/demopic.jpeg"'
レスポンスパラメータ
成功レスポンス
| フィールド | タイプ | オプション | 説明 |
|---|---|---|---|
| handle_id | String | 必須 | Meta が返すファイル識別子。テンプレートの作成/編集時に example.header_handle フィールドに指定します。 |
レスポンス例:
{
"handle_id": "4::aW1hZ2UvanBlZw==:ARb2JGd8LbvJbfmpMASFAlczcn4hxLC6tkwjasjD4WL6_i34tIisq0IdWNFFFj1KwJMRXPU4xwygHSJd4DHu1f19LcBBl2qeb8EuEcgnIUPYIQ:e:1682169041:4985146461608173:100084026087657:ARazr9kxfzKshJE4WpY"
}
失敗レスポンス
HTTP ステータスコードは 4xx または 5xx で、レスポンスボディには次のフィールドが含まれます:
| フィールド | タイプ | オプション | 説明 |
|---|---|---|---|
| code | int | 必須 | エラーコード |
| message | String | 必須 | エラーの詳細 |
レスポンス例:
{
"code": 3002,
"message": "whatsapp.template field must be set correctly when type is template"
}
テンプレートの作成
エンドポイント
POST https://wa.api.engagelab.cc/v1/templates
呼び出し例
{
"name": "template_name", // テンプレート名。同名のテンプレートを作成可能。小文字・数字・アンダースコアのみ使用可
"language": "zh_CN", // テンプレートの言語。同名テンプレート内で同じ言語は使用不可
"category": "OTP", // カテゴリ。現在 OTP/TRANSACTIONAL/MARKETING に対応
"components": [
{ // テンプレートの内容
"type": "BODY", // コンテンツブロック。現在 HEADER/BODY/FOOTER/BUTTONS に対応
"text": "define var as {{1}}" // 本文テキスト。body が text の場合、format フィールドは不要
"example": {
"body_text": [
[
"var1"
]
]
}
},
{
"type": "HEADER",
"format": "image", // コンテンツタイプ。text/image/video/document/location に対応
"example": {
"header_handle": [
"https://jiguang.cn/demopic.jpg"
]
}
},
{
"type": "FOOTER",
"text": "footer only support text without variable"
},
{
"type": "BUTTONS",
"buttons": [
{
"type": "PHONE_NUMBER", // ボタンの種類。PHONE_NUMBER/URL/QUICK_REPLY に対応
"text": "this is a phone number",
"phone_number": "8613800138000"
}
]
}
]
}
リクエストパラメータ
| パラメータ | タイプ | オプション | 説明 |
|---|---|---|---|
| name | String | 必須 | テンプレート名。小文字・数字・アンダースコアのみ使用可、512 文字以内。 |
| language | String | 必須 | テンプレートの言語。言語コードをご参照ください。 |
| category | String | 必須 | テンプレートのカテゴリ。 注意:テンプレートのカテゴリは遅くとも 2023 年 5 月 1 日に次のとおり更新されました: |
| components | Object Array | 必須 | テンプレート内容を記述するコンポーネント。components オブジェクトの説明をご参照ください。type=BODY の components を必ず含める必要があります。 |
components オブジェクト
このオブジェクトはテンプレートの内容を記述します。テンプレートは「ヘッダー HEADER」「本文 BODY」「フッター FOOTER」「ボタン BUTTONS」のコンポーネントで構成され、type で指定します。コンポーネントの種類ごとに使用できるパラメータが異なります。
header ヘッダーコンポーネント
header コンポーネント全体は任意です。ヘッダーが不要な場合は、このコンポーネントを指定しないでください。
| パラメータ | タイプ | オプション | 説明 |
|---|---|---|---|
| type | String | 必須 | コンポーネントの種類。値:HEADER |
| format | String | 必須 | ヘッダーの形式。値:text、image、video、document(それぞれテキスト、画像、動画、ファイル)。 |
| text | String | 任意 | ヘッダーのテキスト内容。format=text の場合にこのフィールドを設定します。ヘッダーのテキストには変数を設定できますが、設定できるのは 1 個のみで、{{1}} と表記します。 |
| example | JSON Object | 任意 | ヘッダーのサンプル。text に変数が含まれる場合、または format がメディア形式の場合は必須です。example オブジェクトの説明をご参照ください。 |
example オブジェクトの説明
| パラメータ | タイプ | オプション | 説明 |
|---|---|---|---|
| header_handle | String Array | 任意 | format が image、video、document の場合は必須。このフィールドはメディア URL の指定に対応しなくなりました。サンプルメディアファイルのアップロード API で取得した handle_id を指定してください。 |
| header_text | String Array | 任意 | format が text で変数を含む場合、このフィールドにその変数の置換値を指定します。例:"header_text": ["var1"] |
body 本文コンポーネント
body コンポーネントは必須です。本文の内容を必ず設定してください。
| パラメータ | タイプ | オプション | 説明 |
|---|---|---|---|
| type | String | 必須 | コンポーネントの種類。値:BODY |
| text | String | 必須 | 本文の内容。1024 文字以内。複数の変数を設定できます。変数は二重波かっこと変数番号で構成し、番号は 1 から始めて連番にします(例:{{1}}、{{2}})。 |
| example | JSON Object | 任意 | 本文のサンプル。Meta の審査担当者はこのサンプルをもとにメッセージのコンプライアンスを判断します。example オブジェクトの説明をご参照ください。text に変数が含まれる場合は必須です。 |
example オブジェクトの説明
| パラメータ | タイプ | オプション | 説明 |
|---|---|---|---|
| body_text | String Array | 任意 | text に変数が含まれる場合、このフィールドにすべての変数の置換値を、変数番号の順に指定します。例:"body_text": [["var1","var2","var3"]] |
footer フッターコンポーネント
footer コンポーネント全体は任意です。フッターが不要な場合は、このコンポーネントを指定しないでください。
| パラメータ | タイプ | オプション | 説明 |
|---|---|---|---|
| type | String | 必須 | コンポーネントの種類。値:FOOTER |
| text | String | 必須 | フッターの内容。プレーンテキストのみ設定でき、変数は定義できません。 |
buttons ボタンコンポーネント
buttons コンポーネント全体は任意です。ボタンが不要な場合は、このコンポーネントを指定しないでください。
| パラメータ | タイプ | オプション | 説明 |
|---|---|---|---|
| type | String | 必須 | コンポーネントの種類。値:BUTTONS |
| buttons | Object Array | 必須 | ボタンの情報。buttons オブジェクトの説明をご参照ください。 |
buttons オブジェクトの説明
| パラメータ | タイプ | オプション | 説明 |
|---|---|---|---|
| type | String | 必須 | ボタンの種類。値:QUICK_REPLY、URL、PHONE_NUMBER(それぞれクイック返信、ウェブサイトを開く、電話をかける)。 |
| text | String | 必須 | ボタンに表示される文言。変数は使用できません。プレーンテキストのみ、25 文字以内。 |
| url | String | 任意 | type=URL の場合は必須。URL の末尾に変数を設定できますが、設定できるのは 1 個のみで、{{1}} と表記します。 |
| phone_number | String | 任意 | type=PHONE_NUMBER の場合は必須。**変数は使用できません。**国番号を含む電話番号を指定します。 |
| example | String Array | 任意 | type=QUICK_REPLY および type=URL の場合は必須。 例:"example": [" https://www.website.com/dynamic-url-example"] |
認証カテゴリに関する特記事項
注意事項
認証カテゴリ(AUTHENTICATION)のテンプレートについて:
- Components に HEADER コンポーネントを設定しないでください。
- テンプレートの本文テキストは、テンプレートの language フィールドに従って自動的にローカライズされます。
- アプリを開く ONE_TAP モードは現在 Android アプリのみ対応しており、お客様のアプリ側でハンドシェイク処理を実装する必要があります。詳しい手順は公式ドキュメント - 認証テンプレートをご覧ください。
- **テンプレート作成時に送信するパラメータと、作成後に WhatsApp 側に記録されるテンプレートのフィールドは一致しません。実質的に WhatsApp 側でこのカテゴリのテンプレートの BODY、FOOTER、BUTTONS が置き換えられます。**そのためテンプレートメッセージを送信する際は特にご注意ください。button 変数を追加する必要があります。詳細は メッセージ送信 API ドキュメントをご参照ください。
COPY_CODE の例
送信するデータ:
{
"name": "copycodetmpl",
"language": "zh_CN",
"category": "AUTHENTICATION",
"components": [
{
// body は必須
"type": "BODY",
"add_security_recommendation": true // セキュリティ推奨文を追加するかどうか
},
{
// footer は任意
"type": "FOOTER",
"code_expiration_minutes": 2 // 有効期限の表示を追加。範囲 [1,90]。追加しない場合はこのフィールドを指定しない
},
{
"type": "BUTTONS",
"buttons": [
{
"type": "OTP",
"otp_type": "copy_code",
"text": "copy it" // 25 文字以内
}
]
}
]
}
作成成功後、WhatsApp 側に実際に登録されるテンプレートの内容:
{
"name": "copycodetmpl",
"language": "zh_CN",
"category": "AUTHENTICATION",
"components": [
{
"type": "BODY",
"text": "*{{1}}* が認証コードです。安全のため、このコードを共有しないでください。",
"example": {
"body_text": [
["123456"]
]
}
},
{
"type": "FOOTER",
"text": "この認証コードは 2 分後に期限切れになります。"
},
{
"type": "BUTTONS",
"buttons": [{
"type": "URL",
"text": "Copy code",
"url": "https://www.whatsapp.com/otp/code/?otp_type=COPY_CODE&code=otp{{1}}",
"example": [
"https://www.whatsapp.com/otp/code/?otp_type=COPY_CODE&code=otp123456"
]
}]
}
]
}
ONE_TAP の例
送信するデータ:
{
"name": "copycodetmpl",
"language": "zh_CN",
"category": "AUTHENTICATION",
"components": [
{
// body は必須
"type": "BODY",
"add_security_recommendation": true // セキュリティ推奨文を追加するかどうか
},
{
// footer は任意
"type": "FOOTER",
"code_expiration_minutes": 2 // 有効期限の表示を追加。範囲 [1,90]。追加しない場合はこのフィールドを指定しない
},
{
"type": "BUTTONS",
"buttons": [
{
"type": "OTP",
"otp_type": "one_tap",
"text": "auto1", // 25 文字以内
"autofill_text": "auto1", // 25 文字以内
"package_name": "ppssd",
"signature_hash": "asds"
}
]
}
]
}
作成成功後、WhatsApp 側に実際に登録されるテンプレートの内容:
{
"name": "copycodetmpl",
"language": "zh_CN",
"category": "AUTHENTICATION",
"components": [
{
"type": "BODY",
"text": "*{{1}}* が認証コードです。安全のため、このコードを共有しないでください。",
"example": {
"body_text": [
["123456"]
]
}
},
{
"type": "FOOTER",
"text": "この認証コードは 2 分後に期限切れになります。"
},
{
"type": "BUTTONS",
"buttons": [{
"type": "URL",
"text": "copy1",
"url": "https://www.whatsapp.com/otp/code/?otp_type=ONE_TAP&cta_display_name=auto1&package_name=ppssd&signature_hash=asds&code=otp{{1}}",
"example": ["https://www.whatsapp.com/otp/code/?otp_type=ONE_TAP&cta_display_name=auto1&package_name=ppssd&signature_hash=asds&code=otp123456"]
}]
}
]
}
レスポンスパラメータ
成功レスポンス
| パラメータ | タイプ | オプション | 説明 |
|---|---|---|---|
| template_id | String | 必須 | テンプレート ID。成功時に返されます。 |
{
"template_id": "1275172986566180" // テンプレート ID
}
失敗レスポンス
| パラメータ | タイプ | オプション | 説明 |
|---|---|---|---|
| code | int | 必須 | エラーコード。失敗時に返されます。 |
| message | String | 必須 | エラーメッセージ。失敗時に返されます。 |
{
"code": 5002,
"message": "Invalid parameter. code:100:2388042"
}
テンプレートの更新
エンドポイント
PUT https://wa.api.engagelab.cc/v1/templates/{templateId}
呼び出し例
{
"components": [{ // テンプレートの内容
"type": "BODY", // コンテンツブロック
"text": "define var as {{1}}",
"example": {
"body_text": [["var1"]]
}
},{
"type": "HEADER",
"format": "image", // コンテンツタイプ:image/video/document
"example": {
// 注意:ここにはアップロードエンドポイントが返した handle_id を指定する必要があります。画像 URL の直接指定には対応しなくなりました
"header_handle": ["4::aW1hZ2UvanBlZw==:ARb2JGd8LbvJbfmpMASFAlcz..."]
}
},{
"type": "FOOTER",
"text": "footer only support text without variable"
},{
"type": "BUTTONS",
"buttons": [{
"type": "PHONE_NUMBER",
"text": "this is a phone number",
"phone_number": "8613800138000"
}]
}]
}
リクエストパラメータ
テンプレートの作成エンドポイントの リクエストパラメータ と同じです。
レスポンスパラメータ
成功レスポンス
| パラメータ | タイプ | オプション | 説明 |
|---|---|---|---|
| code | int | 必須 | レスポンスコード。常に 0 |
| message | String | 必須 | レスポンスメッセージ。常に success |
{
"code": 0,
"message": "success"
}
失敗レスポンス
| パラメータ | タイプ | オプション | 説明 |
|---|---|---|---|
| code | int | 必須 | エラーコード。失敗時に返されます。 |
| message | String | 必須 | エラーメッセージ。失敗時に返されます。 |
{
"code": 5002,
"message": "Invalid parameter. code:100:2593002"
}
テンプレートの削除
エンドポイント
DELETE https://wa.api.engagelab.cc/v1/templates/{template_name}
注意:ここで指定するのはテンプレート ID ではなくテンプレート名です。その名前のテンプレートの全言語版が削除されます。
レスポンスパラメータ
成功レスポンス
| パラメータ | タイプ | オプション | 説明 |
|---|---|---|---|
| code | int | 必須 | レスポンスコード。常に 0 |
| message | String | 必須 | レスポンスメッセージ。常に success |
{
"code": 0,
"message": "success"
}
失敗レスポンス
| パラメータ | タイプ | オプション | 説明 |
|---|---|---|---|
| code | int | 必須 | エラーコード。失敗時に返されます。 |
| message | String | 必須 | エラーメッセージ。失敗時に返されます。 |
{
"code": 2004,
"message": "something error"
}
テンプレートタグリストの取得
現在の API キーが属する WABA 配下のすべてのタグを返します(ページングなし)。
エンドポイント
GET https://wa.api.engagelab.cc/v1/template-tags
リクエストパラメータ
NULL
リクエスト例
GET https://wa.api.engagelab.cc/v1/template-tags
レスポンスパラメータ
| パラメータ | タイプ | オプション | 説明 |
|---|---|---|---|
| id | String | 必須 | タグ ID |
| name | String | 必須 | タグ名 |
| template_count | Integer | 必須 | 現在の WABA 内でこのタグが設定されているテンプレートの数。同名で言語が異なるテンプレートは、テンプレート ID ごとに個別にカウントされます。 |
レスポンス例
[
{
"id": "101",
"name": "配送通知",
"template_count": 3
},
{
"id": "102",
"name": "アフターサポート",
"template_count": 0
}
]
WABA にタグがない場合は空の配列 [] を返します。
テンプレートタグの作成
エンドポイント
POST https://wa.api.engagelab.cc/v1/template-tags
リクエストパラメータ
| パラメータ | タイプ | オプション | 説明 |
|---|---|---|---|
| name | String | 必須 | タグ名。1〜64 文字。命名要件は タグ名のルール をご参照ください。 |
リクエスト例
{
"name": "配送通知"
}
レスポンスパラメータ
成功レスポンス
| パラメータ | タイプ | オプション | 説明 |
|---|---|---|---|
| id | String | 必須 | タグ ID |
| name | String | 必須 | 正規化後のタグ名 |
{
"id": "101",
"name": "配送通知"
}
失敗レスポンス
| パラメータ | タイプ | オプション | 説明 |
|---|---|---|---|
| code | int | 必須 | エラーコード。失敗時に返されます。 |
| message | String | 必須 | エラーメッセージ。失敗時に返されます。 |
{
"code": 3003,
"message": "template tag name already exists"
}
テンプレートタグの変更
エンドポイント
PUT https://wa.api.engagelab.cc/v1/template-tags/{tag_id}
{tag_id} は変更するタグの ID です。
リクエストパラメータ
| パラメータ | タイプ | オプション | 説明 |
|---|---|---|---|
| name | String | 必須 | 新しいタグ名。1〜64 文字。命名要件は タグ名のルール をご参照ください。 |
リクエスト例
{
"name": "アフターサポート"
}
レスポンスパラメータ
成功レスポンス
| パラメータ | タイプ | オプション | 説明 |
|---|---|---|---|
| id | String | 必須 | タグ ID |
| name | String | 必須 | 変更後のタグ名 |
{
"id": "101",
"name": "アフターサポート"
}
失敗レスポンス
| パラメータ | タイプ | オプション | 説明 |
|---|---|---|---|
| code | int | 必須 | エラーコード。失敗時に返されます。 |
| message | String | 必須 | エラーメッセージ。失敗時に返されます。 |
{
"code": 4001,
"message": "template tag not found"
}
テンプレートタグの削除
エンドポイント
DELETE https://wa.api.engagelab.cc/v1/template-tags/{tag_id}
注意:タグを削除しても、テンプレートとそのタグの関連付けが解除されるだけです。テンプレート自体は削除されず、メッセージ送信にも影響しません。
{tag_id} は削除するタグの ID です。
リクエストパラメータ
NULL
リクエスト例
DELETE https://wa.api.engagelab.cc/v1/template-tags/101
レスポンスパラメータ
成功レスポンス
| パラメータ | タイプ | オプション | 説明 |
|---|---|---|---|
| affected_template_count | Integer | 必須 | 今回関連付けが解除されたテンプレートの数。同名で言語が異なるテンプレートは、テンプレート ID ごとに個別にカウントされます。 |
{
"affected_template_count": 3
}
失敗レスポンス
| パラメータ | タイプ | オプション | 説明 |
|---|---|---|---|
| code | int | 必須 | エラーコード。失敗時に返されます。 |
| message | String | 必須 | エラーメッセージ。失敗時に返されます。 |
{
"code": 4001,
"message": "template tag not found"
}
テンプレートタグの設定
エンドポイント
PUT https://wa.api.engagelab.cc/v1/templates/{template_id}/tags
注意:このエンドポイントは全件上書きです。tag_ids には保存後のテンプレートが持つタグの完全な集合を指定します。含まれていない既存のタグは関連付けが解除されます。
{template_id} はタグを設定するテンプレートの ID です。
リクエストパラメータ
| パラメータ | タイプ | オプション | 説明 |
|---|---|---|---|
| tag_ids | String Array | 必須 | 保存後のテンプレートが持つタグ ID の完全な集合。明示的に指定する必要があり、null は指定できません。すべての ID は現在の WABA に属している必要があり、重複した ID は自動的に除去されます。 |
tag_ids の指定について:
[]を指定すると、そのテンプレートのすべてのタグがクリアされます。- tag_ids を指定しない場合や
nullを指定した場合はリクエストが失敗し、既存のタグはクリアされません。 - リクエストが失敗した場合、テンプレートのタグ集合は変更されないため、そのまま再試行できます。
- 1 つのテンプレートに設定できるタグ数に制限はなく、現在の WABA のすべてのタグを指定できます。
リクエスト例
{
"tag_ids": ["101", "102"]
}
レスポンスパラメータ
成功レスポンス
| パラメータ | タイプ | オプション | 説明 |
|---|---|---|---|
| code | int | 必須 | レスポンスコード。常に 0 |
| message | String | 必須 | レスポンスメッセージ。常に success |
{
"code": 0,
"message": "success"
}
失敗レスポンス
| パラメータ | タイプ | オプション | 説明 |
|---|---|---|---|
| code | int | 必須 | エラーコード。失敗時に返されます。 |
| message | String | 必須 | エラーメッセージ。失敗時に返されます。 |
テンプレートが存在しない、または現在の WABA に属していない場合:
{
"code": 4001,
"message": "template not found"
}
タグが存在しない、または現在の WABA に属していない場合:
{
"code": 4001,
"message": "template tag not found"
}
tag_ids が未指定、または null の場合:
{
"code": 3002,
"message": "template tag IDs must be provided as an array"
}
エラーコード
下表の「タグ系エンドポイント」とは、概要 に挙げた 5 つのタグ系エンドポイントを指し、テンプレートリストの取得で tag_id による絞り込みを行うケースも含みます。
| エラーコード | HTTP コード | 対象エンドポイント | 説明 |
|---|---|---|---|
| 1000 | 500 | すべてのエンドポイント | 内部エラー |
| 2001 | 401 | すべてのエンドポイント | EngageLab 側の認証失敗。有効な形式のトークンが指定されていません |
| 2002 | 401 | すべてのエンドポイント | EngageLab 側の認証失敗。トークンの有効期限切れ、または無効化されています |
| 2003 | 400 | すべてのエンドポイント | WhatsApp 側の認証失敗。EngageLab カスタマーサポートにお問い合わせください |
| 2004 | 403 | すべてのエンドポイント | この API を呼び出す権限がない、または関連するアカウントや WABA が無効化されています |
| 3001 | 400 | すべてのエンドポイント | リクエストパラメータの形式が不正です。JSON 形式であるか、フィールドの型が要件を満たしているか確認してください |
| 3002 | 400 | すべてのエンドポイント | リクエストパラメータに誤りがあります。要件を満たしているか確認してください |
| 3002 | 400 | タグ系エンドポイント | タグ名が空です |
| 3002 | 400 | タグ系エンドポイント | タグ名が 64 文字を超えています。タグ名のルール をご参照ください |
| 3002 | 400 | タグ系エンドポイント | タグ名に使用できない文字が含まれています。タグ名のルール をご参照ください |
| 3002 | 400 | タグ系エンドポイント | タグ ID の形式が不正です。正の整数の文字列である必要があります |
| 3002 | 400 | タグ系エンドポイント | テンプレートタグの設定時に tag_ids が指定されていない、またはその値が null です |
| 3003 | 400 | すべてのエンドポイント | リクエストパラメータに誤りがあります。関連する業務チェックに失敗しました |
| 3003 | 400 | タグ系エンドポイント | 同一 WABA 内に同じタグ名が既に存在します。重複判定では大文字小文字とアクセント記号を区別しません |
| 3003 | 400 | タグ系エンドポイント | 1 つの WABA のタグ数が上限の 20 件に達しています |
| 3003 | 400 | タグ系エンドポイント | タグ操作が混み合っています。しばらくしてから再試行してください。再試行しても重複データは発生しません |
| 4001 | 400 | すべてのエンドポイント | テンプレートが存在しない、または現在の WABA に属していません |
| 4001 | 400 | タグ系エンドポイント | タグが存在しない、または現在の WABA に属していません |
| 5002 | 400 | すべてのエンドポイント | テンプレートのリクエストが Meta 側で失敗しました。詳細は message フィールドのエラー内容をご参照ください |
補足
メディアメッセージのフォーマット要件
| メディアの種類 | 対応するフォーマット Content-Type | サイズ上限 |
|---|---|---|
| image | image/jpeg, image/png(透過背景は非対応) | 5 MB |
| video | video/mp4 | 16MB |
| document | PDF 形式のみ対応 | 100 MB |
タグ名のルール
タグの作成・変更時、サーバー側でまず名前を正規化し、その後で文字数と重複をチェックします。
正規化:前後の空白を除去し、名前の中の連続する空白文字を 1 つの半角スペースにまとめます。たとえば " 配送 通知 " を送信した場合、実際に保存・返却される名前は "配送 通知" になります。
文字の制限:半角スペース、アンダースコア、ハイフン、各言語の表示可能な文字、絵文字を使用できます。改行、タブ、制御文字、不可視の書式制御文字は使用できません。
文字数:正規化後に 1〜64 文字である必要があります。文字数は Unicode コードポイントで数えるため、絵文字 1 つが複数のコードポイントを占める場合があります。
重複判定:同一 WABA 内で名前を重複させることはできません。重複判定では大文字小文字とアクセント記号を区別しないため、たとえば Logistics、logistics、Logístics は同じ名前として扱われます。予約語の制限はありません。
タグの利用制限
- 1 つの WABA につき、作成できるタグは最大 20 件です。
- 1 つのテンプレートに設定できるタグ数に制限はなく、現在の WABA の既存タグをすべて設定できるため、実質的な上限は 20 件です。
- タグ ID はリクエスト・レスポンスのいずれでも文字列です(例:
"101")。数値型として解析しないでください。 - 同名で言語が異なるテンプレートは、それぞれのテンプレート ID ごとに個別にタグを設定します。たとえば同じテンプレートの日本語版と英語版は別々に設定する必要があります。
- タグは Meta には書き込まれません。テンプレートのステータスや品質評価を変更せず、再審査もトリガーしません。
言語コード
| 言語 | Code |
|---|---|
| アフリカーンス語 | af |
| アルバニア語 | sq |
| アラビア語 | ar |
| アゼルバイジャン語 | az |
| ベンガル語 | bn |
| ブルガリア語 | bg |
| カタルーニャ語 | ca |
| 中国語(中国本土) | zh_CN |
| 中国語(香港) | zh_HK |
| 中国語(台湾) | zh_TW |
| クロアチア語 | hr |
| チェコ語 | cs |
| デンマーク語 | da |
| オランダ語 | nl |
| 英語 | en |
| 英語(イギリス) | en_GB |
| 英語(アメリカ) | en_US |
| エストニア語 | et |
| フィリピン語 | fil |
| フィンランド語 | fi |
| フランス語 | fr |
| ジョージア語 | ka |
| ドイツ語 | de |
| ギリシャ語 | el |
| グジャラート語 | gu |
| ハウサ語 | ha |
| ヘブライ語 | he |
| ヒンディー語 | hi |
| ハンガリー語 | hu |
| インドネシア語 | id |
| アイルランド語 | ga |
| イタリア語 | it |
| 日本語 | ja |
| カンナダ語 | kn |
| カザフ語 | kk |
| ルワンダ語 | rw_RW |
| 韓国語 | ko |
| キルギス語 | ky_KG |
| ラオ語 | lo |
| ラトビア語 | lv |
| リトアニア語 | lt |
| マケドニア語 | mk |
| マレー語 | ms |
| マラヤーラム語 | ml |
| マラーティー語 | mr |
| ノルウェー語 | nb |
| ペルシャ語 | fa |
| ポーランド語 | pl |
| ポルトガル語(ブラジル) | pt_BR |
| ポルトガル語(ポルトガル) | pt_PT |
| パンジャブ語 | pa |
| ルーマニア語 | ro |
| ロシア語 | ru |
| セルビア語 | sr |
| スロバキア語 | sk |
| スロベニア語 | sl |
| スペイン語 | es |
| スペイン語(アルゼンチン) | es_AR |
| スペイン語(スペイン) | es_ES |
| スペイン語(メキシコ) | es_MX |
| スワヒリ語 | sw |
| スウェーデン語 | sv |
| タミル語 | ta |
| テルグ語 | te |
| タイ語 | th |
| トルコ語 | tr |
| ウクライナ語 | uk |
| ウルドゥー語 | ur |
| ウズベク語 | uz |
| ベトナム語 | vi |
| ズールー語 | zu |
言語と対応するコードの一覧は、次のファイルをダウンロードしてご確認いただくこともできます:
テンプレート言語コード.xlsx










