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

# Repairing Connections

A **repair** (also called reconnect) fixes a broken connection by sending the customer back into the widget straight to the institution login page, skipping the institution picker. Repair is the only way to bring a `RECONNECT_REQUIRED` connection back to `ACTIVE`. This page is for developers wiring up the reconnect prompt in their UI.

## Before you begin

<Info>
  * You have received a `BANK_LINKING_CONNECTION_STATUS_CHANGE` webhook moving the connection to `RECONNECT_REQUIRED` (or a `DEGRADED` reason that requires customer action, or an `ACTIVE` connection with `statusReason` `ACCESS_EXPIRING_SOON` / `NEW_ACCOUNTS_AVAILABLE`)
  * You know the `connectionId` of the broken connection
  * You have UI ready to render the widget — repair generates a connect token just like Step 1
</Info>

## When connections need repair

Connections that were initially successful (`ACTIVE`) can later require reconnection and move to `RECONNECT_REQUIRED`. A connection in `RECONNECT_REQUIRED` will **no longer update**; the latest data available (still queryable via Meld's endpoints) is from before the connection degraded.

A connection can also remain `ACTIVE` with a `statusReason` of `NEW_ACCOUNTS_AVAILABLE` — meaning the customer has the option to add additional accounts via the repair flow.

Common causes of a broken connection:

* The customer changed their bank password after the initial connection.
* The institution expired the consent after a set period and requires the customer to re-authenticate.
* Multi-factor authentication settings changed at the institution.
* Provider-level token or session expired.

## How to repair a connection

Call the [repair endpoint](/api-reference/bank-linking) with the `connectionId`. The response includes a fresh `connectToken` and `widgetUrl`. Launch the widget exactly the same way you did in [Step 2: Launch the Widget](/docs/bank-linking/creating-connections/launch-the-widget) — but the customer skips the institution picker and goes straight to the login screen.

Once the customer logs in successfully, you will receive a `BANK_LINKING_CONNECTION_STATUS_CHANGE` webhook indicating the connection is `ACTIVE` again, and you can retrieve up-to-date data.

<Note>
  For the full request and response schema, refer to the [Bank Linking API reference](/api-reference/bank-linking).
</Note>

## Sample response

```json theme={null}
{
    "id": "WQ5RitxnrnggqcT8noLoZN",
    "connectToken": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJyZWRpcmVjdCI6dHJ1ZSwicmVnaW9ucyI6WyJVUyJdLCJpc3MiOiJtZWxkLmlvIiwiY29ubmVjdGlvbiI6IldRNVJpdHhucm5nZ3FjVDhub0xvWk4iLCJleHAiOjE2ODcyMzM4NTgsImlhdCI6MTY4NzIxOTQ1OCwiYWNjb3VudCI6Ilc5a2JrUm1lOVZUMml6NnFBU2ZBZjIiLCJjdXN0b21lciI6IldRNVJpd2lBTkM5ZnhTdmhZRnpXOXIiLCJwcm9kdWN0cyI6WyJCQUxBTkNFUyIsIklERU5USUZJRVJTIiwiT1dORVJTIiwiVFJBTlNBQ1RJT05TIl0sInJvdXRpbmdQcm9maWxlIjoiV0d2Rlh0WGJEb0NlV3N4VXR1aXhQeSJ9.d_D-VTwLx51bT2DwtNwxpH38oaaKdnrLQD0SM-pXFpU",
    "institutionId": "Ntj3AwgdridJc2rtfeheku",
    "widgetUrl": "https://institution-connect-sb.meld.io?connectToken=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJyZWRpcmVjdCI6dHJ1ZSwicmVnaW9ucyI6WyJVUyJdLCJpc3MiOiJtZWxkLmlvIiwiY29ubmVjdGlvbiI6IldRNVJpdHhucm5nZ3FjVDhub0xvWk4iLCJleHAiOjE2ODcyMzM4NTgsImlhdCI6MTY4NzIxOTQ1OCwiYWNjb3VudCI6Ilc5a2JrUm1lOVZUMml6NnFBU2ZBZjIiLCJjdXN0b21lciI6IldRNVJpd2lBTkM5ZnhTdmhZRnpXOXIiLCJwcm9kdWN0cyI6WyJCQUxBTkNFUyIsIklERU5USUZJRVJTIiwiT1dORVJTIiwiVFJBTlNBQ1RJT05TIl0sInJvdXRpbmdQcm9maWxlIjoiV0d2Rlh0WGJEb0NlV3N4VXR1aXhQeSJ9.d_D-VTwLx51bT2DwtNwxpH38oaaKdnrLQD0SM-pXFpU"
}
```

<Tip>
  The connect token returned by repair expires after 3 hours, identical to a fresh `/connect/start` token. If the customer doesn't complete the repair in that window, request a new one.
</Tip>

## Common errors

| Symptom                                                         | Likely cause                                            | Developer action                                                                                             |
| :-------------------------------------------------------------- | :------------------------------------------------------ | :----------------------------------------------------------------------------------------------------------- |
| `404 Not Found` on the repair endpoint                          | Invalid `connectionId`                                  | Verify the id and the environment.                                                                           |
| `409 Conflict` — connection cannot be repaired                  | Connection is in `EXPIRED`, `DELETED`, or `IN_PROGRESS` | These statuses are terminal or active. Start a new connection instead.                                       |
| Customer completes repair but status stays `RECONNECT_REQUIRED` | Provider-side failure during re-authentication          | Inspect the next `BANK_LINKING_CONNECTION_STATUS_CHANGE` webhook for the new reason; consider routing retry. |
