コンテンツ公開

InstagramグラフAPIを使えば、Instagramプロアカウントで、1つの画像、動画、リール動画(単一メディア投稿)、複数の画像や動画が含まれる投稿(カルーセル投稿)を公開することができます。

2023年7月1日より、Instagramコンテンツ公開APIを通じて公開された単一フィード動画はすべてリールとしてシェアされます。

要件

アクセストークン

すべてのリクエストに、アプリユーザーのユーザーアクセストークンを含めることが必要です。

アクセス許可

公開は、次のアクセス許可の組み合わせに依存しています。厳密な組み合わせは、アプリがどのエンドポイントを使用するかによって異なります。各エンドポイントの必要なアクセス許可を確認するには、エンドポイントのリファレンスをご覧ください。

アプリに対する権限も、アプリを取得したビジネスでの権限も持たないアプリユーザーがアプリを使用する場合、まずアプリレビューにより各アクセス許可の承認をリクエストして、権限のないアプリユーザーがそれらの許可をアプリに付与できるようにしなければなりません。

公開サーバー

公開試行の際に使用されるメディアにcURLが付けられるため、メディアは公開試行の時点で公開アクセス可能なサーバー上でホスティングされていなければなりません。

ページ公開認証

ページ公開認証(PPA)を必要とするページにリンクしているInstagramプロアカウントは、PPAが完了するまで公開できません。

最初はPPAが必要でないものの後になってPPAが必要になるページで、アプリユーザーがタスクを実行できる場合があります。その場合、アプリユーザーは、PPAが完了するまでコンテンツをInstagramプロアカウントに公開できません。アプリユーザーのページにPPAが必要かどうかを確認する方法はないため、事前にPPAを完了しておくようアプリユーザーに促すことをおすすめします。

制限

  • サポートされている画像形式はJPEGだけです。MPOやJPSなどの拡張JPEG形式はサポートされていません。
  • ショッピングタグはサポートされていません。
  • ブランドコンテンツタグはサポートされていません。
  • フィルターはサポートされていません。
  • Instagram TVへの公開はサポートされていません。

その他の制限については、各エンドポイントのリファレンスをご覧ください。

レート制限

InstagramアカウントのAPI公開投稿は、24時間の枠内で50件までに制限されます。カルーセルは1件の投稿としてカウントされます。この制限は、POST /{ig-user-id}/media_publishエンドポイントでメディアコンテナを公開しようとする際に適用されます。アプリでも公開レート制限を適用することをおすすめします(特に、ユーザーが投稿の公開をスケジュール設定できるようにしているアプリの場合)。

Instagramプロアカウントの現在のレート制限使用率を確認するには、GET /{ig-user-id}/content_publishing_limitエンドポイントをクエリします。

エンドポイント

このAPIは次のエンドポイントで構成されています。使用要件については、各エンドポイントのリファレンスドキュメントを参照してください。

単一メディア投稿

単一の画像、動画、ストーリーズ、リール動画の公開は、2ステップの処理です。

  1. POST /{ig-user-id}/mediaエンドポイントを使って、公開サーバーでホスティングされている画像または動画を含むコンテナを作成します。
  2. 次に、POST /{ig-user-id}/media_publishエンドポイントを使用してそのコンテナを公開します。

ステップ1/2: コンテナを作成する

画像が次の場所にあるとします。

https://www.example.com/images/bronz-fonz.jpg

キャプションとしてハッシュタグ「#BronzFonz」を付けて公開するとします。POST /{ig-user-id}/mediaエンドポイントにリクエストを送信します。

リクエストの例

POST https://graph.facebook.com/v19.0/17841400008460056/media
  ?image_url=https://www.example.com/images/bronz-fonz.jpg
  &caption=#BronzFonz

画像のコンテナIDが返されます。

応答の例

{
  "id": "17889455560051444"  // IG Container ID
}

ステップ2/2: コンテナを公開する

前のステップで返されたコンテナIDを、POST /{ig-user-id}/media_publishエンドポイントを使用して公開します。

リクエストの例

POST https://graph.facebook.com/v19.0/17841400008460056/media_publish ?creation_id=17889455560051444

応答の例

{
  "id": "17920238422030506" // IG Media ID
}

カルーセル投稿

1回の投稿で画像、動画、またはそれらのミックス(カルーセル投稿)を10個まで公開できます。カルーセルの公開は、3ステップです。

  1. POST /{ig-user-id}/mediaエンドポイントを使って、カルーセルに表示される各画像と各動画のアイテムコンテナを個別に作成します。
  2. もう一度POST /{ig-user-id}/mediaエンドポイントを使って、これらのアイテムのカルーセルコンテナを1つ作成します。
  3. POST /{ig-user-id}/media_publishエンドポイントを使って、カルーセルコンテナを公開します。

