Saltar al contenido principal

Modelo de objetos

Tweet

Los Tweets son el bloque fundamental de todo en X. El objeto Tweet tiene una extensa lista de campos de nivel raíz, como id, text y created_at. Los objetos Tweet también son el objeto “principal” de varios objetos secundarios, incluidos user, media, poll y place. Usa el parámetro de campos tweet.fields al solicitar estos campos de nivel raíz en el objeto Tweet. El objeto Tweet puede encontrarse y ampliarse en el recurso de usuario. También pueden encontrarse y ampliarse en el recurso Tweet otros Tweets relacionados con el Tweet solicitado. El objeto está disponible para expansión con ?expansions=pinned_tweet_id en el recurso de usuario o con ?expansions=referenced_tweets.id en el recurso Tweet para obtener el objeto solo con los campos predeterminados. Usa esa expansión junto con el parámetro de campos tweet.fields al solicitar campos adicionales para completar el objeto.
Valor del campomedia_keyDescripciónCómo puede usarse
id (predeterminado)cadena de textoEl identificador único del Tweet solicitado.Usa esto para obtener mediante programación un Tweet específico.
texto (predeterminado)cadena de textoEl texto real en UTF-8 del Tweet. Consultetwitter-textpara obtener más información sobre los caracteres válidos.Extracción de palabras clave y análisis/clasificación de sentimientos.
edit_history_tweet_ids (predeterminado)objetoIdentificadores únicos que indican todas las versiones de un Tweet. Para los Tweets sin ediciones, habrá un id. Para los Tweets con historial de ediciones, habrá varios id.Usa esta información para consultar el historial de ediciones de un Tweet.
artículoobjetoContiene metadatos del artículo presente en este Tweet.Úsalo para obtener el texto y las entidades de un artículo.
adjuntosobjetoEspecifica el tipo de archivos adjuntos (si los hay) presentes en este Tweet.Comprender los objetos devueltos para las expansions solicitadas.
author_idcadena de textoEl identificador único del usuario que publicó este Tweet.Hidratando el objeto User y compartiendo el conjunto de datos para revisión por pares.
card_uricadena de textoEl URI de la Card presente en este Tweet.
community_idcadena de textoEl identificador único de la Comunidad a la que pertenece este Post.
context_annotationsarregloContiene anotaciones de contexto del Tweet.Reconocimiento y extracción de entidades, análisis temático.
conversation_idstringEl id del Tweet del que parte la conversación (que incluye respuestas directas y respuestas a respuestas).Utiliza esto para reconstruir la conversación a partir de un Tweet.
created_atfecha (ISO 8601)Fecha y hora de creación del Tweet.Útil para el análisis de series temporales y para entender cuándo se creó un Tweet.
display_text_rangematrizUna matriz que contiene un índice de inicio y otro de final para la parte del texto que se muestra.Útil para saber qué parte del texto se muestra de forma predeterminada en publicaciones largas.
controles_de_ediciónobjetoIndica cuánto tiempo más puede editarse el Tweet y cuántas ediciones quedan.Utiliza esto para determinar si un Tweet es apto para edición.
entidadesobjetoEntidades extraídas del texto del Tweet. Consulta las entidades en Twitter Objects.Ofrece información adicional sobre hashtags, URL, menciones, etc.
geoobjetoIndica la ubicación o el lugar de un Tweet geolocalizado.Usa esto para determinar la ubicación de un Tweet con etiqueta geográfica.
in_reply_to_user_idcadena de textoSi el Tweet representado es una respuesta, este campo contendrá el id del autor del Tweet original.Determina si un Tweet es una respuesta a otro Tweet.
langstringIdioma del Tweet, si X lo detecta.Clasifica los Tweets por idioma de habla.
non_public_metricsobjetoMétricas de interacción no públicas del Tweet en el momento de la petición. Requiere autenticación con contexto de usuario.Determina el total de impresiones generadas para el Tweet.
nota_TweetobjetoContiene el texto completo de un Post para los Posts de formato largo (>280 caracteres) (>280 caracteres).Obtén el texto completo de un Post.
métricas_orgánicasobjetoMétricas de interacción, registradas en un contexto orgánico, del Tweet en el momento de la solicitud. Requiere autenticación con contexto de usuario.Mide la participación orgánica del Tweet.
posiblemente_sensiblebooleanoIndica si el contenido puede considerarse sensible.Estudiar la difusión de ciertos tipos de contenido.
promoted_metricsobjetoMétricas de interacción, registradas en un contexto de promoción, para el Tweet en el momento de la solicitud. Requiere autenticación con contexto de usuario.Mide la interacción del Tweet cuando estuvo promocionado.
public_metricsobjetoMétricas públicas de interacción del Tweet en el momento de la solicitud.Medir la interacción del Tweet
referenced_tweetsarregloUna lista de Tweets a los que hace referencia este Tweet, como Retweets, Tweets citados o respuestas.Comprende los aspectos conversacionales de los Retweets, etc.
configuración_de_respuestascadena de textoMuestra quién puede responder a un Tweet específico. Las opciones son”todos”,“mencionado_usuarios”, y”seguidores”.Determina la configuración de respuestas de la conversación para el Tweet.
retenidoobjetoContiene detalles de retenciones paracontenido retenido.
scopesobjetoContiene detalles del alcance del Tweet.Indica quién puede ver el Post. Solo se devuelve para Posts promocionados.
media_metadatamatrizContiene metadatos de los archivos multimedia adjuntos al Tweet.Obtén metadatos adicionales como losalt_textde un Tweet’del archivo multimedia adjunto de la publicación.
Recuperar un objeto Tweet Solicitud de ejemplo En la siguiente solicitud, solicitamos fields para el Tweet en el endpoint Tweets lookup. Asegúrate de reemplazar $BEARER_TOKEN por tu propio Bearer Token generado.
curl --request GET 'https://api.x.com/2/tweets?ids=1212092628029698048&tweet.fields=attachments,author_id,context_annotations,created_at,entities,geo,id,in_reply_to_user_id,lang,possibly_sensitive,public_metrics,referenced_tweets,text,withheld&expansions=referenced_tweets.id' --header 'Authorization: Bearer $BEARER_TOKEN'
Respuesta de muestra
{
  "data": [
    {
      "text": "We believe the best future version of our API will come from building it with YOU. Here’s to another great year with everyone who builds on the Twitter platform. We can’t wait to continue working with you in the new year. https://t.co/yvxdK6aOo2",
      "edit_history_tweet_ids": [
        "1212092628029698048"
      ],
      "lang": "en",
      "in_reply_to_user_id": "2244994945",
      "entities": {
        "urls": [
          {
            "start": 222,
            "end": 245,
            "url": "https://t.co/yvxdK6aOo2",
            "expanded_url": "https://x.com/LovesNandos/status/1211797914437259264/photo/1",
            "display_url": "pic.x.com/yvxdK6aOo2",
            "media_key": "16_1211797899316740096"
          }
        ],
        "annotations": [
          {
            "start": 42,
            "end": 44,
            "probability": 0.5359,
            "type": "Other",
            "normalized_text": "API"
          },
          {
            "start": 144,
            "end": 150,
            "probability": 0.9832,
            "type": "Other",
            "normalized_text": "Twitter"
          }
        ]
      },
      "author_id": "2244994945",
      "referenced_tweets": [
        {
          "type": "replied_to",
          "id": "1212092627178287104"
        }
      ],
      "id": "1212092628029698048",
      "public_metrics": {
        "retweet_count": 7,
        "reply_count": 3,
        "like_count": 38,
        "quote_count": 1
      },
      "context_annotations": [
        {
          "domain": {
            "id": "29",
            "name": "Events [Entity Service]",
            "description": "Real world events. "
          },
          "entity": {
            "id": "1186637514896920576",
            "name": " New Years Eve"
          }
        },
        {
          "domain": {
            "id": "29",
            "name": "Events [Entity Service]",
            "description": "Real world events. "
          },
          "entity": {
            "id": "1206982436287963136",
            "name": "Happy New Year: It’s finally 2020 everywhere!",
            "description": "Disfruta de fuegos artificiales y otras celebraciones mientras la gente de todo el mundo recibe el nuevo año.\nFoto vía @GettyImages "
          }
        },
        {
          "domain": {
            "id": "119",
            "name": "Holiday",
            "description": "Holidays like Christmas or Halloween"
          },
          "entity": {
            "id": "1186637514896920576",
            "name": " New Years Eve"
          }
        },
        {
          "domain": {
            "id": "119",
            "name": "Holiday",
            "description": "Holidays like Christmas or Halloween"
          },
          "entity": {
            "id": "1206982436287963136",
            "name": "Happy New Year: It’s finally 2020 everywhere!",
            "description": "Disfruta de fuegos artificiales y otras celebraciones mientras la gente de todo el mundo recibe el nuevo año.\nFoto vía @GettyImages "
          }
        },
        {
          "domain": {
            "id": "30",
            "name": "Entities [Entity Service]",
            "description": "Entity Service top level domain, every item that is in Entity Service should be in this domain"
          },
          "entity": {
            "id": "781974596752842752",
            "name": "Services"
          }
        },
        {
          "domain": {
            "id": "47",
            "name": "Brand",
            "description": "Brands and Companies"
          },
          "entity": {
            "id": "10045225402",
            "name": "Twitter"
          }
        },
        {
          "domain": {
            "id": "131",
            "name": "Unified Twitter Taxonomy",
            "description": "A taxonomy of user interests. "
          },
          "entity": {
            "id": "10045225402",
            "name": "Twitter"
          }
        },
        {
          "domain": {
            "id": "131",
            "name": "Unified Twitter Taxonomy",
            "description": "A taxonomy of user interests. "
          },
          "entity": {
            "id": "847868745150119936",
            "name": "Family & relationships",
            "description": "Hobbies and interests"
          }
        },
        {
          "domain": {
            "id": "131",
            "name": "Unified Twitter Taxonomy",
            "description": "A taxonomy of user interests. "
          },
          "entity": {
            "id": "1196446161223028736",
            "name": "Social media"
          }
        },
        {
          "domain": {
            "id": "29",
            "name": "Events [Entity Service]",
            "description": "Real world events. "
          },
          "entity": {
            "id": "1206982436287963136",
            "name": "Happy New Year: It’s finally 2020 everywhere!",
            "description": "Disfruta de fuegos artificiales y otras celebraciones mientras la gente de todo el mundo recibe el nuevo año.\nFoto vía @GettyImages "
          }
        },
        {
          "domain": {
            "id": "119",
            "name": "Holiday",
            "description": "Holidays like Christmas or Halloween"
          },
          "entity": {
            "id": "1206982436287963136",
            "name": "Happy New Year: It’s finally 2020 everywhere!",
            "description": "Disfruta de fuegos artificiales y otras celebraciones mientras la gente de todo el mundo recibe el nuevo año.\nFoto vía @GettyImages "
          }
        }
      ],
      "created_at": "2019-12-31T19:26:16.000Z",
      "attachments": {
        "media_keys": [
          "16_1211797899316740096"
        ]
      },
      "possibly_sensitive": false
    }
  ],
  "includes": {
    "tweets": [
      {
        "text": "These launches would not be possible without the feedback you provided along the way, so THANK YOU to everyone who has contributed your time and ideas. Have more feedback? Let us know ⬇️ https://t.co/Vxp4UKnuJ9",
        "edit_history_tweet_ids": [
          "1212092627178287104"
        ],
        "lang": "en",
        "in_reply_to_user_id": "2244994945",
        "entities": {
          "urls": [
            {
              "start": 187,
              "end": 210,
              "url": "https://t.co/Vxp4UKnuJ9",
              "expanded_url": "https://twitterdevfeedback.uservoice.com/forums/921790-twitter-developer-labs",
              "display_url": "twitterdevfeedback.uservoice.com/forums/921790-…",
              "status": 200,
              "title": "Updates on our feedback channels",
              "description": "We build our developer platform in the open, with your input and feedback. Over the past year, hearing directly from you and the users of your apps has helped us build developer products that cater to the use case you helped us identify. We want to make this the way we build products, and moving forward, we are consolidating our feedback channels. Meeting you where you are Effective today, we are going to retire our UserVoice feedback channel in favor of more frequent direct engagements with y...",
              "unwound_url": "https://devcommunity.x.com/t/updates-on-our-feedback-channels/169706"
            }
          ]
        },
        "author_id": "2244994945",
        "referenced_tweets": [
          {
            "type": "replied_to",
            "id": "1212092626247110657"
          }
        ],
        "id": "1212092627178287104",
        "public_metrics": {
          "retweet_count": 2,
          "reply_count": 1,
          "like_count": 19,
          "quote_count": 0
        },
        "created_at": "2019-12-31T19:26:16.000Z",
        "possibly_sensitive": false
      }
    ]
  }

Usuario

El objeto de usuario contiene metadatos de la cuenta de usuario de Twitter que describen al usuario de referencia. El objeto de usuario es el principal que devuelve el endpoint users lookup. Para solicitar campos de usuario adicionales en este endpoint, usa el parámetro fields user.fields. El objeto de usuario también puede aparecer como objeto secundario y ampliarse dentro del objeto Tweet. Está disponible para ampliación con ?expansions=author_id o ?expansions=in_reply_to_user_id para obtener el objeto resumido con solo los campos predeterminados. Usa la expansión junto con el parámetro de campos user.fields al solicitar campos adicionales para completar el objeto.  
Valor de campomedia_keyDescripciónCómo puede usarse
id (predeterminado)cadena de textoEl identificador único de este usuario.

"id": "2244994945"
Utiliza esto para obtener de forma programática información sobre un usuario específico de Twitter.
name (predeterminado)stringEl nombre del usuario, tal como aparece en su perfil. No necesariamente corresponde al nombre de una persona. Por lo general, limitado a 50 caracteres, aunque puede cambiar.

"name": "Twitter Dev"
nombre de usuario (predeterminado)cadena de textoEl nombre visible, usuario o alias de Twitter con el que este usuario se identifica. Los nombres de usuario son únicos, pero pueden cambiar. Suelen tener un máximo de 15 caracteres, aunque existen cuentas históricas con nombres más largos.

"username": "TwitterDev"
afiliaciónobjetoContiene información sobre un usuario’afiliación del usuario.Puede usarse para obtener un usuario’la insignia de afiliación de un usuario.
confirmado_correo electrónicostringEl correo electrónico verificado del usuario autenticado.
conexión_estadomatrizProporciona una lista de las relaciones entre el usuario autenticado y el usuario consultado, como sigue, lo sigue, solicitud de seguimiento enviada, solicitud de seguimiento recibida, bloqueo, silencio

”conexión_estado”: [
           “seguir_solicitud_recibido”,
           “seguir_solicitud_enviado”,
           “bloqueo”,
           “seguidos_por”,
           “siguiendo”,
           “silenciar”
]
Se puede utilizar para determinar el estado de conexión entre el usuario autenticado y el usuario consultado.
creado_afecha (ISO 8601)La fecha y hora en UTC en que se creó la cuenta de usuario en X.

"created_at": "2013-12-14T04:35:55.000Z"
Puede usarse para determinar cuánto tiempo lleva alguien usando Twitter
DescripcióncadenaEl texto de este usuario’la descripción del perfil del usuario (también conocida como “bio”), si la proporcionó.

"description": "La voz del equipo de X Dev y tu fuente oficial de novedades, noticias y eventos relacionados con la X API."
entidadesobjetoContiene detalles sobre texto que tiene un significado especial para el usuario’descripción de s.

"entities": { <br/>       "url": { <br/>           "urls": [ <br/>               { <br/>                   "start": 0, <br/>                   "end": 23, <br/>                   "url": "https://t.co/3ZX3TNiZCY", <br/>                   "expanded_url": "/content/developer-twitter/en/community", <br/>                   "display_url": "developer.x.com/en/community" <br/>               } <br/>           ] <br/>       }, <br/>       "description": { <br/>           "urls": [ <br/>               { <br/>                   "start": 0, <br/>                   "end": 23, <br/>                   "url": "https://t.co/3ZX3TNiZCY", <br/>                   "expanded_url": "/content/developer-twitter/en/community", <br/>                   "display_url": "developer.x.com/en/community" <br/>               } <br/>           ], <br/>           "hashtags": [ <br/>               { <br/>                   "start": 23, <br/>                   "end": 30, <br/>                   "tag": "DevRel" <br/>               }, <br/>               { <br/>                   "start": 113, <br/>                   "end": 130, <br/>                   "tag": "BlackLivesMatter" <br/>               } <br/>           ], <br/>           "mentions": [ <br/>               { <br/>                   "start": 0, <br/>                   "end": 10, <br/>                   "tag": "TwitterDev" <br/>               } <br/>           ], <br/>           "cashtags": [ <br/>               { <br/>                   "start": 12, <br/>                   "end": 16, <br/>                   "tag": "twtr" <br/>               } <br/>           ] <br/>       } <br/>   }
Las entidades son objetos JSON que proporcionan información adicional sobre hashtags, URL, menciones de usuarios y cashtags asociadas a la descripción. Consulta cada entidad correspondiente para obtener más detalles.

Todos los usuariosiniciolos índices son inclusivos, mientras que todos los índices de usuario son exclusivosfinLos índices son exclusivos.
es_identidad_verificadobooleanoIndica si el usuario tiene la verificación de identidad.
ubicacióncadena de textoLa ubicación especificada por el usuario’en el perfil del usuario, si el usuario proporcionó uno. Dado que es un valor libre, podría no corresponder a una ubicación válida, pero puede evaluarse de forma aproximada al realizar búsquedas con consultas de ubicación.

"location": "127.0.0.1"
la mayoría_recientes_Tweet_idstringIdentificador único de este usuario’el Tweet más reciente del usuario.Determina el Tweet más reciente del usuario.
parodiabooleanIndica si esta cuenta de usuario tiene o no la etiqueta Parody.
anclado_Tweet_idcadena de textoIdentificador único de este usuario’el Tweet fijado de s.

"pinned_tweet_id": "1255542774432063488"
Determina el Tweet fijado en la parte superior del perfil del usuario. Puede utilizarse para determinar el idioma del usuario.
perfil_banner_URLcadena de textoLa URL del banner de perfil de este usuario, tal como aparece en el perfil del usuario’perfil.

"profile_banner_url": "https://pbs.twimg.com/profile_banners/1716450569358098432/1721022977"
Se puede usar para descargar a este usuario’del banner del perfil.
perfil_imagen_URLcadena de textoLa URL de la imagen de perfil de este usuario, tal como aparece en el perfil del usuario’perfil de este usuario.

"profile&#95;image&#95;url": "https://pbs.twimg.com/profile_images/1267175364003901441/tBZNFAgA_normal.jpg"
Se puede usar para descargar a este usuario’imagen de perfil de s.
protegidobooleanIndica si este usuario ha decidido proteger sus Tweets (es decir, si los Tweets de este usuario son privados)‘s Tweets son privados).

