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

# Reautorizar una conexión

> Abre Tupana Link para volver a entrar al banco de una conexión existente. La conexión conserva su `connection_id` y queda en `requires_action` hasta que el usuario reconecte.

Vuelve a abrir [Tupana Link](https://docs.tupana.ai/api-reference/v2/connect/tupana-link.md) para que el
usuario final entre de nuevo al banco de una conexión que ya existe. La sesión
sale apuntando a esa empresa y ese banco, así que el usuario se salta esos
pasos, y la conexión **conserva su `connection_id`**: cuando termine, sigue
siendo la misma `cred_…` en tu base.

Es lo que corresponde cuando una conexión de banco está en `requires_action`:
el banco pidió volver a entrar, o la clave cambió.

```bash theme={null}
curl -X POST https://api.tupana.ai/v2/connections/cred_5028174639201/reauthorizations/ \
  -H "Authorization: Api-Key TU_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "external_customer_id": "cus_9", "return_url": "https://tusaas.cl/bancos" }'
```

```json theme={null}
{
  "connection_id": "cred_5028174639201",
  "company_id": "ment_3672486436546233854",
  "provider": "santander",
  "type": "bank",
  "status": "requires_action",
  "connect_session_id": "cses_8831027465012",
  "client_token": "cst_…",
  "widget_url": "https://developers.tupana.ai/connect?token=cst_…",
  "environment": "production",
  "expires_at": "2026-10-28T21:05:00-03:00"
}
```

Abre `widget_url` (o pasa `client_token` al widget, igual que en una sesión
nueva). El `client_token` es de un solo uso y dura 30 minutos.

## Qué pasa con la conexión

* Queda en `requires_action` hasta que el usuario reconecte, aunque la lectura
  anterior siguiera funcionando. Si no estaba ya en ese estado, recibes
  `connection.requires_action` una vez.
* Cuando el banco acepta la clave llega `connection.active` con el mismo
  `connection_id`.
* Si el usuario cierra el widget sin terminar, la conexión sigue en
  `requires_action`: puedes pedir otra reautorización.

## Conexión compartida

Una persona que opera varias empresas con el mismo login tiene **una**
conexión asociada a varias `company_id`. En ese caso indica cuál en el body:

```json theme={null}
{ "company_id": "ment_3672486436546233854" }
```

Sin `company_id` responde `400` diciendo que la conexión cubre varias empresas.

## Errores

* `404`: esa conexión no existe para tu API key.
* `400`: la conexión es tributaria (una conexión del SII se vuelve a conectar
  con una sesión nueva de Tupana Link), la conexión no tiene banco asociado, o
  falta `company_id`.
* `403`: una API key de sandbox no abre sesiones de producción.

> [!WARNING]
>
> Solo conexiones de banco. Para el SII, crea una sesión de Tupana Link con
> `capabilities: ["invoicing"]` o `["sii_data"]`.


## OpenAPI

````yaml api-reference/openapi-v2.json POST /connections/{connection_id}/reauthorizations/
openapi: 3.0.0
info:
  title: Tupana API — v2
  description: >-
    API v2 de Tupana: facturación electrónica, cesiones, recaudación, consultas,
    boleta de honorarios y nómina. Los identificadores de recursos son public
    IDs opacos con prefijo (docu_, ment_, cred_, doce_, empl_…).
  version: 2.0.0
servers:
  - url: https://api.tupana.ai/v2
    description: Producción (v2)
security:
  - apiKeyAuth: []
paths:
  /connections/{connection_id}/reauthorizations/:
    post:
      tags:
        - Conexiones
      summary: Reautorizar una conexión de banco
      description: >-
        Abre Tupana Link para volver a entrar al banco de una conexión
        existente. La conexión conserva su `connection_id` y queda en
        `requires_action` hasta que el usuario reconecte.
      operationId: reauthorizeConnection_v2
      parameters:
        - name: connection_id
          in: path
          required: true
          schema:
            type: string
            example: cred_5028174639201
          description: Id de la conexión de banco (`cred_…`).
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                company_id:
                  type: string
                  example: ment_3672486436546233854
                  description: Obligatorio si la conexión cubre varias empresas.
                external_customer_id:
                  type: string
                  description: Tu id de cliente. Vuelve en el webhook.
                return_url:
                  type: string
                  format: uri
                app_name:
                  type: string
                environment:
                  type: string
                  enum:
                    - sandbox
                    - production
                  description: 'Default: el de la API key.'
      responses:
        '201':
          description: Sesión de Tupana Link lista para abrir
          content:
            application/json:
              schema:
                type: object
                properties:
                  connection_id:
                    type: string
                    example: cred_5028174639201
                  company_id:
                    type: string
                    example: ment_3672486436546233854
                  provider:
                    type: string
                    example: santander
                  type:
                    type: string
                    enum:
                      - bank
                  status:
                    type: string
                    enum:
                      - requires_action
                  connect_session_id:
                    type: string
                    example: cses_8831027465012
                  client_token:
                    type: string
                    description: Un solo uso, 30 minutos.
                  widget_url:
                    type: string
                    format: uri
                  environment:
                    type: string
                    enum:
                      - sandbox
                      - production
                  expires_at:
                    type: string
                    format: date-time
        '400':
          description: Conexión tributaria, sin banco asociado, o falta `company_id`
        '403':
          description: Una API key de sandbox no abre producción
        '404':
          description: La conexión no existe para esta API key
      security:
        - apiKeyAuth: []
components:
  securitySchemes:
    apiKeyAuth:
      type: apiKey
      in: header
      name: Authorization
      description: >-
        API Key para autenticación. Debe proporcionarse en el header
        Authorization con el formato: 'Api-Key YOUR-API-KEY' (incluye el prefijo
        'Api-Key ' seguido de tu API key)

````

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