API de X / Twitter

API de X / Twitter: Hilo

Resuelve el hilo propio lineal que contiene una publicación de X (Twitter), desde su raíz y a lo largo de las continuaciones enlazadas del autor. Excluye las respuestas de otros usuarios.

US$2.69/1k solic., pagas por solicitud, sin suscripción.

Post
x.com/buildwithjonah/status/1842093771280384512

Post

J

Jonah Ruiz

@buildwithjonah

Spent the last 6 months building a data pipeline that normalizes 40 scraper APIs into one schema. Here is what broke, and what I would do differently. A thread.

4:00 PM · Sep 26, 2024 · 284K Views

964123,8201,540
J

Jonah Ruiz@buildwithjonah

First lesson: every provider's error format is different. We ended up writing a translation layer just to know whether a failure meant retry, or never retry.

Lo que devolvió la APItweets[0]
{
"id": "1842093771280384512",
"url": "https://x.com/buildwithjonah/status/1842093771280384512",
"text": "Spent the last 6 months building a data pipeline that normalizes 40 scraper APIs into one schema. Here is what broke, and what I would do differently. A thread.",
"conversationId": "1842093771280384512",
"inReplyToId": null,
"authorId": "1401882093771280384",
"authorHandle": "buildwithjonah",
"authorName": "Jonah Ruiz",
... 11 campos más
}
Disponibilidad
99.45%
30d · 7,304 llamadas
Solicitudes
7,377
30d · semanal, últimas 12 sem.
Respuesta
2.7s
mediana · 30d

Precios

Precios del endpoint Hilo de la API de X / Twitter

Pagas
US$26.90
US$2.69/1k solic., solo por lo que usas. Sin plan mensual.
Tus primeras 37 solicitudes son gratis con el saldo inicial de US$0.10.

Pruébalo

Obtén Hilo de X / Twitter en una sola solicitud

Abrir en
Respuesta de ejemplo
Las ejecuciones gratis devuelven solo los primeros 3 resultados. Agrega fondos a una clave para obtener la respuesta completa.

Este ejemplo muestra 43 de 45 campos. Ver todos los campos

{
  "found": true,
  "data": {
    "conversationId": "1842093771280384512",
    "threadLength": 3,
    "complete": true,
    "author": {
      "id": "1401882093771280384",
      "handle": "buildwithjonah",
      "name": "Jonah Ruiz",
      "url": "https://x.com/buildwithjonah",
      "verified": true,
      "blueVerified": true,
      "avatarUrl": "https://pbs.twimg.com/profile_images/1401882093771280384/jonah_400x400.jpg",
      "coverUrl": "https://pbs.twimg.com/profile_banners/1401882093771280384/1700000000",
      "bio": "Building data infra. Previously eng @Segment. Writing about pipelines and APIs.",
      "location": "Denver, CO",
      "followers": 41200,
      "following": 512,
      "createdUtc": 1517443200
    },
    "tweets": [
      {
        "id": "1842093771280384512",
        "url": "https://x.com/buildwithjonah/status/1842093771280384512",
        "text": "Spent the last 6 months building a data pipeline that normalizes 40 scraper APIs into one schema. Here is what broke, and what I would do differently. A thread.",
        "conversationId": "1842093771280384512",
        "inReplyToId": null,
        "authorId": "1401882093771280384",
        "authorHandle": "buildwithjonah",
        "authorName": "Jonah Ruiz",
        "media": [],
        "createdUtc": 1727366400,
        "likeCount": 3820,
        "replyCount": 96,
        "repostCount": 412,
        "quoteCount": 28,
        "viewCount": 284000,
        "bookmarkCount": 1540,
        "lang": "en",
        "isReply": false,
        "source": "Twitter Web App"
      },
      {
        "id": "1842093771280450048",
        "url": "https://x.com/buildwithjonah/status/1842093771280450048",
        "text": "First lesson: every provider's error format is different. We ended up writing a translation layer just to know whether a failure meant retry, or never retry.",
        "conversationId": "1842093771280384512",
        "inReplyToId": "1842093771280384512",
        "authorId": "1401882093771280384",
        "authorHandle": "buildwithjonah",
        "authorName": "Jonah Ruiz",
        "media": [
          {
            "type": "photo",
            "url": "https://pbs.twimg.com/media/F9k2QoQWkAA_error_flow.jpg",
            "width": 1600,
            "height": 900
          }
        ],
        "createdUtc": 1727366460,
        "likeCount": 1240,
        "replyCount": 31,
        "repostCount": 88,
        "quoteCount": 5,
        "viewCount": 91000,
        "bookmarkCount": 512,
        "lang": "en",
        "isReply": true,
        "source": "Twitter Web App"
      },
      {
        "id": "1842093771280516096",
        "url": "https://x.com/buildwithjonah/status/1842093771280516096",
        "text": "Second lesson: pagination cursors are never portable across providers. We had to build our own cursor abstraction to keep client code simple.",
        "conversationId": "1842093771280384512",
        "inReplyToId": "1842093771280450048",
        "authorId": "1401882093771280384",
        "authorHandle": "buildwithjonah",
        "authorName": "Jonah Ruiz",
        "media": [],
        "createdUtc": 1727366520,
        "likeCount": 980,
        "replyCount": 22,
        "repostCount": 64,
        "quoteCount": 3,
        "viewCount": 68000,
        "bookmarkCount": 401,
        "lang": "en",
        "isReply": true,
        "source": "Twitter Web App"
      }
    ]
  }
}