"protected": false
público_métricasobjetoContiene detalles sobre la actividad de este usuario.

"public_metrics": { "followers_count": 507902, "following_count": 1863, "tweet_count": 3561, "listed_count": 1550 }
Puede utilizarse para determinar el alcance o la influencia de un usuario de Twitter, cuantificar la variedad de sus intereses y su nivel de interacción en Twitter.
recibe_tu_dmbooleanIndica si este usuario recibirá el MD del usuario autenticado o no’sus MD.
suscripciónobjetoIncluye detalles sobre si el usuario está suscrito al usuario autenticado o no.
suscripción_media_keystringUna cadena que representa el tipo de suscripción de X Premium que tiene el usuario autenticado. Ejemplo:Ninguno,Básico,Premium,PremiumPlus. Siempre devolveráNonesi el usuario no es el usuario autenticado.
URLstringLa URL especificada por el usuario’el perfil del usuario, si existe.

"url": "https://t.co/3ZX3TNiZCY"
Una URL que un usuario de Twitter incluye en su perfil. Puede ser su página principal, aunque no siempre es así.
verificadobooleanIndica si este usuario es un usuario verificado de Twitter.

"verified": true
Indica si este usuario de Twitter tiene o no una cuenta verificada. Una cuenta verificada informa a las personas que una cuenta de interés público es auténtica.
verificado_seguidores_recuentocadena de textoUna cadena que indica la cantidad de seguidores verificados de un usuario.
verificado_media_keystringUna cadena que indica el tipo de verificación que tiene un usuario. Ejemplo:“azul”,“negocio”,“gobierno”
retenidoobjetoContiene detalles de retenciones paracontenido retenido, si procede.
Obtención de un objeto de usuario Ejemplo de solicitud En la siguiente solicitud, pedimos fields para el usuario en el endpoint users lookup. Asegúrate de reemplazar $BEARER_TOKEN por tu propio Bearer Token generado.
  curl --request GET 'https://api.x.com/2/users?
  ids=2244994945&user.fields=created_at,description,entities,id,location,name,pinned_tweet_id,profile_image_url,protected,url,username,verified,withheld&expansions=pinned_tweet_id'
  --header 'Authorization: Bearer $BEARER_TOKEN'
  }
Ejemplo de respuesta
    "data": [
        {
            "id": "2244994945",
            "name": "Twitter Dev",
            "username": "TwitterDev",
            "location": "127.0.0.1",
            "entities": {
                "url": {
                    "urls": [
                        {
                            "start": 0,
                            "end": 23,
                            "url": "https://t.co/3ZX3TNiZCY",
                            "expanded_url": "/content/developer-twitter/en/community",
                            "display_url": "developer.x.com/en/community"
                        }
                    ]
                },
                "description": {
                    "hashtags": [
                        {
                            "start": 23,
                            "end": 30,
                            "tag": "DevRel"
                        },
                        {
                            "start": 113,
                            "end": 130,
                            "tag": "BlackLivesMatter"
                        }
                    ]
                }
            },
            "verified": true,
            "description": "La voz del equipo de #DevRel de Twitter y tu fuente oficial de actualizaciones, noticias y eventos sobre la API de Twitter. \n\n#BlackLivesMatter",
            "url": "https://t.co/3ZX3TNiZCY",
            "profile_image_url": "https://pbs.twimg.com/profile_images/1267175364003901441/tBZNFAgA_normal.jpg",
            "protected": false,
            "pinned_tweet_id": "1255542774432063488",
            "created_at": "2013-12-14T04:35:55.000Z"
        }
    ],
    "includes": {
        "tweets": [
            {
                "id": "1255542774432063488",
                "text": "En estos tiempos sin precedentes, lo que sucede en Twitter puede ayudar al mundo a comprender mejor y responder a la pandemia. \n\nEstamos lanzando un endpoint de transmisión gratuito de COVID-19 para que desarrolladores e investigadores cualificados puedan estudiar la conversación pública en tiempo real. https://t.co/BPqMcQzhId"
            }
        ]
    }
}

Space

Los Spaces permiten expresarse e interactuar mediante conversaciones de audio en vivo. El diccionario de datos de Space contiene metadatos relevantes sobre un Space; todos los detalles se actualizan en tiempo real. Los objetos de usuario se pueden encontrar y ampliar en el recurso de usuario. Estos objetos están disponibles para ampliación agregando al menos uno de host_ids, creator_id, speaker_ids, mentioned_user_ids al parámetro de consulta expansions. A diferencia de los Tweets, los Spaces son efímeros y dejan de estar disponibles cuando terminan o cuando su creador los cancela. Cuando tu App gestione datos de Spaces, eres responsable de devolver la información más actualizada y debes eliminar los datos que ya no estén disponibles en la plataforma. Los endpoints de búsqueda de Spaces pueden ayudarte a garantizar que respetas las expectativas e intención de los usuarios.
Valor del campoTipoDescripciónCómo se puede usar
id (predeterminado)stringIdentificador único del Space solicitado.
"id": "1zqKVXPQhvZJB"
Identificar de forma única un Space devuelto en la respuesta.
state (predeterminado)stringIndica si el Space ha empezado, empezará o ha terminado.
"state": "live"
Filtrar Spaces en vivo o programados.
created_atdate (ISO 8601)Hora de creación de este Space.
"created_at": "2021-07-04T23:12:08.000Z"
Entender cuándo se creó un Space y ordenar por tiempo.
creator_idstringIdentificador único del creador del Space.
"creator_id": "2244994945"
ended_atdate (ISO 8601)Hora en que finalizó el Space, si corresponde.
"ended_at": "2021-07-04T00:11:44.000Z"
Determinar cuándo terminó un Space en vivo para calcular su duración.
host_idsarrayIdentificadores únicos de los anfitriones del Space.
"host_ids": ["2244994945", "6253282"]
Ampliar objetos de usuario y entender la interacción.
langstringIdioma del Space, si se detecta.
"lang": "en"
Clasificar Spaces por idioma.
is_ticketedbooleanIndica si es un Space con entradas.
"is_ticketed": false
Destacar contenido de interés.
invited_user_idsarrayLista de IDs de usuarios invitados como oradores.
"invited_user_ids": ["2244994945", "6253282"]
Ampliar objetos de usuario y entender la interacción.
participant_countintegerNúmero de usuarios en el Space, incluidos anfitriones y oradores.
"participant_count": 420
Entender la interacción y crear informes.
subscriber_countintegerNúmero de personas que establecieron un recordatorio para un Space.
"subscriber_count": 36
Entender el interés en el evento.
scheduled_startdate (ISO 8601)Hora de inicio programada del Space.
"scheduled_start": "2021-07-14T08:00:00.000Z"
Integrar con notificaciones de calendario.
speaker_idsarrayLista de usuarios que hablaron en algún momento.
"speaker_ids": ["2244994945", "6253282"]
Ampliar objetos de usuario y entender la interacción.
started_atdate (ISO 8601)Hora real de inicio de un Space.
"started_at": "2021-07-14T08:00:12.000Z"
Determinar la hora de inicio del Space.
titlestringTítulo del Space.
"title": "Say hello to the Space data object!"
Entender palabras clave, hashtags y menciones.
topic_idsarrayIDs de temas seleccionados por el creador del Space.
"topic_ids": ["2244994945", "6253282"]
Entender palabras clave, hashtags y menciones.
iddate (ISO 8601)Última actualización de los metadatos del Space.
"updated_at": "2021-07-11T14:44:44.000Z"
Mantener la información actualizada.
Recuperar un objeto Space Solicitud de ejemplo En la siguiente solicitud, pedimos fields para el Space en el endpoint de búsqueda de Spaces. Asegúrate de reemplazar $BEARER_TOKEN por tu propio Bearer Token generado.
curl "https://api.x.com/2/spaces/1DXxyRYNejbKM?space.fields=created_at,creator_id,created_athost_ids,lang,is_ticketed,invited_user_ids,participant_count,scheduled_start,speaker_ids,started_at,state,title,updated_at&expansions=creator_id,host_ids,invited_user_ids,speaker_ids" --header "Authorization: Bearer $BEARER_TOKEN"
** Respuesta de ejemplo **
{
  "data": {
    "id": "1zqKVXPQhvZJB",
    "state": "live",
    "created_at": "2021-07-04T23:12:08.000Z",
    "host_ids": [
      "2244994945",
      "6253282"
    ],
    "lang": "en",
    "is_ticketed": false,
    "invited_user_ids": [
      "2244994945",
      "6253282"
    ],
    "participant_count": 420,
    "scheduled_start": "2021-07-14T08:00:00.000Z",
    "speaker_ids": [
      "2244994945",
      "6253282"
    ],
    "started_at": "2021-07-14T08:00:12.000Z",
    "title": "¡Di hola al objeto de datos Space!",
    "updated_at": "2021-07-11T14:44:44.000Z"
  },
  "includes": {
    "users": [
      {
        "id": "2244994945",
        "name": "Twitter Dev",
        "username": "TwitterDev"
      },
      {
        "id": "6253282",
        "name": "Twitter API",
        "username": "TwitterAPI"
      }
    ]
  }
}

