Saltar al contenido principal

Modelo de objetos

Tweet

Los Tweets son el componente básico 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 campo tweet.fields al solicitar estos campos de nivel raíz en el objeto Tweet. El objeto Tweet se puede encontrar y expandir en el recurso de usuario. También se pueden encontrar y expandir Tweets adicionales relacionados con el Tweet solicitado en el recurso Tweet. El objeto está disponible para expansión con ?expansions=pinned_tweet_id en el recurso de usuario o ?expansions=referenced_tweets.id en el recurso Tweet para obtener el objeto solo con los campos predeterminados. Usa la expansión junto con el parámetro de campo tweet.fields al solicitar campos adicionales para completar el objeto.
Valor del CampoTipoDescripciónCómo Se Puede Usar
id (predeterminado)stringEl identificador único del Tweet solicitado.Utilícelo para recuperar programáticamente un Tweet específico.
text (predeterminado)stringEl texto UTF-8 real del Tweet. Consulte twitter-text para obtener detalles sobre caracteres válidos.Extracción de palabras clave y análisis/clasificación de sentimientos.
edit_history_tweet_ids (predeterminado)objectIdentificadores únicos que indican todas las versiones de un Tweet. Para Tweets sin ediciones, habrá un ID. Para Tweets con historial de edición, habrá múltiples IDs.Utilice esta información para encontrar el historial de edición de un Tweet.
articleobjectContiene metadatos para el Artículo presente en este Tweet.Utilícelo para obtener el texto y las entidades de un Artículo.
attachmentsobjectEspecifica el tipo de archivos adjuntos (si los hay) presentes en este Tweet.Comprender los objetos devueltos para las expansiones solicitadas.
author_idstringEl identificador único del Usuario que publicó este Tweet.Hidratar objeto de Usuario, compartir conjunto de datos para revisión por pares.
card_uristringEl URI para la Tarjeta presente en este tweet.
community_idstringEl identificador único para la Comunidad a la que pertenece este Post.
context_annotationsarrayContiene anotaciones de contexto para el Tweet.Reconocimiento/extracción de entidades, análisis temático.
conversation_idstringEl ID del Tweet original de la conversación (que incluye respuestas directas, respuestas de respuestas).Utilícelo para reconstruir la conversación a partir de un Tweet.
created_atdate (ISO 8601)Hora de creación del Tweet.Útil para análisis de series temporales y comprender cuándo se creó un Tweet.
display_text_rangearrayUn array que contiene un índice de inicio y fin para la porción de texto que se muestra.Útil para saber qué porción de texto se muestra por defecto para Posts largos.
edit_controlsobjectIndica cuánto tiempo más se puede editar el Tweet y el número de ediciones restantes.Utilícelo para determinar si un Tweet es elegible para edición.
entitiesobjectEntidades que han sido analizadas del texto del Tweet. Consulte entidades en Objetos de Twitter.Proporciona información adicional sobre hashtags, URLs, menciones, etc.
geoobjectIndica la ubicación o lugar de un Tweet geoetiquetado.Utilícelo para determinar la ubicación de un Tweet geoetiquetado.
in_reply_to_user_idstringSi el Tweet representado es una respuesta, este campo contendrá el ID del autor del Tweet original.Determinar si un Tweet fue en respuesta a otro Tweet.
langstringIdioma del Tweet, si es detectado por Twitter.Clasificar Tweets por idioma hablado.
non_public_metricsobjectMétricas de participación no públicas para el Tweet al momento de la solicitud. Requiere autenticación de contexto de usuario.Determinar las impresiones totales generadas para el Tweet.
note_tweetobjectContiene el texto completo de un Post para Posts de formato largo (>280 caracteres).Obtener el texto completo de un Post.
organic_metricsobjectMétricas de participación, rastreadas en un contexto orgánico, para el Tweet al momento de la solicitud. Requiere autenticación de contexto de usuario.Medir la participación orgánica para el Tweet.
possibly_sensitivebooleanIndica si el contenido puede ser reconocido como sensible.Estudiar la circulación de ciertos tipos de contenido.
promoted_metricsobjectMétricas de participación, rastreadas en un contexto promocionado, para el Tweet al momento de la solicitud. Requiere autenticación de contexto de usuario.Medir la participación para el Tweet cuando fue promocionado.
public_metricsobjectMétricas de participación públicas para el Tweet al momento de la solicitud.Medir la participación del Tweet.
referenced_tweetsarrayUna lista de Tweets a los que este Tweet se refiere, como Retweets, Tweets citados o respuestas.Comprender aspectos conversacionales de retweets, etc.
reply_settingsstringMuestra quién puede responder a un Tweet dado. Las opciones son “everyone”, “mentioned_users” y “followers”.Determinar la configuración de respuesta de conversación para el Tweet.
withheldobjectContiene detalles de retención para contenido retenido.
scopesobjectContiene detalles de alcance para el tweet.Indica quién puede ver el Post. Solo se devuelve para Posts promocionados.
media_metadataarrayContiene metadatos para archivos adjuntos de medios del Tweet.Obtener metadatos adicionales como el alt_text de un archivo adjunto de medios de un Tweet.
Obtención de un objeto Tweet Solicitud de ejemplo En la siguiente solicitud, pedimos 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": "Creemos que la mejor versión futura de nuestra API surgirá de construirla CONTIGO. Brindamos por otro gran año con todos los que desarrollan en la plataforma de Twitter. Esperamos con ansias continuar trabajando contigo en el nuevo año. 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": "Eventos [Servicio de Entidades]",
            "description": "Eventos del mundo real. "
          },
          "entity": {
            "id": "1186637514896920576",
            "name": " Nochevieja"
          }
        },
        {
          "domain": {
            "id": "29",
            "name": "Eventos [Servicio de Entidades]",
            "description": "Eventos del mundo real. "
          },
          "entity": {
            "id": "1206982436287963136",
            "name": "Feliz Año Nuevo: ¡Por fin es 2020 en todas partes!",
            "description": "Observa fuegos artificiales y otras celebraciones mientras personas de todo el mundo entran al nuevo año.\nFoto vía @GettyImages "
          }
        },
        {
          "domain": {
            "id": "119",
            "name": "Festividad",
            "description": "Festividades como Navidad o Halloween"
          },
          "entity": {
            "id": "1186637514896920576",
            "name": " Nochevieja"
          }
        },
        {
          "domain": {
            "id": "119",
            "name": "Festividad",
            "description": "Festividades como Navidad o Halloween"
          },
          "entity": {
            "id": "1206982436287963136",
            "name": "Feliz Año Nuevo: ¡Por fin es 2020 en todas partes!",
            "description": "Observa fuegos artificiales y otras celebraciones mientras personas de todo el mundo entran al nuevo año.\nFoto vía @GettyImages "
          }
        },
        {
          "domain": {
            "id": "30",
            "name": "Entidades [Servicio de Entidades]",
            "description": "Dominio de nivel superior del Servicio de Entidades, cada elemento que esté en el Servicio de Entidades debe estar en este dominio"
          },
          "entity": {
            "id": "781974596752842752",
            "name": "Servicios"
          }
        },
        {
          "domain": {
            "id": "47",
            "name": "Marca",
            "description": "Marcas y Empresas"
          },
          "entity": {
            "id": "10045225402",
            "name": "Twitter"
          }
        },
        {
          "domain": {
            "id": "131",
            "name": "Taxonomía Unificada de Twitter",
            "description": "Una taxonomía de intereses de usuario. "
          },
          "entity": {
            "id": "10045225402",
            "name": "Twitter"
          }
        },
        {
          "domain": {
            "id": "131",
            "name": "Taxonomía Unificada de Twitter",
            "description": "Una taxonomía de intereses de usuario. "
          },
          "entity": {
            "id": "847868745150119936",
            "name": "Familia y relaciones",
            "description": "Pasatiempos e intereses"
          }
        },
        {
          "domain": {
            "id": "131",
            "name": "Taxonomía Unificada de Twitter",
            "description": "Una taxonomía de intereses de usuario. "
          },
          "entity": {
            "id": "1196446161223028736",
            "name": "Redes sociales"
          }
        },
        {
          "domain": {
            "id": "29",
            "name": "Eventos [Servicio de Entidades]",
            "description": "Eventos del mundo real. "
          },
          "entity": {
            "id": "1206982436287963136",
            "name": "Feliz Año Nuevo: ¡Por fin es 2020 en todas partes!",
            "description": "Observa fuegos artificiales y otras celebraciones mientras personas de todo el mundo entran al nuevo año.\nFoto vía @GettyImages "
          }
        },
        {
          "domain": {
            "id": "119",
            "name": "Festividad",
            "description": "Festividades como Navidad o Halloween"
          },
          "entity": {
            "id": "1206982436287963136",
            "name": "Feliz Año Nuevo: ¡Por fin es 2020 en todas partes!",
            "description": "Observa fuegos artificiales y otras celebraciones mientras personas de todo el mundo entran al 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": "Estos lanzamientos no serían posibles sin los comentarios que proporcionaste durante el proceso, así que GRACIAS a todos los que han contribuido con su tiempo e ideas. ¿Tienes más comentarios? Háznoslo saber ⬇️ 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": "Actualizaciones sobre nuestros canales de comentarios",
              "description": "Construimos nuestra plataforma de desarrolladores de manera abierta, con tu aporte y comentarios. Durante el año pasado, escuchar directamente de ti y de los usuarios de tus aplicaciones nos ha ayudado a crear productos para desarrolladores que se adaptan al caso de uso que nos ayudaste a identificar. Queremos que esta sea la forma en que construimos productos, y en adelante, estamos consolidando nuestros canales de comentarios. Encontrándote donde estás A partir de hoy, vamos a retirar nuestro canal de comentarios UserVoice en favor de interacciones directas más frecuentes contigo...",
              "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 objeto principal devuelto en el endpoint users lookup. Al solicitar campos de usuario adicionales en este endpoint, simplemente use el parámetro user.fields. El objeto de usuario también puede aparecer como objeto hijo y expandirse dentro del objeto Tweet. Está disponible para expansión con ?expansions=author_id o ?expansions=in_reply_to_user_id para obtener el objeto condensado con solo los campos predeterminados. Use la expansión junto con el parámetro user.fields al solicitar campos adicionales para completar el objeto.  
Valor del campoTipoDescripciónCómo se puede usar
id (predeterminado)stringEl identificador único de este usuario.

"id": "2244994945"
Utilízalo para recuperar información de forma programática sobre un usuario específico de Twitter.
name (predeterminado)stringEl nombre del usuario, tal como lo ha definido en su perfil. No necesariamente es el nombre de una persona. Generalmente limitado a 50 caracteres, pero sujeto a cambios.

"name": "Twitter Dev"
username (predeterminado)stringEl nombre de usuario, identificador o alias de Twitter con el que este usuario se identifica. Los nombres de usuario son únicos pero sujetos a cambios. Generalmente tienen un máximo de 15 caracteres de longitud, pero algunas cuentas históricas pueden tener nombres más largos.

"username": "TwitterDev"
affiliationobjectContiene detalles sobre la afiliación de un usuario.Se puede usar para obtener la insignia de afiliado de un usuario.
confirmed_emailstringEl correo electrónico confirmado del usuario autenticado.
connection_statusarrayProporciona una lista de relaciones entre el usuario autenticado y el usuario que se está consultando, como siguiendo, seguido, solicitud de seguimiento enviada, solicitud de seguimiento recibida, bloqueando, silenciando

”connection_status”: [
“follow_request_received”,
“follow_request_sent”,
“blocking”,
“followed_by”,
“following”,
“muting”
]
Se puede usar para determinar el estado de conexión entre el usuario autenticado y el usuario que se está consultando.
created_atdate (ISO 8601)La fecha y hora UTC en que se creó la cuenta de usuario en Twitter.

"created_at": "2013-12-14T04:35:55.000Z"
Se puede usar para determinar cuánto tiempo lleva alguien usando Twitter
descriptionstringEl texto de la descripción del perfil de este usuario (también conocida como biografía), si el usuario proporcionó una.

"description": "The voice of the X Dev team and your official source for updates, news, and events, related to the X API."
entitiesobjectContiene detalles sobre texto que tiene un significado especial en la descripción del usuario.

"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/> "hashtags": [ <br/> { <br/> "start": 23, <br/> "end": 30, <br/> "tag": "DevRel" <br/> }, <br/> { <br/> "start": 113, <br/> "end": 130, <br/> "tag": "BlackLivesMatter" <br/> }, <br/> "mentions": [ <br/> { <br/> "start": 0, <br/> "end": 10, <br/> "tag": "TwitterDev" <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, URLs, menciones de usuarios y cashtags asociados con la descripción. Consulta cada entidad respectiva para obtener más detalles.

Todos los índices start de usuario son inclusivos, mientras que todos los índices end de usuario son exclusivos.
is_identity_verifiedbooleanIndica si el usuario tiene verificación de identidad.
locationstringLa ubicación especificada en el perfil del usuario, si el usuario proporcionó una. Como este es un valor de forma libre, puede no indicar una ubicación válida, pero puede ser evaluada de manera aproximada al realizar búsquedas con consultas de ubicación.

"location": "127.0.0.1"
most_recent_tweet_idstringIdentificador único del Tweet más reciente de este usuario.Permite determinar el Tweet más reciente del usuario.
parodybooleanIndica si esta cuenta de usuario tiene o no la etiqueta de Parodia.
pinned_tweet_idstringIdentificador único del Tweet fijado de este usuario.

"pinned_tweet_id": "1255542774432063488"
Permite determinar el Tweet fijado en la parte superior del perfil del usuario. Potencialmente se puede usar para determinar el idioma del usuario.
profile_banner_urlstringLa URL del banner del perfil para este usuario, como se muestra en el perfil del usuario.

"profile_banner_url": "https://pbs.twimg.com/profile_banners/1716450569358098432/1721022977"
Se puede usar para descargar el banner del perfil de este usuario.
profile_image_urlstringLa URL de la imagen del perfil para este usuario, como se muestra en el perfil del usuario.

"profile_image_url": "https://pbs.twimg.com/profile_images/1267175364003901441/tBZNFAgA_normal.jpg"
Se puede usar para descargar la imagen del perfil de este usuario.
protectedbooleanIndica si este usuario ha elegido proteger sus Tweets (en otras palabras, si los Tweets de este usuario son privados).

"protected": false
public_metricsobjectContiene detalles sobre la actividad de este usuario.

"public_metrics": { "followers_count": 507902, "following_count": 1863, "tweet_count": 3561, "listed_count": 1550 }
Se puede utilizar para determinar el alcance o influencia de un usuario de X, cuantificar el rango de intereses del usuario y su nivel de participación en X.
receives_your_dmbooleanIndica si este usuario recibirá o no el mensaje directo del usuario autenticado.
subscriptionobjectContiene detalles sobre si el usuario está suscrito o no al usuario autenticado.
subscription_typestringUna cadena que representa el tipo de suscripción X Premium que tiene el usuario autenticado. Ejemplo: None, Basic, Premium, PremiumPlus. Siempre devolverá None si el usuario no es el usuario autenticado.
urlstringLa URL especificada en el perfil del usuario, si está presente.

"url": "https://t.co/3ZX3TNiZCY"
Una URL proporcionada por un usuario de X en su perfil. Puede ser una página principal, pero no siempre es el caso.
verifiedbooleanIndica si este usuario es un usuario verificado de X.

"verified": true
Indica si este usuario de X tiene o no una cuenta verificada. Una cuenta verificada permite a las personas saber que una cuenta de interés público es auténtica.
verified_followers_countstringUna cadena que representa el número de seguidores verificados de un usuario.
verified_typestringUna cadena que representa el tipo de verificación que tiene un usuario. Ejemplo: “blue”, “business”, “government”
withheldobjectContiene detalles de retención para contenido retenido, si corresponde.
Obtención de un objeto de usuario Solicitud de ejemplo En la siguiente solicitud, solicitamos fields del 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'
  }
Respuesta de muestra
    "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 #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 la pandemia y responder a ella. \n\nEstamos lanzando un endpoint de stream gratuito de COVID-19 para que desarrolladores e investigadores calificados puedan estudiar la conversación pública en tiempo real. https://t.co/BPqMcQzhId"
            }
        ]
    }
}