カルーセル投稿は、アカウントのレート制限において1件の投稿としてカウントされます。

制限

  • カルーセルの宣伝はできません。
  • カルーセルの画像、動画、またはそれらのミックスは10個までに制限されています。
  • カルーセルの画像はすべてカルーセルの最初の画像から切り取られます。デフォルトのアスペクト比は1:1です。

ステップ1/3: アイテムコンテナを作成する

POST /{ig-user-id}/mediaエンドポイントを使って、カルーセルに表示される画像や動画のアイテムコンテナを作成します。カルーセルには最大10件の画像、動画、またはこれら2つのミックスを含めることができます。

POST /{ig-user-id}/media

パラメーター

以下のパラメーターは必須です。サポートされるその他のパラメーターについては、POST /{ig-user-id}/mediaエンドポイントのリファレンスをご覧ください。

  • is_carousel_itemtrueに設定します。画像または動画がカルーセル内に表示されることを示します。
  • image_url — (画像のみ)画像へのパス。渡されたURLを使用して画像にcURLを付けます。そのため、公開サーバー上のパスでなければなりません。
  • media_type — (動画のみ) VIDEOに設定されます。メディアが動画であることを示します。
  • video_url — (動画のみ)動画へのパス。渡されたURLを使用して動画にcURLを付けるので、このパスは公開サーバー上のパスでなければなりません。

処理が成功すると、APIからアイテムコンテナIDが返されます。カルーセルコンテナ作成時にそれを使うことができます。

カルーセルに表示する画像や動画ごとに、この処理を繰り返します。

リクエストの例

curl -i -X POST \

"https://graph.facebook.com/v19.0/90010177253934/media?image_url=https%3A%2F%2Fsol...&is_carousel_item=true&access_token=EAAOc..."

応答の例

{
  "id": "17899506308402767"
}

ステップ2/3: カルーセルコンテナを作成する

POST /{ig-user-id}/mediaエンドポイントを使って、カルーセルコンテナを作成します。

POST /{ig-user-id}/media

パラメーター

以下のパラメーターは必須です。サポートされるその他のパラメーターについては、POST /{ig-user-id}/mediaエンドポイントのリファレンスをご覧ください。

  • media_typeCAROUSELに設定されます。コンテナの対象がカルーセルであることを示します。
  • children — 公開されたカルーセルに表示される各画像と各動画の最大10個のコンテナIDの配列。カルーセルには最大10件の画像、動画、またはそれら2つのミックスを使用できます。

リクエストの例

curl -i -X POST \

"https://graph.facebook.com/v19.0/90010177253934/media?caption=Fruit%20candies&media_type=CAROUSEL&children=17899506308402767%2C18193870522147812%2C17853844403701904&access_token=EAAOc..."

応答の例

{
  "id": "18000748627392977"
}

ステップ3/3: カルーセルコンテナを公開する

POST /{ig-user-id}/media_publishエンドポイントを使って、カルーセルコンテナを公開します(カルーセル投稿)。アカウントには、公開投稿は24時間以内に50件までという制限があります。カルーセルの公開は1件の投稿としてカウントされます。

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=18000748627392977&access_token=EAAOc..."

応答の例

{
  "id": "90010778390276"
}

リールの投稿

リールとは、特定の仕様を満たし、当社のアルゴリズムで選択された場合に、Instagramアプリの[リール]タブに表示できる短い形式の動画のことです。リール動画を公開する手順は、単一メディア投稿の公開手順と同じですが、video_urlパラメーターを使う動画へのパスと共にmedia_type=REELSパラメーターを指定してください。

リール動画の公開時にmedia_type=REELSを設定するとはいえ、リールは新しいメディアタイプというわけではありません。リール動画を公開し、次にその動画のmedia_typeフィールドをリクエストした場合、返される値はVIDEOになります。公開済みの動画がリールとして指定されているかどうかを判断するには、代わりにmedia_product_typeフィールドをリクエストします。

GitHubにあるコードサンプル(insta_reels_publishing_api_sample)を使用して、Instagramにリールを公開する方法を学べます。

開発者にとってより便利になるように、MetaはPostman APIプラットフォームでInstagramリールのグラフAPI呼び出しの完全なセットを公開しています。詳細は、FacebookリールとInstagramリールのPostmanコレクションをご覧ください。

リールについて詳しくは、リール開発者向けのドキュメントをご覧ください。

ストーリーズ投稿

現時点では、Content Publishing APIを使用してストーリーズを公開できるのはビジネスアカウントのみです。