Lista

El objeto List contiene metadatos de Listas de Twitter que describen la Lista referenciada. El objeto List es el objeto principal devuelto en el endpoint de consulta de Listas. Al solicitar campos adicionales de List en este endpoint, use el parámetro fields list.fields. El objeto List no aparece como hijo de otros objetos de datos. Sin embargo, los objetos de usuario pueden encontrarse y expandirse en el recurso de usuario. Estos objetos están disponibles para expansión añadiendo owner&#95;id al parámetro de consulta expansions. Use esta expansión con el parámetro de campos list.fields cuando solicite campos adicionales para completar el objeto List principal y user.fields para completar el objeto expandido.
Valor del campoTipoDescripciónCómo puede usarse
id (predeterminado)stringEl identificador único de esta Lista.
"id": "2244994945"
Úselo para recuperar de forma programática información sobre una Lista específica.
name (predeterminado)stringEl nombre de la Lista, tal como se definió al crearla.
"name": "Twitter Lists"
created_atdate (ISO 8601)La fecha y hora UTC en que se creó la Lista.
"created_at": "2013-12-14T04:35:55.000Z"
Determine cuánto tiempo lleva una Lista en Twitter.
descriptionstringUna breve descripción para informar a los usuarios sobre la Lista.
"description": "People that are active members of the Bay area cycling community on Twitter."
follower_countintegerMuestra cuántos usuarios siguen esta Lista.
"follower_count": 198
member_countintegerMuestra cuántos miembros forman parte de esta Lista.
"member_count": 60
privatebooleanIndica si la Lista es privada.
"private": false
owner_idstringIdentificador único del propietario de esta Lista.
"owner_id": "1255542774432063488"
Puede usarse para averiguar si este usuario posee otras Listas y para expandir objetos de usuario.
Obtención de un objeto de usuario Solicitud de ejemplo En la siguiente solicitud, pedimos campos para el usuario en el endpoint List lookup by ID. Reemplace $BEARER_TOKEN por su Bearer Token generado.
curl --request GET 'https://api.x.com/2/lists/1355797419175383040?list.fields=created_at,description,private,follower_count,member_count,owner_id&expansions=owner_id' --header 'Authorization: Bearer $BEARER_TOKEN'
** Respuesta de ejemplo**
{
  "data": {
    "name": "Twitter Comms",
    "member_count": 60,
    "id": "1355797419175383040",
    "private": false,
    "description": "",
    "follower_count": 198,
    "owner_id": "257366942",
    "created_at": "2021-01-31T08:37:48.000Z"
  },
  "includes": {
    "users": [
      {
        "created_at": "2011-02-25T07:51:26.000Z",
        "name": "Ashleigh Hay 🤸🏼‍♀️",
        "id": "257366942",
        "username": "shleighhay",
        "verified": false
      }
    ]
  }
}

Media

Media se refiere a cualquier imagen, GIF o video adjunto a un Tweet. El objeto de media no es un objeto principal en ningún endpoint, pero puede encontrarse y expandirse dentro del objeto Tweet. El objeto está disponible para expansión con ?expansions=attachments.media_keys para obtener el objeto condensado con solo los campos predeterminados. Use la expansión junto con el parámetro de campos: media.fields cuando solicite campos adicionales para completar el objeto.
Field valueTypeDescriptionHow it can be used
media_key (default)stringIdentificador único del contenido multimedia expandido.
"media_key": "13_1263145212760805376"
Puede usarse para recuperar contenido multimedia de forma programática
type (default)stringTipo de contenido (animated_gif, photo, video).
"type": "video"
Clasificar el contenido como foto, GIF o video
urlstringURL directa al archivo multimedia en Twitter.Devuelve un objeto Media con un campo URL para fotos
duration_msintegerDisponible cuando el tipo es video. Duración del video en milisegundos.
"duration_ms": 46947
heightintegerAltura de este contenido en píxeles.
"height": 1080
non_public_metricsobjectMétricas de interacción no públicas del contenido multimedia en el momento de la solicitud. Requiere autenticación con contexto de usuario.
"non_public_metrics": { "playback_0_count": 1561, "playback_100_count": 116, "playback_25_count": 559, "playback_50_count": 305, "playback_75_count": 183,}
Determinar la interacción con el video: cuántos usuarios reprodujeron cada cuarto del video.
organic_metricsobjectMétricas de interacción del contenido multimedia, registradas en un contexto orgánico, en el momento de la solicitud. Requiere autenticación con contexto de usuario.
"organic_metrics": { "playback_0_count": 1561, "playback_100_count": 116, "playback_25_count": 559, "playback_50_count": 305, "playback_75_count": 183, "view_count": 629}
Determinar la interacción orgánica con el contenido multimedia.
preview_image_urlstringURL de la vista previa estática de este contenido.
"preview_image_url": "https://pbs.twimg.com/media/EYeX7akWsAIP1_1.jpg"
promoted_metricsobjectMétricas de interacción del contenido multimedia, registradas en un contexto promocionado, en el momento de la solicitud. Requiere autenticación con contexto de usuario.
"promoted_metrics": { "playback_0_count": 259, "playback_100_count": 15, "playback_25_count": 113, "playback_50_count": 57, "playback_75_count": 25, "view_count": 124}
Determinar la interacción con el contenido cuando el Tweet fue promocionado.
public_metricsobjectMétricas públicas de interacción del contenido multimedia en el momento de la solicitud.
"public_metrics": { "view_count": 6865141}
Determinar el número total de visualizaciones del video adjunto al Tweet.
widthintegerAncho de este contenido en píxeles.
"width": 1920
alt_textstringDescripción de una imagen para habilitar y respaldar la accesibilidad. Puede tener hasta 1000 caracteres. Por el momento, el texto alternativo solo puede agregarse a imágenes.
"alt_text": "Rugged hills along the Na Pali coast on the island of Kauai"
Puede usarse para proporcionar una descripción escrita de una imagen en caso de que un usuario tenga una discapacidad visual.
variantsarrayCada objeto multimedia puede tener múltiples variantes de visualización o reproducción, con diferentes resoluciones o formatos.
"variants": [{ "bit_rate": 632000, "content_type": "video/mp4", "url": "https://video.twimg.com/ext_tw_video/1527322141724532740/pu/vid/320x568/lnBaR2hCqE-R_90a.mp4?tag=12"}]
Recuperar un objeto de media Solicitud de ejemplo En la siguiente solicitud, pedimos fields para el objeto de medios adjunto al Tweet en el endpoint Tweet lookup. Dado que media es un objeto hijo de un Tweet, se requiere la expansión attachment.media_keys. Asegúrate de reemplazar $BEARER_TOKEN por tu propio Bearer Token generado.
curl --request GET 'https://api.x.com/2/tweets?ids=1263145271946551300&expansions=attachments.media_keys&media.fields=duration_ms,height,media_key,preview_image_url,public_metrics,type,url,width,alt_text' --header 'Authorization: Bearer $BEARER_TOKEN'
{
  "data": [
    {
      "text": "Testing, testing...\n\nA new way to have a convo with exactly who you want. We’re starting with a small % globally, so keep your 👀 out to see it in action. https://t.co/pV53mvjAVT",
      "id": "1263145271946551300",
      "attachments": {
        "media_keys": [
          "13_1263145212760805376"
        ]
      }
    }
  ],
  "includes": {
    "media": [
      {
        "duration_ms": 46947,
        "type": "video",
        "height": 1080,
        "media_key": "13_1263145212760805376",
        "public_metrics": {
          "view_count": 6909260
        },
        "preview_image_url": "https://pbs.twimg.com/media/EYeX7akWsAIP1_1.jpg",
        "width": 1920
      }
    ]
  }
}

Encuesta

Una encuesta incluida en un Tweet no es un objeto principal en ningún endpoint, pero puede encontrarse y expandirse dentro del objeto Tweet. El objeto está disponible para expansión con ?expansions=attachments.poll_ids para obtener el objeto resumido con solo los campos predeterminados. Usa la expansión junto con el parámetro de campos: poll.fields cuando solicites campos adicionales para completar el objeto.
Valor del campoTipoDescripción
id (predeterminado)stringIdentificador único de la encuesta expandida.
{"id": "1199786642791452673"}
options (predeterminado)arrayContiene objetos que describen cada opción de la encuesta referenciada.
{"options": [ { "position": 1, "label": "“C Sharp”", "votes": 795 }, { "position": 2, "label": "“C Hashtag”", "votes": 156 } ]}
duration_minutesintegerEspecifica la duración total de esta encuesta.
{"duration_minutes": 1440}
end_datetimedate (ISO 8601)Especifica la fecha y hora de finalización de esta encuesta.
{"end_datetime": "2019-11-28T20:26:41.000Z"}
voting_statusstringIndica si esta encuesta aún está activa y puede recibir votos, o si la votación ya está cerrada.
{"voting_status": "closed"}
Recuperar un objeto de encuesta Solicitud de ejemplo En la siguiente solicitud, se solicitan campos para el objeto de encuesta adjunto al Tweet en el endpoint de Tweets lookup. Dado que la encuesta es un objeto hijo de un Tweet, se requiere la expansión attachments.poll_id. Asegúrate de reemplazar $BEARER_TOKEN por tu propio Bearer Token generado.
curl --request GET 'https://api.x.com/2/tweets?ids=1199786642791452673&expansions=attachments.poll_ids&poll.fields=duration_minutes,end_datetime,id,options,voting_status' --header 'Authorization: Bearer $BEARER_TOKEN'
Respuesta de muestra
{
  "data": [
    {
      "text": "C#",
      "id": "1199786642791452673",
      "attachments": {
        "poll_ids": [
          "1199786642468413448"
        ]
      }
    }
  ],
  "includes": {
    "polls": [
      {
        "id": "1199786642468413448",
        "voting_status": "closed",
        "duration_minutes": 1440,
        "options": [
          {
            "position": 1,
            "label": "«C Sharp»",
            "votes": 795
          },
          {
            "position": 2,
            "label": "«C hashtag»",
            "votes": 156
          }
        ],
        "end_datetime": "2019-11-28T20:26:41.000Z"
      }
    ]
  }
}

Lugar

