ja
API Reference
Shortcuts and Campaigns
💬無料相談を予約

Shortcuts and campaigns

ⓘ

この機能をご利用いただける方

Pro または Plus の admin がスコープ付き API キーを作成できます。Shortcut の読み取りには conversations:read、変更には conversations:write が必要です。Campaign の読み取りには campaigns:read、変更には campaigns:write が必要です。公開時には、その campaign template が利用プランで使用できるかも確認します。

以下のパスは Public API base URL からの相対パスです。各リクエストに X-Api-Key、JSON を送る書き込みには Content-Type: application/json を付けます。スコープのない旧キーでは利用できません。

Shortcuts とカテゴリ

Shortcut は、繰り返し使う回答を既存のカテゴリに保存する機能です。カテゴリのエンドポイントが返す ID を使ってください。ID は認証されたストアに属します。

Shortcut の操作は成功時にすべて 200 を返します。以下の読み取り例では、日時など一部の保存項目を省略しています。GET と DELETE のリクエストに本文は不要です。

メソッドパススコープリクエスト例レスポンス例
GET/shortcuts/categoriesconversations:read本文なし{"data":[{"categoryId":"category_123","name":"Delivery"}],"success":true}
POST/shortcuts/categoriesconversations:write{"name":"Delivery"}{"success":true,"data":{"categoryId":"category_123"}}
PATCH/shortcuts/categories/{id}conversations:write{"name":"Shipping"}{"success":true,"data":{"categoryId":"category_123","name":"Shipping"}}
DELETE/shortcuts/categories/{id}conversations:write本文なし{"success":true}
GET/shortcutsconversations:read?limit=20&name=Delivery{"data":[],"count":0,"pagination":{"hasPre":false,"hasNext":false}}
GET/shortcuts/{id}conversations:read本文なし{"data":{"id":"shortcut_123","name":"Delivery","answer":"We dispatch within two working days.","categoryId":"category_123"},"success":true}
POST/shortcutsconversations:write{"name":"Delivery","answer":"We dispatch within two working days.","categoryId":"category_123"}{"success":true,"data":{"id":"shortcut_123"}}
PATCH/shortcuts/{id}conversations:write{"answer":"We dispatch within one working day."}{"success":true}
DELETE/shortcuts/{id}conversations:write本文なし{"success":true}

Shortcut の書き込みには name、answer、categoryId を指定できます。作成時には categoryId が必要です。更新で省略したフィールドは維持されます。カテゴリを変更する場合は、同じストア内に存在するカテゴリを指定してください。カテゴリを削除しても、その中の Shortcut は削除されません。参照先がなくなることを避けるには、先に Shortcut を移動または削除してください。

GET /shortcuts は、完全一致の name、URL エンコードした JSON 配列の categoryIds、sortOrder に対応しています。一覧では limit(既定値 20)、after(前ページの最後の ID)、before(次ページの先頭の ID)を使用します。pagination.hasNext と pagination.hasPre は前後のページの有無を示します。hasCount=true を指定すると total と pagination.totalPage が追加されます。一覧には各 Shortcut の shortcutId とカテゴリのデータも含まれます。

curl --get 'https://app.chatty.net/v1/shortcuts' \
  -H 'X-Api-Key: sk_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' \
  --data-urlencode 'categoryIds=["category_123"]' \
  --data-urlencode 'limit=20'

Campaigns

まず下書きを作成し、内容を確認してから明示的な確認付きで公開してください。status: "active" を指定した保存は拒否されます。公開用の操作を使用してください。

メソッドパススコープリクエスト例レスポンス例
GET/campaignscampaigns:read?status=inactive&limit=20{"data":[],"count":0,"pagination":{"hasPre":false,"hasNext":false}}
GET/campaigns/{id}campaigns:read本文なし{"data":{"id":"campaign_123","name":"Welcome","templateId":"welcome_message","status":"inactive"},"success":true}
POST/campaignscampaigns:write{"name":"Welcome draft","templateId":"welcome_message"}201: {"data":{"id":"campaign_123","name":"Welcome draft","templateId":"welcome_message","status":"inactive"},"success":true}
PATCH/campaigns/{id}campaigns:write{"name":"Welcome customers"}200: {"data":true,"success":true}
DELETE/campaigns/{id}campaigns:write本文なし200: {"success":true}
POST/campaigns/{id}/publishcampaigns:write{"confirm":true}200: {"data":{"id":"campaign_123","status":"active"},"success":true}
POST/campaigns/reordercampaigns:write{"items":[{"id":"campaign_123","priority":1},{"id":"campaign_456","priority":2}]}200: {"success":true}
POST/campaigns/defaultscampaigns:write本文なし200: {"success":true,"ids":["campaign_789"]}