ストーリーズとは、Instagram上にIGストーリーズとして投稿される動画や画像のことです。ストーリーズを公開する手順は、単一メディア投稿の公開手順と同じですが、media_type=STORIESパラメーターを指定し、image_urlパラメーターかvideo_urlパラメーターを使って画像/動画へのパスを指定します。

注: ストーリーズの公開時にmedia_type=STORIESを設定するとはいえ、ストーリーズは新しいメディアタイプというわけではありません。ストーリーズを公開し、次にその動画のmedia_typeフィールドをリクエストした場合、値はIMAGE/VIDEOとして返されます。公開済みの画像/動画がストーリーズとして指定されているかどうかを判断するには、代わりにそのmedia_product_typeフィールドをリクエストしてください。

コラボレータータグ

画像、カルーセル、リール動画にInstagramの公開ユーザーをコラボレーターとして追加することができます。コラボレーターには、その特定のメディアのコラボレーターになるための招待が送られます。画像の中でユーザーをタグ付けするには、上記の単一メディア投稿の手順に従いますが、メディアコンテナを作成する際には、コラボレーターパラメーターと、メディアのコラボレーターとして招待したいユーザーのInstagramユーザー名を示す文字列の配列を含めてください。

リクエストの例

POST graph.facebook.com/17841400008460056/media
?image_url=https://www.example.com/images/bronzed-fonzes.jpg
&caption=#BronzedFonzes!
&collaborators= [‘username1’,’username2’]

  • コラボレーター値は文字列の配列でなければなりません。
  • 公開Instagramアカウントを持つユーザーのみタグ付けできます。
  • メディアに追加できるコラボレーターは3人までです。
  • コラボレーターをストーリーメディアに追加することはできません。

位置情報タグ

ページ検索APIを使用できます。検索文字列と一致する名前のページを検索するには、クエリに必ず`location`フィールドを含めてください。その後、結果を解析して、所在地向けに作成されたページを特定します。画像または動画を公開する際にページのIDを含めると、そのページに関連付けられた位置情報がタグ付けされます。

制限

タグ付けを利用するには、ページに緯度と経度の位置データが必要です。

使用するページの応答に緯度と経度のデータがあることを確認してください。位置情報データがないページを使ってコンテナを作成しようとすると、コード化された例外INSTAGRAM_PLATFORM_API__INVALID_LOCATION_IDで失敗します。

ページIDを取得したら、それを、単一メディアまたはカルーセルアイテムのコンテナを公開するときのlocation_idパラメーターに代入します。

商品タグ

単一メディアの投稿と、Instagramショッピングの商品をタグ付けしたカルーセル投稿の両方を公開することができます。方法については、製品のタグ付けガイドを参照してください。

ユーザータグ

画像の中で公開Instagramユーザーをタグ付けすることができます。タグ付けされるとそれらのユーザーに通知が送られます。

画像の中でユーザーをタグ付けするには、上記の単一メディア投稿の手順に従いますが、メディアコンテナを作成する際に、user_tagsパラメーター、画像の中でInstagramユーザーを指すオブジェクトの配列、および画像自体の中でのx/y座標を含めます。

リクエストの例

POST graph.facebook.com/17841400008460056/media ?image_url=https://www.example.com/images/bronzed-fonzes.jpg &caption=#BronzedFonzes! &user_tags= [ { username:'kevinhart4real', x: 0.5, y: 0.8 }, { username:'therock', x: 0.3, y: 0.2 } ] 

コンテナIDが返されます。それを、IGユーザーメディア公開エンドポイントを使って公開します。

  • user_tags値は、JSON形式のオブジェクトの配列でなければなりません。
  • 公開Instagramアカウントを持つユーザーのみタグ付けできます。
  • オブジェクトには、各ユーザーの3つのプロパティ(usernamexy)すべてを含める必要があります。
  • x値とy値は、画像の左上を起点とするfloat数値で、範囲は0.01.0です。
  • カルーセル内の画像でユーザータグが使えます。

トラブルシューティング

動画のコンテナを作成できるのに、POST /{ig-user-id}/media_publishエンドポイントが公開されたメディアIDを返さない場合、GET /{ig-container-id}?fields=status_codeエンドポイントをクエリしてコンテナの公開ステータスを取得できます。このエンドポイントは次のいずれかを返します。

  • EXPIRED — コンテナは24時間以内に公開されず、有効期限が切れています。
  • ERROR — コンテナは、公開処理を完了できませんでした。
  • FINISHED — コンテナとそのメディアオブジェクトは公開の準備ができています。
  • IN_PROGRESS — コンテナは、まだ公開処理中です。
  • PUBLISHED — コンテナのメディアオブジェクトは公開済みです。

コンテナのステータスを5分間程度、毎分クエリすることをおすすめします。

エラー

エラーコードのリファレンスをご覧ください。