El lugar etiquetado en un Tweet no es un objeto principal en ningún endpoint, pero se puede encontrar y expandir en el recurso de Tweet. El objeto está disponible para su expansión con ?expansions=geo.place&#95;id para obtener el objeto condensado con solo los campos predeterminados. Usa la expansión con el parámetro de campos: place.fields al solicitar campos adicionales para completar el objeto.
Valor del campoTipoDescripciónCómo se puede usar
full_name (predeterminado)stringNombre de lugar detallado y de mayor longitud.Clasificar un Tweet por un nombre de lugar específico
"full_name": "Manhattan, NY"
id (predeterminado)stringEl identificador único del lugar expandido, si se trata de un punto de interés etiquetado en el Tweet.Úsalo para recuperar un lugar mediante programación
"id": "01a9a39529b27f36"
contained_withinarrayDevuelve los identificadores de los lugares conocidos que contienen el lugar de referencia.
countrystringEl nombre completo del país al que pertenece este lugar.Clasificar un Tweet por nombre de país
"country": "United States"
country_codestringEl código de país ISO Alpha-2 al que pertenece este lugar.Clasificar un Tweet por código de país
"country_code": "US"
geoobjectContiene detalles del lugar en formato GeoJSON.
`json
”geo”:
“type”: “Feature”,
“bbox”: [
-74.026675,
40.683935,
-73.910408,
40.877483
],
“properties”:
}
`
namestringEl nombre corto de este lugar.Clasificar un Tweet por un nombre de lugar específico
"name": "Manhattan"
place_typestringEspecifica el tipo particular de información representada por este lugar, como el nombre de una ciudad o un punto de interés.Clasificar un Tweet por un tipo específico de lugar
"place_type": "city"
Recuperación de un objeto de lugar Solicitud de ejemplo En la siguiente solicitud, se solicitan campos para el objeto de lugar adjunto al Tweet en el endpoint de Tweets lookup. Dado que el lugar es un objeto hijo de un Tweet, se requiere la expansión geo.place&#95;id. Asegúrate de reemplazar $BEARER_TOKEN con tu propio Bearer Token generado.
curl --request GET 'https://api.x.com/2/tweets?ids=1136048014974423040&expansions=geo.place_id&place.fields=contained_within,country,country_code,full_name,geo,id,name,place_type' --header 'Authorization: Bearer $BEARER_TOKEN'
Ejemplo de respuesta
{
  "data": [
    {
      "text": "Estamos compartiendo una demostración en vivo del nuevo programa Twitter Developer Labs, dirigida por un miembro de nuestro equipo de DevRel, @jessicagarson #TapIntoTwitter https://t.co/ghv7f4dW5M",
      "id": "1136048014974423040",
      "geo": {
        "place_id": "01a9a39529b27f36"
      }
    }
  ],
  "includes": {
    "places": [
      {
        "geo": {
          "type": "Feature",
          "bbox": [
            -74.026675,
            40.683935,
            -73.910408,
            40.877483
          ],
          "properties": {}
        },
        "country_code": "US",
        "name": "Manhattan",
        "id": "01a9a39529b27f36",
        "place_type": "city",
        "country": "Estados Unidos",
        "full_name": "Manhattan, NY"
      }
    ]
  }
}

Eventos de Mensaje Directo

Las conversaciones de Mensaje Directo (DM) se componen de eventos. La X API v2 actualmente admite tres tipos de eventos: MessageCreate, ParticipantsJoin y ParticipantsLeave. Los objetos de eventos de DM los devuelven los endpoints de búsqueda de Mensajes Directos, y se crea un evento MessageCreate cuando los Mensajes Directos se crean correctamente con los endpoints de Administrar Mensajes Directos. Al solicitar eventos de DM, se incluyen tres atributos predeterminados del objeto de evento, o fields: id, event_type y text. Para recibir campos de evento adicionales, usa el parámetro fields dm_event.fields para seleccionar otros. Otros campos de evento disponibles incluyen lo siguiente: dm_conversation_id, created_at, sender_id, attachments, participant_ids y referenced_tweets. Varios de estos campos proporcionan los ID de otros objetos de X relacionados con el evento de Mensaje Directo:
  • sender_id - El ID de la cuenta que envió el mensaje o que invitó a un participante a una conversación de grupo
  • participant_ids - Una matriz de ID de cuenta. Para los eventos ParticipantsJoin y ParticipantsLeave, esta matriz contendrá un único ID de la cuenta que creó el evento
  • attachments - Proporciona ID de medios para contenido que el remitente ha subido a X
  • referenced_tweets - Si se encuentra una URL de un Tweet en el campo text, el ID de ese Tweet se incluye en la respuesta
Las expansions sender_id, participant_ids, referenced_tweets.id y attachments.media_keys están disponibles para expandir estos ID de objetos de X.
Valor del campoTipoDescripciónCómo se puede usar
id (predeterminado)stringEl identificador único del evento.

”id”: “1050118621198921728”
Use esto para recuperar mediante programación un evento de conversación específico (disponible con endpoints v1.1).
event_type (predeterminado)stringDescribe el tipo de evento. Actualmente se admiten tres tipos:

* MessageCreate

* ParticipantsJoin

* ParticipantsLeave


“event_type”: “MessageCreate”
Al recuperar el historial de una conversación, para comprender cuándo se crearon los mensajes y, en conversaciones grupales, cuándo los participantes se unieron y cuándo se fueron. Todos los métodos GET admiten el filtrado por tipos de evento específicos con el parámetro de consulta event_type=.
text (predeterminado)stringEl texto UTF-8 del Mensaje Directo.

”text”: “Hello, just you!”
Con chatbots, esto puede usarse para analizar el contenido de los mensajes y determinar respuestas automatizadas. También puede usarse para crear funciones de búsqueda de conversaciones.
entitiesobjectEntidades extraídas del texto del MD.Proporciona información adicional sobre hashtags, URL, menciones, etc.
sender_idstringID del Usuario que crea el evento. Para expandir este objeto en la respuesta, incluya sender_id como una expansión y use el parámetro de consulta user.fields para especificar los atributos del objeto User de interés.

”sender_id”: “906948460078698496”
Recupere el objeto User de quien creó el evento MessageCreate o ParticipantsJoin.
participant_idsarray (of strings)IDs de los participantes que se unen y salen de una conversación grupal. También se utiliza al crear nuevas conversaciones grupales. Para expandir este objeto en la respuesta, incluya participant_ids como una expansión y use el parámetro de consulta user.fields para especificar los atributos del objeto User de interés.

”participant_ids”: [

     “906948460078698496”

]
Se utiliza para recuperar objetos User de los participantes que se unen y salen de conversaciones grupales.
dm_conversation_idstringEl identificador único de la conversación de la que forma parte el evento.

”dm_conversation_id”: “1584988213961031680”
Use esto para recuperar mediante programación eventos de una conversación y agregar Mensajes Directos a ella.
created_atdate (ISO 8601)Hora de creación (UTC) del Tweet.

”created_at”: “2019-06-04T23:12:08.000Z”
Este campo puede usarse para comprender cuándo se creó un Mensaje Directo o cuándo los participantes de la conversación se unieron o se fueron.
referenced_tweetsarrayID de cualquier Tweet mencionado en el texto del Mensaje Directo. Para expandir este objeto en la respuesta, incluya referenced_tweets.id como una expansión y use el parámetro de consulta tweet.fields para especificar los atributos del objeto Tweet de interés.

”referenced_tweets”: [

   

“id”: “1578868150510456833”

   

]
Cuando los Mensajes Directos hacen referencia a un Tweet, estos IDs pueden usarse para consultar los detalles del Tweet.
attachmentsobjectPara Mensajes Directos con contenido multimedia adjunto, proporciona la media key del contenido cargado (foto, video o GIF). Para expandir este objeto en la respuesta, incluya attachments.media_keys como una expansión y use el parámetro de consulta media.fields para especificar los atributos del objeto media de interés. Actualmente se admite un adjunto.

”attachments”:

    “media_keys”: [

        “3_1136048009270239232”

    ]

Para comprender los objetos multimedia adjuntos a los Mensajes Directos.
Recuperar un objeto de evento de Mensaje Directo Solicitud de ejemplo Para este ejemplo, crearemos una solicitud que recupere eventos asociados con una conversación uno a uno. Esta solicitud devolverá campos fundamentales del evento de Mensaje Directo, junto con campos adicionales para Tweets referenciados y sus autores. Construyamos una consulta que solicite:
  • Atributos fundamentales del evento, como cuándo se creó y de qué conversación forma parte (dm_conversation).
  • El ID de la cuenta y la descripción de quien envió el Mensaje Directo.
  • El texto de cualquier Tweet referenciado y cuándo se publicó.
  • El ID de la cuenta y la descripción de cualquier autor de Tweet referenciado.
Para devolver esos atributos, la consulta de su solicitud incluiría lo siguiente: ?dm_event.fields=id,sender&#95;id,text,created_at,dm_conversation_id&expansions=sender&#95;id,referenced_tweets.id&tweet.fields=created_at,text,author_id&user.fields=description
      curl --request GET 'https://api.x.com/2/dm_conversations/with/:participant_id/dm_events?tweet.fields=created_at,text,author_id&user.fields=description&expansions=sender_id,participant_ids,referenced_tweets.id&dm_event.fields=id,sender_id,text,participant_ids,created_at,'
    --header 'Authorization: Bearer $BEARER_TOKEN'
Asegúrate de reemplazar $BEARER_TOKEN por tu propio Bearer Token generado. Respuesta de ejemplo
      {
	"data": [{
			"id": "1585047616894574596",
			"sender_id": "944480690",
			"text": "¡Hola, solo tú!",
			"created_at": "2022-10-25T23:16:15.000Z",
			"event_type": "MessageCreate",
			"dm_conversation_id": "944480690-906948460078698496"
		},
		{
			"id": "1581048670673260549",
			"sender_id": "944480690",
			"text": "Enlace simple de Tweet: https://t.co/IYFbRIdXHg",
			"referenced_tweets": [{
				"id": "1578900353814519810"
			}],
			"created_at": "2022-10-14T22:25:52.000Z",
			"event_type": "MessageCreate",
			"dm_conversation_id": "944480690-906948460078698496"
		},
		{
			"id": "1580705121553420292",
			"sender_id": "944480690",
			"text": "Agregando un nuevo Mensaje Directo 1 a 1.",
			"created_at": "2022-10-13T23:40:43.000Z",
			"event_type": "MessageCreate",
			"dm_conversation_id": "944480690-906948460078698496"
		}
	],
	"includes": {
		"users": [{
				"name": "Demos de API",
				"description": "Alojando integraciones de TwitterDev... @TwitterDev #DevRel",
				"id": "944480690",
				"username": "FloodSocial"
			},
			{
				"name": "el SnowBot",
				"description": "Hogar del SnowBot de @TwitterDev... Sirviendo reportes de nieve, fotos de nieve y enlaces de investigación sobre nieve... El chatbot está siendo remodelado actualmente para la APIv2 de Twitter.",
				"id": "906948460078698496",
				"username": "SnowBotDev"
			}
		],
		"tweets": [{
				"text": "Me siento un poco mal por no haberle deseado a todos un feliz nuevo Año Hidrológico de Colorado…\n\n¡Feliz Año Hidrológico a todos mis amigos y colegas de Colorado, nuevos y antiguos…!\n\nQue este sea un año hidrológico generoso, aunque no demasiado generoso…",
				"id": "1578900353814519810",
				"created_at": "2022-10-09T00:09:13.000Z",
				"author_id": "944480690",
				"edit_history_tweet_ids": [
					"1578900353814519810"
				]
			}
		]
	},
	"meta": {
		"result_count": 3,
		"next_token": "18LAA581J5II7LA00C00ZZZZ",
		"previous_token": "1BLC45G1H8CAL5DG0G00ZZZZ"
	}
}

Comunidad

Las Comunidades son espacios dedicados donde los usuarios de X pueden conectarse, compartir y acercarse a las conversaciones que más les importan. Las publicaciones en las Comunidades pueden ser vistas por cualquier persona en X, pero solo quienes pertenecen a la propia Comunidad pueden interactuar y participar en la conversación. El objeto Community contiene metadatos relevantes sobre una Comunidad.
Valor del campoTipoDescripción
created_atdate (ISO 8601)Fecha de creación de la Comunidad.
idstringEl identificador único de la Comunidad.
namestringEl nombre de la Comunidad.
descriptionstringEl texto de la descripción de la Comunidad, si se proporciona.
accessstringEl nivel de acceso de la Comunidad.

Puede ser uno de:
- Public
- Closed
join_policystringLa política de incorporación de la Comunidad.

