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

# Información sobre empresas

> Consulta el perfil, las tecnologías, el tráfico web, empresas similares, financiación y noticias de una empresa a partir de su dominio, con un formato de salida unificado entre proveedores de datos.

Cada acción devuelve `output` normalizado. La salida nativa del proveedor no se repite allí; permanece en el Run y puede leerse con [Obtener Run](https://glasser.ai/docs/es/api-reference/runs/get.md). `enrich` y `traffic` exponen campos de nivel superior fijos; `tech_stack`, `competitors` y `news` exponen `output.items[]`; `funding` expone `total_funding_usd` además de `items[]`. Un valor que el proveedor seleccionado no informa es `null`; Glasser no lo completa. El dinero siempre se expresa en USD.

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 de la acción: todos los campos son `null`, o `items` es `[]`. `charge_usd` totaliza el `runs` de esta respuesta y es null hasta que todos los Runs se completen. Con `provider: auto`, el fallback puede crear varios Runs, cada uno incluido en `runs[]` con su propio cargo. Para una consulta de Similarweb pendiente (`traffic` mediante Apify, HTTP 202), sigue el [result\_url](https://glasser.ai/docs/es/api-reference/solutions/gtm/company_intelligence/result.md) autenticado. Consulta [Selección de proveedores y cargos](https://glasser.ai/docs/es/api-reference/solutions/overview.md#how-provider-selection-works).

## Salida por acción

Todos los campos están presentes en cada fila; un valor que el proveedor no informa es `null`. Los campos siguen las [convenciones de campos](https://glasser.ai/docs/es/api-reference/solutions/overview.md#field-conventions).

| `action` | `output` |
| - | - |
| `enrich` | `name`, `website`, `description`, `industry`, `employees`, `employee_range_min`, `employee_range_max`, `founded_year`, `city`, `region`, `country`, `country_code`, `linkedin_url`, `phone`, `total_funding_usd`, `revenue_usd`, `revenue_range_min_usd`, `revenue_range_max_usd`, `ownership`, `ticker`, `latest_funding_date` |
| `tech_stack` | `items[]`: `name`, `categories`\[], `detection_source`, `predictleads_confidence`, `first_detected_date`, `last_detected_date` |
| `traffic` | `monthly_visits`, `organic_traffic`, `paid_traffic`, `organic_keywords`, `paid_keywords`, `organic_traffic_value_usd`, `similarweb_global_rank`, `bounce_rate`, `pages_per_visit`, `avg_visit_duration_seconds` |
| `competitors` | `items[]`: `domain`, `name`, `page_title`, `position`, `predictleads_similarity_score`, `exa_similarity_score`, `reason` |
| `funding` | `total_funding_usd`, `items[]`: `round_date`, `round`, `amount_usd`, `investors`\[], `source_url` |
| `news` | `items[]`: `title`, `url`, `source`, `published_at`, `event_date`, `date_text`, `category`, `snippet` |

* `employees` y los campos de ingresos son estimaciones propias del proveedor. `revenue_usd` es una cifra única; cuando un proveedor solo proporciona un intervalo, es `null` y los límites del intervalo se encuentran en `revenue_range_min_usd` / `revenue_range_max_usd`. `employee_range_min` / `employee_range_max` funcionan de la misma manera. Un intervalo abierto como `10000+` tiene un máximo `null`.
* `country` es un nombre de visualización en inglés y `country_code` es un código ISO 3166-1 alfa-2. `ownership` es uno de `public`, `private`, `nonprofit`, `government`, `education`, `other` o `null`; private nunca se infiere.
* Las puntuaciones del modelo propio de un proveedor llevan su nombre y son `null` para los demás: `predictleads_similarity_score` (0–1), `exa_similarity_score` (similitud neuronal de Exa), `predictleads_confidence` (0–1), `similarweb_global_rank` (1 = más visitado). `position` es el orden basado en 1 de la respuesta del proveedor.
* competitors mediante Exa devuelve páginas web, no registros de empresas: `name` es `null` y el título de la página se encuentra en `page_title`. Se excluyen las filas del propio dominio de la empresa y de sus subdominios.
* `monthly_visits` es mundial (Similarweb). `organic_traffic`, `paid_traffic` y los recuentos de palabras clave corresponden a la solicitud `country` (valor predeterminado `us`). `bounce_rate` es una fracción de 0–1.
* Fechas: `*_date` y `event_date` son `YYYY-MM-DD`, `published_at` es ISO 8601 UTC y `date_text` es el texto de visualización de Google News exactamente como se devolvió. Las fechas de financiación de LeadMagic tienen precisión mensual (día `01`).
* `industry`, `categories`, `round` y `category` son etiquetas del vocabulario propio del proveedor que responde y no son comparables entre proveedores.

```json
{
  "action": "enrich",
  "provider": "apollo",
  "status": "COMPLETED",
  "result_status": "success",
  "output": {
    "name": "Stripe", "website": "http://www.stripe.com", "industry": "information technology & services",
    "employees": 9400, "employee_range_min": null, "employee_range_max": null, "founded_year": 2010,
    "city": "South San Francisco", "region": "California", "country": "United States", "country_code": "US",
    "linkedin_url": "http://www.linkedin.com/company/stripe", "phone": "+1 415-298-5539",
    "total_funding_usd": 9443867423, "revenue_usd": 6935000000, "revenue_range_min_usd": null, "revenue_range_max_usd": null,
    "ownership": null, "ticker": null, "latest_funding_date": "2026-03-01",
    "description": "Stripe, Inc. is a global financial technology company…"
  },
  "charge_usd": "0.026",
  "runs": [{ "provider": "apollo", "status": "COMPLETED", "charge_usd": "0.026" }],
  "result_url": "/v1/solutions/gtm/company_intelligence/result?token=…"
}
```


## OpenAPI

````yaml /openapi.es.json post /v1/solutions/gtm/company_intelligence
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/company_intelligence:
    post:
      tags:
        - Solutions
      summary: Inteligencia empresarial
      description: >-
        Busca empresas objetivo por sector, número de empleados, sede central o
        tipo; busca candidatos por nombre de empresa; o investiga un dominio
        para obtener su perfil, stack tecnológico, tráfico, empresas similares,
        financiación, noticias, ofertas de empleo abiertas y anuncios de Google.
        search necesita un prompt o filtros estructurados, lookup necesita query
        (nombre) y las demás acciones necesitan domain.


        Cada acción devuelve un resultado normalizado con el id, el proveedor de
        datos y el estado del ciclo de vida del último Run: search y lookup
        proporcionan total_matches y output.items[] de empresas (si el total de
        coincidencias no está disponible, es null, nunca la longitud de la
        página); enrich y traffic proporcionan campos fijos de nivel superior;
        tech_stack / competitors / news / jobs proporcionan output.items[] con
        campos fijos por fila; funding proporciona total_funding_usd más
        items[]; y ads proporciona total_ads más items[]. El resultado nativo
        del proveedor de datos no se repite en output; permanece en el Run y
        puede leerse con GET /v1/runs/:id. Un valor que el proveedor de datos
        seleccionado no comunique es null; el dinero siempre está en USD.


        Lee result_status por separado de status: success, no_result, error o
        pending. charge_usd es el total de los Runs de esta respuesta y es null
        hasta que todos los Runs enumerados hayan terminado; runs[] contiene el
        cargo de cada Run. provider=auto selecciona el primer proveedor de datos
        elegible y prueba el siguiente solo ante PROVIDER_ERROR, TIMED_OUT o un
        503 durante la admisión; un proveedor de datos nombrado nunca hace
        fallback. Para QUEUED/RUNNING (HTTP 202, actualmente solo traffic
        mediante Apify), consulta periódicamente result_url autenticado en el
        origen de la API. Reutiliza el mismo Idempotency-Key y los parámetros de
        ejecución para un reintento intencional.
      operationId: gtm-company-intelligence
      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 parámetros de
              ejecución para recuperar el Run original sin un segundo cargo.
              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:
                action:
                  anyOf:
                    - type: string
                      enum:
                        - search
                        - lookup
                        - enrich
                        - tech_stack
                        - traffic
                        - competitors
                        - funding
                        - news
                        - jobs
                        - ads
                      description: >-
                        Predeterminado: enrich. search requiere query o un
                        filtro estructurado; lookup requiere query (nombre de la
                        empresa). Todas las demás acciones requieren domain.


                        - search: descubrimiento de empresas por sector, rango
                        de empleados, país o tipo de empresa; offset permite
                        paginar. Los filtros estructurados usan la terminología
                        de Hunter; usa query solo para criterios representables
                        mediante estos filtros. Las demás condiciones del ICP
                        deben comprobarse por separado.

                        - lookup: candidatos por nombre de empresa con
                        paginación por página; no elijas entre nombres ambiguos.


                        - enrich: perfil de la empresa y datos firmográficos.

                        - tech_stack, traffic, funding, news: los datos de
                        empresa correspondientes.

                        - jobs: ofertas de empleo abiertas encontradas en las
                        páginas de empleo de la propia empresa; limit limita las
                        filas (predeterminado y máximo: 25), por lo que el
                        número de filas no es el total de la empresa.

                        - ads: creatividades del Google Ads Transparency Center
                        del anunciante detrás del dominio; country las limita a
                        una región; sin este campo se incluyen todas las
                        regiones.

                        - competitors: empresas similares. Para dominios
                        competidores en los resultados de Google, usa la
                        investigación SEO con organic_competitors.
                    - type: 'null'
                provider:
                  anyOf:
                    - type: string
                      enum:
                        - auto
                        - apollo
                        - pdl
                        - hunter
                        - prospeo
                        - predictleads
                        - leadmagic
                        - builtwith
                        - dataforseo
                        - ahrefs
                        - apify
                        - exa
                        - serper
                        - scrapecreators
                      description: >-
                        Predeterminado auto: selecciona el primer proveedor de
                        datos elegible según el orden de preferencia de Glasser.
                        Un proveedor de datos nombrado debe admitir la solicitud
                        y estar permitido por tu Key; no hace fallback a otro
                        proveedor de datos. Los valores disponibles se indican a
                        continuación.
                    - type: 'null'
                domain:
                  anyOf:
                    - type: string
                      minLength: 3
                      maxLength: 253
                      description: >-
                        Un dominio web como stripe.com. Se acepta una URL
                        completa y se reduce a su host.
                    - type: 'null'
                industries:
                  anyOf:
                    - type: array
                      items:
                        type: string
                        minLength: 1
                      minItems: 1
                      maxItems: 20
                    - type: 'null'
                headcounts:
                  anyOf:
                    - type: array
                      items:
                        type: string
                        enum:
                          - 1-10
                          - 11-50
                          - 51-200
                          - 201-500
                          - 501-1000
                          - 1001-5000
                          - 5001-10000
                          - 10001+
                      minItems: 1
                      maxItems: 8
                    - type: 'null'
                company_types:
                  anyOf:
                    - type: array
                      items:
                        type: string
                        enum:
                          - educational
                          - educational institution
                          - government agency
                          - non profit
                          - partnership
                          - privately held
                          - public company
                          - self employed
                          - self owned
                          - sole proprietorship
                      minItems: 1
                      maxItems: 10
                    - type: 'null'
                offset:
                  anyOf:
                    - type: integer
                      minimum: 0
                      maximum: 10000
                    - type: 'null'
                page:
                  anyOf:
                    - type: integer
                      minimum: 1
                      maximum: 500
                    - type: 'null'
                country:
                  anyOf:
                    - type: string
                      minLength: 2
                      maxLength: 60
                      description: >-
                        País como código ISO de dos letras o nombre del país,
                        por ejemplo, us, gb, de, Germany. Predeterminado: us.
                        Códigos de país compatibles: us, gb, ca, au, nz, ie, in,
                        sg, de, at, ch, fr, be, es, mx, ar, it, nl, pt, br, jp,
                        kr, cn, hk, tw, ru, pl, se, no, dk, fi, tr, id, th, vn,
                        ph, my, za, ae, il, sa, eg, ng, ua, cz, gr, hu, ro, co,
                        cl, pe, lu. La disponibilidad también depende de la
                        acción y del proveedor de datos. Un país no compatible
                        se rechaza antes de crear un Run. No cambies el país
                        para evitar un error; eso cambia los datos solicitados.
                    - type: 'null'
                query:
                  anyOf:
                    - type: string
                      minLength: 1
                      maxLength: 200
                      description: >-
                        search: prompt para descubrir empresas. lookup: nombre
                        de una empresa. news mediante Serper: nombre de la
                        empresa en lugar del dominio.
                    - type: 'null'
                limit:
                  anyOf:
                    - type: integer
                      minimum: 1
                      maximum: 100
                      description: >-
                        Filas que se devolverán. Mantén un número reducido: la
                        regla de cargo del endpoint enrutado puede leerlo. Cada
                        capacidad aplica además su propio límite.
                    - type: 'null'
                task_id:
                  anyOf:
                    - type: string
                      description: >-
                        Agrupa los Runs relacionados, incluido el fallback
                        automático, bajo un único 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, 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 su End user, 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 almacenados.
                    - type: 'null'
              additionalProperties: false
        required: true
      responses:
        '200':
          description: Éxito
          content:
            application/json:
              schema:
                anyOf:
                  - $ref: '#/components/schemas/CompanyIntelligenceResult'
        '202':
          description: Éxito
          content:
            application/json:
              schema:
                anyOf:
                  - $ref: '#/components/schemas/CompanyIntelligenceResult'
        '400':
          description: Validación fallida | Se requiere IdempotencyKey
          content:
            application/json:
              schema:
                anyOf:
                  - $ref: '#/components/schemas/ValidationFailedEncoded'
                  - $ref: '#/components/schemas/IdempotencyKeyRequiredEncoded'
                  - $ref: '#/components/schemas/ValidationFailedEncoded'
        '401':
          description: No autorizado
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedEncoded'
        '402':
          description: Saldo insuficiente
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InsufficientBalanceEncoded'
        '403':
          description: Endpoint no permitido | Prohibido
          content:
            application/json:
              schema:
                anyOf:
                  - $ref: '#/components/schemas/EndpointNotPermittedEncoded'
                  - $ref: '#/components/schemas/ForbiddenEncoded'
        '409':
          description: Conflicto de idempotencia
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IdempotencyConflictEncoded'
        '429':
          description: Límite de velocidad alcanzado
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RateLimitedEncoded'
        '503':
          description: Servicio no disponible
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServiceUnavailableEncoded'
      security:
        - bearer: []
components:
  schemas:
    CompanyIntelligenceResult:
      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
        output:
          anyOf:
            - anyOf:
                - type: object
                  properties:
                    total_matches:
                      anyOf:
                        - anyOf:
                            - type: number
                            - type: string
                              enum:
                                - Infinity
                                - '-Infinity'
                                - NaN
                        - type: 'null'
                      description: >-
                        Recuento de coincidencias en todo el conjunto de datos
                        cuando el proveedor de datos lo informa; nunca es la
                        longitud de la página actual.
                    items:
                      type: array
                      items:
                        type: object
                        properties:
                          name:
                            anyOf:
                              - type: string
                              - type: 'null'
                            description: >-
                              Nombre de la empresa tal como lo informa el
                              proveedor de datos.
                          website:
                            anyOf:
                              - type: string
                              - type: 'null'
                            description: Sitio web de la empresa como URL http(s).
                          description:
                            anyOf:
                              - type: string
                              - type: 'null'
                            description: >-
                              Descripción breve de la empresa proporcionada por
                              el proveedor de datos.
                          industry:
                            anyOf:
                              - type: string
                              - type: 'null'
                            description: >-
                              Etiqueta del sector según el vocabulario propio
                              del proveedor de datos que responde (LinkedIn,
                              estilo GICS, ...). No es comparable entre
                              proveedores de datos; consulta `provider`.
                          employees:
                            anyOf:
                              - type: integer
                              - type: 'null'
                            description: >-
                              Número de empleados. Estimación propia del
                              proveedor de datos, no un recuento auditado.
                          employee_range_min:
                            anyOf:
                              - type: integer
                              - type: 'null'
                            description: >-
                              Límite inferior del intervalo de tamaño de
                              empleados del proveedor de datos (por ejemplo,
                              10000 para 10K-50K).
                          employee_range_max:
                            anyOf:
                              - type: integer
                              - type: 'null'
                            description: >-
                              Límite superior del intervalo de tamaño de
                              empleados del proveedor de datos; null para un
                              intervalo abierto como 10000+.
                          founded_year:
                            anyOf:
                              - type: integer
                              - type: 'null'
                            description: Año de fundación de la empresa.
                          city:
                            anyOf:
                              - type: string
                              - type: 'null'
                            description: Ciudad de la sede central.
                          region:
                            anyOf:
                              - type: string
                              - type: 'null'
                            description: Estado o región de la sede central.
                          country:
                            anyOf:
                              - type: string
                              - type: 'null'
                            description: >-
                              País de la sede central como nombre mostrado en
                              inglés (nunca un código).
                          country_code:
                            anyOf:
                              - type: string
                              - type: 'null'
                            description: >-
                              País de la sede central como código ISO 3166-1
                              alfa-2.
                          linkedin_url:
                            anyOf:
                              - type: string
                              - type: 'null'
                            description: URL de la página de la empresa en LinkedIn.
                          phone:
                            anyOf:
                              - type: string
                              - type: 'null'
                            description: >-
                              Número de teléfono de la sede central tal como lo
                              informa el proveedor de datos.
                          total_funding_usd:
                            anyOf:
                              - anyOf:
                                  - type: number
                                  - type: string
                                    enum:
                                      - Infinity
                                      - '-Infinity'
                                      - NaN
                              - type: 'null'
                            description: >-
                              Financiación total recaudada, en USD, tal como la
                              informa el proveedor de datos.
                          revenue_usd:
                            anyOf:
                              - anyOf:
                                  - type: number
                                  - type: string
                                    enum:
                                      - Infinity
                                      - '-Infinity'
                                      - NaN
                              - type: 'null'
                            description: >-
                              Ingresos anuales como una única cifra, en USD:
                              estimación o valor informado por el proveedor de
                              datos. Es null cuando el proveedor de datos solo
                              proporciona un intervalo (consulta
                              revenue_range_min_usd / revenue_range_max_usd).
                          revenue_range_min_usd:
                            anyOf:
                              - anyOf:
                                  - type: number
                                  - type: string
                                    enum:
                                      - Infinity
                                      - '-Infinity'
                                      - NaN
                              - type: 'null'
                            description: >-
                              Límite inferior del intervalo de ingresos anuales
                              del proveedor de datos, en USD.
                          revenue_range_max_usd:
                            anyOf:
                              - anyOf:
                                  - type: number
                                  - type: string
                                    enum:
                                      - Infinity
                                      - '-Infinity'
                                      - NaN
                              - type: 'null'
                            description: >-
                              Límite superior del intervalo de ingresos anuales
                              del proveedor de datos, en USD; null para un
                              intervalo abierto como $10B+.
                          ownership:
                            anyOf:
                              - type: string
                                enum:
                                  - public
                                  - private
                                  - nonprofit
                                  - government
                                  - education
                                  - other
                              - type: 'null'
                            description: >-
                              Tipo de propiedad asignado a partir de la etiqueta
                              del proveedor de datos. Es null cuando el
                              proveedor de datos no lo indica; private nunca se
                              infiere.
                          ticker:
                            anyOf:
                              - type: string
                              - type: 'null'
                            description: >-
                              Símbolo bursátil o identificador público, para
                              empresas cotizadas.
                          latest_funding_date:
                            anyOf:
                              - type: string
                              - type: 'null'
                            description: >-
                              Fecha de la ronda de financiación más reciente,
                              YYYY-MM-DD.
                          domain:
                            anyOf:
                              - type: string
                              - type: 'null'
                        required:
                          - name
                          - website
                          - description
                          - industry
                          - employees
                          - employee_range_min
                          - employee_range_max
                          - founded_year
                          - city
                          - region
                          - country
                          - country_code
                          - linkedin_url
                          - phone
                          - total_funding_usd
                          - revenue_usd
                          - revenue_range_min_usd
                          - revenue_range_max_usd
                          - ownership
                          - ticker
                          - latest_funding_date
                          - domain
                        additionalProperties: false
                  required:
                    - total_matches
                    - items
                  additionalProperties: false
                - type: object
                  properties:
                    name:
                      anyOf:
                        - type: string
                        - type: 'null'
                      description: >-
                        Nombre de la empresa según lo informa el proveedor de
                        datos.
                    website:
                      anyOf:
                        - type: string
                        - type: 'null'
                      description: Sitio web de la empresa como URL http(s).
                    description:
                      anyOf:
                        - type: string
                        - type: 'null'
                      description: >-
                        Descripción breve de la empresa proporcionada por el
                        proveedor de datos.
                    industry:
                      anyOf:
                        - type: string
                        - type: 'null'
                      description: >-
                        Etiqueta del sector en el vocabulario propio del
                        proveedor de datos que responde (LinkedIn, estilo GICS,
                        ...). No es comparable entre proveedores de datos;
                        consulta `provider`.
                    employees:
                      anyOf:
                        - type: integer
                        - type: 'null'
                      description: >-
                        Número de empleados. Estimación propia del proveedor de
                        datos, no una cifra auditada.
                    employee_range_min:
                      anyOf:
                        - type: integer
                        - type: 'null'
                      description: >-
                        Límite inferior del rango de tamaño de empleados del
                        proveedor de datos (por ejemplo, 10000 para 10K-50K).
                    employee_range_max:
                      anyOf:
                        - type: integer
                        - type: 'null'
                      description: >-
                        Límite superior del rango de tamaño de empleados del
                        proveedor de datos; null para un rango abierto como
                        10000+.
                    founded_year:
                      anyOf:
                        - type: integer
                        - type: 'null'
                      description: Año de fundación de la empresa.
                    city:
                      anyOf:
                        - type: string
                        - type: 'null'
                      description: Ciudad de la sede central.
                    region:
                      anyOf:
                        - type: string
                        - type: 'null'
                      description: Estado o región de la sede central.
                    country:
                      anyOf:
                        - type: string
                        - type: 'null'
                      description: >-
                        País de la sede central como nombre para mostrar en
                        inglés (nunca un código).
                    country_code:
                      anyOf:
                        - type: string
                        - type: 'null'
                      description: País de la sede central como código ISO 3166-1 alpha-2.
                    linkedin_url:
                      anyOf:
                        - type: string
                        - type: 'null'
                      description: URL de la página de la empresa en LinkedIn.
                    phone:
                      anyOf:
                        - type: string
                        - type: 'null'
                      description: >-
                        Número de teléfono de la sede central según lo informa
                        el proveedor de datos.
                    total_funding_usd:
                      anyOf:
                        - anyOf:
                            - type: number
                            - type: string
                              enum:
                                - Infinity
                                - '-Infinity'
                                - NaN
                        - type: 'null'
                      description: >-
                        Financiación total recaudada, USD, según lo informa el
                        proveedor de datos.
                    revenue_usd:
                      anyOf:
                        - anyOf:
                            - type: number
                            - type: string
                              enum:
                                - Infinity
                                - '-Infinity'
                                - NaN
                        - type: 'null'
                      description: >-
                        Ingresos anuales como una cifra única, USD: estimación o
                        cifra informada por el proveedor de datos. null cuando
                        el proveedor de datos solo proporciona un rango
                        (consulta revenue_range_min_usd /
                        revenue_range_max_usd).
                    revenue_range_min_usd:
                      anyOf:
                        - anyOf:
                            - type: number
                            - type: string
                              enum:
                                - Infinity
                                - '-Infinity'
                                - NaN
                        - type: 'null'
                      description: >-
                        Límite inferior del rango de ingresos anuales del
                        proveedor de datos, USD.
                    revenue_range_max_usd:
                      anyOf:
                        - anyOf:
                            - type: number
                            - type: string
                              enum:
                                - Infinity
                                - '-Infinity'
                                - NaN
                        - type: 'null'
                      description: >-
                        Límite superior del rango de ingresos anuales del
                        proveedor de datos, USD; null para un rango abierto como
                        $10B+.
                    ownership:
                      anyOf:
                        - type: string
                          enum:
                            - public
                            - private
                            - nonprofit
                            - government
                            - education
                            - other
                        - type: 'null'
                      description: >-
                        Tipo de propiedad asignado a partir de la etiqueta del
                        proveedor de datos. null cuando el proveedor de datos no
                        lo indica; nunca se infiere que sea privada.
                    ticker:
                      anyOf:
                        - type: string
                        - type: 'null'
                      description: >-
                        Símbolo bursátil o símbolo público, para empresas
                        públicas.
                    latest_funding_date:
                      anyOf:
                        - type: string
                        - type: 'null'
                      description: >-
                        Fecha de la ronda de financiación más reciente,
                        YYYY-MM-DD.
                  required:
                    - name
                    - website
                    - description
                    - industry
                    - employees
                    - employee_range_min
                    - employee_range_max
                    - founded_year
                    - city
                    - region
                    - country
                    - country_code
                    - linkedin_url
                    - phone
                    - total_funding_usd
                    - revenue_usd
                    - revenue_range_min_usd
                    - revenue_range_max_usd
                    - ownership
                    - ticker
                    - latest_funding_date
                  additionalProperties: false
                - type: object
                  properties:
                    monthly_visits:
                      anyOf:
                        - type: integer
                        - type: 'null'
                      description: >-
                        Visitas mensuales de todos los canales, en todo el mundo
                        (estimación del panel de Similarweb). No se limita a un
                        país.
                    organic_traffic:
                      anyOf:
                        - anyOf:
                            - type: number
                            - type: string
                              enum:
                                - Infinity
                                - '-Infinity'
                                - NaN
                        - type: 'null'
                      description: >-
                        Visitas mensuales estimadas de búsqueda orgánica en el
                        país de la solicitud (por defecto us); estimación basada
                        en un modelo de búsqueda.
                    paid_traffic:
                      anyOf:
                        - anyOf:
                            - type: number
                            - type: string
                              enum:
                                - Infinity
                                - '-Infinity'
                                - NaN
                        - type: 'null'
                      description: >-
                        Visitas mensuales estimadas de búsqueda de pago en el
                        país de la solicitud (por defecto us).
                    organic_keywords:
                      anyOf:
                        - type: integer
                        - type: 'null'
                      description: >-
                        Palabras clave para las que el dominio aparece en los
                        resultados orgánicos en el país de la solicitud.
                    paid_keywords:
                      anyOf:
                        - type: integer
                        - type: 'null'
                      description: >-
                        Palabras clave por las que el dominio puja en el país de
                        la solicitud.
                    organic_traffic_value_usd:
                      anyOf:
                        - anyOf:
                            - type: number
                            - type: string
                              enum:
                                - Infinity
                                - '-Infinity'
                                - NaN
                        - type: 'null'
                      description: >-
                        Valor mensual estimado del tráfico orgánico, USD
                        (Ahrefs). null para otros proveedores de datos.
                    similarweb_global_rank:
                      anyOf:
                        - type: integer
                        - type: 'null'
                      description: >-
                        Posición global de Similarweb (1 = más visitado). null
                        para otros proveedores de datos.
                    bounce_rate:
                      anyOf:
                        - anyOf:
                            - type: number
                            - type: string
                              enum:
                                - Infinity
                                - '-Infinity'
                                - NaN
                        - type: 'null'
                      description: Tasa de rebote como fracción de 0 a 1 (Similarweb).
                    pages_per_visit:
                      anyOf:
                        - anyOf:
                            - type: number
                            - type: string
                              enum:
                                - Infinity
                                - '-Infinity'
                                - NaN
                        - type: 'null'
                      description: Páginas por visita (Similarweb).
                    avg_visit_duration_seconds:
                      anyOf:
                        - anyOf:
                            - type: number
                            - type: string
                              enum:
                                - Infinity
                                - '-Infinity'
                                - NaN
                        - type: 'null'
                      description: Duración media de la visita en segundos (Similarweb).
                  required:
                    - monthly_visits
                    - organic_traffic
                    - paid_traffic
                    - organic_keywords
                    - paid_keywords
                    - organic_traffic_value_usd
                    - similarweb_global_rank
                    - bounce_rate
                    - pages_per_visit
                    - avg_visit_duration_seconds
                  additionalProperties: false
                - type: object
                  properties:
                    total_funding_usd:
                      anyOf:
                        - anyOf:
                            - type: number
                            - type: string
                              enum:
                                - Infinity
                                - '-Infinity'
                                - NaN
                        - type: 'null'
                      description: >-
                        Financiación total recaudada, USD, según lo informa el
                        proveedor de datos.
                    items:
                      type: array
                      items:
                        type: object
                        properties:
                          round_date:
                            anyOf:
                              - type: string
                              - type: 'null'
                            description: >-
                              Fecha de la ronda, YYYY-MM-DD. Las fechas de
                              LeadMagic tienen precisión de mes (día 01).
                          round:
                            anyOf:
                              - type: string
                              - type: 'null'
                            description: >-
                              Etiqueta de la ronda en el vocabulario del
                              proveedor de datos que responde (seed, Series I,
                              ...).
                          amount_usd:
                            anyOf:
                              - anyOf:
                                  - type: number
                                  - type: string
                                    enum:
                                      - Infinity
                                      - '-Infinity'
                                      - NaN
                              - type: 'null'
                            description: >-
                              Importe recaudado en la ronda, USD. null para
                              otras monedas.
                          investors:
                            type: array
                            items:
                              type: string
                            description: Nombres de los inversores.
                          source_url:
                            anyOf:
                              - type: string
                              - type: 'null'
                            description: Artículo fuente de la ronda (PredictLeads).
                        required:
                          - round_date
                          - round
                          - amount_usd
                          - investors
                          - source_url
                        additionalProperties: false
                  required:
                    - total_funding_usd
                    - items
                  additionalProperties: false
                - type: object
                  properties:
                    total_ads:
                      anyOf:
                        - type: integer
                        - type: 'null'
                      description: >-
                        Número total de anuncios del anunciante, según la
                        estimación del Ads Transparency Center de Google. No es
                        el número de elementos devueltos.
                    items:
                      type: array
                      items:
                        type: object
                        properties:
                          creative_id:
                            anyOf:
                              - type: string
                              - type: 'null'
                            description: >-
                              ID del recurso creativo de Google Ads
                              Transparency.
                          advertiser_id:
                            anyOf:
                              - type: string
                              - type: 'null'
                            description: ID del anunciante de Google Ads Transparency.
                          advertiser_name:
                            anyOf:
                              - type: string
                              - type: 'null'
                            description: Nombre legal del anunciante verificado.
                          format:
                            anyOf:
                              - type: string
                              - type: 'null'
                            description: >-
                              Formato del anuncio en el vocabulario de Google:
                              text, image o video.
                          ad_url:
                            anyOf:
                              - type: string
                              - type: 'null'
                            description: >-
                              Página del recurso creativo en el Ads Transparency
                              Center.
                          image_url:
                            anyOf:
                              - type: string
                              - type: 'null'
                            description: >-
                              Imagen de vista previa renderizada del recurso
                              creativo.
                          first_shown_at:
                            anyOf:
                              - type: string
                              - type: 'null'
                            description: >-
                              Primera vez que se mostró el anuncio, ISO 8601
                              UTC.
                          last_shown_at:
                            anyOf:
                              - type: string
                              - type: 'null'
                            description: Última vez que se mostró el anuncio, ISO 8601 UTC.
                        required:
                          - creative_id
                          - advertiser_id
                          - advertiser_name
                          - format
                          - ad_url
                          - image_url
                          - first_shown_at
                          - last_shown_at
                        additionalProperties: false
                  required:
                    - total_ads
                    - items
                  additionalProperties: false
                - type: object
                  properties:
                    items:
                      type: array
                      items:
                        type: object
                        properties:
                          name:
                            type: string
                            description: Nombre de la tecnología.
                          categories:
                            type: array
                            items:
                              type: string
                            description: >-
                              Etiquetas de categoría en el vocabulario del
                              proveedor de datos que responde (etiqueta de
                              BuiltWith, grupo/categoría de DataForSEO). Vacío
                              cuando el proveedor de datos no proporciona
                              ninguna.
                          detection_source:
                            anyOf:
                              - type: string
                                enum:
                                  - website
                                  - job_postings
                              - type: 'null'
                            description: >-
                              Cómo se detectó la tecnología: mediante el rastreo
                              del sitio web público o inferida a partir de
                              ofertas de empleo (detecciones de PredictLeads
                              detrás del firewall).
                          predictleads_confidence:
                            anyOf:
                              - anyOf:
                                  - type: number
                                  - type: string
                                    enum:
                                      - Infinity
                                      - '-Infinity'
                                      - NaN
                              - type: 'null'
                            description: >-
                              Confianza de detección de PredictLeads, 0-1. null
                              para otros proveedores de datos.
                          first_detected_date:
                            anyOf:
                              - type: string
                              - type: 'null'
                            description: Fecha de la primera detección, YYYY-MM-DD.
                          last_detected_date:
                            anyOf:
                              - type: string
                              - type: 'null'
                            description: Fecha de la detección más reciente, YYYY-MM-DD.
                        required:
                          - name
                          - categories
                          - detection_source
                          - predictleads_confidence
                          - first_detected_date
                          - last_detected_date
                        additionalProperties: false
                  required:
                    - items
                  additionalProperties: false
                - type: object
                  properties:
                    items:
                      type: array
                      items:
                        type: object
                        properties:
                          domain:
                            anyOf:
                              - type: string
                              - type: 'null'
                            description: >-
                              Dominio de la empresa similar (hostname sin www.
                              ni puerto).
                          name:
                            anyOf:
                              - type: string
                              - type: 'null'
                            description: >-
                              Nombre de la empresa similar. null cuando el
                              proveedor de datos devuelve páginas web (Exa).
                          page_title:
                            anyOf:
                              - type: string
                              - type: 'null'
                            description: >-
                              Título de la página web coincidente (solo Exa); no
                              es el nombre de una empresa.
                          position:
                            anyOf:
                              - type: integer
                              - type: 'null'
                            description: >-
                              Posición basada en 1 en la respuesta del proveedor
                              de datos.
                          predictleads_similarity_score:
                            anyOf:
                              - anyOf:
                                  - type: number
                                  - type: string
                                    enum:
                                      - Infinity
                                      - '-Infinity'
                                      - NaN
                              - type: 'null'
                            description: >-
                              Puntuación de similitud de empresas de
                              PredictLeads, de 0 a 1. Null para otros
                              proveedores de datos.
                          exa_similarity_score:
                            anyOf:
                              - anyOf:
                                  - type: number
                                  - type: string
                                    enum:
                                      - Infinity
                                      - '-Infinity'
                                      - NaN
                              - type: 'null'
                            description: >-
                              Similitud neuronal de Exa entre el sitio web de la
                              empresa y la página coincidente. Null para otros
                              proveedores de datos.
                          reason:
                            anyOf:
                              - type: string
                              - type: 'null'
                            description: >-
                              Motivo por el que el proveedor de datos considera
                              que la empresa es similar (PredictLeads).
                        required:
                          - domain
                          - name
                          - page_title
                          - position
                          - predictleads_similarity_score
                          - exa_similarity_score
                          - reason
                        additionalProperties: false
                  required:
                    - items
                  additionalProperties: false
                - type: object
                  properties:
                    items:
                      type: array
                      items:
                        type: object
                        properties:
                          title:
                            anyOf:
                              - type: string
                              - type: 'null'
                            description: Titular.
                          url:
                            anyOf:
                              - type: string
                              - type: 'null'
                            description: URL del artículo.
                          source:
                            anyOf:
                              - type: string
                              - type: 'null'
                            description: >-
                              Nombre del editor (Serper). Null cuando el
                              proveedor de datos no lo proporciona.
                          published_at:
                            anyOf:
                              - type: string
                              - type: 'null'
                            description: Hora de publicación del artículo, ISO 8601 UTC.
                          event_date:
                            anyOf:
                              - type: string
                              - type: 'null'
                            description: >-
                              Fecha en que ocurrió el evento informado,
                              YYYY-MM-DD (PredictLeads).
                          date_text:
                            anyOf:
                              - type: string
                              - type: 'null'
                            description: >-
                              Fecha mostrada por el proveedor de datos
                              exactamente como se devolvió (Google News; puede
                              ser relativa a completed_at, como «3 hours ago»);
                              nunca se analiza.
                          category:
                            anyOf:
                              - type: string
                              - type: 'null'
                            description: >-
                              Categoría del evento en el vocabulario del
                              proveedor de datos (PredictLeads).
                          snippet:
                            anyOf:
                              - type: string
                              - type: 'null'
                            description: Extracto breve.
                        required:
                          - title
                          - url
                          - source
                          - published_at
                          - event_date
                          - date_text
                          - category
                          - snippet
                        additionalProperties: false
                  required:
                    - items
                  additionalProperties: false
                - type: object
                  properties:
                    items:
                      type: array
                      items:
                        type: object
                        properties:
                          title:
                            anyOf:
                              - type: string
                              - type: 'null'
                            description: Título del puesto tal como se publicó.
                          url:
                            anyOf:
                              - type: string
                              - type: 'null'
                            description: >-
                              URL de la oferta en la página de empleo de la
                              empresa.
                          location:
                            anyOf:
                              - type: string
                              - type: 'null'
                            description: >-
                              Texto de ubicación tal como lo informa el
                              proveedor de datos.
                          seniority:
                            anyOf:
                              - type: string
                              - type: 'null'
                            description: >-
                              Nivel de experiencia en el vocabulario del
                              proveedor de datos que responde (PredictLeads).
                          categories:
                            type: array
                            items:
                              type: string
                            description: >-
                              Funciones del puesto en el vocabulario del
                              proveedor de datos que responde. Vacío cuando el
                              proveedor de datos no proporciona ninguna.
                          contract_types:
                            type: array
                            items:
                              type: string
                            description: >-
                              Tipos de contrato, como full time, en el
                              vocabulario del proveedor de datos. Vacío cuando
                              el proveedor de datos no proporciona ninguno.
                          salary_min_usd:
                            anyOf:
                              - anyOf:
                                  - type: number
                                  - type: string
                                    enum:
                                      - Infinity
                                      - '-Infinity'
                                      - NaN
                              - type: 'null'
                            description: >-
                              Límite inferior del salario publicado, USD. Null
                              cuando no se publicó.
                          salary_max_usd:
                            anyOf:
                              - anyOf:
                                  - type: number
                                  - type: string
                                    enum:
                                      - Infinity
                                      - '-Infinity'
                                      - NaN
                              - type: 'null'
                            description: >-
                              Límite superior del salario publicado, USD. Null
                              cuando no se publicó.
                          salary_period:
                            anyOf:
                              - type: string
                              - type: 'null'
                            description: >-
                              Periodo que abarcan las cifras salariales, en el
                              vocabulario del proveedor de datos (year, hour,
                              ...).
                          posted_at:
                            anyOf:
                              - type: string
                              - type: 'null'
                            description: >-
                              Hora de publicación indicada por la empresa, ISO
                              8601 UTC. A menudo es null.
                          first_seen_at:
                            anyOf:
                              - type: string
                              - type: 'null'
                            description: >-
                              Momento en que el proveedor de datos vio por
                              primera vez la oferta, ISO 8601 UTC.
                          last_seen_at:
                            anyOf:
                              - type: string
                              - type: 'null'
                            description: >-
                              Momento en que el proveedor de datos vio por
                              última vez la oferta, ISO 8601 UTC.
                        required:
                          - title
                          - url
                          - location
                          - seniority
                          - categories
                          - contract_types
                          - salary_min_usd
                          - salary_max_usd
                          - salary_period
                          - posted_at
                          - first_seen_at
                          - last_seen_at
                        additionalProperties: false
                  required:
                    - items
                  additionalProperties: false
            - type: 'null'
          description: >-
            Campos normalizados por acción. La salida nativa del proveedor de
            datos no se repite aquí; permanece en el Run (GET /v1/runs/:id). Los
            valores que un proveedor de datos no informa son null; una respuesta
            vacía tiene la estructura de la acción con todos los campos en null,
            o items: [], con result_status no_result. El dinero está expresado
            en USD. Los empleados y los ingresos son estimaciones propias del
            proveedor de datos; *_range_min / *_range_max son los límites del
            intervalo del proveedor de datos. Una puntuación del modelo propio
            de un proveedor de datos lleva el nombre de ese proveedor
            (exa_similarity_score) y es null para los demás. Las etiquetas como
            industry, categories, round y category están en el vocabulario del
            proveedor de datos que responde.


            - search: total_matches, items[]: domain y los campos del perfil de
            la empresa; los campos que el proveedor de datos no informa son null

            - lookup: total_matches, items[]: domain y los campos del perfil de
            la empresa; los nombres ambiguos devuelven candidatos

            - enrich: name, website, description, industry, employees,
            employee_range_min, employee_range_max, founded_year, city, region,
            country, country_code, linkedin_url, phone, total_funding_usd,
            revenue_usd, revenue_range_min_usd, revenue_range_max_usd,
            ownership, ticker, latest_funding_date

            - tech_stack: items[]: name, categories[], detection_source,
            predictleads_confidence, first_detected_date, last_detected_date

            - traffic: monthly_visits, organic_traffic, paid_traffic,
            organic_keywords, paid_keywords, organic_traffic_value_usd,
            similarweb_global_rank, bounce_rate, pages_per_visit,
            avg_visit_duration_seconds

            - competitors: items[]: domain, name, page_title, position,
            predictleads_similarity_score, exa_similarity_score, reason

            - funding: total_funding_usd, items[]: round_date, round,
            amount_usd, investors[], source_url

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

            - jobs: items[]: title, url, location, seniority, categories[],
            contract_types[], salary_min_usd, salary_max_usd, salary_period,
            posted_at, first_seen_at, last_seen_at

            - ads: total_ads, items[]: creative_id, advertiser_id,
            advertiser_name, format, ad_url, image_url, first_shown_at,
            last_shown_at
        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 JSON nativo del proveedor de
            datos (con cualquier estructura), o null si el cuerpo está vacío.

            - Para respuestas que no sean 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í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 total de los Runs en esta respuesta de Solution. Null hasta
            que todos los Runs enumerados se hayan liquidado. 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 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
            - lookup
            - enrich
            - tech_stack
            - traffic
            - competitors
            - funding
            - news
            - jobs
            - ads
        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 pertenencia 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 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. No es null únicamente 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. 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. Null antes
                  de la liquidación o cuando no se intentó contactar con ningún
                  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 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 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
        - 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.