Space

Spaces permiten la expresión y la interacción 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 pueden consultarse y expandirse en el recurso de usuario. Estos objetos están disponibles para expansión añadiendo al menos uno de host_ids, creator_id, speaker_ids, mentioned_user_ids al parámetro expansions de la query. 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 maneja 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 consulta de Spaces pueden ayudarte a garantizar que respetas las expectativas e intención de los usuarios.
Valor del campoTypeDescripciónCómo se puede usar
id (default)stringIdentificador único del Space solicitado.
"id": "1zqKVXPQhvZJB"
Identificar de forma única un Space devuelto en la respuesta.
state (default)stringIndica si el Space ha comenzado, comenzará o ha finalizado.
"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"
Determinar 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"]
Expandir objetos de usuario, comprender 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"]
Expandir objetos de usuario, comprender la interacción.
participant_countintegerNúmero de usuarios en el Space, incluidos anfitriones y oradores.
"participant_count": 420
Entender la interacción, 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"]
Expandir objetos de usuario, comprender la interacción.
started_atdate (ISO 8601)Hora de inicio real 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, menciones.
topic_idsarrayIDs de los temas seleccionados por el creador del Space.
"topic_ids": ["2244994945", "6253282"]
Entender palabras clave, hashtags, menciones.
updated_atdate (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 consulta 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"
      }
    ]
  }
}