Puede ser una de:
- Open
- RestrictedJoinRequestsDisabled
- RestrictedJoinRequestsRequireAdminApproval
- RestrictedJoinRequestsRequireModeratorApproval
- SuperFollowRequired
member_countintegerLa cantidad de miembros que se han unido a la Comunidad.
Recuperación de objetos Community Solicitud de ejemplo En la siguiente solicitud, se piden campos específicos al buscar una lista de Comunidades según una palabra clave proporcionada. Asegúrate de reemplazar $BEARER_TOKEN por tu propio Bearer Token generado.
curl --location 'https://api.x.com/2/communities/search?query=anime&amp;community.fields=access,created_at,description,id,join_policy,member_count,name' --header 'Authorization: $BEARER_TOKEN'
Ejemplo de respuesta
{
  "data": [
    {
      "id": "Q29tbXVuaXR5OjE3NTg3NDc4MTc2NDI3MDA5MjI=",
      "description": "¡Bienvenido a la Comunidad de Anime! Donde los fans del anime se reúnen para compartir sus series favoritas y hablar de todo lo relacionado con el anime.",
      "join_policy": "Open",
      "access": "Public",
      "member_count": 39915,
      "name": "Comunidad de Anime",
      "created_at": "2024-02-17T06:58:50.000Z"
    },
    {
      "id": "Q29tbXVuaXR5OjE1MDY3OTM5NTMxMDYwNDI4OTE=",
      "description": "Únete y chatea sobre anime 🥰",
      "join_policy": "Open",
      "access": "Public",
      "member_count": 26019,
      "name": "Mundo del Anime 🌸",
      "created_at": "2022-03-24T00:44:07.000Z"
    },
    {
      "id": "Q29tbXVuaXR5OjE0OTY3NzYyMTU5Mzk1MzQ4NDk=",
      "description": "¡Para todos los amantes y creadores del anime!",
      "join_policy": "Open",
      "access": "Public",
      "member_count": 5612,
      "name": "Anime",
      "created_at": "2022-02-24T09:17:13.000Z"
    }
  ],
  "meta": {
    "next_token": "7140dibdnow9c7btw481s8m561gat797rboud5r80xvzm"
  }
}

Cómo usar fields y expansions

De forma predeterminada, los objetos de datos de X API v2 incluyen una pequeña cantidad de campos predeterminados cuando se realiza una solicitud sin utilizar los parámetros fields o expansions. Esta guía le mostrará cómo usar los parámetros de consulta fields y expansions en su solicitud para recibir objetos y campos adicionales en su respuesta. En esta guía, solicitaremos varios campos presentes en la siguiente captura de pantalla de un Tweet.   Esta imagen incluye una captura de pantalla de un Tweet publicado por @X. Puede ver el texto del Tweet, el nombre de usuario, la fecha y hora de publicación, la fuente y las métricas públicas. También incluye un video. Como puede ver en la captura, hay varias piezas de información visibles relacionadas con el Tweet, incluido el autor del Tweet, las métricas del Tweet, la marca de tiempo de creación, el video y el recuento de visualizaciones del video. También hay varios datos que no son visibles en la captura, pero que igualmente se pueden solicitar.  Al realizar una solicitud a la API, la respuesta predeterminada es simple y contiene solo los campos predeterminados del Tweet (id y text). Además, únicamente recibirá el objeto principal que devuelve el endpoint que está utilizando, y no los objetos de datos asociados que puedan estar relacionados con el objeto principal. Esta simplicidad, junto con los parámetros fields y expansions, le permite solicitar únicamente los campos que necesita, según su caso de uso.   

Solicitud de campos y objetos adicionales.

En primer lugar, solicitaremos un objeto Tweet utilizando un id de Tweet y el endpoint GET /tweets. Solicitud:
curl --request GET --url 'https://api.x.com/2/tweets?ids=1260294888811347969' \
  --header 'Authorization: Bearer $BEARER_TOKEN'
Response:
{
    "data": [
        {
            "id": "1260294888811347969",
            "text": "No te pierdas los Tweets sobre tu Tweet. \n\nAhora en iOS, puedes ver los Retweets con comentarios, todo en un solo lugar. https://t.co/oanjZfzC6y"
        }
    ]
}
La siguiente guía paso a paso te mostrará cómo obtener los datos adicionales que se pueden ver en la captura de pantalla.
  1. Identifica los campos adicionales que deseas solicitar usando nuestro modelo de objetos o revisando la lista de campos en las páginas de referencia de la API de los endpoints. En este caso, solicitaremos los siguientes campos adicionales: attachments, author_id, created_at, public_metrics.
  2. Cree el parámetro de consulta tweet.fields con los campos anteriores como valor, usando una lista separada por comas: ?tweet.fields=attachments,author_id,created_at,public_metrics
  3. Agrega el parámetro de consulta a la solicitud GET /tweets que realizaste anteriormente.
Solicitud: curl --request GET --url 'https://api.x.com/2/tweets?ids=1260294888811347969&tweet.fields=attachments,author_id,created_at,public_metrics' \ --header 'Authorization: Bearer $BEARER_TOKEN' Response:
{
    "data": [
        {
            "id": "1260294888811347969",
            "text": "No te pierdas los Tweets sobre tu Tweet. \n\nAhora en iOS, puedes ver los Retweets con comentarios, todo en un solo lugar. https://t.co/oanjZfzC6y",
            "author_id": "783214",
            "public_metrics": {
                "retweet_count": 5219,
                "reply_count": 1828,
                "like_count": 17141,
                "quote_count": 3255
            },
            "attachments": {
                "media_keys": [
                    "13_1260294804770041858"
                ]
            },
            "created_at": "2020-05-12T19:44:51.000Z"
        }
    ]
}
  1. A continuación, vamos a solicitar campos relacionados con el video que se incluyó en el Tweet. Para ello, utilizaremos el parámetro expansions con attachments.media_keys como valor, y lo agregaremos a la solicitud.
?expansions=attachments.media_keys Solicitud:
curl --request GET --url 'https://api.x.com/2/tweets?ids=1260294888811347969&tweet.fields=attachments,author_id,created_at,public_metrics&expansions=attachments.media_keys' \
  --header 'Authorization: Bearer $BEARER_TOKEN'
Respuesta, con el objeto de medios representado en el objeto includes:
{
    "data": [
        {
            "id": "1260294888811347969",
            "text": "No te pierdas los Tweets sobre tu Tweet. \n\nAhora en iOS, puedes ver los Retweets con comentarios, todo en un solo lugar. https://t.co/oanjZfzC6y",
            "public_metrics": {
                "retweet_count": 5219,
                "reply_count": 1828,
                "like_count": 17141,
                "quote_count": 3255
            },
            "created_at": "2020-05-12T19:44:51.000Z",
            "attachments": {
                "media_keys": [
                    "13_1260294804770041858"
                ]
            },
            "author_id": "783214"
        }
    ],
    "includes": {
        "media": [
            {
                "media_key": "13_1260294804770041858",
                "type": "video"
            }
        ]
    }
}
  1. Y finalmente, vamos a solicitar el recuento de visualizaciones y la duración del video. Estos no son campos predeterminados, por lo que tenemos que solicitarlos específicamente. Usa el parámetro media.fields con los valores separados por comas public_metrics y duration_ms en tu solicitud.
?media.fields=public_metrics,duration_ms Solicitud:   curl --request GET --url 'https://api.x.com/2/tweets?ids=1260294888811347969&tweet.fields=attachments,author_id,created_at,public_metrics&expansions=attachments.media_keys&media.fields=duration_ms,public_metrics' --header 'Authorization: Bearer $BEARER_TOKEN' Respuesta, que ahora incluye todos los datos visibles en la captura de pantalla del Tweet:
  {
    "data": [
        {
            "id": "1260294888811347969",
            "text": "No te pierdas los Tweets sobre tu Tweet. \n\nAhora en iOS, puedes ver los Retweets con comentarios, todo en un solo lugar. https://t.co/oanjZfzC6y",
            "author_id": "783214",
            "public_metrics": {
                "retweet_count": 5219,
                "reply_count": 1828,
                "like_count": 17141,
                "quote_count": 3255
            },
            "created_at": "2020-05-12T19:44:51.000Z",
            "attachments": {
                "media_keys": [
                    "13_1260294804770041858"
                ]
            }
        }
    ],
    "includes": {
        "media": [
            {
                "duration_ms": 36503,
                "media_key": "13_1260294804770041858",
                "public_metrics": {
                    "view_count": 1534703
                },
                "type": "video"
            }
        ]
    }
}
En total, incluimos los siguientes parámetros en este ejemplo:
  • ids=1260294888811347969
  • tweet.fields=attachments,author_id,created_at,public_metrics
  • expansions=attachments.media_keys
  • media.fields=public_metrics,duration_ms  
Al combinarlos, así se ve la cadena de consulta completa:
?ids=1260294888811347969&tweet.fields=attachments,author\_id,created\_at,public\_metrics&expansions=attachments.media\_keys&media.fields=public\_metrics,duration\_ms

Ejemplos de cargas útiles de la X API v2

Tweet

{
  "data": [
    {
      "conversation_id": "1304102743196356610",
      "id": "1307025659294674945",
      "possibly_sensitive": false,
      "public_metrics": {
        "retweet_count": 11,
        "reply_count": 2,
        "like_count": 70,
        "quote_count": 1
      },
      "entities": {
        "urls": [
          {
            "start": 74,
            "end": 97,
            "url": "https://t.co/oeF3ZHeKQQ",
            "expanded_url": "https://dev.to/twitterdev/understanding-the-new-tweet-payload-in-the-twitter-api-v2-1fg5",
            "display_url": "dev.to/twitterdev/und…",
            "images": [
              {
                "url": "https://pbs.twimg.com/news_img/1317156296982867969/2uLfv-Bh?format=jpg&name=orig",
                "width": 1128,
                "height": 600
              },
              {
                "url": "https://pbs.twimg.com/news_img/1317156296982867969/2uLfv-Bh?format=jpg&name=150x150",
                "width": 150,
                "height": 150
              }
            ],
            "status": 200,
            "title": "Entender el nuevo payload de Tweet en X API v2",
            "description": "X anunció recientemente la nueva X API v2, reconstruida desde cero para ofrecer nuevas funcionalidades...",
            "unwound_url": "https://dev.to/twitterdev/understanding-the-new-tweet-payload-in-the-twitter-api-v2-1fg5"
          }
        ]
      },
      "text": "Aquí tienes un artículo que destaca las actualizaciones en el nuevo payload de Tweet v2 https://t.co/oeF3ZHeKQQ",
      "in_reply_to_user_id": "2244994945",
      "created_at": "2020-09-18T18:36:15.000Z",
      "author_id": "2244994945",
      "referenced_tweets": [
        {
          "type": "replied_to",
          "id": "1304102743196356610"
        }
      ],
      "lang": "en",
      "source": "Twitter Web App"
    }
  ],
  "includes": {
    "users": [
      {
        "created_at": "2013-12-14T04:35:55.000Z",
        "profile_image_url": "https://pbs.twimg.com/profile_images/1283786620521652229/lEODkLTh_normal.jpg",
        "entities": {
          "url": {
            "urls": [
              {
                "start": 0,
                "end": 23,
                "url": "https://t.co/3ZX3TNiZCY",
                "expanded_url": "https://developer.x.com/en/community",
                "display_url": "developer.x.com/en/community"
              }
            ]
          },
          "description": {
            "hashtags": [
              {
                "start": 17,
                "end": 28,
                "tag": "TwitterDev"
              },
              {
                "start": 105,
                "end": 116,
                "tag": "TwitterAPI"
              }
            ]
          }
        },
        "id": "2244994945",
        "verified": true,
        "location": "127.0.0.1",
        "description": "La voz del equipo #TwitterDev y tu fuente oficial de actualizaciones, noticias y eventos relacionados con #TwitterAPI.",
        "pinned_tweet_id": "1293593516040269825",
        "username": "TwitterDev",
        "public_metrics": {
          "followers_count": 513961,
          "following_count": 2039,
          "tweet_count": 3635,
          "listed_count": 1672
        },
        "name": "Twitter Dev",
        "url": "https://t.co/3ZX3TNiZCY",
        "protected": false
      }
    ],
    "tweets": [
      {
        "conversation_id": "1304102743196356610",
        "id": "1304102743196356610",
        "possibly_sensitive": false,
        "public_metrics": {
          "retweet_count": 31,
          "reply_count": 12,
          "like_count": 104,
          "quote_count": 4
        },
        "entities": {
          "mentions": [
            {
              "start": 146,
              "end": 158,
              "username": "suhemparack"
            }
          ],
          "urls": [
            {
              "start": 237,
              "end": 260,
              "url": "https://t.co/CjneyMpgCq",
              "expanded_url": "https://x.com/TwitterDev/status/1304102743196356610/video/1",
              "display_url": "pic.x.com/CjneyMpgCq"
            }
          ],
          "hashtags": [
            {
              "start": 8,
              "end": 19,
              "tag": "TwitterAPI"
            }
          ]
        },
        "attachments": {
          "media_keys": [
            "13_1303848070984024065"
          ]
        },
        "text": "La nueva #TwitterAPI incluye algunas mejoras en el payload de Tweet. Probablemente te estés preguntando: ¿cuáles son las principales diferencias? 🧐\n\nEn este video, @SuhemParack compara el payload de Tweet v1.1 con lo que encontrarás usando nuestros endpoints v2. https://t.co/CjneyMpgCq",
        "created_at": "2020-09-10T17:01:37.000Z",
        "author_id": "2244994945",
        "lang": "en",
        "source": "Twitter Media Studio"
      }
    ]
  }
}

Respuesta al Tweet