GET は 200 を返します。Campaign のオブジェクト例には関連するフィールドだけを示しています。作成時には優先順位、カウンター、日時が追加されます。上記の作成例は最小限の非アクティブな下書きです。公開前に内容と表示対象を設定してください。

変更できるフィールドは status、templateId、name、priority、condition、trigger、message、appearance、contentMessageType、quickQuestions です。テンプレート固有のラベルとして、viewSimilarButton、askAboutItButton、viewProductButton、shopNowButton、subscribeButton、skipButton、headerText、itemsInCartText、viewCartButton、completeOrderButton も指定できます。対象テンプレートの入れ子のオブジェクトは GET /campaigns/{id} で取得し、変更可能なフィールドをコピーして必要な箇所を編集してください。入れ子のオブジェクトは送信した形で保存されます。一部だけ送った場合に、同階層のほかの値が必ず維持されるとは限りません。

テンプレート ID は welcome_message、search_page、subscribe_newsletter、product_recommendation、cart_booster、cart_remove_item、abandoned_cart_reminder、browser_collection_page、smart_product_page、view_cart です。trigger.displayOn を変更すると、テンプレートに合う値か検証されます。現行料金体系で Cart booster、Abandoned cart reminder、View cart を公開するには Pro 以上、Browser collection page には有料プランが必要です。旧プランの継続利用条件は維持されます。

Campaign の一覧は status、sort、limit、after、before、hasCount に対応しています。既定では優先順位の昇順です。search を指定すると検索用の処理になるため、同じカーソル形式とは決めつけず、返されたページネーション情報を使用してください。各行には triggered、interacted、addToCart、revenue のカウンターも含まれます。

curl -X POST 'https://app.chatty.net/v1/campaigns/campaign_123/publish' \
  -H 'X-Api-Key: sk_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' \
  -H 'Content-Type: application/json' \
  -d '{"confirm":true}'

公開すると Campaign がアクティブになり、ストアフロントの公開済み Campaign が更新されます。リクエストを送る前に下書きを確認してください。

priority は有限の数値である必要があり、数値が小さいほど先に表示されます。POST /campaigns/reorder は、最大 200 件の Campaign の優先順位を一度に設定します。すべての ID がストアに属している必要があり、そうでない場合は何も変更されず、ルートは 400 VALIDATION_FAILED と Invalid campaign を返します。保存されるのは id と priority だけです。

POST /campaigns/defaults は、現在のプランの既定の Campaign のうちストアにまだないものを、既存の Campaign の後ろに作成します。ids には作成したものが入り、不足がなかった場合は空になります。再度呼び出しても重複は作成されません。既定の Campaign は、すべてのプランで welcome_message、product_recommendation、search_page、Basic 以上で browser_collection_page、Pro 以上で cart_booster と abandoned_cart_reminder です。

!

作成された Welcome message の Campaign はすぐに有効になります。 POST /campaigns/defaults は、公開の確認なしで welcome_message をアクティブな状態で作成します。ほかの既定の Campaign は非アクティブで始まります。呼び出す前に、ストアの Campaign を確認してください。

エラーと書き込み結果

!

HTTP ステータスだけでなく、レスポンス本文も確認してください。 Shortcut の失敗には、200 とともに success: false または error フィールドを返すものがあります。名前が重複している場合は {"success":false,"error":{"name":{"message":"Duplicate shortcut"}}} を返します。200 だけを見て保存成功と判断しないでください。

HTTPエラー内容
400VALIDATION_FAILEDShortcut の categoryId が未指定、Campaign の表示対象が不正、保存時に status: "active" を指定、priority が数値でない、公開確認が未指定、並べ替えのリストが不正、またはテンプレートのプラン制限です。
401UNAUTHENTICATED / INVALID_API_KEYキーが未指定、不明、または失効済みです。
403FORBIDDENルートに必要なスコープがありません。
404Shortcut not found / Category not foundリソースが存在しないか、別のストアに属します。success: false とともに返ります。
404Campaign not found / NOT_FOUNDCampaign が存在しないか、別のストアに属します。読み取り・更新では文字列のエラー、削除・公開では error.code を返す場合があります。
429RATE_LIMITEDPublic API の共通制限に達しました。待機時間を設けて再試行してください。
500INTERNAL_ERROR または操作別のエラー文保存または公開に失敗しました。結果が不明な書き込みを繰り返す前に、保存状態を確認してください。

レスポンスの外側の形式はリソースごとに異なり、すべてが error.code を返すわけではありません。Shortcut の保存操作とすべての Campaign の書き込み(失敗した試行を含む)では、認証された実行者が監査記録に残ります。ただし、書き込みが冪等になるわけではありません。作成を繰り返すと別のリソースができる場合があります。

MCP の読み取りには get_shortcuts と get_campaigns、変更には manage_shortcuts と manage_campaigns を使用します。各 action の入力と認証方式別の利用可否は MCP tool reference をご覧ください。