List

El objeto List contiene metadatos de Twitter Lists que describen la List referenciada. El objeto List es el objeto principal devuelto en el endpoint de consulta de List. Al solicitar campos adicionales de List en este endpoint, simplemente use el parámetro fields list.fields. El objeto List no aparece como hijo de otros objetos de data. Sin embargo, los objetos de usuario pueden encontrarse y expandirse en el recurso de usuario. Estos objetos están disponibles para expansión agregando owner_id al parámetro de query expansions. Use esta expansión con el parámetro de campos list.fields cuando solicite campos adicionales para completar el objeto principal de List y user.fields para completar el objeto de expansión.
Field ValueTypeDescriptionHow it can be used
id (default)stringEl identificador único de esta List.
"id": "2244994945"
Úselo para recuperar de forma programática información sobre una List específica.
name (default)stringEl nombre de la List, tal como se definió al crearla.
"name": "Twitter Lists"
created_atdate (ISO 8601)La fecha y hora en UTC cuando se creó la List.
"created_at": "2013-12-14T04:35:55.000Z"
Determine cuánto tiempo ha estado una List en X.
descriptionstringUna breve descripción para informar a los usuarios sobre la List.
"description": "People that are active members of the Bay area cycling community on X."
follower_countintegerMuestra cuántos usuarios siguen esta List.
"follower_count": 198
member_countintegerMuestra cuántos miembros forman parte de esta List.
"member_count": 60
privatebooleanIndica si la List es privada.
"private": false
owner_idstringIdentificador único del propietario de esta List.
"owner_id": "1255542774432063488"
Puede usarse para averiguar si este usuario posee otras Lists y expandir objetos de usuario.
Recuperar un objeto de usuario Solicitud de ejemplo En la siguiente solicitud, estamos solicitando campos para el usuario en el endpoint List lookup by ID. Reemplace $BEARER_TOKEN con 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