{
  "data": [
    {
      "lang": "en",
      "conversation_id": "1296887091901718529",
      "text": "Mira cómo @PennMedCDH está usando datos de Twitter para entender la crisis de salud de COVID-19 📊\n\nhttps://t.co/1tdA8uDWes",
      "referenced_tweets": [
        {
          "type": "replied_to",
          "id": "1296887091901718529"
        }
      ],
      "possibly_sensitive": false,
      "entities": {
        "annotations": [
          {
            "start": 30,
            "end": 36,
            "probability": 0.6318,
            "type": "Product",
            "normalized_text": "Twitter"
          }
        ],
        "mentions": [
          {
            "start": 8,
            "end": 19,
            "username": "PennMedCDH"
          }
        ],
        "urls": [
          {
            "start": 87,
            "end": 110,
            "url": "https://t.co/1tdA8uDWes",
            "expanded_url": "https://developer.x.com/en/use-cases/success-stories/penn",
            "display_url": "developer.x.com/en/use-cases/s…",
            "status": 200,
            "title": "Centro de Salud Digital de Penn Medicine",
            "description": "El Centro de Salud Digital de Penn Med ha creado un mapa de Twitter sobre COVID-19 que incluye gráficos que detallan el sentimiento, los síntomas reportados, datos desglosados por estado y datos fronterizos sobre el brote de COVID-19. Además, su iniciativa Penn Med With You utiliza información regional agregada de Twitter para informar su sitio web y servicio de mensajería de texto. El servicio utiliza esta información para difundir recursos relevantes y oportunos.",
            "unwound_url": "https://developer.x.com/en/use-cases/success-stories/penn"
          }
        ]
      },
      "id": "1296887316556980230",
      "public_metrics": {
        "retweet_count": 9,
        "reply_count": 3,
        "like_count": 26,
        "quote_count": 2
      },
      "author_id": "2244994945",
      "in_reply_to_user_id": "2244994945",
      "context_annotations": [
        {
          "domain": {
            "id": "46",
            "name": "Categoría de Marca",
            "description": "Categorías dentro de las Verticales de Marca que reducen el alcance de las Marcas"
          },
          "entity": {
            "id": "781974596752842752",
            "name": "Servicios"
          }
        },
        {
          "domain": {
            "id": "47",
            "name": "Marca",
            "description": "Marcas y Empresas"
          },
          "entity": {
            "id": "10045225402",
            "name": "Twitter"
          }
        },
        {
          "domain": {
            "id": "123",
            "name": "Historia de Noticias en Curso",
            "description": "Historias de Noticias en Curso como 'Brexit'"
          },
          "entity": {
            "id": "1220701888179359745",
            "name": "COVID-19"
          }
        }
      ],
      "source": "Aplicación Web de Twitter",
      "created_at": "2020-08-21T19:10:05.000Z"
    }
  ],
  "includes": {
    "users": [
      {
        "created_at": "2013-12-14T04:35:55.000Z",
        "id": "2244994945",
        "protected": false,
        "username": "TwitterDev",
        "verified": true,
        "entities": {
          "url": {
            "urls": [
              {
                "start": 0,
                "end": 23,
                "url": "https://t.co/3ZX3TNiZCY",
                "expanded_url": "https://developer.x.com/en/community",
                "display_url": "developer.x.com/en/community"
              }
            ]
          },
          "description": {
            "hashtags": [
              {
                "start": 17,
                "end": 28,
                "tag": "TwitterDev"
              },
              {
                "start": 105,
                "end": 116,
                "tag": "TwitterAPI"
              }
            ]
          }
        },
        "description": "La voz del equipo #TwitterDev y tu fuente oficial de actualizaciones, noticias y eventos relacionados con la #TwitterAPI.",
        "pinned_tweet_id": "1293593516040269825",
        "public_metrics": {
          "followers_count": 513962,
          "following_count": 2039,
          "tweet_count": 3635,
          "listed_count": 1672
        },
        "location": "127.0.0.1",
        "name": "Twitter Dev",
        "profile_image_url": "https://pbs.twimg.com/profile_images/1283786620521652229/lEODkLTh_normal.jpg",
        "url": "https://t.co/3ZX3TNiZCY"
      },
      {
        "created_at": "2013-07-23T16:58:03.000Z",
        "id": "1615654896",
        "protected": false,
        "username": "PennMedCDH",
        "verified": false,
        "entities": {
          "url": {
            "urls": [
              {
                "start": 0,
                "end": 23,
                "url": "https://t.co/7eS9RuwIb9",
                "expanded_url": "http://centerfordigitalhealth.upenn.edu/",
                "display_url": "centerfordigitalhealth.upenn.edu"
              }
            ]
          },
          "description": {
            "mentions": [
              {
                "start": 0,
                "end": 13,
                "username": "PennMedicine"
              }
            ]
          }
        },
        "description": "El Centro de Salud Digital de @PennMedicine avanza la ciencia investigando las implicaciones del avance de la tecnología de salud digital en la atención médica.",
        "public_metrics": {
          "followers_count": 1348,
          "following_count": 455,
          "tweet_count": 1288,
          "listed_count": 92
        },
        "location": "Philadelphia, PA",
        "name": "Penn Med CDH",
        "profile_image_url": "https://pbs.twimg.com/profile_images/1067488849725726723/MoO3FQ44_normal.jpg",
        "url": "https://t.co/7eS9RuwIb9"
      }
    ],
    "tweets": [
      {
        "lang": "en",
        "conversation_id": "1296887091901718529",
        "text": "La Dra. @RainaMerchant y su equipo en el CDH de Penn Medicine están ayudando a construir el futuro de la atención médica.\n\nEl equipo está utilizando información de datos sociales de muchas maneras diferentes, desde descubrir factores de riesgo hasta arrojar luz sobre el sentimiento público. 🔎",
        "possibly_sensitive": false,
        "entities": {
          "annotations": [
            {
              "start": 39,
              "end": 55,
              "probability": 0.8274,
              "type": "Organization",
              "normalized_text": "Penn Medicine CDH"
            }
          ],
          "mentions": [
            {
              "start": 4,
              "end": 18,
              "username": "RainaMerchant"
            }
          ]
        },
        "id": "1296887091901718529",
        "public_metrics": {
          "retweet_count": 9,
          "reply_count": 7,
          "like_count": 32,
          "quote_count": 0
        },
        "author_id": "2244994945",
        "source": "Aplicación Web de Twitter",
        "created_at": "2020-08-21T19:09:12.000Z"
      }
    ]
  }
}

Tweet ampliado

{
  "data": [
    {
      "conversation_id": "1296121314218897408",
      "id": "1296121314218897408",
      "possibly_sensitive": false,
      "public_metrics": {
        "retweet_count": 54,
        "reply_count": 9,
        "like_count": 172,
        "quote_count": 23
      },
      "entities": {
        "urls": [
          {
            "start": 192,
            "end": 215,
            "url": "https://t.co/khXhTurm9x",
            "expanded_url": "https://devcommunity.x.com/t/hide-replies-now-available-in-the-new-twitter-api/140996",
            "display_url": "devcommunity.com/t/hide-replies…",
            "images": [
              {
                "url": "https://pbs.twimg.com/news_img/1296121315514957825/3CI24hSI?format=png&name=orig",
                "width": 400,
                "height": 400
              },
              {
                "url": "https://pbs.twimg.com/news_img/1296121315514957825/3CI24hSI?format=png&name=150x150",
                "width": 150,
                "height": 150
              }
            ],
            "status": 200,
            "title": "Ocultar respuestas ya disponible en la nueva API de Twitter",
            "description": "Hoy nos complace anunciar la disponibilidad general del endpoint para ocultar respuestas en la nueva API de Twitter. El endpoint para ocultar respuestas te permite crear herramientas que ayuden a las personas a ocultar o mostrar respuestas a sus Tweets. Las personas gestionan sus respuestas por diversas razones, como dar menos atención a comentarios abusivos, que distraen, engañosos, o para hacer las conversaciones más interesantes. A través de este endpoint, puedes crear herramientas para ayudar a las personas en X a ocultar o mostrar respuestas de forma más rápida y...",
            "unwound_url": "https://devcommunity.x.com/t/hide-replies-now-available-in-the-new-twitter-api/140996"
          }
        ],
        "hashtags": [
          {
            "start": 178,
            "end": 189,
            "tag": "TwitterAPI"
          }
        ]
      },
      "text": "¡El endpoint para ocultar respuestas se lanza hoy! \n\nLos desarrolladores pueden ocultar respuestas a Tweets, una forma crucial en que los desarrolladores pueden ayudar a mejorar la salud de la conversación pública usando la #TwitterAPI.\n\nhttps://t.co/khXhTurm9x",
      "created_at": "2020-08-19T16:26:16.000Z",
      "context_annotations": [
        {
          "domain": {
            "id": "65",
            "name": "Vertical de Intereses y Pasatiempos",
            "description": "Agrupaciones de nivel superior de intereses y pasatiempos, como Comida o Viajes"
          },
          "entity": {
            "id": "848920371311001600",
            "name": "Tecnología",
            "description": "Tecnología e informática"
          }
        },
        {
          "domain": {
            "id": "66",
            "name": "Categoría de Intereses y Pasatiempos",
            "description": "Una agrupación de entidades de intereses y pasatiempos, como Comida Novedosa o Destinos"
          },
          "entity": {
            "id": "848921413196984320",
            "name": "Programación informática",
            "description": "Programación informática"
          }
        }
      ],
      "author_id": "2244994945",
      "lang": "en",
      "source": "Aplicación Web de Twitter"
    }
  ],
  "includes": {
    "users": [
      {
        "created_at": "2013-12-14T04:35:55.000Z",
        "profile_image_url": "https://pbs.twimg.com/profile_images/1283786620521652229/lEODkLTh_normal.jpg",
        "entities": {
          "url": {
            "urls": [
              {
                "start": 0,
                "end": 23,
                "url": "https://t.co/3ZX3TNiZCY",
                "expanded_url": "https://developer.x.com/en/community",
                "display_url": "developer.x.com/en/community"
              }
            ]
          },
          "description": {
            "hashtags": [
              {
                "start": 17,
                "end": 28,
                "tag": "TwitterDev"
              },
              {
                "start": 105,
                "end": 116,
                "tag": "TwitterAPI"
              }
            ]
          }
        },
        "id": "2244994945",
        "verified": true,
        "location": "127.0.0.1",
        "description": "La voz del equipo #TwitterDev y tu fuente oficial de actualizaciones, noticias y eventos relacionados con la #TwitterAPI.",
        "pinned_tweet_id": "1293593516040269825",
        "username": "TwitterDev",
        "public_metrics": {
          "followers_count": 513962,
          "following_count": 2039,
          "tweet_count": 3635,
          "listed_count": 1672
        },
        "name": "Twitter Dev",
        "url": "https://t.co/3ZX3TNiZCY",
        "protected": false
      }
    ]
  }
}

Tweet con multimedia

