Help center
この機能をご利用いただける方
- Pro または Plus の admin が呼び出し用の API キーを作成できます。読み取りには
helpdesk.helpcenter:read、書き込みにはhelpdesk.helpcenter:writeが必要です。スコープのない旧キーは拒否されます。 - ストアで Helpdesk を使用している必要があります。使用していない場合、すべてのルートが
403 HELPDESK_DISABLEDを返します。 - カスタム CSS には Plus プランが必要です。
すべてのパスは Public API base URL を使います。各リクエストに X-Api-Key を付けてください。読み取りはボディなしの GET で、200 を返します。
| メソッド | パス | 返す内容 |
|---|---|---|
| GET | /help-center/settings | ブランディング、連絡先、SEO、言語、ストアページの設定 |
| GET | /help-center/overview | 記事とカテゴリーの件数、プレビューリンク、ストアページの状態 |
| GET | /help-center/search-analytics | お客様の検索内容(結果が 0 件だった検索を含む) |
| PATCH | /help-center/settings | リビジョン番号で保護された設定の変更 |
| PUT | /help-center/store-page | Shopify ストア上の Help center ページの公開、移動、削除 |
| POST | /help-center/store-colors/sync | ストアのテーマの色を再度読み取る |
| POST | /help-center/assets/{kind} | ロゴ、白色ロゴ、ファビコンのアップロード |
helpdesk.helpcenter:write でできること
同じスコープでも、使う場所によって動作が異なります。
- この Public API と Chatty MCP では、 Help center を直接変更します。対象は設定、ストアページ、ストアの色、ブランドアセットです。変更はすぐに保存され、呼び出したキーとともに監査ログに記録されます。
- Helpdesk agent API と Helpdesk MCP tool では、 エージェントが記事とカテゴリーの作成・更新(削除は提案できません)を、Helpdesk tools の
propose_create_article、propose_update_article、propose_create_category、propose_update_categoryで提案できます。各提案は Helpdesk で担当者が承認または却下し、元に戻すこともできます。それまでは何も変わりません。REST では、エージェントはX-Api-Keyを付けてPOST https://app.chatty.net/hd/v1/agent/help-center/proposalsに同じ提案を送り、同じパスへのGETで自分の提案を一覧できます。
他の Helpdesk 書き込みスコープと同様に、すべての Helpdesk 読み取りスコープも付与されます。OAuth 接続では Help center を読み取ることしかできません。
Settings
GET /help-center/settings は、保存されている設定をデフォルト値に重ねて返します。一度も変更していないストアではデフォルト値が返ります。
{
"data": {
"settings": {
"branding": {"title": "Help Center", "colorPreset": "store", "colorTheme": "light", "categoryLayout": "accordion"},
"customDomain": {"status": "unverified"},
"storePage": {"enabled": false, "handle": "helpcenter", "shopifyPageId": null},
"seo": {"metaTitle": "Help Center", "enableIndexing": true, "generateSitemap": true},
"contactMethods": {"liveChat": {"enabled": true, "label": "Chat with us"}, "email": {"enabled": false}},
"contactForm": {"enabled": false, "customFields": []},
"language": {"code": "en", "direction": "ltr"},
"revision": 0
}
}
}この例は抜粋です。customDomain.status は unverified、checking、active、failed のいずれかです。保存された設定には、customCss、customDomain.domain、seo.ogImageUrl も含まれることがあります。ドメイン認証用の DNS レコードは、このレスポンスには含まれません。
Overview
{
"data": {
"articles": {"draft": 3, "published": 24, "internal": 2},
"categories": {"empty": 1, "total": 6},
"previewArticleSlug": "track-my-order",
"previewUrl": "https://help.example.com/hc/shop_123?preview=1",
"storePage": {"enabled": true, "handle": "helpcenter", "hasShopifyStore": true, "shopifyPageId": "gid://shopify/Page/123", "url": "https://shop.myshopify.com/pages/helpcenter"}
}
}articles.publishedは、お客様に表示される公開済みの一般向け記事の数です。internalは、公開済みで一般向けではない記事の数です。categories.emptyは、記事が 1 件もないカテゴリーの数です。previewArticleSlugは公開済みの一般向け記事の 1 つで、ない場合はnullです。previewUrlもnullになることがあります。storePage.urlは、ストアページが有効な場合のみ値が入り、それ以外はnullです。
Search analytics
periodDays は必須で、7、30、90 のいずれかを指定します。期間は現在時刻までで、UTC で数えます。
curl 'https://app.chatty.net/v1/help-center/search-analytics?periodDays=30' \
-H 'X-Api-Key: sk_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'{
"data": {
"total": 412,
"zeroResult": 37,
"topQueries": [{"query": "refund", "count": 58, "resultsCount": 4, "lastSearchedAt": "2026-10-22T09:12:00.000Z"}],
"byDay": [{"date": "2026-10-21", "count": 19}],
"zeroResultQueries": [{"query": "warranty", "count": 9, "lastSearchedAt": "2026-10-22T07:40:00.000Z"}]
}
}topQueries と zeroResultQueries はそれぞれ最大 50 件で、検索回数の多い順に並びます。resultsCount は、そのクエリで確認された結果数の最大値です。byDay は日付順です。結果が 0 件だったクエリは、次に書くべき記事の候補として役立ちます。
Change settings
PATCH /help-center/settings は、最後に読み取った revision と、変更したい設定を受け取ります。設定の形は GET レスポンスの settings と同じです。省略したフィールドは値が変わりません。
curl -X PATCH 'https://app.chatty.net/v1/help-center/settings' \
-H 'X-Api-Key: sk_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' \
-H 'Content-Type: application/json' \
-d '{"revision":3,"branding":{"title":"Support","primaryColor":"#1A1A1A"},"seo":{"metaTitle":"Support"}}'{"success":true,"revision":4}- リビジョンロック。 読み取りの後に他の誰かが保存すると、
revisionが一致しなくなり、ルートは409 STALE_SETTINGSを返します。設定を読み直して変更をやり直し、新しいrevisionで再試行してください。保存に成功するたびに 1 増えます。 - 指定できるトップレベルのフィールドは
branding、contactMethods、contactForm、contactPage、customDomain、language、seo、customCssです。それ以外のフィールドは400 VALIDATION_FAILEDになります。ストアページは下記の専用ルートを使います。 - 色は
#1A1A1Aのような 16 進数で指定します。テキストフィールドには文字数の上限があり、たとえばseo.metaTitleは 70 文字までです。contactPageの地図には住所が必要です。 customCss(最大 51,200 文字)には Plus プランが必要で、Plus 未満では403 CUSTOM_CSS_REQUIRES_PLUSを返します。保存済みの値をそのまま送り返す場合は、どのプランでも使えます。
Store page
PUT /help-center/store-page は {"enabled":true,"handle":"help"} を受け取ります。handle は省略可能で、小文字の英字、数字、ハイフンを使い、255 文字までです。省略した場合は、現在のハンドルまたは helpcenter が使われます。
enabled: trueは、Help center を表示するページを Shopify ストア上に作成または更新し、ハンドルが変わるとページを移動します。初回は、ストアの色も読み取ります。enabled: falseは、そのページをストアから削除します。- レスポンスは
{"success":true}です。ページの URL はGET /help-center/overviewで確認してください。
他のページがすでに使っているハンドルは 409 STORE_PAGE_HANDLE_TAKEN を返します。Shopify に接続していないストアは 400 STORE_PAGE_SHOPIFY_UNAVAILABLE を返します。Shopify 側の失敗は 502 を返します。
Store colors
POST /help-center/store-colors/sync はボディを取りません。ストアの現在のテーマの色を読み取り、store カラープリセットが使う branding.storeColors に保存します。{"success":true} を返し、revision は変わらないため、先に読み取った設定の下書きもそのまま保存できます。色を読み取れないテーマは status: "unreadable" で保存されます。Shopify に接続していないストアは 400 STORE_COLORS_SHOPIFY_UNAVAILABLE を返します。
Brand assets
POST /help-center/assets/{kind} は画像を 1 枚アップロードします。kind は logo、whiteLogo、favicon のいずれかです。
kind | 形式 | 最大サイズ |
|---|---|---|
logo, whiteLogo | PNG, JPEG, SVG | 1 MB |
favicon | PNG, ICO, SVG | 256 KB |
ファイルをちょうど 1 つ含む multipart、または mimeType、dataBase64、任意の name を含む JSON のどちらかで送ります。
curl -X POST 'https://app.chatty.net/v1/help-center/assets/logo' \
-H 'X-Api-Key: sk_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' \
-F '[email protected]'{"data":{"url":"https://cdn.example.com/help-center/shop_123/logo/logo.png"}}成功時は 201 です。ファイルの内容は種類と一致している必要があり、スクリプトを含む SVG ファイルは 400 INVALID_FILE で拒否されます。アップロードだけでは、まだ Help center は変わりません。返された url を PATCH /help-center/settings で保存してください(たとえば branding.logoUrl や branding.faviconUrl)。ストレージの失敗は 502 STORAGE_UPLOAD_FAILED を返します。
ルートのハンドラーまで届いた書き込みは、成功・失敗にかかわらず、呼び出したキーとともに監査ログに記録されます。スコープ不足や無効なキーで手前で拒否されたリクエストは記録されません。書き込みは冪等ではないため、結果が不明なリクエストを繰り返す前に設定を読み取ってください。
エラー
| HTTP | コード | 意味 |
|---|---|---|
400 | VALIDATION_FAILED / VALIDATION_ERROR | periodDays がない、または無効です。設定のフィールドまたはストアページのハンドルが無効です。 |
400 | INVALID_FILE | アセットの種類、サイズ、内容が正しくない、またはファイルがちょうど 1 つではありません。 |
400 | STORE_PAGE_SHOPIFY_UNAVAILABLE / STORE_COLORS_SHOPIFY_UNAVAILABLE | ストアが Shopify に接続されていません。 |
401 | UNAUTHENTICATED / INVALID_API_KEY | キーがない、不明、または失効しています。 |
403 | FORBIDDEN | helpdesk.helpcenter:read または helpdesk.helpcenter:write がない、または旧キーです。 |
403 | CUSTOM_CSS_REQUIRES_PLUS | Plus 未満での customCss の変更です。 |
403 | HELPDESK_DISABLED | ストアで Helpdesk を使用していません。 |
404 | NOT_FOUND | ストアが見つかりません。 |
409 | STALE_SETTINGS | revision が古くなっています。読み直して再試行してください。 |
409 | STORE_PAGE_HANDLE_TAKEN | そのハンドルはストア上ですでに使われています。 |
429 | RATE_LIMITED | Public API 共通の上限に達しました。 |
502 / 503 | Shopify またはストレージのコード | Shopify のページ、テーマ、またはストレージの呼び出しに失敗しました。再試行する前に現在の状態を読み取ってください。 |
MCP では、manage_help_center が API キーまたは OAuth で同じリソースを読み取り、書き込みは API キーのみで行います。公開済みの記事を検索するには、API キー用のツール search_help_center と get_help_center_search_terms を使います。MCP ツールリファレンスを参照してください。
Chatty Help Center