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/categories | conversations:read | 本文なし | {"data":[{"categoryId":"category_123","name":"Delivery"}],"success":true} |
| POST | /shortcuts/categories | conversations: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 | /shortcuts | conversations: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 | /shortcuts | conversations: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 | /campaigns | campaigns: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 | /campaigns | campaigns: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}/publish | campaigns:write | {"confirm":true} | 200: {"data":{"id":"campaign_123","status":"active"},"success":true} |
| POST | /campaigns/reorder | campaigns:write | {"items":[{"id":"campaign_123","priority":1},{"id":"campaign_456","priority":2}]} | 200: {"success":true} |
| POST | /campaigns/defaults | campaigns: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 | エラー | 内容 |
|---|---|---|
400 | VALIDATION_FAILED | Shortcut の categoryId が未指定、Campaign の表示対象が不正、保存時に status: "active" を指定、priority が数値でない、公開確認が未指定、並べ替えのリストが不正、またはテンプレートのプラン制限です。 |
401 | UNAUTHENTICATED / INVALID_API_KEY | キーが未指定、不明、または失効済みです。 |
403 | FORBIDDEN | ルートに必要なスコープがありません。 |
404 | Shortcut not found / Category not found | リソースが存在しないか、別のストアに属します。success: false とともに返ります。 |
404 | Campaign not found / NOT_FOUND | Campaign が存在しないか、別のストアに属します。読み取り・更新では文字列のエラー、削除・公開では error.code を返す場合があります。 |
429 | RATE_LIMITED | Public API の共通制限に達しました。待機時間を設けて再試行してください。 |
500 | INTERNAL_ERROR または操作別のエラー文 | 保存または公開に失敗しました。結果が不明な書き込みを繰り返す前に、保存状態を確認してください。 |
レスポンスの外側の形式はリソースごとに異なり、すべてが error.code を返すわけではありません。Shortcut の保存操作とすべての Campaign の書き込み(失敗した試行を含む)では、認証された実行者が監査記録に残ります。ただし、書き込みが冪等になるわけではありません。作成を繰り返すと別のリソースができる場合があります。
MCP の読み取りには get_shortcuts と get_campaigns、変更には manage_shortcuts と manage_campaigns を使用します。各 action の入力と認証方式別の利用可否は MCP tool reference をご覧ください。
Chatty Help Center