InstagramグラフAPIを使って、InstagramビジネスのIGメディアに対してInstagramショッピング商品タグを作成し管理することができます。
注: 2023年8月10日より、チェックアウト可能なショップを持たない一部のビジネスは、コンテンツ公開APIを使用って商品にタグ付けすることができなくなります。これはAPIとネイティブインターフェイスの両方に影響を及ぼし、過去の投稿から製品へのタグが削除されます。FacebookとInstagramでチェックアウトを有効にしておけば、顧客は引き続きショップの商品をタグ付けできます。Instagramアカウントがコンテンツ公開APIを使用して商品をタグ付けできるかどうか、引き続きshopping_product_tag_eligibility
フィールドを参照して確認できます。
商品タグ付けの一般的な流れは、次のとおりです。
instagram_shopping_tag_products
とcatalog_management
のアクセス許可に関するアプリレビューの承認をリクエストするには、アプリが認証されたビジネスに関連付けられていなければなりません。GET /{ig-user-id}
— アプリユーザーのタグ付け資格をチェックします。GET /{ig-user-id}/available_catalogs
— アプリユーザーの商品カタログのリストを取得します。GET /{ig-user-id}/catalog_product_search
— アプリユーザーのカタログから、タグ付け対象商品のリストを取得します。POST /{ig-user-id}/media
— タグ付きメディアコンテナを作成します(公開処理のステップ1)。POST /{ig-user-id}/media_publish
— タグ付きメディアコンテナを公開します(公開処理のステップ2)。GET /{ig-media-id}/product_tags
— 公開済みIGメディアに付けられているタグを取得します。DELETE /{ig-media-id}/product_tags
— 公開済みIGメディアに付けられているタグを削除します。POST /{ig-media-id}/product_tags
— 公開済みIGメディアのタグを作成または更新します。GET /{ig-user-id}/product_appeal
— 商品異議申し立て情報を取得します。POST /{ig-user-id}/product_appeal
— 商品却下についての異議申し立てをします。GET /{ig-media-id}/children
— カルーセルIGメディア内の子IGメディアのリストを取得します。InstagramビジネスアカウントがInstagramショップを設定しているかどうかを確認するため、IGユーザーエンドポイントでshopping_product_tag_eligibility
フィールドをリクエストします。Instagramショップを設定していないアカウントには、商品タグ付けの資格がありません。
GET /{ig-user-id}?fields=shopping_product_tag_eligibility
Instagramビジネスアカウントがビジネスマネージャの承認済みInstagramショップに関連付けられていればtrue
を、関連付けられていなければfalse
を返します。
curl -i -X GET \
"https://graph.facebook.com/v19.0
/90010177253934?fields=shopping_product_tag_eligibility&access_token=EAAOc..."
{ "shopping_product_tag_eligibility": true, "id": "90010177253934" }
IGユーザー利用可能カタログエンドポイントを使って、Instagramビジネスアカウントの商品カタログを取得します。
GET /{ig-user-id}/available_catalogs
カタログとそのメタデータの配列を返します。応答には、以下のカタログフィールドが含まれることがあります。
catalog_id
— カタログID。catalog_name
— カタログ名。shop_name
— ショップ名。product_count
— カタログに含まれる商品の合計数。ショッピングパートナーカタログやアフィリエイトクリエイターカタログなどのコラボレーションカタログはサポートされていません。
curl -i -X GET \
"https://graph.facebook.com/v19.0
/90010177253934?fields=available_catalogs&access_token=EAAOc..."
{ "available_catalogs": { "data": [ { "catalog_id": "960179311066902", "catalog_name": "Jay's Favorite Snacks", "shop_name": "Jay's Bespoke", "product_count": 11 } ] }, "id": "90010177253934" }
IGユーザーカタログ商品検索エンドポイントカタログからメディアのタグ付けに使うことのできる商品のコレクションを取得します。商品バリエーションがサポートされています。
未承認の商品にタグが付いている投稿を公開してもAPIからエラーは返されませんが、商品が承認されるまでは、公開された投稿にタグは表示されません。したがって、アプリユーザーに公開を許可する投稿は、商品のreview_status
がapproved
であるタグの付いたものだけにするようおすすめします。このフィールドは、アプリユーザーの対象商品を取得した時点で、デフォルトで商品ごとに返されます。
GET /{ig-user-id}/catalog_product_search
catalog_id
— (必須) カタログID。q
— 各商品名または商品のSKU番号の中から検索する文字列(カタログ管理インターフェイスの[Content ID (コンテンツID)]コラム)。文字列が指定されていない場合、タグ付け可能な商品すべてが返されます。 タグ付け対象商品とそのメタデータの配列を含むオブジェクトを返します。カーソルによるページ移動がサポートされています。応答には、以下の商品フィールドが含まれることがあります。
image_url
— 商品画像のURL。is_checkout_flow
— true
なら、Instagramアプリの中で直接商品を購入できます。false
なら、アプリユーザーのアプリ/ウェブサイトの中で商品を購入する必要があります。merchant_id
— 販売者ID。product_id
— 商品ID。product_name
— 商品名。retailer_id
— 小売店ID。review_status
— 審査ステータス。可能な値は、approved
、outdated
、pending
、rejected
です。承認された商品はアプリユーザーのInstagramショップに表示可能ですが、承認済みステータスは商品の在庫があることを示すものではありません(商品が在庫切れの場合もあります)。公開された投稿に表示されるタグは、review_status
がapproved
の商品に関連するものだけです。
curl -i -X GET \
"https://graph.facebook.com/v19.0
/90010177253934/catalog_product_search?catalog_id=960179311066902&q=gummy&access_token=EAAOc..."
{ "data": [ { "product_id": 3231775643511089, "merchant_id": 90010177253934, "product_name": "Gummy Wombats", "image_url": "https://scont...", "retailer_id": "oh59p9vzei", "review_status": "approved", "is_checkout_flow": true, "product_variants": [ { "product_id": 5209223099160494 }, { "product_id": 7478222675582505, "variant_name": "Green Gummy Wombats" } ] } ] }
IGユーザーメディアエンドポイントを使って、画像または動画のメディアコンテナを作成します。または、リールのタグ付きメディアコンテナを作成するまたはカルーセルをご覧ください。
POST /{ig-user-id}/media
image_url
— (画像の場合のみ必須)画像のパス。画像は公開サーバー上になければなりません。user_tags
— (画像のみ)画像でタグ付けする任意の公開Instagramユーザーの、公開ユーザーネームとx/y座標系の配列。この配列はJSON形式でなければならず、username
、x
、y
のプロパティが含まれていなければなりません。例えば、[{username:'natgeo',x:0.5,y:1.0}]
のようになります。x
とy
の値は、画像の左上を起点とする浮動小数点数値であり、その範囲は0.0
–1.0
です。タグ付けされたユーザーは、メディアが公開されると通知を受け取ります。video_url
— (動画の場合のみ必須)動画のパス。動画は公開サーバー上になければなりません。thumb_offset
— (動画のみ)動画のカバーサムネイル画像に使うフレームの位置(ミリ秒)。デフォルト値は0
であり、動画の最初のフレームを表します。product_tags
— (必須)画像または動画に追加する商品タグを指定するオブジェクトの配列。写真と動画フィードの投稿に最大20個のタグと、カルーセル投稿あたり最大合計20個のタグ(カルーセルスライドにつき最大5個のタグ)を指定できます。
product_id
— (必須) 商品ID。x
— (画像のみ)公開メディア画像の左境界からの距離をパーセントで示す浮動小数点数。0.0
以上1.0
以下の範囲の値でなければなりません。y
— (画像のみ)公開メディア画像の上境界からの距離をパーセントで示す浮動小数点数。0.0
以上1.0
以下の範囲の値でなければなりません。処理が成功すると、APIからコンテナIDが返されます。このコンテナIDは、コンテナを公開する際に使うことができます。
curl -i -X POST \
"https://graph.facebook.com/v19.0
/90010177253934/media?image_url=https%3A%2F%2Fupl...&location_id=7640348500&product_tags=%5B%0A%20%20%7B%0A%20%20%20%20product_id%3A'3231775643511089'%2C%0A%20%20%20%20x%3A%200.5%2C%0A%20%20%20%20y%3A%200.8%0A%20%20%7D%0A%5D&access_token=EAAOc..."
参考までに、以下にHTMLデコードされたPOSTペイロード文字列を示します。
https://graph.facebook.com/v12.0/90010177253934/media?image_url=https://upl...&location_id=7640348500 &product_tags=[ { product_id:'3231775643511089', x: 0.5, y: 0.8 } ]&access_token=EAAOc...
{ "id": "17969578066508312" }
IGユーザーメディアエンドポイントを使って、リールのメディアコンテナを作成します。または、タグ付きメディアコンテナを作成するまたはカルーセルをご覧ください。
POST /{ig-user-id}/media
media_type
— メディアタイプREELS
を指定する必要があります。video_url
— リール動画のパス。動画は公開サーバー上になければなりません。動画はリールの仕様を満たしていなければなりません。thumb_offset
— (動画のみ)動画のカバーサムネイル画像に使うフレームの位置(ミリ秒)。デフォルト値は0
であり、動画の最初のフレームを表します。caption
— リールのキャプション。product_tags
— (必須)リールに追加する商品タグを指定するオブジェクトの配列。最大30件のタグを指定できます。タグと商品IDは一意でなければなりません。在庫切れ商品に対するタグがサポートされています。各オブジェクトで以下の情報が必要です。product_id
— (必須)商品ID。location_id
— 動画にタグ付けする所在地に関連したページのID。詳しくは、IGユーザーメディアのクエリ文字列パラメーターをご覧ください。share_to_feed
— [フィード]タブと[リール]タブの両方に動画が表示されるようリクエストするにはtrue
。[リール]タブでのみ動画が表示されるようリクエストするにはfalse
。access_token
— ユーザーアクセストークン。処理が成功すると、APIからコンテナIDが返されます。コンテナを公開する際に、このコンテナIDを使うことができます。
curl -i -X POST \
"https://graph.facebook.com/v19.0
/90010177253934/media?media_type=REELS&video_url=https://upl...&product_tags=%5B%0A%20%20%7B%0A%20%20%20%20product_id%3A'3231775643511089'%0A%20%20%7D%0A%5D&access_token=EAAOc..."
参考までに、以下にHTMLデコードされたPOSTペイロード文字列を示します。
https://graph.facebook.com/v12.0/90010177253934/media?media_type=REELS&video_url=https://upl... &product_tags=[ { product_id:'3231775643511089' } ]&access_token=EAAOc...
{ "id": "17969578066508312" }
IGユーザーメディア公開エンドポイントを使って、タグ付きメディアコンテナを公開します。アプリユーザーのためにタグ付きメディアコンテナを、24時間の移動時間枠内に25個まで公開できます。カルーセルを公開する場合は、カルーセルをご覧ください。公開済み投稿に表示されるのは、review_status
がapproved
の商品だけです。それらの商品のいずれかが在庫切れの場合も、そのタグは引き続き公開済み投稿に表示されたままになります。
POST /{ig-user-id}/media_publish
creation_id
— (必須)カルーセルコンテナID。処理が成功した場合、APIからIGメディアIDが返されます。
curl -i -X POST \
"https://graph.facebook.com/v19.0
/90010177253934/media_publish?creation_id=17969578066508312&access_token=EAAOc"
{ "id": "90010778325754" }
IGメディア商品タグエンドポイントを使って、公開済みIGメディアに付けられたタグを取得します。
GET /{ig-media-id}/product_tags
IGメディアに付けられた商品タグとそのメタデータの配列が返されます。応答には、以下の商品タグフィールドが含まれることがあります。
product_id
— 商品ID。merchant_id
— 販売者ID。name
— 商品名。price_string
— 商品の価格。image_url
— 商品画像のURL。review_status
— 商品タグの資格ステータスを示します。値は次のいずれかです。approved
— 商品は承認済みです。rejected
— 商品は却下されました。pending
— まだ審査中です。outdated
— 商品は承認されましたが、その後編集されたため再承認が必要です。""
— 審査ステータスなし。no_review
— 審査ステータスなし。is_checkout
— true
なら、Instagramアプリを通じて直接商品を購入できます。false
なら、商品は販売者のウェブサイト上でのみ購入可能です。stripped_price_string
— 商品の短縮価格文字列(スペースに制約がある場合の価格。100 USD
の代わりに$100
と表示するなど)。string_sale_price_string
— 商品の販売価格。x
— メディア画像の左境界からの距離をパーセントで示す浮動小数点数。0.0
以上1.0
以下の範囲の値。y
— メディア画像の上境界からの距離をパーセントで示す浮動小数点数。0.0
~1.0
の範囲の値。
curl -i -X GET \
"https://graph.facebook.com/v19.0
/90010778325754/product_tags?access_token=EAAOc..."
{ "data": [ { "product_id": 3231775643511089, "merchant_id": 90010177253934, "name": "Gummy Wombats", "price_string": "$3.50", "image_url": "https://scont...", "review_status": "approved", "is_checkout": true, "stripped_price_string": "$3.50", "x": 0.5, "y": 0.80000001192093 } ] }
IGメディア商品タグエンドポイントを使って、既存のIGメディアに対してタグを作成したり更新したりします。
POST /{ig-media-id}/product_tags
updated_tags
— (必須)画像または動画にどの商品タグを付けるかを指定するオブジェクトの配列(最大5。タグと商品IDは一意でなければなりません)。各オブジェクトで以下の情報が必要です。product_id
— (必須)商品ID。IGメディアにこのIDでタグ付けされていない場合、タグがそのIGメディアに追加されます。メディアにこのIDでのタグ付けがすでになされている場合、タグの表示座標が更新されます。x
— (画像のみ、必須)公開メディア画像の左境界からの距離をパーセントで示す浮動小数点数。0.0
以上1.0
以下の範囲の値でなければなりません。y
— (画像のみ、必須)公開メディア画像の上境界からの距離をパーセントで示す浮動小数点数。0.0
以上1.0
以下の範囲の値でなければなりません。メディアへのタグは制限の5個に達するまで追加されていきます。ターゲットのメディアがリクエスト中の商品によってすでにタグ付けされている場合、古いタグのx
とy
の値が、新しい値に更新されます(新しいタグは追加されません)。
商品の更新が可能な場合はtrue
、それ以外の場合はfalse
が返されます。
curl -i -X POST \
"https://graph.facebook.com/v19.0
/90010778325754/product_tags?updated_tags=%5B%0A%20%20%7B%0A%20%20%20%20product_id%3A'3859448974125379'%2C%0A%20%20%20%20x%3A%200.5%2C%0A%20%20%20%20y%3A%200.8%0A%20%20%7D%0A%5D&access_token=EAAOc..."
参考までに、以下にHTMLデコードされたPOSTペイロード文字列を示します。
https://graph.facebook.com/v12.0/90010778325754/product_tags?updated_tags=[ { product_id:'3859448974125379', x: 0.5, y: 0.8 } ]&access_token=EAAOc...
{ "success": true }
IGメディア商品タグエンドポイントを使って、リールを含め、公開済みIGメディアに付けられたタグを削除します。
DELETE /{ig-media-id}/product_tags
deleted_tags
— (必須)削除する商品タグごとに以下の情報が含まれる配列。merchant_id
— (必須)販売者ID。product_id
— (必須)商品ID。タグの削除が成功した可能はtrue
、それ以外の場合はfalse
が返されます。
curl -i -X DELETE \
"https://graph.facebook.com/v19.0
/90010778325754/product_tags?deleted_tags=%5B%0A%20%20%7B%0A%20%20%20%20product_id%3A'3859448974125379'%2C%0A%20%20%20%20merchant_id%3A'90010177253934'%0A%20%20%7D%0A%5D&access_token=EAAOc..."
参考までに、以下にHTMLデコードされたPOSTペイロード文字列を示します。
https://graph.facebook.com/v12.0/90010778325754/product_tags?deleted_tags=[ { product_id:'3859448974125379', merchant_id:'90010177253934' } ]&access_token=EAAOc...
{ "success": true }
商品却下について異議を申し立てるための手段をアプリユーザーに提供する場合は、IGユーザー商品異議申し立てエンドポイントを使います(却下された商品のタグは公開済み投稿に表示されません)。必須ではありませんが、アプリユーザーに対して却下への異議を申し立てるための手段を提供するか、ビジネスマネージャを使って却下への異議を申し立てるよう提案することをおすすめします。
POST /{ig-user-id}/product_appeal
appeal_reason
— (必須)商品の承認を主張する理由。product_id
— (必須)商品ID。当社でリクエストを受け付け可能な場合はtrue
、それ以外の場合はfalse
が返されます。応答は異議申し立ての結果を示すものではありません。
curl -i -X POST \
"https://graph.facebook.com/v19.0
/90010177253934/product_appeal?appeal_reason=product%20is%20a%20toy%20and%20not%20a%20real%20weapon&product_id=4382881195057752&access_token=EAAOc..."
{ "success": true }
IGユーザー商品異議申し立てエンドポイントを使って、却下された特定の商品についての異議申し立てのステータスを取得します。
GET /{ig-user-id}/product_appeal
product_id
— (必須)商品ID。異議申し立てステータスメタデータを返します。応答には、以下の異議申し立てフィールドが含まれることがあります。
eligible_for_appeal
— 審査結果について異議申し立てが可能かどうかを示します(可能な場合はtrue
、可能でない場合はfalse
)。product_id
— 商品ID。review_status
— 審査ステータス。値は次のいずれかです。approved
— 商品は承認済みです。rejected
— 商品は却下されました。pending
— まだ審査中です。outdated
— 商品は承認されましたが、その後編集されたため再承認が必要です。""
— 審査ステータスなし。no_review
— 審査ステータスなし。
curl -i -X GET \
"https://graph.facebook.com/v19.0
/90010177253934/product_appeal?product_id=4029274203846188&access_token=EAAOc..."
{ "data": [ { "product_id": 4029274203846188, "review_status": "approved", "eligible_for_appeal": false } ] }
タグ付けされた画像、動画、またはそれらをミックスさせたものを合計で最大10個まで含むカルーセル(アルバム)を公開できます。そのためには、カルーセル投稿公開プロセスの3つのうち1番目のステップを実行する際に、アルバムカルーセルに表示するタグ付けされた各画像または各動画のタグ付けメディアコンテナを作成してから、カルーセル公開プロセスを通常通りに続行します。
アルバムカルーセルのIGメディアのIDを取得するには、IGメディア子エンドポイントを使います。