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

# Investigación en redes sociales

> Datos públicos de redes sociales de Reddit, X, YouTube, TikTok, Instagram y LinkedIn, con un único resultado normalizado por modo compartido por todas las plataformas.

Cada modo devuelve `output` normalizado, compartido por las seis plataformas. La salida nativa del proveedor no se repite allí; permanece en el Run y se puede leer con [Get Run](https://glasser.ai/docs/es/api-reference/runs/get.md). Un valor que una plataforma o un proveedor no informe es `null`.

Lee `result_status` por separado de `status`: `success`, `no_result`, `error` o `pending`. Una respuesta vacía pero válida es `no_result` y conserva la estructura del modo: `items` o `profiles` es `[]`, o todos los campos son `null`. `charge_usd` suma el `runs` de esta respuesta. Para una ruta de Apify pendiente (HTTP 202), sigue el [result\_url](https://glasser.ai/docs/es/api-reference/solutions/gtm/social_research/result.md) autenticado. Consulta [Selección de Provider y cargos](https://glasser.ai/docs/es/api-reference/solutions/overview.md#how-provider-selection-works).

## Salida por modo

Los campos siguen las [convenciones de campos](https://glasser.ai/docs/es/api-reference/solutions/overview.md#field-conventions).

| `mode` | `output` |
| - | - |
| `profile` | `platform`, `handle`, `name`, `url`, `bio`, `headline`, `website`, `followers`, `following`, `posts`, `verified` |
| `search` | `items[]`: `id`, `url`, `title`, `text`, `author`, `author_url`, `published_at`, `likes`, `comments`, `shares`, `views` |
| `feed` | `items[]`: los mismos campos de publicación |
| `post` | `id`, `url`, `title`, `text`, `author`, `author_url`, `published_at`, `likes`, `comments`, `shares`, `views` |
| `find` | `profiles[]`: `platform`, `url`, `handle`, `scrapecreators_confidence`, `followers` (para Reddit: subreddits coincidentes); `pdl_likelihood` de nivel superior |

* `published_at` está en UTC según ISO 8601, o `null` cuando el proveedor no proporciona una hora exacta (resultados de búsqueda de YouTube).
* `title` es el título de Reddit o YouTube. `text` es únicamente el cuerpo (self-text de Reddit, descripción de YouTube, el tuit, el texto de la leyenda o de la publicación), y es `null` cuando no existe.
* `bio` es la descripción de texto libre (en LinkedIn: la sección About). `headline` es la línea del cargo de LinkedIn. `website` es el sitio propio de la cuenta: el sitio web de la empresa en LinkedIn o el enlace ampliado del perfil de X.
* `likes` es la puntuación neta de Reddit (puede ser negativa), los favoritos de X, los diggs de TikTok, o los «me gusta» y las reacciones en otros sitios. `shares` son los retuits de X, los envíos mediante la hoja de compartir de TikTok o las republicaciones de LinkedIn. `views` son las impresiones de X, las reproducciones de TikTok o las visualizaciones de videos de YouTube e Instagram.
* En `find`, `platform` es el nombre de la red en minúsculas (`twitter` se convierte en `x`), y `handle` se puede usar como el `handle` de social\_research. `scrapecreators_confidence` es la puntuación de 0 a 1 de ScrapeCreators por perfil. `pdl_likelihood` es la puntuación de coincidencia de 1 a 10 de People Data Labs para la persona completa, y solo se completa en `linkedin.find`.
* El `id` de LinkedIn es el id de actividad sin formato, sin el prefijo `urn:li:activity:`.

```json
{
  "action": "x.feed",
  "provider": "scrapecreators",
  "status": "COMPLETED",
  "result_status": "success",
  "output": {
    "items": [
      { "id": "2110166802315804689", "url": "https://x.com/stripe/status/2110166802315804689", "title": null, "text": "You can now use Underdog…", "author": "stripe", "author_url": "https://x.com/stripe", "published_at": "2026-10-14T00:32:25Z", "likes": 55, "comments": 21, "shares": 6, "views": 8447 }
    ]
  },
  "charge_usd": "0.00188",
  "runs": [{ "provider": "scrapecreators", "status": "COMPLETED", "charge_usd": "0.00188" }],
  "result_url": "/v1/solutions/gtm/social_research/result?token=…"
}
```


## OpenAPI

````yaml /openapi.es.json post /v1/solutions/gtm/social_research
openapi: 3.1.0
info:
  title: Glasser
  version: 0.0.1
  description: >-
    Una API Key, sin contrato, con pago por llamada, para APIs de pago
    adquiridas al por mayor. Cada respuesta incluye x-request-id; cada cuerpo de
    error incluye el mismo sobre.
servers:
  - url: https://api.glasser.ai
security: []
tags:
  - name: Solutions
  - name: Endpoints
  - name: Runs
  - name: Balance
paths:
  /v1/solutions/gtm/social_research:
    post:
      tags:
        - Solutions
      summary: Investigación en redes sociales
      description: >-
        Datos públicos de redes sociales de Reddit, X, YouTube, TikTok,
        Instagram y LinkedIn: busca publicaciones, lee una cuenta, sus
        publicaciones recientes o una publicación, y encuentra la misma cuenta
        en otras plataformas. Elige una plataforma y un modo, y proporciona una
        consulta, un handle o una url.


        Cada modo devuelve un resultado normalizado compartido por las seis
        plataformas, con el id, el proveedor de datos y el estado del ciclo de
        vida del último Run: profile proporciona una cuenta (platform, handle,
        name, url, bio, headline, website, followers, following, posts,
        verified); search y feed proporcionan output.items[] con publicaciones
        (id, url, title, text, author, author_url, published_at, likes,
        comments, shares, views); post proporciona una publicación con los
        mismos campos; find proporciona output.profiles[] (platform, url,
        handle, scrapecreators_confidence, followers; para Reddit, los
        subreddits coincidentes) además de pdl_likelihood. El resultado nativo
        del proveedor de datos no se repite en output; permanece en el Run y se
        puede leer con GET /v1/runs/:id. Un valor que la plataforma o el
        proveedor de datos no informe es null.


        Lee result_status por separado de status: success, no_result, error o
        pending. Una respuesta vacía pero válida es no_result y conserva la
        estructura del modo (items o profiles es [], o todos los campos son
        null). charge_usd es el cobro total de los runs de esta respuesta y es
        null hasta que todos los Runs incluidos se resuelvan. provider=auto
        selecciona el primer proveedor de datos elegible y prueba el siguiente
        solo con PROVIDER_ERROR, TIMED_OUT o un 503 en la admisión; un proveedor
        de datos especificado nunca recurre a otro. Para QUEUED/RUNNING (HTTP
        202, las rutas de Apify), consulta result_url autenticado en el origen
        de la API. Reutiliza la misma Idempotency-Key y los mismos parámetros de
        ejecución para un reintento intencionado.
      operationId: gtm-social-research
      parameters:
        - name: idempotency-key
          in: header
          schema:
            type: string
            minLength: 1
            description: >-
              Genera un valor único para cada ejecución prevista (se recomienda
              un UUID). Reintenta con la misma clave y los mismos parámetros de
              ejecución para recuperar el Run original sin un segundo cobro.
              Cambiar los parámetros de ejecución con la misma clave devuelve
              409; cambiar task_id o metadata no actualiza el Run original.
          required: true
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                platform:
                  type: string
                  enum:
                    - reddit
                    - x
                    - youtube
                    - tiktok
                    - instagram
                    - linkedin
                mode:
                  anyOf:
                    - type: string
                      enum:
                        - search
                        - profile
                        - feed
                        - post
                        - find
                      description: >-
                        Predeterminado: search. Todas las plataformas admiten
                        cada modo.


                        - search: publicaciones que coinciden con query.

                        - profile: datos de la cuenta a partir del handle
                        (Reddit: subreddit). Para LinkedIn, proporciona una url
                        de persona o empresa.

                        - feed: publicaciones o vídeos recientes de un handle.
                        Para LinkedIn, proporciona una url de empresa.

                        - post: una publicación o vídeo a partir de url.

                        - find: otros perfiles sociales a partir del handle.
                        Para LinkedIn, proporciona la url del perfil de una
                        persona; para Reddit, proporciona query para encontrar
                        subreddits.
                    - type: 'null'
                provider:
                  anyOf:
                    - type: string
                      enum:
                        - auto
                        - scrapecreators
                        - apify
                        - tikhub
                        - pdl
                      description: >-
                        Predeterminado auto: selecciona el primer proveedor de
                        datos elegible según el orden de preferencia de Glasser.
                        Un proveedor de datos especificado debe admitir la
                        solicitud y estar permitido por tu API Key; no se
                        recurre a otro proveedor de datos. Los valores
                        disponibles se indican a continuación.
                    - type: 'null'
                query:
                  anyOf:
                    - type: string
                      minLength: 1
                      maxLength: 500
                    - type: 'null'
                handle:
                  anyOf:
                    - type: string
                      minLength: 1
                      maxLength: 100
                      description: >-
                        Un nombre de usuario sin @ o un nombre de subreddit sin
                        r/.
                    - type: 'null'
                url:
                  anyOf:
                    - type: string
                      minLength: 1
                      maxLength: 2048
                    - type: 'null'
                task_id:
                  anyOf:
                    - type: string
                      description: >-
                        Agrupa los Runs relacionados, incluido el fallback
                        automático, en un solo Task. Reutiliza una cadena
                        estable y filtra la lista de Runs por task para
                        recuperarlos.
                    - type: 'null'
                metadata:
                  anyOf:
                    - anyOf:
                        - type: object
                          additionalProperties:
                            type: string
                            minLength: 1
                            maxLength: 500
                          maxProperties: 20
                          propertyNames:
                            type: string
                            pattern: ^[a-z][a-z0-9_]{0,39}$
                        - {}
                      description: >-
                        Campos de seguimiento opcionales, devueltos en el Run y
                        disponibles como filtros. Nunca se envían al proveedor
                        de datos ni afectan al enrutamiento, al Price ni a la
                        idempotencia.


                        - Hasta 20 claves: letras minúsculas, dígitos y guiones
                        bajos; deben comenzar por una letra y tener como máximo
                        40 caracteres.

                        - Valores: cadenas de entre 1 y 500 caracteres.

                        - user_id: el ID opaco de tu usuario final, nunca su
                        dirección de correo electrónico ni su nombre.


                        Las entradas no válidas se descartan por completo, sin
                        truncarlas. La solicitud continúa y el Run devuelve los
                        campos que se almacenaron.
                    - type: 'null'
              required:
                - platform
              additionalProperties: false
        required: true
      responses:
        '200':
          description: Éxito
          content:
            application/json:
              schema:
                anyOf:
                  - $ref: '#/components/schemas/SocialResearchResult'
        '202':
          description: Éxito
          content:
            application/json:
              schema:
                anyOf:
                  - $ref: '#/components/schemas/SocialResearchResult'
        '400':
          description: ValidationFailed | IdempotencyKeyRequired
          content:
            application/json:
              schema:
                anyOf:
                  - $ref: '#/components/schemas/ValidationFailedEncoded'
                  - $ref: '#/components/schemas/IdempotencyKeyRequiredEncoded'
                  - $ref: '#/components/schemas/ValidationFailedEncoded'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedEncoded'
        '402':
          description: InsufficientBalance
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InsufficientBalanceEncoded'
        '403':
          description: EndpointNotPermitted | Forbidden
          content:
            application/json:
              schema:
                anyOf:
                  - $ref: '#/components/schemas/EndpointNotPermittedEncoded'
                  - $ref: '#/components/schemas/ForbiddenEncoded'
        '409':
          description: IdempotencyConflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IdempotencyConflictEncoded'
        '429':
          description: RateLimited
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RateLimitedEncoded'
        '503':
          description: ServiceUnavailable
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServiceUnavailableEncoded'
      security:
        - bearer: []
components:
  schemas:
    SocialResearchResult:
      type: object
      properties:
        id:
          type: string
        run_url:
          type: string
          description: Abre este Run en la consola. Requiere pertenencia al Workspace.
        provider:
          type: string
          pattern: ^[a-z0-9][a-z0-9-]*$
        endpoint:
          type: string
          pattern: ^\/.+$
        endpoint_version:
          type: integer
          exclusiveMinimum: 0
        status:
          type: string
          enum:
            - QUEUED
            - RUNNING
            - COMPLETED
            - FAILED
            - STOPPED
          description: >-
            QUEUED o RUNNING: todavía está en curso. COMPLETED: hay una
            respuesta del proveedor de datos disponible, incluidas las
            respuestas no-2xx. FAILED: consulta `failure`. STOPPED: detenido
            antes del envío. Consulta charge_usd por separado de status.
        failure:
          anyOf:
            - type: object
              properties:
                kind:
                  type: string
                  enum:
                    - TIMED_OUT
                    - INTERNAL
                message:
                  type: string
              required:
                - kind
                - message
              additionalProperties: false
            - type: 'null'
          description: >-
            Motivo por el que falló el Run. Solo es distinto de null cuando
            status es FAILED.
        input:
          type: object
        output:
          anyOf:
            - anyOf:
                - type: object
                  properties:
                    platform:
                      anyOf:
                        - type: string
                        - type: 'null'
                    handle:
                      anyOf:
                        - type: string
                        - type: 'null'
                    name:
                      anyOf:
                        - type: string
                        - type: 'null'
                    url:
                      anyOf:
                        - type: string
                        - type: 'null'
                    bio:
                      anyOf:
                        - type: string
                        - type: 'null'
                      description: 'Descripción de texto libre (LinkedIn: la sección About).'
                    headline:
                      anyOf:
                        - type: string
                        - type: 'null'
                      description: >-
                        Titular de la persona en LinkedIn (línea del cargo);
                        null en las demás plataformas.
                    website:
                      anyOf:
                        - type: string
                        - type: 'null'
                      description: >-
                        Sitio web propio de la cuenta: sitio web de la empresa
                        en LinkedIn, enlace al perfil de X (expandido, nunca
                        t.co); null en los demás casos.
                    followers:
                      anyOf:
                        - type: integer
                        - type: 'null'
                      description: >-
                        Seguidores; Reddit: suscriptores del subreddit; YouTube:
                        suscriptores.
                    following:
                      anyOf:
                        - type: integer
                        - type: 'null'
                      description: >-
                        Cuentas que sigue esta cuenta. Null en Reddit, YouTube y
                        LinkedIn.
                    posts:
                      anyOf:
                        - type: integer
                        - type: 'null'
                    verified:
                      anyOf:
                        - type: boolean
                        - type: 'null'
                  required:
                    - platform
                    - handle
                    - name
                    - url
                    - bio
                    - headline
                    - website
                    - followers
                    - following
                    - posts
                    - verified
                  additionalProperties: false
                - type: object
                  properties:
                    items:
                      type: array
                      items:
                        type: object
                        properties:
                          id:
                            anyOf:
                              - type: string
                              - type: 'null'
                            description: >-
                              ID de la publicación en la plataforma. LinkedIn:
                              el ID de actividad sin formato (sin el prefijo
                              urn:li:activity:).
                          url:
                            anyOf:
                              - type: string
                              - type: 'null'
                          title:
                            anyOf:
                              - type: string
                              - type: 'null'
                            description: >-
                              Título de Reddit y YouTube; null en las demás
                              plataformas.
                          text:
                            anyOf:
                              - type: string
                              - type: 'null'
                            description: >-
                              Contenido de la publicación: self-text de Reddit,
                              descripción de YouTube, tuit, texto de la leyenda
                              o de la publicación. Null cuando el proveedor de
                              datos no devuelve contenido (una publicación con
                              enlace de Reddit, un resultado de búsqueda de
                              YouTube).
                          author:
                            anyOf:
                              - type: string
                              - type: 'null'
                            description: >-
                              Nombre visible o, cuando la plataforma no muestra
                              otro nombre, el identificador (X, TikTok,
                              Instagram, Reddit).
                          author_url:
                            anyOf:
                              - type: string
                              - type: 'null'
                          published_at:
                            anyOf:
                              - type: string
                              - type: 'null'
                            description: >-
                              Hora de publicación UTC en formato ISO 8601; null
                              cuando el proveedor de datos no proporciona la
                              hora exacta.
                          likes:
                            anyOf:
                              - type: integer
                              - type: 'null'
                            description: >-
                              Reddit: puntuación neta (votos positivos menos
                              votos negativos, puede ser negativa). X:
                              favoritos. TikTok: diggs. Otras: Me gusta o
                              reacciones.
                          comments:
                            anyOf:
                              - type: integer
                              - type: 'null'
                          shares:
                            anyOf:
                              - type: integer
                              - type: 'null'
                            description: >-
                              X: retuits. TikTok: cantidad de compartidos
                              (envíos desde la hoja de compartir, no
                              republicaciones). LinkedIn: republicaciones. Null
                              en Reddit, YouTube e Instagram.
                          views:
                            anyOf:
                              - type: integer
                              - type: 'null'
                            description: >-
                              X: impresiones. TikTok: reproducciones. YouTube:
                              visualizaciones. Instagram: visualizaciones de
                              vídeo. Null en Reddit y LinkedIn.
                        required:
                          - id
                          - url
                          - title
                          - text
                          - author
                          - author_url
                          - published_at
                          - likes
                          - comments
                          - shares
                          - views
                        additionalProperties: false
                  required:
                    - items
                  additionalProperties: false
                - type: object
                  properties:
                    id:
                      anyOf:
                        - type: string
                        - type: 'null'
                      description: >-
                        ID de la publicación en la plataforma. LinkedIn: el ID
                        de actividad sin formato (sin el prefijo
                        urn:li:activity:).
                    url:
                      anyOf:
                        - type: string
                        - type: 'null'
                    title:
                      anyOf:
                        - type: string
                        - type: 'null'
                      description: >-
                        Título de Reddit y YouTube; null en las demás
                        plataformas.
                    text:
                      anyOf:
                        - type: string
                        - type: 'null'
                      description: >-
                        Contenido de la publicación: self-text de Reddit,
                        descripción de YouTube, tuit, texto de la leyenda o de
                        la publicación. Null cuando el proveedor de datos no
                        devuelve contenido (una publicación con enlace de
                        Reddit, un resultado de búsqueda de YouTube).
                    author:
                      anyOf:
                        - type: string
                        - type: 'null'
                      description: >-
                        Nombre visible o, cuando la plataforma no muestra otro
                        nombre, el identificador (X, TikTok, Instagram, Reddit).
                    author_url:
                      anyOf:
                        - type: string
                        - type: 'null'
                    published_at:
                      anyOf:
                        - type: string
                        - type: 'null'
                      description: >-
                        Hora de publicación UTC en formato ISO 8601; null cuando
                        el proveedor de datos no proporciona la hora exacta.
                    likes:
                      anyOf:
                        - type: integer
                        - type: 'null'
                      description: >-
                        Reddit: puntuación neta (votos positivos menos votos
                        negativos, puede ser negativa). X: favoritos. TikTok:
                        diggs. Otras: Me gusta o reacciones.
                    comments:
                      anyOf:
                        - type: integer
                        - type: 'null'
                    shares:
                      anyOf:
                        - type: integer
                        - type: 'null'
                      description: >-
                        X: retuits. TikTok: cantidad de compartidos (envíos
                        desde la hoja de compartir, no republicaciones).
                        LinkedIn: republicaciones. Null en Reddit, YouTube e
                        Instagram.
                    views:
                      anyOf:
                        - type: integer
                        - type: 'null'
                      description: >-
                        X: impresiones. TikTok: reproducciones. YouTube:
                        visualizaciones. Instagram: visualizaciones de vídeo.
                        Null en Reddit y LinkedIn.
                  required:
                    - id
                    - url
                    - title
                    - text
                    - author
                    - author_url
                    - published_at
                    - likes
                    - comments
                    - shares
                    - views
                  additionalProperties: false
                - type: object
                  properties:
                    profiles:
                      type: array
                      items:
                        type: object
                        properties:
                          platform:
                            anyOf:
                              - type: string
                              - type: 'null'
                            description: >-
                              Nombre de la red en minúsculas. Las seis
                              plataformas de social_research usan sus nombres de
                              solicitud (twitter es x); las demás redes
                              (facebook, github, …) se conservan sin cambios.
                          url:
                            anyOf:
                              - type: string
                              - type: 'null'
                          handle:
                            anyOf:
                              - type: string
                              - type: 'null'
                            description: >-
                              Nombre de usuario en esa red, utilizable como
                              social_research `handle`; null cuando el proveedor
                              de datos no lo tiene.
                          scrapecreators_confidence:
                            anyOf:
                              - anyOf:
                                  - type: number
                                  - type: string
                                    enum:
                                      - Infinity
                                      - '-Infinity'
                                      - NaN
                              - type: 'null'
                            description: >-
                              Nivel de confianza de ScrapeCreators, de 0 a 1, de
                              que este perfil pertenece a la cuenta. Null en los
                              demás proveedores de datos.
                          followers:
                            anyOf:
                              - type: integer
                              - type: 'null'
                            description: >-
                              reddit.find: suscriptores del subreddit. Null en
                              las demás plataformas.
                        required:
                          - platform
                          - url
                          - handle
                          - scrapecreators_confidence
                          - followers
                        additionalProperties: false
                    pdl_likelihood:
                      anyOf:
                        - type: integer
                        - type: 'null'
                      description: >-
                        Puntuación de People Data Labs, de 1 a 10, sobre cuánto
                        coincide el registro de la persona con los datos de
                        entrada; corresponde a la persona completa, no a un solo
                        perfil. Solo linkedin.find; null en los demás casos.
                  required:
                    - profiles
                    - pdl_likelihood
                  additionalProperties: false
            - type: 'null'
          description: >-
            Campos normalizados por modo, compartidos por todas las plataformas.
            El resultado nativo del proveedor de datos no se repite aquí;
            permanece en el Run (GET /v1/runs/:id). Los valores que la
            plataforma o el proveedor de datos no informan son null.


            - profile: platform, handle, name, url, bio, headline, website,
            followers, following, posts, verified

            - search: items[]: id, url, title, text, author, author_url,
            published_at, likes, comments, shares, views

            - feed: items[]: mismos campos de publicación que search

            - post: id, url, title, text, author, author_url, published_at,
            likes, comments, shares, views

            - find: profiles[]: platform, url, handle,
            scrapecreators_confidence, followers (Reddit: subreddits
            coincidentes); pdl_likelihood
        provider_response:
          anyOf:
            - type: object
              properties:
                http_status:
                  type: integer
                  minimum: 100
                  maximum: 599
                  description: >-
                    Estado HTTP devuelto por el proveedor de datos. Compruébalo
                    incluso cuando el Run esté COMPLETED.
                error:
                  anyOf:
                    - {}
                    - type: 'null'
              required:
                - http_status
              additionalProperties: false
            - type: 'null'
          description: >-
            Solo es distinto de null cuando status es COMPLETED.


            - En las respuestas 2xx, output contiene JSON nativo del proveedor
            de datos (de cualquier estructura) o null si el cuerpo está vacío.

            - En las respuestas no-2xx, error contiene el cuerpo del error del
            proveedor de datos y output es null.


            Los campos sensibles se eliminan de ambos cuerpos.
        charge_usd:
          anyOf:
            - type: string
              pattern: ^(0|[1-9]\d*)\.(\d{2}|\d{2}\d{0,3}[1-9])$
              description: >-
                Cadena decimal exacta en USD (mín. 2 y máx. 6 decimales, con una
                única representación canónica). Suma mediante aritmética decimal
                o escala por 10^6; nunca uses números de coma flotante.
            - type: 'null'
          description: >-
            Cargo total de los Runs en esta respuesta de Solution. Es null hasta
            que todos los Runs indicados se liquiden. Cada Run conserva su
            propio cargo; los fallos también pueden generar cargos.
        charge_basis:
          anyOf:
            - type: object
              properties:
                clause:
                  type: string
                  enum:
                    - rule
                    - NO_RESULT
                    - PROVIDER_ERROR
                    - TIMED_OUT
                    - INTERNAL
                quantity:
                  anyOf:
                    - type: integer
                      minimum: 0
                    - type: 'null'
              required:
                - clause
                - quantity
              additionalProperties: false
            - type: 'null'
          description: >-
            Base del cargo de un único Run o null para un total de varios Runs.
            Consulta runs[].charge_basis para cada cargo.
        stoppable:
          type: boolean
          description: >-
            Indica si actualmente se puede aceptar una solicitud de detención.
            Esto no garantiza que el Run pueda detenerse antes del envío.
        stop_requested_at:
          anyOf:
            - type: string
              description: Marca de tiempo UTC ISO-8601
              format: date-time
            - type: 'null'
          description: >-
            Momento en que se solicitó la detención. El Run puede continuar si
            el envío ya había comenzado.
        created_at:
          type: string
          description: Marca de tiempo UTC ISO-8601
          format: date-time
        started_at:
          anyOf:
            - type: string
              description: Marca de tiempo UTC ISO-8601
              format: date-time
            - type: 'null'
        completed_at:
          anyOf:
            - type: string
              description: Marca de tiempo UTC ISO-8601
              format: date-time
            - type: 'null'
        task_id:
          anyOf:
            - type: string
            - type: 'null'
        metadata:
          type: object
          additionalProperties:
            type: string
            minLength: 1
            maxLength: 500
          maxProperties: 20
          propertyNames:
            type: string
            pattern: ^[a-z][a-z0-9_]{0,39}$
          description: >-
            Tus campos de seguimiento almacenados. Úsalos para filtrar Runs.
            Nunca se envían al proveedor de datos ni afectan al enrutamiento,
            Price o la idempotencia.


            - Hasta 20 claves: letras minúsculas, dígitos y guiones bajos; deben
            comenzar por una letra; como máximo 40 caracteres.

            - Valores: cadenas de 1–500 caracteres.

            - user_id: el ID opaco de tu usuario final, nunca su dirección de
            correo electrónico ni su nombre.
        action:
          type: string
          pattern: ^[a-z]+\.[a-z]+$
          description: >-
            `<platform>.<mode>`; una página de empresa de LinkedIn en modo de
            perfil es linkedin.company.
        result_status:
          type: string
          enum:
            - success
            - no_result
            - error
            - pending
          description: >-
            Estado de entrega empresarial, independiente del ciclo de vida final
            del Run en status. no_result es una respuesta vacía pero válida;
            error significa que no se pudo entregar la salida del proveedor de
            datos.
        error:
          anyOf:
            - type: object
              properties:
                code:
                  type: string
                message:
                  type: string
              required:
                - code
                - message
              additionalProperties: false
            - type: 'null'
        runs:
          type: array
          items:
            type: object
            properties:
              id:
                type: string
              run_url:
                type: string
                description: Abre este Run en la consola. Requiere pertenecer al Workspace.
              provider:
                type: string
                pattern: ^[a-z0-9][a-z0-9-]*$
              endpoint:
                type: string
                pattern: ^\/.+$
              endpoint_version:
                type: integer
                exclusiveMinimum: 0
              status:
                type: string
                enum:
                  - QUEUED
                  - RUNNING
                  - COMPLETED
                  - FAILED
                  - STOPPED
                description: >-
                  QUEUED o RUNNING: todavía está en curso. COMPLETED: hay una
                  respuesta del proveedor de datos disponible, incluidas las
                  respuestas que no son 2xx. FAILED: consulta `failure`.
                  STOPPED: detenido antes del dispatch. Consulta charge_usd por
                  separado de status.
              failure:
                anyOf:
                  - type: object
                    properties:
                      kind:
                        type: string
                        enum:
                          - TIMED_OUT
                          - INTERNAL
                      message:
                        type: string
                    required:
                      - kind
                      - message
                    additionalProperties: false
                  - type: 'null'
                description: >-
                  Motivo por el que falló el Run. Solo es distinto de null
                  cuando status es FAILED.
              input:
                type: object
                properties:
                  omitted:
                    type: boolean
                    enum:
                      - true
                required:
                  - omitted
                additionalProperties: false
              output:
                type: object
                properties:
                  omitted:
                    type: boolean
                    enum:
                      - true
                required:
                  - omitted
                additionalProperties: false
              provider_response:
                anyOf:
                  - type: object
                    properties:
                      http_status:
                        type: integer
                        minimum: 100
                        maximum: 599
                        description: >-
                          Estado HTTP devuelto por el proveedor de datos.
                          Compruébalo incluso cuando el Run esté COMPLETED.
                    required:
                      - http_status
                    additionalProperties: false
                  - type: 'null'
              charge_usd:
                anyOf:
                  - type: string
                    pattern: ^(0|[1-9]\d*)\.(\d{2}|\d{2}\d{0,3}[1-9])$
                    description: >-
                      Cadena decimal exacta en USD (mínimo 2 y máximo 6
                      decimales, con una única representación canónica). Suma
                      con aritmética decimal o escala por 10^6; nunca uses
                      números de coma flotante.
                  - type: 'null'
                description: >-
                  Cargo final como cadena decimal exacta en USD. Es null
                  mientras está QUEUED o RUNNING. Un Run FAILED puede tener un
                  cargo distinto de cero según el Price del Endpoint.
              charge_basis:
                anyOf:
                  - type: object
                    properties:
                      clause:
                        type: string
                        enum:
                          - rule
                          - NO_RESULT
                          - PROVIDER_ERROR
                          - TIMED_OUT
                          - INTERNAL
                      quantity:
                        anyOf:
                          - type: integer
                            minimum: 0
                          - type: 'null'
                    required:
                      - clause
                      - quantity
                    additionalProperties: false
                  - type: 'null'
                description: >-
                  Cláusula de Price utilizada para calcular el cargo. Es null
                  antes de la liquidación o cuando no se realizó ningún intento
                  con el proveedor de datos.
              stoppable:
                type: boolean
                description: >-
                  Indica si actualmente se puede aceptar una solicitud de
                  detención. Esto no garantiza que el Run pueda detenerse antes
                  del dispatch.
              stop_requested_at:
                anyOf:
                  - type: string
                    description: Marca de tiempo UTC ISO-8601
                    format: date-time
                  - type: 'null'
                description: >-
                  Momento en que se solicitó la detención. El Run puede
                  continuar si el dispatch ya había comenzado.
              created_at:
                type: string
                description: Marca de tiempo UTC ISO-8601
                format: date-time
              started_at:
                anyOf:
                  - type: string
                    description: Marca de tiempo UTC ISO-8601
                    format: date-time
                  - type: 'null'
              completed_at:
                anyOf:
                  - type: string
                    description: Marca de tiempo UTC ISO-8601
                    format: date-time
                  - type: 'null'
              task_id:
                anyOf:
                  - type: string
                  - type: 'null'
              metadata:
                type: object
                additionalProperties:
                  type: string
                  minLength: 1
                  maxLength: 500
                maxProperties: 20
                propertyNames:
                  type: string
                  pattern: ^[a-z][a-z0-9_]{0,39}$
                description: >-
                  Tus campos de seguimiento almacenados. Úsalos para filtrar
                  Runs. Nunca se envían al proveedor de datos ni afectan al
                  enrutamiento, Price o la idempotencia.


                  - Hasta 20 claves: letras minúsculas, dígitos y guiones bajos;
                  deben comenzar por una letra; como máximo 40 caracteres.

                  - Valores: cadenas de 1–500 caracteres.

                  - user_id: el ID opaco de tu usuario final, nunca su dirección
                  de correo electrónico ni su nombre.
            required:
              - id
              - run_url
              - provider
              - endpoint
              - endpoint_version
              - status
              - failure
              - input
              - output
              - provider_response
              - charge_usd
              - charge_basis
              - stoppable
              - stop_requested_at
              - created_at
              - started_at
              - completed_at
              - task_id
              - metadata
            additionalProperties: false
        result_url:
          type: string
          description: >-
            Ruta de URL autenticada y de solo lectura para consultar este
            resultado normalizado y el cargo total. Úsala con el origen de la
            API. No crea Runs ni reanuda el fallback. GET /v1/runs/:id sigue
            devolviendo el Run nativo e individual.
      required:
        - id
        - run_url
        - provider
        - endpoint
        - endpoint_version
        - status
        - failure
        - input
        - output
        - provider_response
        - charge_usd
        - charge_basis
        - stoppable
        - stop_requested_at
        - created_at
        - started_at
        - completed_at
        - task_id
        - metadata
        - action
        - result_status
        - error
        - runs
        - result_url
      additionalProperties: false
    ValidationFailedEncoded:
      type: object
      properties:
        error:
          type: object
          properties:
            code:
              type: string
              enum:
                - validation_failed
            message:
              type: string
            reason:
              anyOf:
                - type: string
                - type: 'null'
            control:
              anyOf:
                - type: string
                - type: 'null'
            retry_after_ms:
              anyOf:
                - anyOf:
                    - type: integer
                    - type: 'null'
                - type: 'null'
            details:
              anyOf:
                - type: object
                - type: 'null'
          required:
            - code
            - message
          additionalProperties: false
        request_id:
          type: string
      required:
        - error
        - request_id
      additionalProperties: false
    IdempotencyKeyRequiredEncoded:
      type: object
      properties:
        error:
          type: object
          properties:
            code:
              type: string
              enum:
                - idempotency_key_required
            message:
              type: string
            reason:
              anyOf:
                - type: string
                - type: 'null'
            control:
              anyOf:
                - type: string
                - type: 'null'
            retry_after_ms:
              anyOf:
                - anyOf:
                    - type: integer
                    - type: 'null'
                - type: 'null'
            details:
              anyOf:
                - type: object
                - type: 'null'
          required:
            - code
            - message
          additionalProperties: false
        request_id:
          type: string
      required:
        - error
        - request_id
      additionalProperties: false
    UnauthorizedEncoded:
      type: object
      properties:
        error:
          type: object
          properties:
            code:
              type: string
              enum:
                - unauthorized
            message:
              type: string
            reason:
              anyOf:
                - type: string
                - type: 'null'
            control:
              anyOf:
                - type: string
                - type: 'null'
            retry_after_ms:
              anyOf:
                - anyOf:
                    - type: integer
                    - type: 'null'
                - type: 'null'
            details:
              anyOf:
                - type: object
                - type: 'null'
          required:
            - code
            - message
          additionalProperties: false
        request_id:
          type: string
      required:
        - error
        - request_id
      additionalProperties: false
    InsufficientBalanceEncoded:
      type: object
      properties:
        error:
          type: object
          properties:
            code:
              type: string
              enum:
                - insufficient_balance
            message:
              type: string
            reason:
              anyOf:
                - type: string
                - type: 'null'
            control:
              anyOf:
                - type: string
                - type: 'null'
            retry_after_ms:
              anyOf:
                - anyOf:
                    - type: integer
                    - type: 'null'
                - type: 'null'
            details:
              anyOf:
                - type: object
                - type: 'null'
          required:
            - code
            - message
          additionalProperties: false
        request_id:
          type: string
      required:
        - error
        - request_id
      additionalProperties: false
    EndpointNotPermittedEncoded:
      type: object
      properties:
        error:
          type: object
          properties:
            code:
              type: string
              enum:
                - endpoint_not_permitted
            message:
              type: string
            reason:
              anyOf:
                - type: string
                - type: 'null'
            control:
              anyOf:
                - type: string
                - type: 'null'
            retry_after_ms:
              anyOf:
                - anyOf:
                    - type: integer
                    - type: 'null'
                - type: 'null'
            details:
              anyOf:
                - type: object
                - type: 'null'
          required:
            - code
            - message
          additionalProperties: false
        request_id:
          type: string
      required:
        - error
        - request_id
      additionalProperties: false
    ForbiddenEncoded:
      type: object
      properties:
        error:
          type: object
          properties:
            code:
              type: string
              enum:
                - forbidden
            message:
              type: string
            reason:
              anyOf:
                - type: string
                - type: 'null'
            control:
              anyOf:
                - type: string
                - type: 'null'
            retry_after_ms:
              anyOf:
                - anyOf:
                    - type: integer
                    - type: 'null'
                - type: 'null'
            details:
              anyOf:
                - type: object
                - type: 'null'
          required:
            - code
            - message
          additionalProperties: false
        request_id:
          type: string
      required:
        - error
        - request_id
      additionalProperties: false
    IdempotencyConflictEncoded:
      type: object
      properties:
        error:
          type: object
          properties:
            code:
              type: string
              enum:
                - idempotency_conflict
            message:
              type: string
            reason:
              anyOf:
                - type: string
                - type: 'null'
            control:
              anyOf:
                - type: string
                - type: 'null'
            retry_after_ms:
              anyOf:
                - anyOf:
                    - type: integer
                    - type: 'null'
                - type: 'null'
            details:
              anyOf:
                - type: object
                - type: 'null'
          required:
            - code
            - message
          additionalProperties: false
        request_id:
          type: string
      required:
        - error
        - request_id
      additionalProperties: false
    RateLimitedEncoded:
      type: object
      properties:
        error:
          type: object
          properties:
            code:
              type: string
              enum:
                - rate_limited
            message:
              type: string
            reason:
              anyOf:
                - type: string
                - type: 'null'
            control:
              anyOf:
                - type: string
                - type: 'null'
            retry_after_ms:
              anyOf:
                - anyOf:
                    - type: integer
                    - type: 'null'
                - type: 'null'
            details:
              anyOf:
                - type: object
                - type: 'null'
          required:
            - code
            - message
          additionalProperties: false
        request_id:
          type: string
      required:
        - error
        - request_id
      additionalProperties: false
    ServiceUnavailableEncoded:
      type: object
      properties:
        error:
          type: object
          properties:
            code:
              type: string
              enum:
                - service_unavailable
            message:
              type: string
            reason:
              anyOf:
                - type: string
                - type: 'null'
            control:
              anyOf:
                - type: string
                - type: 'null'
            retry_after_ms:
              anyOf:
                - anyOf:
                    - type: integer
                    - type: 'null'
                - type: 'null'
            details:
              anyOf:
                - type: object
                - type: 'null'
          required:
            - code
            - message
          additionalProperties: false
        request_id:
          type: string
      required:
        - error
        - request_id
      additionalProperties: false
  securitySchemes:
    bearer:
      type: http
      scheme: Bearer

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.