{
  "data": [
    {
      "lang": "en",
      "conversation_id": "1293593516040269825",
      "text": "It’s finally here! 🥁 Say hello to the new #TwitterAPI.\n\nWe’re rebuilding the X API v2 from the ground up to better serve our developer community. And today’s launch is only the beginning.\n\nhttps://t.co/32VrwpGaJw https://t.co/KaFSbjWUA8",
      "attachments": {
        "media_keys": [
          "7_1293565706408038401"
        ]
      },
      "possibly_sensitive": false,
      "entities": {
        "annotations": [
          {
            "start": 78,
            "end": 88,
            "probability": 0.4381,
            "type": "Producto",
            "normalized_text": "Twitter API"
          }
        ],
        "hashtags": [
          {
            "start": 42,
            "end": 53,
            "tag": "TwitterAPI"
          }
        ],
        "urls": [
          {
            "start": 195,
            "end": 218,
            "url": "https://t.co/32VrwpGaJw",
            "expanded_url": "https://blog.x.com/developer/en_us/topics/tools/2020/introducing_new_twitter_api.html",
            "display_url": "blog.x.com/developer/en_u…",
            "images": [
              {
                "url": "https://pbs.twimg.com/news_img/1336475659279818754/_cmRh7QE?format=jpg&name=orig",
                "width": 1200,
                "height": 627
              },
              {
                "url": "https://pbs.twimg.com/news_img/1336475659279818754/_cmRh7QE?format=jpg&name=150x150",
                "width": 150,
                "height": 150
              }
            ],
            "status": 200,
            "title": "Presentamos una X API nueva y mejorada",
            "description": "Presentamos la nueva X API: reconstruida desde cero para ofrecer nuevas funciones más rápido y permitir que los desarrolladores ayuden al mundo a conectarse con la conversación pública que ocurre en Twitter.",
            "unwound_url": "https://blog.x.com/developer/en_us/topics/tools/2020/introducing_new_twitter_api.html"
          },
          {
            "start": 219,
            "end": 242,
            "url": "https://t.co/KaFSbjWUA8",
            "expanded_url": "https://x.com/TwitterDev/status/1293593516040269825/video/1",
            "display_url": "pic.x.com/KaFSbjWUA8"
          }
        ]
      },
      "id": "1293593516040269825",
      "public_metrics": {
        "retweet_count": 958,
        "reply_count": 171,
        "like_count": 2848,
        "quote_count": 333
      },
      "author_id": "2244994945",
      "context_annotations": [
        {
          "domain": {
            "id": "46",
            "name": "Categoría de marca",
            "description": "Categorías dentro de las verticales de marca que delimitan el alcance de las marcas"
          },
          "entity": {
            "id": "781974596752842752",
            "name": "Servicios"
          }
        },
        {
          "domain": {
            "id": "47",
            "name": "Marca",
            "description": "Marcas y empresas"
          },
          "entity": {
            "id": "10045225402",
            "name": "Twitter"
          }
        },
        {
          "domain": {
            "id": "65",
            "name": "Vertical de intereses y pasatiempos",
            "description": "Agrupaciones de nivel superior de intereses y pasatiempos, como comida o viajes"
          },
          "entity": {
            "id": "848920371311001600",
            "name": "Tecnología",
            "description": "Tecnología e informática"
          }
        },
        {
          "domain": {
            "id": "66",
            "name": "Categoría de intereses y pasatiempos",
            "description": "Agrupación de entidades de intereses y pasatiempos, como comida novedosa o destinos"
          },
          "entity": {
            "id": "848921413196984320",
            "name": "Programación informática",
            "description": "Programación informática"
          }
        }
      ],
      "source": "Twitter Web App",
      "created_at": "2020-08-12T17:01:42.000Z"
    }
  ],
  "includes": {
    "media": [
      {
        "height": 720,
        "duration_ms": 34875,
        "media_key": "7_1293565706408038401",
        "type": "video",
        "preview_image_url": "https://pbs.twimg.com/ext_tw_video_thumb/1293565706408038401/pu/img/66P2dvbU4a02jYbV.jpg",
        "public_metrics": {
          "view_count": 279438
        },
        "width": 1280
      }
    ],
    "users": [
      {
        "created_at": "2013-12-14T04:35:55.000Z",
        "id": "2244994945",
        "protected": false,
        "username": "TwitterDev",
        "verified": true,
        "entities": {
          "url": {
            "urls": [
              {
                "start": 0,
                "end": 23,
                "url": "https://t.co/3ZX3TNiZCY",
                "expanded_url": "https://developer.x.com/en/community",
                "display_url": "developer.x.com/en/community"
              }
            ]
          },
          "description": {
            "hashtags": [
              {
                "start": 17,
                "end": 28,
                "tag": "TwitterDev"
              },
              {
                "start": 105,
                "end": 116,
                "tag": "TwitterAPI"
              }
            ]
          }
        },
        "description": "La voz del equipo de #TwitterDev y tu fuente oficial de actualizaciones, noticias y eventos relacionados con la #TwitterAPI.",
        "pinned_tweet_id": "1293593516040269825",
        "public_metrics": {
          "followers_count": 513962,
          "following_count": 2039,
          "tweet_count": 3635,
          "listed_count": 1672
        },
        "location": "127.0.0.1",
        "name": "Twitter Dev",
        "profile_image_url": "https://pbs.twimg.com/profile_images/1283786620521652229/lEODkLTh_normal.jpg",
        "url": "https://t.co/3ZX3TNiZCY"
      }
    ]
  }
}`


### Retweet

      `{
  "data": [
    {
      "public_metrics": {
        "retweet_count": 19,
        "reply_count": 0,
        "like_count": 0,
        "quote_count": 0
      },
      "conversation_id": "1229851574555508737",
      "id": "1229851574555508737",
      "entities": {
        "annotations": [
          {
            "start": 28,
            "end": 38,
            "probability": 0.261,
            "type": "Producto",
            "normalized_text": "Alexa Skill"
          },
          {
            "start": 44,
            "end": 50,
            "probability": 0.7332,
            "type": "Producto",
            "normalized_text": "Twitter"
          }
        ],
        "mentions": [
          {
            "start": 3,
            "end": 15,
            "username": "suhemparack"
          }
        ]
      },
      "text": "RT @suhemparack: I built an Alexa Skill for Twitter using APL that allows you to view Tweets and Trends on the echo show!\n\nCheck it out her…",
      "created_at": "2020-02-18T19:33:59.000Z",
      "possibly_sensitive": false,
      "author_id": "2244994945",
      "referenced_tweets": [
        {
          "type": "retweeted",
          "id": "1229843515603144704"
        }
      ],
      "context_annotations": [
        {
          "domain": {
            "id": "47",
            "name": "Marca",
            "description": "Marcas y empresas"
          },
          "entity": {
            "id": "10026792024",
            "name": "Amazon"
          }
        },
        {
          "domain": {
            "id": "48",
            "name": "Producto",
            "description": "Productos creados por marcas. Ejemplos: Ford Explorer, Apple iPhone."
          },
          "entity": {
            "id": "968221983803494400",
            "name": "Amazon - Alexa",
            "description": "Alexa"
          }
        },
        {
          "domain": {
            "id": "46",
            "name": "Categoría de marca",
            "description": "Categorías dentro de verticales de marca que delimitan el alcance de las marcas"
          },
          "entity": {
            "id": "781974596752842752",
            "name": "Servicios"
          }
        },
        {
          "domain": {
            "id": "47",
            "name": "Marca",
            "description": "Marcas y empresas"
          },
          "entity": {
            "id": "10045225402",
            "name": "Twitter"
          }
        }
      ],
      "source": "Twitter Web App",
      "lang": "en"
    }
  ],
  "includes": {
    "users": [
      {
        "profile_image_url": "https://pbs.twimg.com/profile_images/1283786620521652229/lEODkLTh_normal.jpg",
        "username": "TwitterDev",
        "name": "Twitter Dev",
        "location": "127.0.0.1",
        "url": "https://t.co/3ZX3TNiZCY",
        "entities": {
          "url": {
            "urls": [
              {
                "start": 0,
                "end": 23,
                "url": "https://t.co/3ZX3TNiZCY",
                "expanded_url": "https://developer.x.com/en/community",
                "display_url": "developer.x.com/en/community"
              }
            ]
          },
          "description": {
            "hashtags": [
              {
                "start": 17,
                "end": 28,
                "tag": "TwitterDev"
              },
              {
                "start": 105,
                "end": 116,
                "tag": "TwitterAPI"
              }
            ]
          }
        },
        "id": "2244994945",
        "description": "The voice of the #TwitterDev team and your official source for updates, news, and events, related to the #TwitterAPI.",
        "verified": true,
        "public_metrics": {
          "followers_count": 513962,
          "following_count": 2039,
          "tweet_count": 3635,
          "listed_count": 1672
        },
        "pinned_tweet_id": "1293593516040269825",
        "created_at": "2013-12-14T04:35:55.000Z",
        "protected": false
      },
      {
        "profile_image_url": "https://pbs.twimg.com/profile_images/1230703695051935747/TbQKe91L_normal.jpg",
        "username": "suhemparack",
        "name": "Suhem Parack",
        "location": "Seattle, WA",
        "url": "https://t.co/8IkCzClPCz",
        "entities": {
          "url": {
            "urls": [
              {
                "start": 0,
                "end": 23,
                "url": "https://t.co/8IkCzClPCz",
                "expanded_url": "https://developer.x.com",
                "display_url": "developer.x.com"
              }
            ]
          },
          "description": {
            "mentions": [
              {
                "start": 42,
                "end": 50,
                "username": "Twitter"
              }
            ]
          }
        },
        "id": "857699969263964161",
        "description": "Relaciones con desarrolladores para investigación académica en @Twitter. Háblame sobre investigación con datos de Twitter. Anteriormente: Amazon Alexa. Las opiniones son propias",
        "verified": false,
        "public_metrics": {
          "followers_count": 738,
          "following_count": 512,
          "tweet_count": 460,
          "listed_count": 12
        },
        "pinned_tweet_id": "1296498078233571329",
        "created_at": "2017-04-27T20:56:22.000Z",
        "protected": false
      }
    ],
    "tweets": [
      {
        "public_metrics": {
          "retweet_count": 19,
          "reply_count": 1,
          "like_count": 71,
          "quote_count": 6
        },
        "conversation_id": "1229843515603144704",
        "id": "1229843515603144704",
        "entities": {
          "annotations": [
            {
              "start": 11,
              "end": 21,
              "probability": 0.3342,
              "type": "Producto",
              "normalized_text": "Alexa Skill"
            },
            {
              "start": 27,
              "end": 33,
              "probability": 0.6727,
              "type": "Producto",
              "normalized_text": "Twitter"
            }
          ],
          "urls": [
            {
              "start": 127,
              "end": 150,
              "url": "https://t.co/l5J8wq748G",
              "expanded_url": "https://dev.to/twitterdev/building-an-alexa-skill-for-twitter-using-alexa-presentation-language-1aj0",
              "display_url": "dev.to/twitterdev/bui…",
              "status": 200,
              "unwound_url": "https://dev.to/twitterdev/building-an-alexa-skill-for-twitter-using-alexa-presentation-language-1aj0"
            }
          ]
        },
        "text": "I built an Alexa Skill for Twitter using APL that allows you to view Tweets and Trends on the echo show!\n\nCheck it out here 👇\n\nhttps://t.co/l5J8wq748G",
        "created_at": "2020-02-18T19:01:58.000Z",
        "possibly_sensitive": false,
        "author_id": "857699969263964161",
        "context_annotations": [
          {
            "domain": {
              "id": "47",
              "name": "Marca",
              "description": "Marcas y empresas"
            },
            "entity": {
              "id": "10026792024",
              "name": "Amazon"
            }
          },
          {
            "domain": {
              "id": "48",
              "name": "Producto",
              "description": "Productos creados por marcas. Ejemplos: Ford Explorer, Apple iPhone."
            },
            "entity": {
              "id": "968221983803494400",
              "name": "Amazon - Alexa",
              "description": "Alexa"
            }
          },
          {
            "domain": {
              "id": "46",
              "name": "Categoría de marca",
              "description": "Categorías dentro de verticales de marca que delimitan el alcance de las marcas"
            },
            "entity": {
              "id": "781974596752842752",
              "name": "Servicios"
            }
          },
          {
            "domain": {
              "id": "47",
              "name": "Marca",
              "description": "Marcas y empresas"
            },
            "entity": {
              "id": "10045225402",
              "name": "Twitter"
            }
          }
        ],
        "source": "Twitter Web App",
        "lang": "en"
      }
    ]
  }
}`


### Tweet citado

      `{
  "data": [
    {
      "lang": "en",
      "conversation_id": "1328399838128467969",
      "text": "Según lo planeado, los endpoints de Labs v2 mencionados a continuación han sido retirados. Háganoslo saber en los foros si tienen preguntas o necesitan ayuda con X API v2. https://t.co/JaxttUMmjX",
      "referenced_tweets": [
        {
          "type": "quoted",
          "id": "1327011423252144128"
        }
      ],
      "possibly_sensitive": false,
      "entities": {
        "annotations": [
          {
            "start": 151,
            "end": 157,
            "probability": 0.8115,
            "type": "Product",
            "normalized_text": "Twitter"
          }
        ],
        "urls": [
          {
            "start": 167,
            "end": 190,
            "url": "https://t.co/JaxttUMmjX",
            "expanded_url": "https://x.com/TwitterDev/status/1327011423252144128",
            "display_url": "twitter.com/TwitterDev/sta…"
          }
        ]
      },
      "id": "1328399838128467969",
      "public_metrics": {
        "retweet_count": 7,
        "reply_count": 4,
        "like_count": 29,
        "quote_count": 1
      },
      "author_id": "2244994945",
      "context_annotations": [
        {
          "domain": {
            "id": "46",
            "name": "Brand Category",
            "description": "Categorías dentro de verticales de marca que delimitan el alcance de las marcas"
          },
          "entity": {
            "id": "781974596752842752",
            "name": "Servicios"
          }
        },
        {
          "domain": {
            "id": "47",
            "name": "Brand",
            "description": "Marcas y empresas"
          },
          "entity": {
            "id": "10045225402",
            "name": "Twitter"
          }
        },
        {
          "domain": {
            "id": "65",
            "name": "Interests and Hobbies Vertical",
            "description": "Agrupaciones de nivel superior de intereses y pasatiempos, como comida o viajes"
          },
          "entity": {
            "id": "848920371311001600",
            "name": "Tecnología",
            "description": "Tecnología e informática"
          }
        },
        {
          "domain": {
            "id": "66",
            "name": "Interests and Hobbies Category",
            "description": "Una agrupación de entidades de intereses y pasatiempos, como comida novedosa o destinos"
          },
          "entity": {
            "id": "848921413196984320",
            "name": "Programación informática",
            "description": "Programación informática"
          }
        }
      ],
      "source": "Twitter Web App",
      "created_at": "2020-11-16T18:09:36.000Z"
    }
  ],
  "includes": {
    "users": [
      {
        "created_at": "2013-12-14T04:35:55.000Z",
        "id": "2244994945",
        "protected": false,
        "username": "TwitterDev",
        "verified": true,
        "entities": {
          "url": {
            "urls": [
              {
                "start": 0,
                "end": 23,
                "url": "https://t.co/3ZX3TNiZCY",
                "expanded_url": "https://developer.x.com/en/community",
                "display_url": "developer.x.com/en/community"
              }
            ]
          },
          "description": {
            "hashtags": [
              {
                "start": 17,
                "end": 28,
                "tag": "TwitterDev"
              },
              {
                "start": 105,
                "end": 116,
                "tag": "TwitterAPI"
              }
            ]
          }
        },
        "description": "La voz del equipo #TwitterDev y tu fuente oficial de actualizaciones, noticias y eventos relacionados con #TwitterAPI.",
        "pinned_tweet_id": "1293593516040269825",
        "public_metrics": {
          "followers_count": 513962,
          "following_count": 2039,
          "tweet_count": 3635,
          "listed_count": 1672
        },
        "location": "127.0.0.1",
        "name": "Twitter Dev",
        "profile_image_url": "https://pbs.twimg.com/profile_images/1283786620521652229/lEODkLTh_normal.jpg",
        "url": "https://t.co/3ZX3TNiZCY"
      }
    ],
    "tweets": [
      {
        "lang": "en",
        "conversation_id": "1327011423252144128",
        "text": "👋 Recordatorio amistoso: Twitter Developer Labs v2 hide replies y recent search se retirarán el próximo lunes 16 de noviembre. Te recomendamos migrar a los nuevos endpoints hide replies y recent search ahora disponibles en v2 #TwitterAPI. Detalles: https://t.co/r6z6CI7kEy",
        "possibly_sensitive": false,
        "entities": {
          "annotations": [
            {
              "start": 26,
              "end": 50,
              "probability": 0.4387,
              "type": "Product",
              "normalized_text": "Twitter Developer Labs v2"
            }
          ],
          "hashtags": [
            {
              "start": 228,
              "end": 239,
              "tag": "TwitterAPI"
            }
          ],
          "urls": [
            {
              "start": 250,
              "end": 273,
              "url": "https://t.co/r6z6CI7kEy",
              "expanded_url": "https://devcommunity.x.com/t/retiring-labs-v2-recent-search-and-hide-replies/145795",
              "display_url": "devcommunity.com/t/retiring-lab…",
              "images": [
                {
                  "url": "https://pbs.twimg.com/news_img/1327011425240313856/PkurOyu1?format=jpg&name=orig",
                  "width": 1200,
                  "height": 630
                },
                {
                  "url": "https://pbs.twimg.com/news_img/1327011425240313856/PkurOyu1?format=jpg&name=150x150",
                  "width": 150,
                  "height": 150
                }
              ],
              "status": 200,
              "title": "Retiro de Labs v2 recent search y hide replies",
              "description": "Como mencionamos en nuestros anuncios de acceso anticipado y hide replies, los siguientes endpoints de Twitter Developer Labs v2 se retirarán el 16 de noviembre. Labs v2 recent search Labs v2 hide replies Si se invocan, estos endpoints responderán con un estado HTTP 410 y no devolverán datos. Con base en tus comentarios sobre Labs, incorporamos la funcionalidad correspondiente en X API v2. La documentación relevante se puede encontrar usando los enlaces a continuación. Haz clic aquí para inscribirte en el acceso v2 si aún no lo has hecho...",
              "unwound_url": "https://devcommunity.x.com/t/retiring-labs-v2-recent-search-and-hide-replies/145795"
            }
          ]
        },
        "id": "1327011423252144128",
        "public_metrics": {
          "retweet_count": 8,
          "reply_count": 2,
          "like_count": 33,
          "quote_count": 4
        },
        "author_id": "2244994945",
        "context_annotations": [
          {
            "domain": {
              "id": "46",
              "name": "Brand Category",
              "description": "Categorías dentro de verticales de marca que delimitan el alcance de las marcas"
            },
            "entity": {
              "id": "781974596752842752",
              "name": "Servicios"
            }
          },
          {
            "domain": {
              "id": "47",
              "name": "Brand",
              "description": "Marcas y empresas"
            },
            "entity": {
              "id": "10045225402",
              "name": "Twitter"
            }
          },
          {
            "domain": {
              "id": "65",
              "name": "Interests and Hobbies Vertical",
              "description": "Agrupaciones de nivel superior de intereses y pasatiempos, como comida o viajes"
            },
            "entity": {
              "id": "848920371311001600",
              "name": "Technology",
              "description": "Technology and computing"
            }
          },
          {
            "domain": {
              "id": "66",
              "name": "Interests and Hobbies Category",
              "description": "Una agrupación de entidades de intereses y pasatiempos, como comida novedosa o destinos"
            },
            "entity": {
              "id": "848921413196984320",
              "name": "Computer programming",
              "description": "Computer programming"
            }
          }
        ],
        "source": "Twitter Web App",
        "created_at": "2020-11-12T22:12:32.000Z"
      }
    ]
  }
}