Referencia completa de parámetros y respuesta: cada campo, tipo y ejemplo de este endpoint.

Referencia

Una solicitud, un formato de respuesta.

Cada campo que envías y cada campo que recibes, cada uno con un ejemplo real.

Verificado por última vez el 2026-11-14 · disponibilidad y latencia medidas en 30d

Cuerpo de la solicitud

JSON, enviado por POST a este endpoint.

  • urlstring

    https://x.com/buildwithjonah/status/1842093771280384512

    URL de estado canónica de x.com o twitter.com con un ID numérico de tweet. Puedes indicar cualquier tweet del hilo propio; el proveedor resuelve la raíz del hilo.

Envías. Un cuerpo JSON pequeño. Los valores que se muestran son ejemplos para reemplazar por los tuyos.

Respuesta

JSON, un valor de ejemplo por campo.

authordata.author
  • avatarUrlstring

    https://pbs.twimg.com/profile_images/1401882093771280384/jonah_400x400.jpg

    Avatar image URL of the author.

  • biostring

    Building data infra. Previously eng @Segment. Writing about pipelines and APIs.

    Bio text on the author's profile.

  • blueVerifiedboolean

    true

    Whether the author carries an X blue verification badge.

  • coverUrlstring

    https://pbs.twimg.com/profile_banners/1401882093771280384/1700000000

    Profile banner image URL of the author.

  • createdUtcnumber

    1517443200

    UTC epoch timestamp in seconds (Unix time) the author's account was created. Multiply by 1000 for a JS Date in milliseconds.

  • followersinteger

    41200

    Follower count of the author.

  • followinginteger

    512

    Number of accounts the author follows.

  • handlestring

    buildwithjonah

    Populated whenever the provider has data for the entity.

  • idstring

    1401882093771280384

    Populated whenever the provider has data for the entity.

  • locationstring

    Denver, CO

    Location text on the author's profile.

  • namestring

    Jonah Ruiz

    Populated whenever the provider has data for the entity.

  • urlstring

    https://x.com/buildwithjonah

    Canonical X profile URL of the thread's author.

  • verifiedboolean

    true

    Whether the author carries a legacy X verification badge.

datadata
  • completeboolean

    true

    Whether the provider reached the end of the self-thread without hitting its internal cap.

  • conversationIdstring

    1842093771280384512

    Conversation ID shared by the self-thread tweets. Populated whenever the provider has data for the entity.

  • threadLengthinteger

    3

    Number of tweets returned in the self-thread.

each tweetdata.tweets[]

Ordered self-thread tweets. Replies from other users are excluded. Populated whenever the provider has data for the entity.

  • authorHandlestring

    buildwithjonah

    Populated whenever the provider has data for the entity.

  • authorIdstring

    1401882093771280384

    Populated whenever the provider has data for the entity.

  • authorNamestring

    Jonah Ruiz

    Populated whenever the provider has data for the entity.

  • bookmarkCountinteger

    1540

    Bookmark count of the post.

  • conversationIdstring

    1842093771280384512

  • createdUtcnumber

    1727366400

    UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds.

  • idstring

    1842093771280384512

    Populated whenever the provider has data for the entity.

  • inReplyToIdstring

    null

  • isReplyboolean

    false

    Whether the post is a reply to another post.

  • langstring

    en

    Two-letter language code X detected for the post.

  • likeCountinteger

    3820

    Like count of the post.

  • quoteCountinteger

    28

    Quote count of the post.

  • replyCountinteger

    96

    Reply count of the post.

  • repostCountinteger

    412

    Repost count of the post.

  • sourcestring

    Twitter Web App

    Client the post was sent from, e.g. "Twitter Web App".

  • textstring

    Spent the last 6 months building a data pipeline that normalizes 40 scraper APIs into one schema. Here is what broke, and what I would do differently. A thread.

    Populated whenever the provider has data for the entity.

  • urlstring

    https://x.com/buildwithjonah/status/1842093771280384512

    Populated whenever the provider has data for the entity.

  • viewCountinteger

    284000

    View count of the post.

