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

# 連携ガイド

このページでは、Retweet エンドポイントと連携するためのツールや主要な概念について説明します。

***

<div id="helpful-tools">
  ## 便利なツール
</div>

このエンドポイントを統合するうえで役立つ重要な概念を説明する前に、まずは次のツールに慣れておくことをおすすめします。

<div id="postman">
  #### Postman
</div>

Postman は、エンドポイントをテストするために使用できる優れたツールです。各 Postman リクエストには、何が利用できるかをすばやく把握できるよう、すべてのパスパラメータとボディパラメータが含まれています。Postman コレクションの詳細については、「[Using Postman](/ja/tutorials/postman-getting-started)」ページをご覧ください。

<div id="code-samples">
  #### コードサンプル
</div>

お好みのプログラミング言語のコードでこのエンドポイントを使い始めたい場合は、[GitHub ページ](https://github.com/xdevplatform/Twitter-API-v2-sample-code)で、出発点として利用できるさまざまなコードサンプルをご覧いただけます。

<div id="third-party-libraries">
  #### サードパーティライブラリ
</div>

X コミュニティの [サードパーティライブラリ](/ja/x-api/tools-and-libraries/overview) を活用して、開発のスタートダッシュに役立ててください。v2 エンドポイントに対応したライブラリは、対応するバージョンタグを目印に探すことができます。

<div id="key-concepts">
  ### 主要な概念
</div>

<div id="authentication">
  #### 認証
</div>

すべての X API v2 のエンドポイントでは、キーおよびトークンとも呼ばれる一連の認証情報を使ってリクエストの認証を行う必要があります。

Retweets lookup エンドポイントへのリクエストを認証するには、OAuth 1.0a User Context か OAuth 2.0 のベアラートークンのどちらかを使用できます。

Retweets を管理するエンドポイントでは OAuth 1.0a User Context の使用が必須です。つまり、API キーとユーザーアクセストークンの組み合わせを使って有効なリクエストを送信する必要があります。アクセストークンは、あなたが代理でリクエストを行うユーザーに紐づいていなければなりません。別のユーザー用のアクセストークンを生成したい場合、そのユーザーは 3-legged OAuth フローを通じてあなたの App を承認または認証する必要があります。

OAuth 1.0a の利用は難しい場合がある点に注意してください。この認証方式に慣れていない場合は、リクエストを適切に認証するために [ライブラリ](/ja/x-api/tools-and-libraries/overview) を使用することを推奨します。

**注意**

次のフィールドをリクエストする場合、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

<div id="developer-console-projects-and-developer-apps">
  #### 開発者コンソール、プロジェクト、および開発者 App
</div>

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

<div id="rate-limits">
  #### レート制限
</div>

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

Retweet を管理するエンドポイントは、15 分あたり 50 件のリクエスト (ユーザーごと) に制限されています。さらに、POST エンドポイントについては、3 時間ウィンドウあたり 300 件のリクエスト (ユーザーごと、App ごと) に制限されています。

Retweet ルックアップエンドポイントでは、15 分ウィンドウあたり 75 件のリクエストに制限されています。加えて、このエンドポイントから返されるのは、もっとも最近 Retweet したユーザーのうち 100 件分のみです。

<div id="fields-and-expansions">
  #### フィールドとexpansions
</div>

X API v2 では、fields および expansions と呼ばれる一連のツールを使用して、API から返したいデータを正確に選択できます。`expansions` パラメータを使うと、ペイロード内で参照されているオブジェクトを展開できます。たとえば、このエンドポイントでは次のような [expansions](/ja/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` パラメータを使うと、さまざまなデータオブジェクト内で受け取りたい[フィールド](/ja/x-api/fundamentals/fields)を細かく指定できます。これらのエンドポイントは主にポスト (Post) オブジェクトを返します。デフォルトでは、ポストオブジェクトは `id` と `text` フィールドのみを返します。`tweet.created_at` や `tweet.entities` のような追加フィールドを受け取るには、それらを `fields` パラメータで明示的に指定する必要があります。統合での利用を検討するとよい重要なフィールドとしては、投票データ、メトリクス、ポストのアノテーション、および会話 ID のフィールドがあります。

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

***

<div id="code-examples">
  ### コード例
</div>

<div id="get-users-who-retweeted-a-post">
  #### ポストをリポストしたユーザーを取得する
</div>

<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")

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

  ```javascript JavaScript SDK theme={null}
  import { Client } from "@xdevplatform/xdk";

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

  // ポストをリポストしたユーザーを取得する
  const response = await client.posts.getRetweetedBy("1234567890", {
    userFields: ["username", "verified"],
  });

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

<div id="retweet-a-post">
  #### ポストをリツイートする
</div>

<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 Python SDK 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)

  # ポストをリツイートする
  response = client.posts.retweet(user_id="123", tweet_id="1234567890")
  print(response.data)
  ```

  ```javascript JavaScript SDK 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 });

  // ポストをリツイートする
  const response = await client.posts.retweet("123", { tweetId: "1234567890" });
  console.log(response.data);
  ```
</CodeGroup>
