跳转到主要内容
借助 expansions,开发者可以将负载中被引用的对象展开为完整对象。可供展开的对象通过 ID 引用。例如,Posts lookup 负载中返回的 referenced_tweets.idauthor_id 字段可以展开为完整对象。如果你希望请求发布该 Post 的用户相关字段,或该 Post 中包含的媒体、投票或地点相关字段,你需要在请求中传递相应的 expansions 查询参数,以便在响应中获取这些数据。目前,返回 Posts、Users、Lists、Spaces 和 Direct Message 事件对象的 v2 端点均支持 expansions(见下方示例)。 当你在请求中包含某个 expansions 时,我们会在同一响应中包含该已展开对象的默认字段。这样可以在同一响应中返回更多数据,而无需单独发起请求。如果你希望请求与该已展开对象相关的其他 fields,可以在请求中包含与该已展开对象对应的字段参数,并提供以逗号分隔的字段列表,表示你希望在响应中接收的字段。请注意,字段在响应中的返回顺序不一定与查询中请求的顺序相同。 下面的 Post 负载包含可供我们展开的相关对象的引用 ID,包括发布该 Post 的 author_id、一个被引用的 Post 的 id,以及媒体附件的 media_key
{
    "data": {
        "attachments": {
            "media_keys": ["16_1211797899316740096"]
        },
        "author_id": "2244994945",
        "id": "1212092628029698048",
        "referenced_tweets": [
            {
                "type": "replied_to",
                "id": "1212092627178287104"
            }
        ],
        "text": "我们相信,最好的 API 未来版本将由我们与您共同打造。祝所有在 Twitter 平台上构建应用的开发者再创辉煌。我们期待在新的一年里继续与您携手前行。https://t.co/yvxdK6aOo2"
    }
}

可用于 Post 负载的 Expansions

ExpansionDescription
author_id返回表示该 Post 作者的用户对象
referenced_tweets.id返回此 Post 引用的 Post 对象(转发、引用或回复)
edit_history_tweet_ids返回属于某个 Post 编辑历史的 Post 对象
in_reply_to_user_id返回表示此请求的 Post 所回复之 Post 作者的用户对象
attachments.media_keys返回表示该 Post 中包含的图片、视频或 GIF 的媒体对象
attachments.poll_ids返回一个投票对象,包含该 Post 中投票的元数据
geo.place_id返回一个地点对象,包含该 Post 中被标记位置的元数据
entities.mentions.username返回表示在该 Post 中被提及用户的用户对象
referenced_tweets.id.author_id返回被引用的 Post 的作者的用户对象

可用于用户载荷的可展开项

扩展项描述
pinned_tweet_id返回一个 Post 对象,表示置顶在用户个人资料页顶部的 Post

适用于私信事件有效载荷的可用 Expansions

Expansion描述
attachments.media_keys返回附加到私信的 Media 对象
referenced_tweets.id返回在私信中被引用的 Post 对象
sender_id返回表示私信作者及其邀请参与者加入会话的 User 对象
participant_ids返回表示加入或离开会话的参与者的 User 对象

适用于 Spaces 载荷的可用 Expansions

Expansion描述
invited_user_ids返回表示被邀请账号的 User 对象
speaker_ids返回表示在 Space 中发言的账号的 User 对象
creator_id返回表示创建该 Space 的账号的 User 对象
host_ids返回表示被设置为主持人的账号的 User 对象
topics_ids返回由创建者设置的主题描述

列表负载可用的扩展项

扩展项描述
owner_id返回一个 User 对象,表示创建并维护该列表的账户

展开 Media 对象

在以下请求中,我们将请求包含 geo.place_id 的扩展,以便与默认的 Post 字段一同返回: 示例请求
{`curl 'https://api.x.com/2/tweets/:ID?expansions=geo.place_id' --header 'Authorization: Bearer $ACCESS_TOKEN'`}
示例响应
{`{
  "data": {
      "geo": {
          "place_id": "01a9a39529b27f36"
      },
      "id": "ID",
      "text": "Test"
  },
  "includes": {
      "places": [
          {
              "full_name": "Manhattan, NY",
              "id": "01a9a39529b27f36"
          }
      ]
  }
}`}

展开 Poll 对象

在以下请求中,我们通过 attachments.poll_ids expansions 请求将其与默认的 Post 字段一并返回: 示例请求 示例响应
{`{
  "data": {
      "attachments": {
          "poll_ids": ["1199786642468413448"]
      },
      "id": "1199786642791452673",
      "text": "C#"
  },
  "includes": {
      "polls": [
          {
              "id": "1199786642468413448",
              "options": [
                  {
                      "position": 1,
                      "label": "“C Sharp”",
                      "votes": 795
                  },
                  {
                      "position": 2,
                      "label": "“C Hashtag”",
                      "votes": 156
                  }
              ]
          }
      ]
  }
}`}

展开 Place 对象

在以下请求中,我们通过 geo.place_id expansions 请求在默认的 Post 字段之外一并返回相关内容: 示例请求 示例响应
{`{
  "data": {
      "geo": {
          "place_id": "01a9a39529b27f36"
      },
      "id": "ID",
      "text": "Test"
  },
  "includes": {
      "places": [
          {
              "full_name": "Manhattan, NY",
              "id": "01a9a39529b27f36"
          }
      ]
  }
}`}