> ## Documentation Index
> Fetch the complete documentation index at: https://docs.x.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 統合ガイド

> このページでは、Retweet エンドポイントを統合するためのツールと重要な概念を扱います。retweets を扱う X API v2 スタンダードティアのリファレンス。

このページでは、Retweet エンドポイントを統合するためのツールと重要な概念を扱います。

## 役立つツール

このエンドポイントの統合に役立つ重要な概念に入る前に、以下について理解しておくことをお勧めします:

#### Postman

Postman は、エンドポイントをテストするのに最適なツールです。各 Postman リクエストにはすべてのパスパラメーターとボディパラメーターが含まれており、利用可能なオプションを素早く把握するのに役立ちます。当社の Postman コレクションについて詳しくは、[「Postman を使う」](/tutorials/postman-getting-started)ページをご覧ください。

#### コードサンプル

お好みのプログラミング言語でこのエンドポイントをセットアップしてみませんか?出発点として利用できるさまざまなコードサンプルを [GitHub ページ](https://github.com/xdevplatform/Twitter-API-v2-sample-code)で公開しています。

#### サードパーティ製ライブラリ

コミュニティによる[サードパーティ製ライブラリ](/tools-and-libraries)を活用して開発を始められます。適切なバージョンタグを探すことで、v2 エンドポイントに対応したライブラリを見つけられます。

### 重要な概念

#### 認証

すべての X API v2 エンドポイントでは、キーとトークン(認証情報)を使ってリクエストを認証する必要があります。

Retweets ルックアップエンドポイントへのリクエスト認証には、OAuth 1.0a User Context または OAuth 2.0 Bearer Token のいずれかを使用できます。

manage Retweets エンドポイントには OAuth 1.0a User Context の使用が必要です。つまり、リクエストを成功させるには API キーとユーザーアクセストークンのセットを使用する必要があります。アクセストークンは、リクエストの代理として行うユーザーに関連付けられている必要があります。他のユーザーのアクセストークンを生成するには、そのユーザーが 3-legged OAuth フローを使用して App を承認または認証する必要があります。

OAuth 1.0a は扱いにくい場合がある点にご注意ください。この認証方式に不慣れな場合は、リクエストを適切に認証するため[ライブラリ](/tools-and-libraries)の使用をお勧めします。

**注意**

以下のフィールドをリクエストする場合、OAuth 1.0a User Context が必要です:

* tweet.fields.non\_public\_metrics
* tweet.fields.promoted\_metrics
* tweet.fields.organic\_metrics
* media.fields.non\_public\_metrics
* media.fields.promoted\_metrics
* media.fields.organic\_metrics

#### Developer Console、Project、開発者 App

X API v2 エンドポイントで機能する認証情報を取得するには、[開発者アカウントに登録](https://developer.x.com/en/portal/petition/essential/basic-info)し、そのアカウント内に [Project](/resources/fundamentals/developer-apps) を設定し、その Project 内に[開発者 App](/resources/fundamentals/developer-apps) を作成する必要があります。その後、開発者 App 内のキーとトークンを取得できます。

#### レート制限

毎日、数千人の開発者が X API にリクエストを送信しています。膨大なリクエスト量を管理するため、各エンドポイントには[レート制限](/x-api/fundamentals/rate-limits)が設定されており、App または認証済みユーザーの代理として送信できるリクエスト数を制限しています。

manage Retweets エンドポイントは、ユーザーごとに 15 分あたり 50 リクエストに制限されています。さらに、POST エンドポイントは、ユーザーごとかつアプリごとに 3 時間ウィンドウあたり 300 リクエストに制限されています。

Retweets ルックアップエンドポイントは、15 分ウィンドウあたり 75 リクエストに制限されています。さらに、このエンドポイントは Retweet した最新の 100 ユーザーのみを返します。

#### Fields と expansions

X API v2 では、fields と expansions というツールを使って、API から返すデータを正確に選択できます。expansion パラメーターを使うと、ペイロードで参照されるオブジェクトを展開できます。たとえば、このエンドポイントでは以下の [expansions](/x-api/fundamentals/expansions) を取得できます:

* attachments.poll\_ids
* attachments.media\_keys
* author\_id, entities.mentions.username
* geo.place\_id
* in\_reply\_to\_user\_id,
* referenced\_tweets.id,
* referenced\_tweets.id.author\_id

fields パラメーターを使うと、異なるデータオブジェクト内のどの[フィールド](/x-api/fundamentals/fields)を受け取りたいか正確に選択できます。これらのエンドポイントは主に Post オブジェクトを配信します。デフォルトでは、Post オブジェクトは id と text フィールドを返します。tweet.created\_at や tweet.entities などの追加フィールドを受け取るには、fields パラメーターで明示的にリクエストする必要があります。統合で検討する価値のある重要なフィールドとして、Poll データ、メトリクス、Post annotations、conversation ID フィールドがあります。

[fields と expansions を組み合わせて使う方法](/x-api/fundamentals/data-dictionary/reference#how-to-use-fields-and-expansions)についてのガイドを [X API v2 データディクショナリ](/x-api/fundamentals/data-dictionary)に追加しました。

***

### コード例

#### 投稿を Retweet したユーザーを取得する

<CodeGroup dropdown>
  ```bash cURL theme={null}
  curl "https://api.x.com/2/tweets/1234567890/retweeted_by?user.fields=username,verified" \
    -H "Authorization: Bearer $BEARER_TOKEN"
  ```

  ```python Python SDK theme={null}
  from xdk import Client

  client = Client(bearer_token="YOUR_BEARER_TOKEN")

  # 投稿を Retweet したユーザーを取得
  response = client.posts.get_retweeted_by(
      "1234567890",
      user_fields=["username", "verified"]
  )
  for user in response.data:
      print(f"{user.username} - Verified: {user.verified}")
  ```

  ```javascript title="JavaScript SDK" lines wrap icon="square-js" theme={null}
  import { Client } from "@xdevplatform/xdk";

  const client = new Client({ bearerToken: "YOUR_BEARER_TOKEN" });

  // 投稿を Retweet したユーザーを取得
  const response = await client.posts.getRetweetedBy("1234567890", {
    userFields: ["username", "verified"],
  });

  response.data?.forEach((user) => {
    console.log(`${user.username} - Verified: ${user.verified}`);
  });
  ```
</CodeGroup>

#### 投稿を Retweet する

<CodeGroup dropdown>
  ```bash cURL theme={null}
  curl -X POST "https://api.x.com/2/users/123/retweets" \
    -H "Authorization: OAuth ..." \
    -H "Content-Type: application/json" \
    -d '{"tweet_id": "1234567890"}'
  ```

  ```python title="Python SDK" lines wrap icon="python" theme={null}
  from xdk import Client
  from xdk.oauth1_auth import OAuth1

  oauth1 = OAuth1(
      api_key="YOUR_API_KEY",
      api_secret="YOUR_API_SECRET",
      access_token="YOUR_ACCESS_TOKEN",
      access_token_secret="YOUR_ACCESS_TOKEN_SECRET"
  )

  client = Client(auth=oauth1)

  # 投稿を Retweet する
  response = client.posts.retweet(user_id="123", tweet_id="1234567890")
  print(response.data)
  ```

  ```javascript title="JavaScript SDK" lines wrap icon="square-js" theme={null}
  import { Client, OAuth1 } from "@xdevplatform/xdk";

  const oauth1 = new OAuth1({
    apiKey: "YOUR_API_KEY",
    apiSecret: "YOUR_API_SECRET",
    accessToken: "YOUR_ACCESS_TOKEN",
    accessTokenSecret: "YOUR_ACCESS_TOKEN_SECRET",
  });

  const client = new Client({ oauth1 });

  // 投稿を Retweet する
  const response = await client.posts.retweet("123", { tweetId: "1234567890" });
  console.log(response.data);
  ```
</CodeGroup>