Cita de Tweet retuiteada

{
    "data": [
    {
      "lang": "en",
      "conversation_id": "1225470895902412800",
      "text": "RT @AureliaSpecker: 📣 If you enjoyed the London commute tutorial I wrote in November last year, check out the refactored version that uses…",
      "referenced_tweets": [
        {
          "type": "retweeted",
          "id": "1224709550214873090"
        }
      ],
      "possibly_sensitive": false,
      "entities": {
        "annotations": [
          {
            "start": 42,
            "end": 47,
            "probability": 0.6999,
            "type": "Place",
            "normalized_text": "London"
          }
        ],
        "mentions": [
          {
            "start": 3,
            "end": 18,
            "username": "AureliaSpecker"
          }
        ]
      },
      "id": "1225470895902412800",
      "public_metrics": {
        "retweet_count": 12,
        "reply_count": 0,
        "like_count": 0,
        "quote_count": 0
      },
      "author_id": "2244994945",
      "context_annotations": [
        {
          "domain": {
            "id": "46",
            "name": "Brand Category",
            "description": "Categorías dentro de verticales de marca que delimitan el alcance de las marcas"
          },
          "entity": {
            "id": "781974596752842752",
            "name": "Servicios"
          }
        },
        {
          "domain": {
            "id": "47",
            "name": "Brand",
            "description": "Marcas y empresas"
          },
          "entity": {
            "id": "10045225402",
            "name": "Twitter"
          }
        },
        {
          "domain": {
            "id": "65",
            "name": "Interests and Hobbies Vertical",
            "description": "Agrupaciones de nivel superior de intereses y pasatiempos, como comida o viajes"
          },
          "entity": {
            "id": "848920371311001600",
            "name": "Technology",
            "description": "Tecnología e informática"
          }
        },
        {
          "domain": {
            "id": "66",
            "name": "Interests and Hobbies Category",
            "description": "Agrupación de entidades de intereses y pasatiempos, como comida novedosa o destinos"
          },
          "entity": {
            "id": "848921413196984320",
            "name": "Computer programming",
            "description": "Programación informática"
          }
        }
      ],
      "source": "Twitter for iPhone",
      "created_at": "2020-02-06T17:26:44.000Z"
    }
  ],
  "includes": {
    "users": [
      {
        "created_at": "2013-12-14T04:35:55.000Z",
        "id": "2244994945",
        "protected": false,
        "username": "TwitterDev",
        "verified": true,
        "entities": {
          "url": {
            "urls": [
              {
                "start": 0,
                "end": 23,
                "url": "https://t.co/3ZX3TNiZCY",
                "expanded_url": "https://developer.x.com/en/community",
                "display_url": "developer.x.com/en/community"
              }
            ]
          },
          "description": {
            "hashtags": [
              {
                "start": 17,
                "end": 28,
                "tag": "TwitterDev"
              },
              {
                "start": 105,
                "end": 116,
                "tag": "TwitterAPI"
              }
            ]
          }
        },
        "description": "The voice of the #TwitterDev team and your official source for updates, news, and events, related to the #TwitterAPI.",
        "pinned_tweet_id": "1293593516040269825",
        "public_metrics": {
          "followers_count": 513962,
          "following_count": 2039,
          "tweet_count": 3635,
          "listed_count": 1672
        },
        "location": "127.0.0.1",
        "name": "Twitter Dev",
        "profile_image_url": "https://pbs.twimg.com/profile_images/1283786620521652229/lEODkLTh_normal.jpg",
        "url": "https://t.co/3ZX3TNiZCY"
      },
      {
        "created_at": "2013-01-18T23:45:43.000Z",
        "id": "1102321381",
        "protected": false,
        "username": "AureliaSpecker",
        "verified": false,
        "entities": {
          "description": {
            "mentions": [
              {
                "start": 7,
                "end": 17,
                "username": "TwitterUK"
              },
              {
                "start": 86,
                "end": 95,
                "username": "_dormrod"
              }
            ]
          }
        },
        "description": "devrel @TwitterUK • Swiss in London • mother of houseplants • personal hairdresser to @_dormrod",
        "pinned_tweet_id": "1253069421322567681",
        "public_metrics": {
          "followers_count": 1036,
          "following_count": 1330,
          "tweet_count": 855,
          "listed_count": 26
        },
        "location": "London, UK",
        "name": "Aurelia Specker",
        "profile_image_url": "https://pbs.twimg.com/profile_images/1137517534104772608/8FBYgc6G_normal.jpg",
        "url": ""
      }
    ],
    "tweets": [
      {
        "lang": "en",
        "conversation_id": "1224709550214873090",
        "text": "📣 If you enjoyed the London commute tutorial I wrote in November last year, check out the refactored version that uses Twitter's new search endpoint 🚇 https://t.co/87XIPZmZBJ\n\n#DEVcommunity #Pythontutorial @TwitterDev @TwitterAPI https://t.co/dXrJYvn3hY",
        "referenced_tweets": [
          {
            "type": "quoted",
            "id": "1195000047089389573"
          }
        ],
        "possibly_sensitive": false,
        "entities": {
          "annotations": [
            {
              "start": 22,
              "end": 27,
              "probability": 0.7075,
              "type": "Place",
              "normalized_text": "London"
            },
            {
              "start": 120,
              "end": 126,
              "probability": 0.7355,
              "type": "Product",
              "normalized_text": "Twitter"
            }
          ],
          "mentions": [
            {
              "start": 206,
              "end": 217,
              "username": "TwitterDev"
            },
            {
              "start": 218,
              "end": 229,
              "username": "TwitterAPI"
            }
          ],
          "hashtags": [
            {
              "start": 176,
              "end": 189,
              "tag": "DEVcommunity"
            },
            {
              "start": 190,
              "end": 205,
              "tag": "Pythontutorial"
            }
          ],
          "urls": [
            {
              "start": 151,
              "end": 174,
              "url": "https://t.co/87XIPZmZBJ",
              "expanded_url": "https://bit.ly/2OrnrCC",
              "display_url": "bit.ly/2OrnrCC",
              "status": 200,
              "unwound_url": "https://dev.to/twitterdev/migrate-to-twitter-s-newly-released-labs-recent-search-endpoint-3npe"
            },
            {
              "start": 230,
              "end": 253,
              "url": "https://t.co/dXrJYvn3hY",
              "expanded_url": "https://x.com/AureliaSpecker/status/1195000047089389573",
              "display_url": "twitter.com/AureliaSpecker…"
            }
          ]
        },
        "id": "1224709550214873090",
        "public_metrics": {
          "retweet_count": 12,
          "reply_count": 0,
          "like_count": 43,
          "quote_count": 2
        },
        "author_id": "1102321381",
        "context_annotations": [
          {
            "domain": {
              "id": "46",
              "name": "Brand Category",
              "description": "Categorías dentro de verticales de marca que delimitan el alcance de las marcas"
            },
            "entity": {
              "id": "781974596752842752",
              "name": "Servicios"
            }
          },
          {
            "domain": {
              "id": "47",
              "name": "Brand",
              "description": "Marcas y empresas"
            },
            "entity": {
              "id": "10045225402",
              "name": "Twitter"
            }
          },
          {
            "domain": {
              "id": "65",
              "name": "Interests and Hobbies Vertical",
              "description": "Agrupaciones de nivel superior de intereses y pasatiempos, como Comida o Viajes"
            },
            "entity": {
              "id": "848920371311001600",
              "name": "Technology",
              "description": "Tecnología e informática"
            }
          },
          {
            "domain": {
              "id": "66",
              "name": "Interests and Hobbies Category",
              "description": "Agrupación de entidades de intereses y pasatiempos, como Comida Novedosa o Destinos"
            },
            "entity": {
              "id": "848921413196984320",
              "name": "Computer programming",
              "description": "Programación informática"
            }
          }
        ],
        "source": "Aplicación web de X",
        "created_at": "2020-02-04T15:01:25.000Z"
      }
    ]
  }
}