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

# PowerTrack API

> Este endpoint se ha actualizado para incluir metadatos de edición de Posts. Aprende más sobre estos metadatos en la página de fundamentos "Editar Posts".

Este endpoint se ha actualizado para incluir metadatos de edición de Posts. Aprende más sobre estos metadatos en la [página de fundamentos "Editar Posts"](/x-api/enterprise-gnip-2.0/fundamentals/edit-tweets).

## Descripción general

[Enterprise](https://developer.x.com/en/products/x-api/enterprise)

*Esta es una API enterprise disponible únicamente dentro de nuestros niveles de acceso gestionado. Para usar esta API, primero debes configurar una cuenta con nuestro equipo de ventas enterprise. [Más información](https://developer.x.com/en/products/x-api/enterprise)*

*Puedes ver todas las ofertas de filtered stream de la X API [AQUÍ](/x-api/posts/filtered-stream).*

La PowerTrack API brinda a los clientes la capacidad de filtrar el firehose completo de X y recibir únicamente los datos en los que ellos o sus clientes están interesados. Esto se logra aplicando el lenguaje de filtrado de PowerTrack — consulta [Reglas y filtrado](/x-api/enterprise-gnip-2.0/fundamentals/rules-filtering) - para hacer coincidir Posts según una amplia variedad de atributos, incluyendo atributos de usuario, geolocalización, idioma y muchos otros. Usar reglas de PowerTrack para filtrar Posts asegura que los clientes reciban todos los datos, y *solo* los datos que necesitan para tu app.

### Componentes principales

La PowerTrack API consta de dos endpoints:

#### Endpoint de reglas

Un endpoint separado gestionado independientemente por tu aplicación, el endpoint de reglas admite los métodos GET, POST, POST \_method=delete y de validación de reglas con autenticación básica para gestionar tu conjunto de reglas. Puede admitir miles de reglas que te permiten filtrar el stream de datos en tiempo real por los temas y conversaciones que te interesan. Al endpoint de reglas se puede acceder, gestionarlo y persistirá independientemente de tu estado de conexión al stream — también puedes actualizar (añadir/eliminar) reglas mientras estás conectado al stream y los cambios surtirán efecto casi de inmediato.

#### Endpoint del stream

Conectarse al endpoint de streaming consiste en una simple solicitud [GET](/x-api/enterprise-gnip-2.0/powertrack-api#powertrack-api) usando autenticación básica. Una vez establecida la conexión, los datos se entregan en formato JSON (ver la carga útil de ejemplo a continuación) a través de una conexión HTTP Streaming persistente. Solo recibirás datos que coincidan con tus reglas mientras estés conectado al stream.

#### Tags de reglas

Un único stream de PowerTrack puede admitir miles de reglas, por lo que poder distinguir qué regla(s) coincidieron con un Post dado se vuelve importante. Esto se resuelve fácilmente usando tags de reglas. Al crear una regla, puedes asignar un valor de tag que se devolverá en el objeto matching\_rules ([ver aquí](/x-api/enterprise-gnip-2.0/fundamentals/data-enrichments#matching-rules)) de la carga útil de respuesta.

Los tags de reglas pueden representar un caso de uso de cliente final, un tema o conversación, u otro identificador útil que puedes usar para enrutar los Posts entrantes en consecuencia.

Si, además de datos en tiempo real, tu producto también requiere acceso instantáneo a datos recientes, recomendamos usar nuestra [Search API](/x-api/enterprise-gnip-2.0/fundamentals/search-api).

### Operadores disponibles

La PowerTrack API admite actualmente los siguientes operadores:

* keyword
* emoji
* "exact phrase match"
* "keyword1 keyword2"\~N
* contains:
* from:
* to:
* url:
* url\_title:
* url\_description:
* url\_contains:
* has:links
* sample:
* #
* point\_radius:\[lon lat radius]
* bounding\_box:\[west\_long south\_lat east\_long north\_lat]
* @
* \$
* bio:
* bio\_name:
* retweets\_of:
* lang:
* bio\_location:
* statuses\_count:
* followers\_count:
* friends\_count:
* listed\_count:
* is:verified
* source:
* place:
* place\_country:
* has:geo
* has:mentions
* has:hashtags
* has:images
* has:videos
* has:media
* has:symbols
* is:retweet
* is:reply
* is:quote
* retweets\_of\_status\_id:
* in\_reply\_to\_status\_id:
* has:profile\_geo
* profile\_point\_radius:\[long lat radius]
* profile\_bounding\_box:\[west\_long south\_lat east\_long north\_lat]
* profile\_country:
* profile\_region:
* profile\_locality:
* profile\_subregion:

Para más detalles, consulta la guía [Primeros pasos con reglas enterprise](/x-api/enterprise-gnip-2.0/fundamentals/rules-filtering#enterprise-operators).

### Carga útil de ejemplo

A continuación se muestra una carga útil de ejemplo de la PowerTrack API en formato Native Enriched:

```json title="Ejemplo de respuesta" expandable lines wrap icon="https://mintcdn.com/x-preview/Vn2KEkZaPF9LiPi3/icons/xds/icon-brackets.svg?fit=max&auto=format&n=Vn2KEkZaPF9LiPi3&q=85&s=ed2428e77bab43e57800e1a590e982fa" theme={null}
{
  "created_at": "Wed Oct 10 20:19:24 +0000 2018",
  "id": 1050118621198921700,
  "id_str": "1050118621198921728",
  "text": "To make room for more expression, we will now count all emojis as equal—including those with gender‍‍‍ ‍‍and skin t… https://t.co/MkGjXf9aXm",
  "source": "<a href=\"http://x.com\" rel=\"nofollow\">X Web Client</a>",
  "truncated": true,
  "in_reply_to_status_id": null,
  "in_reply_to_status_id_str": null,
  "in_reply_to_user_id": null,
  "in_reply_to_user_id_str": null,
  "in_reply_to_screen_name": null,
  "user": {
    "id": 6253282,
    "id_str": "6253282",
    "name": "X API",
    "screen_name": "API",
    "location": "San Francisco, CA",
    "url": "https://developer.x.com",
    "description": "The Real X API. Tweets about API changes, service issues and our Developer Platform. Don't get an answer? It's on my website.",
    "translator_type": "null",
    "derived": {
      "locations": [
        {
          "country": "United States",
          "country_code": "US",
          "locality": "San Francisco",
          "region": "California",
          "sub_region": "San Francisco County",
          "full_name": "San Francisco, California, United States",
          "geo": {
            "coordinates": [
              -122.41942,
              37.77493
            ],
            "type": "point"
          }
        }
      ]
    },
    "protected": false,
    "verified": true,
    "followers_count": 6172196,
    "friends_count": 12,
    "listed_count": 13003,
    "favourites_count": 31,
    "statuses_count": 3650,
    "created_at": "Wed May 23 06:01:13 +0000 2007",
    "utc_offset": null,
    "time_zone": null,
    "geo_enabled": false,
    "lang": "en",
    "contributors_enabled": false,
    "is_translator": null,
    "profile_background_color": "null",
    "profile_background_image_url": "null",
    "profile_background_image_url_https": "null",
    "profile_background_tile": null,
    "profile_link_color": "null",
    "profile_sidebar_border_color": "null",
    "profile_sidebar_fill_color": "null",
    "profile_text_color": "null",
    "profile_use_background_image": null,
    "profile_image_url": "null",
    "profile_image_url_https": "https://pbs.twimg.com/profile_images/942858479592554497/BbazLO9L_normal.jpg",
    "profile_banner_url": "https://pbs.twimg.com/profile_banners/6253282/1497491515",
    "default_profile": false,
    "default_profile_image": false,
    "following": null,
    "follow_request_sent": null,
    "notifications": null
  },
  "geo": null,
  "coordinates": null,
  "place": null,
  "contributors": null,
  "is_quote_status": false,
  "extended_tweet": {
    "full_text": "To make room for more expression, we will now count all emojis as equal—including those with gender‍‍‍ ‍‍and skin tone modifiers 👍🏻👍🏽👍🏿. This is now reflected in Twitter-Text, our Open Source library. \n\nUsing Twitter-Text? See the forum post for detail: https://t.co/Nx1XZmRCXA",
    "display_text_range": [
      0,
      277
    ],
    "entities": {
      "hashtags": [],
      "urls": [
        {
          "url": "https://t.co/Nx1XZmRCXA",
          "expanded_url": "https://devcommunity.x.com/t/new-update-to-the-twitter-text-library-emoji-character-count/114607",
          "display_url": "devcommunity.com/t/new-update-t…",
          "unwound": {
            "url": "https://devcommunity.x.com/t/new-update-to-the-twitter-text-library-emoji-character-count/114607",
            "status": 200,
            "title": "New update to the Twitter-Text library: Emoji character count",
            "description": "Over the years, we have made several updates to the way that people can communicate on X. One of the more notable changes made last year was to increase the number of characters per Tweet from 140 to 280 characters. Today, we continue to expand people’s ability to express themselves by announcing a change to the way that we count emojis. Due to the differences in the way written text and emojis are encoded, many emojis (including emojis where you can apply gender and skin tone) have count..."
          },
          "indices": [
            254,
            277
          ]
        }
      ],
      "user_mentions": [],
      "symbols": []
    }
  },
  "quote_count": 0,
  "reply_count": 0,
  "retweet_count": 0,
  "favorite_count": 0,
  "entities": {
    "hashtags": [],
    "urls": [
      {
        "url": "https://t.co/MkGjXf9aXm",
        "expanded_url": "https://x.com/i/web/status/1050118621198921728",
        "display_url": "x.com/i/web/status/1…",
        "indices": [
          117,
          140
        ]
      }
    ],
    "user_mentions": [],
    "symbols": []
  },
  "favorited": false,
  "retweeted": false,
  "possibly_sensitive": false,
  "filter_level": "low",
  "lang": "en",
  "timestamp_ms": "1539202764211",
  "matching_rules": [
    {
      "tag": null,
      "id": 1128017341835464700,
      "id_str": "1128017341835464704"
    }
  ]
}
}
```

Consulta ejemplos de código:

* [Ver scripts sencillos en varios lenguajes para comenzar](https://github.com/gnip/support/tree/master/Premium%20Stream%20Connection)

* Consulta librerías cliente de Java de ejemplo: [Hosebird Client adaptado para streams enterprise](https://github.com/jimmoffitt/hbc), [Gnip4J](https://github.com/zauberlabs/gnip4j)

* [Ver una librería cliente de Python de ejemplo](https://github.com/tw-ddis/Gnip-Stream-Collector-Metrics)

## Guías

### Integración con PowerTrack

Para integrar PowerTrack en tu producto, necesitarás construir una aplicación que pueda hacer lo siguiente:

1. Establecer una conexión de streaming a la stream API de PowerTrack.
2. Enviar de forma asíncrona solicitudes POST a la rules API de PowerTrack para añadir y eliminar reglas del stream.
3. Gestionar volúmenes bajos de datos — Mantener la conexión de streaming y asegurar que los buffers se vacíen regularmente.
4. Gestionar volúmenes altos de datos — desacoplar la ingesta del stream del procesamiento adicional usando procesos asíncronos.
5. Reconectarse al stream automáticamente cuando se desconecte por cualquier motivo.

Para detalles sobre los tipos de solicitudes necesarias para las tareas 1 y 2, y consideraciones importantes al implementarlas, consulta la [referencia de la API](/x-api/enterprise-gnip-2.0/powertrack-api#api-reference-index).

### Reglas y filtrado

PowerTrack mejora la capacidad de filtrar el firehose completo de X y recibir únicamente los datos en los que ellos o sus clientes están interesados. Esto se logra aplicando el lenguaje de filtrado de PowerTrack para hacer coincidir Posts según una amplia variedad de atributos, incluyendo atributos de usuario, geolocalización, idioma y muchos otros. Usar reglas de PowerTrack para filtrar una fuente de datos asegura que los clientes reciban todos los datos, y *solo* los datos que necesitan para tu app.

Como se ha descrito, los clientes agregan reglas de filtrado al stream de PowerTrack para determinar qué actividades se enviarán a través de la conexión. El stream de PowerTrack puede admitir miles de estas reglas individuales, y entregar el conjunto combinado de actividades coincidentes a través de la única conexión del stream.

El conjunto de reglas de PowerTrack utilizadas para filtrar el stream de un cliente es altamente flexible. Si un cliente necesita agregar una nueva regla de filtrado para capturar un tipo diferente de contenido, o eliminar una regla existente, su app puede enviar una solicitud a la PowerTrack API para hacerlo. Cuando se envía esa solicitud, las reglas de filtrado se modifican automáticamente y los cambios simplemente surten efecto en el stream de datos sin necesidad de reconectarse. Esto permite a los clientes proporcionar datos a muchos clientes a escala, mientras admiten requisitos de filtrado distintos para cada uno de esos clientes.

[Ver la lista completa de operadores »](/x-api/enterprise-gnip-2.0/powertrack-api#available-operators)
