---
title: "Habilitar una conexión"
method: POST
path: "/v1/tools/conexiones.conexion.habilitar/execute"
tags: ["conexiones"]
---

# Habilitar una conexión

`POST /v1/tools/conexiones.conexion.habilitar/execute`

## Request

- Base URL: `https://connect.emisso.ai/api`
- URL: `https://connect.emisso.ai/api/v1/tools/conexiones.conexion.habilitar/execute`
- Auth: one of:
  - HTTP bearer
  - OAuth 2 (authorization code, authorization URL `https://connect.emisso.ai/authorize`, token URL `https://connect.emisso.ai/token`, scopes: `conexiones:enable`)

Reanuda una conexión deshabilitada de esta organización: vuelve a sincronizar según su cadencia y sus herramientas vuelven a responder. La conexión vuelve a sumarse al cobro del plan: si 'costoAdicional' no es null, díselo a la persona. No sirve para una conexión sin credencial: esa se completa con conexiones.enlace.crear. Si ya estaba habilitada, no cambia nada y responde 'cambiada' en false.

## Request body

- object
  - `input` ConexionesConexionHabilitarInput, required
    - `conexionId` string, required: conn_… de la conexión a habilitar, tal como lo devuelve conexiones.estado.consultar.

## Response `200`

La tool corrió bien. 'data' es la salida de la tool tal cual, y 'meta' trae el 'request_id' que identifica esta llamada en la bitácora.

- object
  - `data` ConexionesConexionHabilitarOutput, required
    - `id` string, required: El id de la conexión (conn_…).
    - `sistema` string, required: El código del sistema de la conexión.
    - `nombre` string, required: El nombre de la conexión.
    - `estado` 'active' | 'disabled' | 'pending', required: En qué estado está la conexión. 'active' = utilizable. 'disabled' = pausada: sus tools no responden, y 'pausa' dice por qué. 'pending' = creada pero todavía sin credencial vinculada.
    - `cambiada` boolean, required: true si esta llamada cambió el estado; false si la conexión ya estaba así y no se tocó nada.
    - `costoAdicional` object, nullable, required: Lo que suma esta conexión a la próxima renovación, porque la organización ya usa lo que cubre el precio de su plan. null cuando no suma nada o cuando la conexión ya estaba habilitada. Si no es null, díselo a la persona, en dólares + IVA.
      - `montoUsd` number, required: Lo que suma al mes, en dólares y sin IVA.
      - `montoUsdConEmision` number, nullable, required: Lo que suma al mes si la conexión del SII se crea emitiendo DTE, que cuesta más que una de lectura. null si el sistema no emite. Siempre null en conexiones.conexion.habilitar, donde la variante ya está fijada.
      - `planNombre` string, required: El plan de la organización, como lo ve la persona.
      - `incluidas` integer, required: Cuántas conexiones incluye ese plan.
      - `mensaje` string, required: La frase lista para decírsela a la persona.
  - `meta` ResponseMeta
    - `request_id` string, required: Identificador que el servidor le da a esta llamada (req_…). Correlaciona con la fila de la bitácora y es lo primero que pide soporte: guárdalo en tus logs.
    - `operation_request_id` string, uuid: Identidad del intento e-Boleta original. Se conserva al reproducir el resultado del journal; request_id identifica la llamada actual.
    - `tool_id` string, required: La tool que se ejecutó, con su id punteado.
    - `plane` 'action' | 'read', required: 'read' = la llamada escribió en el plano persistido (un sync). 'action' = efímera, no persistió nada de negocio: actuar afuera, o leer lo que un sync ya dejó.
    - `latency_ms` integer, required: Cuánto tardó la ejecución, en milisegundos.
    - `audit_status` 'recorded' | 'degraded', required: 'recorded' = la bitácora recibió la fila de esta llamada. 'degraded' = la acción se hizo pero el registro cayó a un respaldo duradero. Nunca convierte una acción exitosa en un error, porque reintentar por eso sería pagar o emitir dos veces.
    - `idempotency` 'replayed': Presente solo cuando una tool destructiva devolvió la respuesta guardada de un intento previo con la misma Idempotency-Key. Significa que en ESTA llamada no ocurrió ningún efecto nuevo.

## Other responses

- `400`: validation_error (400)
- `401`: unauthorized (401)
- `403`: scope_not_granted | connection_scope_not_enabled | alcance_not_enabled
- `404`: tool_not_found (404)
- `409`: connection_ambiguous | connection_busy
- `428`: connection_credential_required (428)
- `500`: internal_error (500)

---

[API](https://skmtc.dev/emisso/apis/emisso-connect-api.md) · [All operations](https://skmtc.dev/emisso/apis/emisso-connect-api/llms.txt) · [OpenAPI document](https://skmtc.dev/emisso/apis/emisso-connect-api/revisions/e766c01ef2a0?raw)
