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

# Probar código

> Ejecuta una configuración run_code inmediatamente sin crear una herramienta.

Ejecuta código JavaScript sin guardar una herramienta. Esta operación comienza
la ejecución de inmediato; no la uses como validación pasiva.

## Endpoint

```text theme={null}
POST /tools/test-run-code
```

## Solicitud

| Campo | Tipo | Requerido | Descripción |
| - | - | - | - |
| `details.code` | `string` | Sí | JavaScript de 1 a 100,000 caracteres. |
| `details.network.enabled` | `boolean` | No | Habilita el acceso de red durante la ejecución. |
| `input` | `object` | No | Datos disponibles para el código. El valor predeterminado es `{}`. |

```bash theme={null}
curl -X POST "https://api.insuranceboosters.com/api/v1/tools/test-run-code" \
  -H "Content-Type: application/json" \
  -H "x-ib-api-key: TU_API_KEY" \
  -d '{
    "details": {
      "code": "output = { total: Number(input.amount) * 2 };",
      "network": {
        "enabled": false
      }
    },
    "input": {
      "amount": 25
    }
  }'
```

El código lee `input` y debe asignar un objeto JSON a `output`. La plataforma
también proporciona `_metadata` y `_variables`; esos dos campos reemplazan
cualquier valor con el mismo nombre que envíes.

La ejecución dispone de 60 segundos. La serialización de `output` admite hasta
32 KiB; no se aceptan arreglos, valores primitivos ni valores no serializables.

Con `network.enabled: true`, el código dispone de `fetch`, `axios`, `Headers`,
`Request` y `Response`.

> [!NOTE]
>
> El código se ejecuta de forma remota en infraestructura administrada por la
> plataforma, no en tu dispositivo. Cada ejecución tiene una duración limitada
> y recibe únicamente los datos proporcionados por la plataforma.

> [!WARNING]
>
> Si habilitas el acceso de red, ejecuta únicamente código de confianza y evita
> incluir información sensible que no sea necesaria.

## Respuesta exitosa (`200`)

```json theme={null}
{
  "output": {
    "total": 50
  },
  "durationMs": 14,
  "logs": []
}
```

`logs` solo aparece cuando la ejecución produce registros.

> [!WARNING]
>
> La respuesta puede contener datos escritos por tu código en `output` o
> `logs`; protégela según su contenido.

## Errores frecuentes

| HTTP | Qué significa | Qué hacer |
| - | - | - |
| `400` | `details`, `code`, `network` o `input` no cumple el esquema. | Revisa tipos y el límite de 100,000 caracteres. |
| `401` | API key inválida o faltante. | Verifica `x-ib-api-key`. |
| `403` | La operación no está permitida. | Revisa la solicitud o contacta soporte. |
| `422` | El código falló, excedió el tiempo o devolvió una salida inválida o mayor a 32 KiB. | Revisa `error.code`, `error.message`, `durationMs` y `logs`. |
| `503` | El servicio no está disponible temporalmente. | Reintenta; si continúa, contacta soporte. |
| `500` | No fue posible iniciar o completar la prueba. | Reintenta; si continúa, contacta soporte. |

Una respuesta `422` tiene esta forma:

```json theme={null}
{
  "error": {
    "code": "INVALID_OUTPUT",
    "message": "Code must return a JSON object.",
    "durationMs": 10,
    "logs": []
  }
}
```


## OpenAPI

````yaml openapi/herramientas-agentes-v1.yaml POST /tools/test-run-code
openapi: 3.1.0
info:
  title: Insurance Boosters API — Herramientas de agentes IA
  version: 1.0.0
  description: >-
    API pública para administrar y probar las herramientas que pueden usar tus
    agentes de IA.
  license:
    name: Propietaria
    url: https://insuranceboosters.com
servers:
  - url: https://api.insuranceboosters.com/api/v1
    description: Producción
security:
  - IbApiKey: []
tags:
  - name: Herramientas de agentes
    description: Administración de herramientas para agentes de IA.