El término 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 expansion 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 fields: media.fields cuando solicite campos adicionales para completar el objeto.
Field valueTypeDescriptionHow it can be used
media_key (default)stringIdentificador único del contenido de media expandido.
"media_key": "13_1263145212760805376"
Puede usarse para recuperar contenido de media 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 de media 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_metricsobjectmetrics de interacción no públicas del contenido de media 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 hasta cada cuarto del video.
organic_metricsobjectmetrics de interacción del contenido de media, 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 de media.
preview_image_urlstringURL de la vista previa estática de este contenido.
"preview_image_url": "https://pbs.twimg.com/media/EYeX7akWsAIP1_1.jpg"
promoted_metricsobjectmetrics de interacción del contenido de media, 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_metricsobjectmetrics de interacción públicas del contenido de media 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. Actualmente, 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 discapacidad visual.
variantsarrayCada objeto de media 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 los fields del objeto media 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": "Probando, probando...\n\nUna nueva forma de conversar exactamente con quien quieras. Empezamos con un pequeño % a nivel mundial, así que mantente atento 👀 para verlo en acción. 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 localizarse y expandirse dentro del objeto Tweet. El objeto está disponible para expansión con ?expansions=attachments.poll_ids para obtener la versión condensada con solo los campos predeterminados. Use la expansión junto con el parámetro de campos poll.fields al solicitar campos adicionales para completar el objeto.
Field valueTypeDescription
id (default)stringIdentificador único de la encuesta expandida.
{"id": "1199786642791452673"}
options (default)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 la hora de finalización de esta encuesta.
{"end_datetime": "2019-11-28T20:26:41.000Z"}
voting_statusstringIndica si esta encuesta sigue 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, pedimos campos para el objeto de encuesta adjunto al Tweet en el endpoint Tweets lookup. Dado que la encuesta es un objeto hijo de un Tweet, se requiere la expansión attachments.poll_id. Asegúrese de reemplazar $BEARER_TOKEN por su 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'
Ejemplo de respuesta
{
  "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"
      }
    ]
  }
}

