---
title: "Resync connector"
method: POST
path: "/connectors/{connectorId}/resync"
tags: ["Connector Instances"]
---

# Resync connector

`POST /connectors/{connectorId}/resync`

## Request

- Base URL: `https://app.pipeshub.com/api/v1`
- URL: `https://app.pipeshub.com/api/v1/connectors/{connectorId}/resync`
- Auth: one of:
  - HTTP bearer
  - OAuth 2
    - Authorization code: `/api/v1/oauth2/authorize`
    - Client credentials
    - Token URL: `/api/v1/oauth2/token` scopes: `connector:write`, `connector:read`

Trigger a resync of records from a connector instance.

**Overview:**

Fetches content from the external source and updates local records. Use when you suspect data is out of sync.

Only a connector in the caller's list of active connectors
(`GET /connectors/active`, knowledge bases included) can be resynced.
Any other ID, including one that does not exist, is refused with `400`.
The reply only acknowledges that the resync event was published.

Fields of the body other than `connectorName` and `fullSync` are dropped without an error.

**Warning:** This can be resource-intensive for large connectors.

The scope check also accepts `kb:write` in place of `connector:write`.

## Path parameters

- `connectorId` string, required

## Request body

- ResyncConnectorRequestBody
  - `connectorName` string, required: The connector's type as the registry lists it, for example `RSS` or `Jira`. It names the sync event; the connector synced is always the one in the path.
  - `fullSync` boolean: When true, triggers a full sync instead of incremental.

## Response `200`

Resync queued

- object
  - `resyncConnectorResponse` object, required: Acknowledgement that the sync was queued.
    - `success` boolean, required: Whether the resync event was published

## Other responses

- `400`: The connector's sync is off or the connector doesn't exist (both answered as "not allowed"), or the body failed validation.
- `401`: Missing or invalid credentials
- `403`: The token lacks a required scope, or the connector is someone else's personal connector ("Only the person who created this connector can sync it"), checked before the lock and desktop checks.
- `409`: Conflict. Possible reasons:<br> <ul> <li>A sync is already running, or the connector is locked</li> <li><code>DESKTOP_OFFLINE</code> - Local FS: the owner device's desktop app is not connected</li> <li><code>DESKTOP_UNCLAIMED</code> - Local FS: no device owns the connector yet</li> </ul> Local FS refusals carry <code>details.code</code> and use the LocalFsDesktopRefusal body; the others use the standard error body.
- `500`: Internal error, for example when the JSON body is not an object A JSON body larger than 10 MB, or a form-encoded body larger than 100 KB or with more than 1000 fields, is answered `413` by the app-wide body parsers instead, also before authentication.
- `503`: The sync event could not be published to the message broker, so nothing was queued or synced ("We couldn't start this sync because PipesHub couldn't queue it. Nothing was synced. Try again in a minute; ...").

## Changes

- **2026-10-15** `a44792e4f0e6`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/pipeshub-ai/apis/pipeshub-api/changes/connectors/:connectorId/resync/post.md)

---

[API](https://skmtc.dev/pipeshub-ai/apis/pipeshub-api.md) - [All operations](https://skmtc.dev/pipeshub-ai/apis/pipeshub-api/llms.txt) - [OpenAPI document](https://skmtc.dev/pipeshub-ai/apis/pipeshub-api/revisions/dbb5e203b445?raw)