paths:
  /tools/test-run-code:
    post:
      tags:
        - Herramientas de agentes
      summary: Probar código
      description: >
        Ejecuta inmediatamente una configuración `run_code` sin crear una
        herramienta. El código se ejecuta de forma remota en infraestructura
        administrada por la plataforma, dispone de 60 segundos y debe devolver
        un objeto JSON.
      operationId: testRunCodeTool
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TestRunCodeRequest'
            example:
              details:
                code: 'output = { total: Number(input.amount) * 2 };'
                network:
                  enabled: false
              input:
                amount: 25
      responses:
        '200':
          description: Resultado de la ejecución.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RunCodeExecutionResult'
              example:
                output:
                  total: 50
                durationMs: 14
                logs: []
        '400':
          $ref: '#/components/responses/InvalidBody'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '422':
          description: El código falló, agotó el tiempo o devolvió una salida inválida.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RunCodeExecutionError'
              example:
                error:
                  code: INVALID_OUTPUT
                  message: Code must return a JSON object.
                  durationMs: 10
        '500':
          $ref: '#/components/responses/UnexpectedError'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
components:
  schemas:
    TestRunCodeRequest:
      type: object
      required:
        - details
      properties:
        details:
          $ref: '#/components/schemas/RunCodeDetails'
        input:
          type: object
          default: {}
          additionalProperties: true
          description: >
            Datos disponibles en `input`. El servidor agrega `_metadata` y
            `_variables`; los valores que envíes con esas claves no los
            reemplazan.
    RunCodeExecutionResult:
      type: object
      required:
        - output
        - durationMs
      properties:
        output:
          type: object
          additionalProperties: true
          description: >-
            Objeto JSON devuelto por el código; su serialización admite hasta 32
            KiB.
        durationMs:
          type: number
        logs:
          type: array
          items:
            $ref: '#/components/schemas/RunCodeLog'
    RunCodeExecutionError:
      type: object
      required:
        - error
      properties:
        error:
          type: object
          required:
            - code
            - message
            - durationMs
          properties:
            code:
              type: string
            message:
              type: string
            durationMs:
              type: number
            logs:
              type: array
              items:
                $ref: '#/components/schemas/RunCodeLog'
    RunCodeDetails:
      type: object
      required:
        - code
      properties:
        code:
          type: string
          minLength: 1
          maxLength: 100000
          description: >
            Código JavaScript. Lee los datos desde `input`, asigna un objeto
            JSON a `output` y no incluyas secretos directamente en el código.
        network:
          $ref: '#/components/schemas/RunCodeNetwork'
    RunCodeLog:
      type: object
      required:
        - level
        - message
        - timestamp
      properties:
        level:
          type: string
        message:
          type: string
        timestamp:
          type: number
      additionalProperties: true
    Error:
      type: object
      properties:
        success:
          type: boolean
          description: Vale `false` cuando la operación no se completa.
        error:
          description: Detalle del error.
        message:
          type: string
          description: Mensaje del error.
        code:
          type: string
          description: Código del error, cuando está disponible.
    RunCodeNetwork:
      type: object
      required:
        - enabled
      properties:
        enabled:
          type: boolean
          description: Habilita `fetch`, `axios`, `Headers`, `Request` y `Response`.
  responses:
    InvalidBody:
      description: El body no cumple el esquema.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          examples:
            issues:
              summary: Crear o actualizar
              value:
                error:
                  - code: too_small
                    path:
                      - name
                    message: Name is required
            flattened:
              summary: Probar código
              value:
                error:
                  formErrors: []
                  fieldErrors:
                    details:
                      - Required
    Unauthorized:
      description: API key inválida o faltante.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          examples:
            invalidApiKey:
              value:
                message: Invalid API key.
            missingAuth:
              value:
                message: Invalid authorization format.
    Forbidden:
      description: La operación no está permitida.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    UnexpectedError:
      description: Error inesperado.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    ServiceUnavailable:
      description: El servicio no está disponible temporalmente.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  securitySchemes:
    IbApiKey:
      type: apiKey
      in: header
      name: x-ib-api-key

````

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