Place

El lugar etiquetado en un Tweet no es un objeto principal en ningún endpoint, pero puede encontrarse y expandirse en el recurso de Tweet. El objeto está disponible para expansión con ?expansions=geo.place_id para obtener el objeto condensado con solo los campos predeterminados. Usa la expansión junto con el parámetro de campos place.fields cuando solicites campos adicionales para completar el objeto.
Field valueTypeDescriptionHow it can be used
full_name (default)stringUn nombre de lugar detallado de forma más extensa.Clasificar un Tweet por un nombre de lugar específico
"full_name": "Manhattan, NY"
id (default)stringEl identificador único del lugar expandido, si se trata de un punto de interés etiquetado en el Tweet.Usa esto para recuperar un lugar de forma programática
"id": "01a9a39529b27f36"
contained_withinarrayDevuelve los identificadores de 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"
Recuperar 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 Tweets lookup. Dado que place es un objeto hijo de un Tweet, se requiere la expansión geo.place_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 directo 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 Mensajes Directos

Las conversaciones de Mensajes Directos (DM) se componen de eventos. La X API v2 actualmente admite tres tipos de evento: MessageCreate, ParticipantsJoin y ParticipantsLeave. Los objetos de eventos de DM los devuelven los endpoints de consulta 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, use el parámetro dm_event.fields de 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 grupal
  • participant_ids - Una matriz de id de cuenta. En 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 (default)stringEl identificador único del evento.

