テンプレート管理 API

概要

テンプレート管理 API を使用すると、WABA のテンプレートの作成・読み取り・更新・削除を行い、カスタムタグでテンプレートをグループ分けできます。本ドキュメントは 2 種類のエンドポイントで構成されています。

認証

EngageLab REST API は、HTTP 基本認証を使用して検証を行います。HTTP ヘッダーに Authorization を追加してください:

Authorization: Basic ${base64_auth_string}
              
              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 - 却下
  • PENDING_DELETION - 削除中
  • DELETED - 削除済み
  • DISABLED - 無効(利用停止)
  • IN_APPEAL - 異議申し立て中
  • PAUSED - 一時停止
    開発者が主に注目すべきなのは APPROVED/PENDING/REJECTED/DISABLED です。
  • tag_id String 任意 タグ ID。タグでテンプレートを絞り込むために使用します。指定できる値:
  • 未指定または空文字列 - タグで絞り込まない
  • タグ 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=101
    
                
    このコードブロックはフローティングウィンドウ内に表示されます

    タグが設定されていないテンプレートを絞り込む:

    GET https://wa.api.engagelab.cc/v1/templates?tag_id=ungrouped
                  
                  GET https://wa.api.engagelab.cc/v1/templates?tag_id=ungrouped
    
                
    このコードブロックはフローティングウィンドウ内に表示されます

    レスポンスパラメータ

    パラメータ タイプ オプション 説明
    id String 必須 テンプレート ID
    name String 必須 テンプレート名
    language String 必須 テンプレートの言語。言語コードをご参照ください。
    category String 必須 テンプレートのカテゴリ。
  • AUTHENTICATION
  • MARKETING
  • UTILITY
  • components Object Array 必須 テンプレート内容のコンポーネント。テンプレートの作成の components オブジェクトをご参照ください。
    status String 必須 テンプレートのステータス:
  • APPROVED - 承認済み
  • PENDING - 審査中
  • REJECTED - 却下
  • PENDING_DELETION - 削除中
  • DELETED - 削除済み
  • DISABLED - 無効(利用停止)
  • IN_APPEAL - 異議申し立て中
  • PAUSED - 一時停止
    開発者が主に注目すべきなのは APPROVED/PENDING/REJECTED/DISABLED です。
  • tags Object Array 必須 現在テンプレートに設定されているタグ。タグが未設定の場合は空の配列を返します。
  • tags[].id - String、タグ ID
  • tags[].name - String、タグ名
  • レスポンス例

    // 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": "配送通知" } ] }, ...... ]
                  
                  // 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
                  
                  GET https://wa.api.engagelab.cc/v1/templates/406979728071589
    
                
    このコードブロックはフローティングウィンドウ内に表示されます

    レスポンスパラメータ

    パラメータ タイプ オプション 説明
    id String 必須 テンプレート ID
    name String 必須 テンプレート名
    language String 必須 テンプレートの言語。言語コードをご参照ください。
    category String 必須 テンプレートのカテゴリ。
  • OTP:ワンタイムパスワード
  • MARKETING:マーケティング
  • TRANSACTIONAL:トランザクション
    注意:テンプレートのカテゴリは遅くとも 2023 年 5 月 1 日に次のとおり更新されました:
  • AUTHENTICATION
  • MARKETING
  • UTILITY
  • components Object Array 必須 テンプレート内容のコンポーネント。テンプレートの作成の components オブジェクトをご参照ください。
    status String 必須 テンプレートのステータス:
    APPROVED, IN_APPEAL, PENDING, REJECTED, PENDING_DELETION, DELETED, DISABLED, PAUSED, LIMIT_EXCEEDED
    tags Object Array 必須 現在テンプレートに設定されているタグ。タグが未設定の場合は空の配列を返します。
  • tags[].id - String、タグ ID
  • tags[].name - String、タグ名
  • レスポンス例

    { "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": "配送通知" } ] }
                  
                  {
        "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"'
                  
                  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" }
                  
                  {
        "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" }
                  
                  {
        "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": "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 必須 テンプレートのカテゴリ。
  • OTP:ワンタイムパスワード
  • MARKETING:マーケティング
  • TRANSACTIONAL:トランザクション
    注意:テンプレートのカテゴリは遅くとも 2023 年 5 月 1 日に次のとおり更新されました:
  • AUTHENTICATION
  • MARKETING
  • UTILITY
  • 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 コンポーネント全体は任意です。フッターが不要な場合は、このコンポーネントを指定しないでください。

    パラメータ タイプ オプション 説明
    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)のテンプレートについて:

    1. Components に HEADER コンポーネントを設定しないでください。
    2. テンプレートの本文テキストは、テンプレートの language フィールドに従って自動的にローカライズされます。
    3. アプリを開く ONE_TAP モードは現在 Android アプリのみ対応しており、お客様のアプリ側でハンドシェイク処理を実装する必要があります。詳しい手順は公式ドキュメント - 認証テンプレートをご覧ください。
    4. **テンプレート作成時に送信するパラメータと、作成後に 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 文字以内 } ] } ] }
                  
                  {
        "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" ] }] } ] }
                  
                  {
        "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" } ] } ] }
                  
                  {
        "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"] }] } ] }
                  
                  {
        "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 }
                  
                  {
        "template_id": "1275172986566180"		// テンプレート ID
    }
    
                
    このコードブロックはフローティングウィンドウ内に表示されます

    失敗レスポンス

    パラメータ タイプ オプション 説明
    code int 必須 エラーコード。失敗時に返されます。
    message String 必須 エラーメッセージ。失敗時に返されます。
    { "code": 5002, "message": "Invalid parameter. code:100:2388042" }
                  
                  {
        "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" }] }] }
                  
                  {
        "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": 0,
        "message": "success"
    }
    
                
    このコードブロックはフローティングウィンドウ内に表示されます

    失敗レスポンス

    パラメータ タイプ オプション 説明
    code int 必須 エラーコード。失敗時に返されます。
    message String 必須 エラーメッセージ。失敗時に返されます。
    { "code": 5002, "message": "Invalid parameter. code:100:2593002" }
                  
                  {
        "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": 0,
        "message": "success"
    }
    
    
                
    このコードブロックはフローティングウィンドウ内に表示されます

    失敗レスポンス

    パラメータ タイプ オプション 説明
    code int 必須 エラーコード。失敗時に返されます。
    message String 必須 エラーメッセージ。失敗時に返されます。
    { "code": 2004, "message": "something error" }
                  
                  {
        "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
                  
                  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 } ]
                  
                  [
        {
            "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": "配送通知" }
                  
                  {
        "name": "配送通知"
    }
    
                
    このコードブロックはフローティングウィンドウ内に表示されます

    レスポンスパラメータ

    成功レスポンス

    パラメータ タイプ オプション 説明
    id String 必須 タグ ID
    name String 必須 正規化後のタグ名
    { "id": "101", "name": "配送通知" }
                  
                  {
        "id": "101",
        "name": "配送通知"
    }
    
                
    このコードブロックはフローティングウィンドウ内に表示されます

    失敗レスポンス

    パラメータ タイプ オプション 説明
    code int 必須 エラーコード。失敗時に返されます。
    message String 必須 エラーメッセージ。失敗時に返されます。
    { "code": 3003, "message": "template tag name already exists" }
                  
                  {
        "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": "アフターサポート" }
                  
                  {
        "name": "アフターサポート"
    }
    
                
    このコードブロックはフローティングウィンドウ内に表示されます

    レスポンスパラメータ

    成功レスポンス

    パラメータ タイプ オプション 説明
    id String 必須 タグ ID
    name String 必須 変更後のタグ名
    { "id": "101", "name": "アフターサポート" }
                  
                  {
        "id": "101",
        "name": "アフターサポート"
    }
    
                
    このコードブロックはフローティングウィンドウ内に表示されます

    失敗レスポンス

    パラメータ タイプ オプション 説明
    code int 必須 エラーコード。失敗時に返されます。
    message String 必須 エラーメッセージ。失敗時に返されます。
    { "code": 4001, "message": "template tag not found" }
                  
                  {
        "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
                  
                  DELETE https://wa.api.engagelab.cc/v1/template-tags/101
    
                
    このコードブロックはフローティングウィンドウ内に表示されます

    レスポンスパラメータ

    成功レスポンス

    パラメータ タイプ オプション 説明
    affected_template_count Integer 必須 今回関連付けが解除されたテンプレートの数。同名で言語が異なるテンプレートは、テンプレート ID ごとに個別にカウントされます。
    { "affected_template_count": 3 }
                  
                  {
        "affected_template_count": 3
    }
    
                
    このコードブロックはフローティングウィンドウ内に表示されます

    失敗レスポンス

    パラメータ タイプ オプション 説明
    code int 必須 エラーコード。失敗時に返されます。
    message String 必須 エラーメッセージ。失敗時に返されます。
    { "code": 4001, "message": "template tag not found" }
                  
                  {
        "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"] }
                  
                  {
        "tag_ids": ["101", "102"]
    }
    
                
    このコードブロックはフローティングウィンドウ内に表示されます

    レスポンスパラメータ

    成功レスポンス

    パラメータ タイプ オプション 説明
    code int 必須 レスポンスコード。常に 0
    message String 必須 レスポンスメッセージ。常に success
    { "code": 0, "message": "success" }
                  
                  {
        "code": 0,
        "message": "success"
    }
    
                
    このコードブロックはフローティングウィンドウ内に表示されます

    失敗レスポンス

    パラメータ タイプ オプション 説明
    code int 必須 エラーコード。失敗時に返されます。
    message String 必須 エラーメッセージ。失敗時に返されます。

    テンプレートが存在しない、または現在の WABA に属していない場合:

    { "code": 4001, "message": "template not found" }
                  
                  {
        "code": 4001,
        "message": "template not found"
    }
    
                
    このコードブロックはフローティングウィンドウ内に表示されます

    タグが存在しない、または現在の WABA に属していない場合:

    { "code": 4001, "message": "template tag not found" }
                  
                  {
        "code": 4001,
        "message": "template tag not found"
    }
    
                
    このコードブロックはフローティングウィンドウ内に表示されます

    tag_ids が未指定、または null の場合:

    { "code": 3002, "message": "template tag IDs must be provided as an array" }
                  
                  {
        "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 内で名前を重複させることはできません。重複判定では大文字小文字とアクセント記号を区別しないため、たとえば LogisticslogisticsLogí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

    Icon Solid Transparent White Qiyu
    お問い合わせ