> ## 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.

# Leer un resultado de investigación web

> Lee la salida normalizada, el estado de entrega y los cargos totales de una solicitud de investigación web existente. Sigue el result_url devuelto por cada acción de web_research.

Usa `result_url` sin cambios en el origen de la API y autentícate con una API Key autorizada para leer todos los Run. La respuesta usa los mismos campos que la respuesta inicial de Solution. HTTP 200 aún puede contener `result_status: pending`; sigue consultando hasta que el Run final sea terminal.

Esta es una solicitud de solo lectura. No crea Run, no llama a proveedores de datos, no reanuda el fallback ni restablece el presupuesto de ejecución. [Get Run](https://glasser.ai/docs/es/api-reference/runs/get.md) sigue siendo la API independiente para la salida nativa y el cargo de un Run individual.


## OpenAPI

````yaml /openapi.es.json get /v1/solutions/gtm/web_research/result
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/web_research/result:
    get:
      tags:
        - Solutions
      summary: Leer un resultado de investigación web
      description: >-
        Sigue result_url desde search o scrape para leer el output normalizado,
        el result_status de negocio y el cargo total de los mismos Runs. HTTP
        200 aún puede contener result_status=pending. Esta lectura autenticada
        no crea Runs, no llama a proveedores de datos, no reanuda el fallback ni
        restablece los presupuestos. GET /v1/runs/:id sigue siendo el Run
        individual nativo. El contexto del resultado está firmado, vinculado al
        Workspace y se comprueba con la política actual de la Key para cada Run.
      operationId: gtm-web-research-result
      parameters:
        - name: token
          in: query
          schema:
            type: string
            minLength: 1
            maxLength: 16384
            description: >-
              Contexto de resultado opaco devuelto en result_url. Consérvalo sin
              cambios y autentícate con una Key autorizada para leer todos los
              Runs enumerados.
          required: true
      responses:
        '200':
          description: Resultado de investigación web
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WebResearchResult'
        '400':
          description: Validación fallida
          content:
            application/json:
              schema:
                anyOf:
                  - $ref: '#/components/schemas/ValidationFailedEncoded'
                  - $ref: '#/components/schemas/ValidationFailedEncoded'
        '401':
          description: No autorizado
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedEncoded'
        '403':
          description: Prohibido
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenEncoded'
        '404':
          description: No encontrado
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundEncoded'
        '429':
          description: Límite de velocidad alcanzado
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RateLimitedEncoded'
      security:
        - bearer: []
components:
  schemas:
    WebResearchResult:
      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: se
            detuvo antes del dispatch. Lee charge_usd por separado del estado.
        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. No es null solo cuando el estado es
            FAILED.
        input:
          type: object
        output:
          anyOf:
            - anyOf:
                - type: object
                  properties:
                    url:
                      type: string
                      description: >-
                        La URL solicitada o la URL final cuando el proveedor de
                        datos informa de una.
                    final_url:
                      anyOf:
                        - type: string
                        - type: 'null'
                      description: >-
                        La URL posterior a la redirección según la informa el
                        proveedor de datos (Firecrawl, Exa). Null cuando el
                        proveedor de datos no informa de ninguna.
                    title:
                      anyOf:
                        - type: string
                        - type: 'null'
                    text:
                      anyOf:
                        - type: string
                        - type: 'null'
                    markdown:
                      anyOf:
                        - type: string
                        - type: 'null'
                    html:
                      anyOf:
                        - type: string
                        - type: 'null'
                    raw_html:
                      anyOf:
                        - type: string
                        - type: 'null'
                    text_character_limit:
                      anyOf:
                        - type: integer
                        - type: 'null'
                      description: >-
                        Límite de caracteres que Glasser solicitó al proveedor
                        de datos para el texto (10000 para Exa), por lo que el
                        texto de exactamente esta longitud puede estar truncado.
                        Null cuando no se aplicó ningún límite.
                    cached:
                      anyOf:
                        - type: boolean
                        - type: 'null'
                      description: >-
                        Indica si el proveedor de datos sirvió la página desde
                        su caché (cacheState de Firecrawl, source de status de
                        Exa). Null cuando el proveedor de datos no lo indica.
                    fetched_at:
                      anyOf:
                        - type: string
                        - type: 'null'
                      description: >-
                        Momento en que el proveedor de datos obtuvo la página,
                        UTC ISO 8601 (fetch_time de DataForSEO). Null cuando el
                        proveedor de datos no lo informa.
                    quality:
                      type: string
                      enum:
                        - unverified
                      description: >-
                        Obsoleto: siempre 'unverified'; no se comprueba el
                        contenido. Se conserva por compatibilidad y se eliminará
                        en la próxima revisión incompatible.
                  required:
                    - url
                    - final_url
                    - title
                    - text
                    - markdown
                    - html
                    - raw_html
                    - text_character_limit
                    - cached
                    - fetched_at
                    - quality
                  additionalProperties: false
                - type: object
                  properties:
                    results:
                      type: array
                      items:
                        type: object
                        properties:
                          url:
                            type: string
                          title:
                            anyOf:
                              - type: string
                              - type: 'null'
                          snippet:
                            anyOf:
                              - type: string
                              - type: 'null'
                            description: >-
                              Extracto breve de Google (Serper / SerpApi) o
                              fragmento destacado extraído por Exa para Exa. No
                              es el texto completo de la página.
                          position:
                            type: integer
                          date:
                            anyOf:
                              - type: string
                              - type: 'null'
                            description: >-
                              Obsoleto: usa published_at o date_text. Contiene
                              el texto mostrado por Google para Serper / SerpApi
                              y el publishedDate sin procesar de Exa para Exa.
                          published_at:
                            anyOf:
                              - type: string
                              - type: 'null'
                            description: >-
                              Marca de tiempo UTC ISO 8601, cumplimentada solo
                              cuando el proveedor de datos informa de una marca
                              de tiempo de máquina (publishedDate de Exa,
                              iso_date de noticias de SerpApi); de lo contrario,
                              null.
                          date_text:
                            anyOf:
                              - type: string
                              - type: 'null'
                            description: >-
                              Texto mostrado por Google exactamente como lo
                              devolvió el proveedor de datos (fecha de Serper /
                              SerpApi). Puede ser relativo a completed_at del
                              Run, como '3 hours ago', y nunca se analiza.
                        required:
                          - url
                          - title
                          - snippet
                          - position
                          - date
                          - published_at
                          - date_text
                        additionalProperties: false
                  required:
                    - results
                  additionalProperties: false
                - type: object
                  properties:
                    items:
                      type: array
                      items:
                        type: object
                        properties:
                          title:
                            anyOf:
                              - type: string
                              - type: 'null'
                          url:
                            anyOf:
                              - type: string
                              - type: 'null'
                          source:
                            anyOf:
                              - type: string
                              - type: 'null'
                            description: >-
                              Nombre del editor o del sitio tal como lo muestra
                              el proveedor de datos.
                          published_at:
                            anyOf:
                              - type: string
                              - type: 'null'
                            description: >-
                              Marca de tiempo UTC ISO 8601, cumplimentada solo
                              cuando el proveedor de datos informa de una marca
                              de tiempo de máquina (publishedDate de Exa,
                              iso_date de noticias de SerpApi); de lo contrario,
                              null.
                          date_text:
                            anyOf:
                              - type: string
                              - type: 'null'
                            description: >-
                              Texto mostrado por Google exactamente como lo
                              devolvió el proveedor de datos (fecha de Serper /
                              SerpApi). Puede ser relativo a completed_at del
                              Run, como '3 hours ago', y nunca se analiza.
                          snippet:
                            anyOf:
                              - type: string
                              - type: 'null'
                        required:
                          - title
                          - url
                          - source
                          - published_at
                          - date_text
                          - snippet
                        additionalProperties: false
                  required:
                    - items
                  additionalProperties: false
                - type: object
                  properties:
                    items:
                      type: array
                      items:
                        type: object
                        properties:
                          name:
                            anyOf:
                              - type: string
                              - type: 'null'
                          address:
                            anyOf:
                              - type: string
                              - type: 'null'
                            description: >-
                              Texto de dirección del proveedor de datos, sin
                              analizar ni completar. Serper puede devolver solo
                              la línea de la calle.
                          category:
                            anyOf:
                              - type: string
                              - type: 'null'
                          rating:
                            anyOf:
                              - anyOf:
                                  - type: number
                                  - type: string
                                    enum:
                                      - Infinity
                                      - '-Infinity'
                                      - NaN
                              - type: 'null'
                            description: >-
                              Valoración media de Google mediante estrellas, de
                              1 a 5.
                          reviews:
                            anyOf:
                              - type: integer
                              - type: 'null'
                            description: >-
                              Número de reseñas de Google en las que se basa la
                              valoración.
                          phone:
                            anyOf:
                              - type: string
                              - type: 'null'
                          website:
                            anyOf:
                              - type: string
                              - type: 'null'
                          latitude:
                            anyOf:
                              - anyOf:
                                  - type: number
                                  - type: string
                                    enum:
                                      - Infinity
                                      - '-Infinity'
                                      - NaN
                              - type: 'null'
                          longitude:
                            anyOf:
                              - anyOf:
                                  - type: number
                                  - type: string
                                    enum:
                                      - Infinity
                                      - '-Infinity'
                                      - NaN
                              - type: 'null'
                          google_cid:
                            anyOf:
                              - type: string
                              - type: 'null'
                            description: >-
                              CID de Google Maps del lugar (cid de Serper,
                              data_cid de SerpApi).
                        required:
                          - name
                          - address
                          - category
                          - rating
                          - reviews
                          - phone
                          - website
                          - latitude
                          - longitude
                          - google_cid
                        additionalProperties: false
                  required:
                    - items
                  additionalProperties: false
                - type: object
                  properties:
                    items:
                      type: array
                      items:
                        type: object
                        properties:
                          title:
                            anyOf:
                              - type: string
                              - type: 'null'
                          url:
                            anyOf:
                              - type: string
                              - type: 'null'
                          snippet:
                            anyOf:
                              - type: string
                              - type: 'null'
                          publication:
                            anyOf:
                              - type: string
                              - type: 'null'
                          year:
                            anyOf:
                              - type: integer
                              - type: 'null'
                          cited_by:
                            anyOf:
                              - type: integer
                              - type: 'null'
                          pdf_url:
                            anyOf:
                              - type: string
                              - type: 'null'
                        required:
                          - title
                          - url
                          - snippet
                          - publication
                          - year
                          - cited_by
                          - pdf_url
                        additionalProperties: false
                  required:
                    - items
                  additionalProperties: false
                - type: object
                  properties:
                    items:
                      type: array
                      items:
                        type: object
                        properties:
                          title:
                            anyOf:
                              - type: string
                              - type: 'null'
                          url:
                            anyOf:
                              - type: string
                              - type: 'null'
                            description: Página del producto en Google Shopping.
                          merchant_url:
                            anyOf:
                              - type: string
                              - type: 'null'
                            description: >-
                              URL de la oferta del comerciante cuando la informa
                              el proveedor de datos (link de SerpApi); null para
                              Serper.
                          google_product_id:
                            anyOf:
                              - type: string
                              - type: 'null'
                            description: >-
                              ID del producto del catálogo de Google Shopping
                              (productId de Serper, product_id de SerpApi).
                          price_text:
                            anyOf:
                              - type: string
                              - type: 'null'
                            description: >-
                              Precio mostrado por el proveedor de datos, como
                              '$69.00'. No se analiza; la moneda depende del
                              país.
                          seller:
                            anyOf:
                              - type: string
                              - type: 'null'
                          rating:
                            anyOf:
                              - anyOf:
                                  - type: number
                                  - type: string
                                    enum:
                                      - Infinity
                                      - '-Infinity'
                                      - NaN
                              - type: 'null'
                            description: >-
                              Valoración media de Google mediante estrellas, de
                              1 a 5.
                          reviews:
                            anyOf:
                              - type: integer
                              - type: 'null'
                            description: >-
                              Número de reseñas de Google en las que se basa la
                              valoración.
                          image_url:
                            anyOf:
                              - type: string
                              - type: 'null'
                        required:
                          - title
                          - url
                          - merchant_url
                          - google_product_id
                          - price_text
                          - seller
                          - rating
                          - reviews
                          - image_url
                        additionalProperties: false
                  required:
                    - items
                  additionalProperties: false
                - type: object
                  properties:
                    items:
                      type: array
                      items:
                        type: object
                        properties:
                          title:
                            anyOf:
                              - type: string
                              - type: 'null'
                          image_url:
                            anyOf:
                              - type: string
                              - type: 'null'
                          thumbnail_url:
                            anyOf:
                              - type: string
                              - type: 'null'
                          source_url:
                            anyOf:
                              - type: string
                              - type: 'null'
                          source:
                            anyOf:
                              - type: string
                              - type: 'null'
                            description: >-
                              Nombre del editor o del sitio tal como lo muestra
                              el proveedor de datos.
                          width:
                            anyOf:
                              - type: integer
                              - type: 'null'
                          height:
                            anyOf:
                              - type: integer
                              - type: 'null'
                        required:
                          - title
                          - image_url
                          - thumbnail_url
                          - source_url
                          - source
                          - width
                          - height
                        additionalProperties: false
                  required:
                    - items
                  additionalProperties: false
                - type: object
                  properties:
                    items:
                      type: array
                      items:
                        type: object
                        properties:
                          title:
                            anyOf:
                              - type: string
                              - type: 'null'
                          url:
                            anyOf:
                              - type: string
                              - type: 'null'
                          channel:
                            anyOf:
                              - type: string
                              - type: 'null'
                          source:
                            anyOf:
                              - type: string
                              - type: 'null'
                            description: >-
                              Plataforma de vídeo tal como la muestra el
                              proveedor de datos, como YouTube.
                          date_text:
                            anyOf:
                              - type: string
                              - type: 'null'
                            description: >-
                              Texto mostrado por Google exactamente como lo
                              devolvió el proveedor de datos (fecha de Serper /
                              SerpApi). Puede ser relativo a completed_at del
                              Run, como '3 hours ago', y nunca se analiza.
                          duration_text:
                            anyOf:
                              - type: string
                              - type: 'null'
                            description: >-
                              Duración mostrada tal como se devolvió, como
                              '4:39'.
                          snippet:
                            anyOf:
                              - type: string
                              - type: 'null'
                          thumbnail_url:
                            anyOf:
                              - type: string
                              - type: 'null'
                        required:
                          - title
                          - url
                          - channel
                          - source
                          - date_text
                          - duration_text
                          - snippet
                          - thumbnail_url
                        additionalProperties: false
                  required:
                    - items
                  additionalProperties: false
                - type: object
                  properties:
                    items:
                      type: array
                      items:
                        type: object
                        properties:
                          url:
                            anyOf:
                              - type: string
                              - type: 'null'
                          title:
                            anyOf:
                              - type: string
                              - type: 'null'
                          exa_similarity_score:
                            anyOf:
                              - anyOf:
                                  - type: number
                                  - type: string
                                    enum:
                                      - Infinity
                                      - '-Infinity'
                                      - NaN
                              - type: 'null'
                            description: >-
                              Puntuación de similitud propia de Exa para esta
                              página. Compárala solo dentro de una misma
                              respuesta; no es comparable con las puntuaciones
                              de otros proveedores de datos.
                          published_at:
                            anyOf:
                              - type: string
                              - type: 'null'
                            description: >-
                              Marca de tiempo UTC en formato ISO 8601, rellenada
                              solo cuando el proveedor de datos informa de una
                              marca de tiempo generada por máquina (Exa
                              publishedDate, SerpApi news iso_date); de lo
                              contrario, null.
                          author:
                            anyOf:
                              - type: string
                              - type: 'null'
                        required:
                          - url
                          - title
                          - exa_similarity_score
                          - published_at
                          - author
                        additionalProperties: false
                  required:
                    - items
                  additionalProperties: false
                - type: object
                  properties:
                    answer:
                      anyOf:
                        - type: string
                        - type: 'null'
                    citations:
                      type: array
                      items:
                        type: object
                        properties:
                          url:
                            anyOf:
                              - type: string
                              - type: 'null'
                          title:
                            anyOf:
                              - type: string
                              - type: 'null'
                          published_at:
                            anyOf:
                              - type: string
                              - type: 'null'
                            description: >-
                              Marca de tiempo UTC en formato ISO 8601, rellenada
                              solo cuando el proveedor de datos informa de una
                              marca de tiempo generada por máquina (Exa
                              publishedDate, SerpApi news iso_date); de lo
                              contrario, null.
                        required:
                          - url
                          - title
                          - published_at
                        additionalProperties: false
                  required:
                    - answer
                    - citations
                  additionalProperties: false
            - type: 'null'
          description: >-
            Campos normalizados por acción. El resultado nativo del proveedor de
            datos no se repite aquí; permanece en el Run (GET /v1/runs/:id). Los
            valores que el proveedor de datos no informa son null.


            - search: results[]: url, title, snippet (extracto de Google;
            fragmento extraído de Exa para Exa), position, published_at,
            date_text, date (obsoleto)

            - news: items[]: title, url, source, published_at, date_text,
            snippet

            - places: items[]: name, address (texto del proveedor de datos;
            puede ser solo la línea de la calle), category, rating (1–5),
            reviews, phone, website, latitude, longitude, google_cid

            - scholar: items[]: title, url, snippet, publication, year,
            cited_by, pdf_url

            - shopping: items[]: title, url (página de Google Shopping),
            merchant_url, google_product_id, price_text, seller, rating (1–5),
            reviews, image_url

            - images: items[]: title, image_url, thumbnail_url, source_url,
            source, width, height

            - videos: items[]: title, url, channel, source, date_text,
            duration_text, snippet, thumbnail_url

            - answer: answer, citations[]: url, title, published_at

            - scrape: url, final_url, title, text, markdown, html, raw_html,
            text_character_limit, cached, fetched_at, quality (obsoleto)

            - similar: items[]: url, title, exa_similarity_score, published_at,
            author


            published_at está en formato ISO 8601 UTC y solo se establece a
            partir de la marca de tiempo generada por máquina del proveedor de
            datos. date_text es el texto mostrado por Google tal como se
            devuelve; puede ser relativo a completed_at del Run y nunca se
            analiza. rating es el promedio de estrellas de Google de 1–5;
            reviews es un recuento. source es el nombre del editor o sitio.
            exa_similarity_score es la puntuación propia de Exa y solo se puede
            comparar dentro de una misma respuesta.
        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: >-
            No es null únicamente cuando el estado es COMPLETED.


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

            - Para respuestas que no sean 2xx, error contiene el cuerpo de error
            del proveedor de datos y output es null.


            Los campos confidenciales 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ínimo 2 y máximo 6 decimales, 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 de esta respuesta de Solution. Es null hasta
            que se establezcan todos los Runs enumerados. 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 solo Run, o null para un total de varios Runs.
            Lee runs[].charge_basis para cada cargo.
        stoppable:
          type: boolean
          description: >-
            Indica si actualmente se puede aceptar una solicitud de detención.
            No garantiza que el Run pueda detenerse antes del dispatch.
        stop_requested_at:
          anyOf:
            - type: string
              description: Marca de tiempo UTC en formato 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 en formato ISO-8601
          format: date-time
        started_at:
          anyOf:
            - type: string
              description: Marca de tiempo UTC en formato ISO-8601
              format: date-time
            - type: 'null'
        completed_at:
          anyOf:
            - type: string
              description: Marca de tiempo UTC en formato 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 y tener 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
          enum:
            - search
            - news
            - places
            - scholar
            - shopping
            - images
            - videos
            - answer
            - scrape
            - similar
        result_status:
          type: string
          enum:
            - success
            - partial
            - no_result
            - error
            - pending
          description: >-
            Estado de entrega empresarial, independiente del ciclo de vida final
            del Run en status. success no es un veredicto semántico sobre la
            calidad del contenido.
        missing_formats:
          type: array
          items:
            type: string
            enum:
              - text
              - markdown
              - html
              - raw_html
        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 a un
                  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 sean 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, 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 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. No garantiza que el Run pueda detenerse antes del
                  dispatch.
              stop_requested_at:
                anyOf:
                  - type: string
                    description: Marca de tiempo UTC en formato 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 en formato ISO-8601
                format: date-time
              started_at:
                anyOf:
                  - type: string
                    description: Marca de tiempo UTC en formato ISO-8601
                    format: date-time
                  - type: 'null'
              completed_at:
                anyOf:
                  - type: string
                    description: Marca de tiempo UTC en formato 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 y tener 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 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 individual nativo.
      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
        - missing_formats
        - 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
    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
    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
    NotFoundEncoded:
      type: object
      properties:
        error:
          type: object
          properties:
            code:
              type: string
              enum:
                - not_found
            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
  securitySchemes:
    bearer:
      type: http
      scheme: Bearer

````

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