”id”: “1050118621198921728”
Úsalo para recuperar de forma programática un evento de conversación específico (disponible con endpoints v1.1).
event_type (default)stringDescribe el tipo de evento. Actualmente se admiten tres tipos: 

* MessageCreate

* ParticipantsJoin

* ParticipantsLeave


“event_type”: “MessageCreate”
Al recuperar el historial de una conversación, entender 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 (default)stringEl texto UTF-8 del Mensaje Directo. 

“text”: “Hello, just you!”
Con chatbots, se puede usar para analizar el contenido del mensaje 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, incluye sender_id como una expansión y usa el parámetro de consulta user.fields para especificar los atributos del objeto de usuario de interés.

”sender_id”: “906948460078698496”
Recupera el objeto de usuario 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 usa al crear nuevas conversaciones grupales. Para expandir este objeto en la respuesta, incluye participant_ids como una expansión y usa el parámetro de consulta user.fields para especificar los atributos del objeto de usuario de interés.

”participant_ids”: [

     “906948460078698496”

]
Se usa para recuperar objetos de usuario de 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”
Úsalo para recuperar de forma programática eventos de una conversación y añadir 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 entender 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, incluye referenced_tweets.id como una expansión y usa 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, incluye attachments.media_keys como una expansión y usa el parámetro de consulta media.fields para especificar los atributos del objeto multimedia de interés. Actualmente, se admite un adjunto. 

“attachments”:

    “media_keys”: [

        “3_1136048009270239232”

    ]

Para entender los objetos multimedia adjuntos a los Mensajes Directos.
Recuperar un objeto de evento de Mensaje Directo Solicitud de ejemplo Para este ejemplo, construiremos una solicitud que recupera eventos asociados con una conversación uno a uno. Esta solicitud devolverá campos fundamentales de eventos de Mensajes Directos, junto con campos adicionales para Tweets referenciados y sus autores. Construyamos una query 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 query de tu solicitud incluiría lo siguiente: ?dm_event.fields=id,sender_id,text,created_at,dm_conversation_id&expansions=sender_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 con 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... Proporcionando reportes de nieve, fotos de nieve y enlaces de investigación sobre nieve... El chatbot está siendo remodelado actualmente para Twitter APIv2.",
				"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\nFeliz 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"
	}
}

Community

Las Comunidades son espacios dedicados para que los usuarios de X se conecten, compartan y se acerquen a las conversaciones que más les importan. Los Posts en Comunidades pueden ser vistos por cualquier persona en X, pero solo quienes están dentro de la Comunidad pueden interactuar y participar en la conversación. El objeto Community contiene metadatos relevantes sobre una Comunidad.
Valor del campoTypeDescripción
created_atdate (ISO 8601)Fecha y hora de creación de la Comunidad.
idstringIdentificador único de la Comunidad.
namestringNombre de la Comunidad.
descriptionstringTexto de la descripción de la Comunidad, si se proporciona.
accessstringNivel de acceso de la Comunidad.

Puede ser uno de:
- Public
- Closed
join_policystringPolítica de acceso a la Comunidad.

Puede ser una de:
- Open
- RestrictedJoinRequestsDisabled
- RestrictedJoinRequestsRequireAdminApproval
- RestrictedJoinRequestsRequireModeratorApproval
- SuperFollowRequired
member_countintegerNúmero de miembros que se han unido a la Comunidad.
Obtención de objetos Community Solicitud de ejemplo En la siguiente solicitud, pedimos 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": "¡Bienvenidos a la Comunidad de Anime! Donde los fanáticos 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 habla 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 de 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 la 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 query fields y expansions en su solicitud para recibir objetos y campos adicionales en su respuesta. En esta guía, solicitaremos varios campos 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 public metrics. También incluye un video.
Como puede ver en la captura, hay varios datos visibles relacionados con el Tweet, incluido el autor del Tweet, las metrics del Tweet, la marca de tiempo de creación, el video y el recuento de visualizaciones del video. También hay varios elementos de data que no son visibles en la captura, pero que aún 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). También solo recibirá el objeto principal que devuelve el endpoint que está utilizando, y no cualquiera de los objetos de datos asociados que podrían estar relacionados con el objeto principal. Esta simplicidad, junto con los parámetros fields y expansions, le permite solicitar solo los campos que necesita, según su caso de uso.   