each mediadata.tweets[].media[]

Photo, video, and GIF attachments on the post. Empty when the post has none.

  • heightinteger

    Pixel height of the media item, when the lane reports it.

  • typestring

    One of photo, video, or gif.

  • urlstring

    Image URL. For a video or GIF this is the poster/thumbnail frame. X media URLs on pbs.twimg.com are publicly fetchable without authentication; append ?name=orig for the full-resolution original.

  • videoUrlstring

    Playable video file URL. Present only for video and gif items.

  • widthinteger

    Pixel width of the media item, when the lane reports it.

top level
  • foundboolean

    true

    Whether the provider returned a tweet thread result.

  • reason"not_found"

    Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.

Recibes. Campos con nombre y tipo, con el mismo formato sin importar qué fuente responda.

¿Vendes esta API? Consulta el esquema completo que debe devolver tu endpoint.

Preguntas frecuentes

Acerca del endpoint Hilo de la API de X / Twitter

El endpoint Hilo de AnyAPI para X / Twitter devuelve datos de X / Twitter como JSON normalizado con una sola llamada POST a /v1/run/twitter.thread. Resuelve el hilo propio lineal que contiene una publicación de X (Twitter), desde su raíz y a lo largo de las continuaciones enlazadas del autor. Excluye las respuestas de otros usuarios. AnyAPI devuelve un único esquema normalizado sin importar qué fuente atienda la solicitud. Cuesta desde US$2.69 por cada 1,000 solicitudes, en dólares estadounidenses, sin suscripción y sin mínimo mensual. En los últimos 30 días, el 99.5% de las llamadas al endpoint Hilo de la API de X / Twitter a través de AnyAPI tuvo éxito, con un tiempo de respuesta mediano de 2.7 segundos en 7304 llamadas medidas.

Cuesta desde US$2.69 por cada 1,000 solicitudes, en dólares estadounidenses, sin suscripción y sin mínimo mensual. Agregas fondos a una billetera en dólares y cada llamada descuenta de ella. Algunas solicitudes fallidas pagadas con la billetera generan cargos de procesamiento que trasladamos al costo, sin margen; la respuesta de error muestra el monto cobrado.

Resuelve el hilo propio lineal que contiene una publicación de X (Twitter), desde su raíz y a lo largo de las continuaciones enlazadas del autor. Excluye las respuestas de otros usuarios. La respuesta es JSON normalizado con el mismo envoltorio que devuelve cada endpoint de AnyAPI, así que procesar un segundo endpoint es solo cambiar la URL.

En los últimos 30 días, el 99.5% de las llamadas al endpoint Hilo de la API de X / Twitter a través de AnyAPI tuvo éxito, con un tiempo de respuesta mediano de 2.7 segundos en 7304 llamadas medidas. Estas son mediciones propias de AnyAPI sobre el tráfico que pasa por el gateway, recalculadas continuamente, no un objetivo de nivel de servicio publicado.

Sí. Una cuenta nueva de AnyAPI empieza con US$0.10 de saldo gratis, sin tarjeta, que alcanza para 37 llamadas a Hilo de X / Twitter a US$0.00269 cada una.

Envía una solicitud POST a https://api.getanyapi.com/v1/run/twitter.thread con tu clave de AnyAPI en un encabezado "Authorization: Bearer" y la entrada como cuerpo JSON. La misma clave y la misma billetera sirven para todos los endpoints de AnyAPI.

No. Agregas dólares a un solo saldo prepagado de AnyAPI y cada solicitud descuenta de él. No hay plan mensual ni mínimo, y el mismo saldo paga todos los endpoints de AnyAPI.

Sí. Instala @getanyapi/sdk desde npm para TypeScript o getanyapi desde pip para Python. Ambos llaman a todos los endpoints de AnyAPI con la misma clave, y también sirve cualquier cliente HTTP.

Sí. Un agente puede conectarse al servidor MCP de AnyAPI en https://api.getanyapi.com/mcp, o crear su propia clave de prueba gratis con un solo POST sin autenticar a https://api.getanyapi.com/agent/signup y llamar a este endpoint por HTTP.