Solicitar fields 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'
Respuesta:
{
    "data": [
        {
            "id": "1260294888811347969",
            "text": "No te pierdas los Tweets sobre tu Tweet. \n\nAhora en iOS, puedes ver los Retweets con comentarios todos en un solo lugar. https://t.co/oanjZfzC6y"
        }
    ]
}
La siguiente guía paso a paso le mostrará cómo obtener los datos adicionales que podemos ver en la captura de pantalla.
  1. Identifique los campos adicionales que desea solicitar utilizando nuestro modelo de objetos o revisando la lista de fields en las páginas de referencia de la API de los endpoint. En este caso, solicitaremos los siguientes fields adicionales: attachments, author_id, created_at, public_metrics.
  2. Construye 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. Añade el parámetro query 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' Respuesta:
{
    "data": [
        {
            "id": "1260294888811347969",
            "text": "No te pierdas los Tweets sobre tu Tweet. \n\nAhora en iOS, puedes ver Retweets con comentarios todo en un mismo 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, usaremos el parámetro expansions con attachments.media_keys como valor, y lo añadiremos 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 media representado en el objeto includes:
{
    "data": [
        {
            "id": "1260294888811347969",
            "text": "No te pierdas los Tweets sobre tu Tweet. \n\nAhora en iOS, puedes ver Retweets con comentarios todos 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 que se pueden ver 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 Retweets con comentarios todo en un mismo 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 unirse, así es como luce la cadena de query 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 (payloads) de 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": "Entendiendo el nuevo payload de Tweet en X API v2",
            "description": "X anunció recientemente la nueva X API v2, reconstruida desde cero para ofrecer nuevas funciones...",
            "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 para 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 a un Tweet

{
  "data": [
    {
      "lang": "en",
      "conversation_id": "1296887091901718529",
      "text": "Vea cómo @PennMedCDH está utilizando datos de Twitter para entender la crisis sanitaria del 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 del 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 alimentar 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 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": "123",
            "name": "Noticia en Desarrollo",
            "description": "Noticias en Desarrollo 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 su 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 impulsa 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 extendido

{
  "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 muchas razones, incluyendo dar menos atención a comentarios abusivos, que distraen, engañosos, o para hacer las conversaciones más atractivas. A través de este endpoint, puedes crear herramientas para ayudar a las personas en Twitter a ocultar o mostrar respuestas de manera 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": "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": "Una agrupación de entidades de intereses y pasatiempos, como Comida Novedosa o Destinos"
          },
          "entity": {
            "id": "848921413196984320",
            "name": "Computer programming",
            "description": "Programación de computadoras"
          }
        }
      ],
      "author_id": "2244994945",
      "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 para 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": "¡Por fin está aquí! 🥁 Di hola a la nueva #TwitterAPI.\n\nEstamos reconstruyendo la X API v2 desde cero para servir mejor a nuestra comunidad de desarrolladores. Y el lanzamiento de hoy es solo el comienzo.\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": "Product",
            "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 para que los desarrolladores puedan ayudar al mundo a conectarse con la conversación pública que ocurre en X.",
            "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 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": "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 de computadoras",
            "description": "Programación de computadoras"
          }
        }
      ],
      "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 #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": "Product",
            "normalized_text": "Alexa Skill"
          },
          {
            "start": 44,
            "end": 50,
            "probability": 0.7332,
            "type": "Product",
            "normalized_text": "Twitter"
          }
        ],
        "mentions": [
          {
            "start": 3,
            "end": 15,
            "username": "suhemparack"
          }
        ]
      },
      "text": "RT @suhemparack: Construí una Alexa Skill para Twitter usando APL que te permite ver Tweets y Tendencias en el echo show!\n\nMíralo aquí…",
      "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": "Brand",
            "description": "Marcas y empresas"
          },
          "entity": {
            "id": "10026792024",
            "name": "Amazon"
          }
        },
        {
          "domain": {
            "id": "48",
            "name": "Product",
            "description": "Productos creados por marcas. Ejemplos: Ford Explorer, Apple iPhone."
          },
          "entity": {
            "id": "968221983803494400",
            "name": "Amazon - Alexa",
            "description": "Alexa"
          }
        },
        {
          "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"
          }
        }
      ],
      "source": "Aplicación web de Twitter",
      "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": "La voz del equipo #TwitterDev y tu fuente oficial de actualizaciones, noticias y eventos relacionados con la #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 @Twitter. Háblame sobre investigación con datos de Twitter. Anteriormente: Amazon Alexa. Las opiniones son mías",
        "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": "Product",
              "normalized_text": "Alexa Skill"
            },
            {
              "start": 27,
              "end": 33,
              "probability": 0.6727,
              "type": "Product",
              "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": "Construí una Alexa Skill para Twitter usando APL que te permite ver Tweets y Tendencias en el echo show!\n\nMíralo aquí 👇\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": "Brand",
              "description": "Marcas y empresas"
            },
            "entity": {
              "id": "10026792024",
              "name": "Amazon"
            }
          },
          {
            "domain": {
              "id": "48",
              "name": "Product",
              "description": "Productos creados por marcas. Ejemplos: Ford Explorer, Apple iPhone."
            },
            "entity": {
              "id": "968221983803494400",
              "name": "Amazon - Alexa",
              "description": "Alexa"
            }
          },
          {
            "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"
            }
          }
        ],
        "source": "Aplicación web de Twitter",
        "lang": "en"
      }
    ]
  }
}`


### Quote Tweet

      `{
  "data": [
    {
      "lang": "en",
      "conversation_id": "1328399838128467969",
      "text": "Como estaba previsto, los endpoints de Labs v2 mencionados a continuación han sido retirados. ¡Por favor, 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 las Verticales de Marca que reducen 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 intereses y pasatiempos de nivel superior, como Comida o Viajes"
          },
          "entity": {
            "id": "848920371311001600",
            "name": "Technology",
            "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 de computadoras",
            "description": "Programación de computadoras"
          }
        }
      ],
      "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 su 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 amigable de que Twitter Developer Labs v2 ocultar respuestas y búsqueda reciente serán retirados el próximo lunes, 16 de noviembre. Te recomendamos migrar a los nuevos endpoints de ocultar respuestas y búsqueda reciente 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 búsqueda reciente y ocultar respuestas",
              "description": "Como mencionamos en nuestros anuncios de Acceso Temprano y ocultar respuestas, los siguientes endpoints de Twitter Developer Labs v2 serán retirados el 16 de noviembre. Labs v2 búsqueda reciente Labs v2 ocultar respuestas Si se invocan, estos endpoints responderán con un estado HTTP 410 y no devolverán datos. Basándonos en sus comentarios de Labs, incorporamos la funcionalidad correspondiente en X API v2. La documentación relevante se puede encontrar usando los enlaces a continuación. Haga clic aquí para inscribirse en el acceso v2 si aún no lo ha 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 las Verticales de Marca que reducen 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 intereses y pasatiempos de nivel superior, como Comida o Viajes"
            },
            "entity": {
              "id": "848920371311001600",
              "name": "Technology",
            "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 de computadoras",
            "description": "Programación de computadoras"
            }
          }
        ],
        "source": "Twitter Web App",
        "created_at": "2020-11-12T22:12:32.000Z"
      }
    ]
  }
}

Tweet citado mediante Retweet

{
    "data": [
    {
      "lang": "en",
      "conversation_id": "1225470895902412800",
      "text": "RT @AureliaSpecker: 📣 Si disfrutaste el tutorial del trayecto de Londres que escribí en noviembre del año pasado, echa un vistazo a la versión refactorizada que usa…",
      "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": "Categoría de Marca",
            "description": "Categorías dentro de Verticales de Marca que reducen el alcance de las Marcas"
          },
          "entity": {
            "id": "781974596752842752",
            "name": "Services"
          }
        },
        {
          "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": "Technology",
            "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": "Computer programming",
            "description": "Programación de computadoras"
          }
        }
      ],
      "source": "Twitter para 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": "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"
      },
      {
        "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 • Suiza en Londres • madre de plantas de interior • peluquera personal de @_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": "📣 Si disfrutaste el tutorial del trayecto de Londres que escribí en noviembre del año pasado, echa un vistazo a la versión refactorizada que usa el nuevo endpoint de búsqueda de Twitter 🚇 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 reducen el alcance de las Marcas"
            },
            "entity": {
              "id": "781974596752842752",
              "name": "Services"
            }
          },
          {
            "domain": {
              "id": "47",
              "name": "Brand",
              "description": "Marcas y Empresas"
            },
            "entity": {
              "id": "10045225402",
              "name": "Twitter"
            }
          },
          {
            "domain": {
              "id": "65",
              "name": "Vertical de Intereses y Aficiones",
              "description": "Agrupaciones de nivel superior de intereses y aficiones, 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 Aficiones",
              "description": "Una agrupación de entidades de intereses y aficiones, 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-02-04T15:01:25.000Z"
      }
    ]
  }
}
I