---
title: "Update a connector"
method: PATCH
path: "/v2/connect/connectors/{connector}"
tags: ["connect"]
---

# Update a connector

`PATCH /v2/connect/connectors/{connector}`

Update a connector and return the connector with any service-side update signals that the caller must handle.

## Path parameters

- `connector` string, required — Stable connector ID or URL-encoded team-scoped UID. Examples: `scl_abc123` or `slack%2Fmy-bot`.

## Query parameters

- `teamId` string
- `slug` string

## Request body

- ConnectUpdateConnectorRequest — Connector fields to update.
  - `triggers` boolean — Whether the triggers are enabled for this connector.
  - `events` string[] — Default trigger events for this connector.
  - `data` union — Provider configuration fields for the connector type.
    - object
      - `serverUrl` string — Authorization server base URL used for discovery.
      - `serverConfig` object — Authorization server metadata. Values override discovered metadata. Empty known string fields remove their stored overrides.
        - `issuer` string — Authorization server issuer URL.
        - `authorization_endpoint` string — OAuth authorization endpoint URL.
        - `token_endpoint` string — OAuth token endpoint URL.
        - `userinfo_endpoint` string — OpenID Connect UserInfo endpoint URL.
        - `jwks_uri` string — URL of the authorization server JSON Web Key Set.
        - `jwks` object — Inline authorization server JSON Web Key Set.
          - `keys` object[], required — JSON Web Keys published by the authorization server.
            - `kty` string, required — JSON Web Key type.
            - `kid` string — JSON Web Key identifier.
            - `use` 'sig' | 'enc' — Intended key use: signing or encryption.
            - `key_ops` string[] — Operations permitted for this key.
            - `alg` string — Algorithm intended for this key.
        - `revocation_endpoint` string — OAuth token revocation endpoint URL.
        - `introspection_endpoint` string — OAuth token introspection endpoint URL.
        - `end_session_endpoint` string — OpenID Connect session termination endpoint URL.
        - `device_authorization_endpoint` string — OAuth device authorization endpoint URL.
        - `registration_endpoint` string — OAuth dynamic client registration endpoint URL.
        - `response_types_supported` string[] — OAuth response types supported by the server.
        - `token_endpoint_auth_methods_supported` string[] — Token endpoint client authentication methods supported by the server.
        - `token_endpoint_auth_signing_alg_values_supported` string[] — Signing algorithms supported for token endpoint authentication.
        - `scopes_supported` string[] — OAuth scopes supported by the server.
        - `grant_types_supported` string[] — OAuth grant types supported by the server.
        - `response_modes_supported` string[] — OAuth response modes supported by the server.
        - `subject_types_supported` string[] — OpenID Connect subject identifier types supported by the server.
        - `id_token_signing_alg_values_supported` string[] — Signing algorithms supported for ID tokens.
        - `id_token_encryption_alg_values_supported` string[] — Key management algorithms supported for encrypted ID tokens.
        - `id_token_encryption_enc_values_supported` string[] — Content encryption algorithms supported for encrypted ID tokens.
        - `claim_types_supported` string[] — OpenID Connect claim value types supported by the server.
        - `claims_supported` string[] — Claims that the authorization server can return.
        - `code_challenge_methods_supported` string[] — PKCE code challenge methods supported by the server.
        - `prompt_values_supported` string[] — Authorization prompt values supported by the server.
        - `claims_parameter_supported` boolean — Whether authorization requests can use the claims parameter.
        - `request_parameter_supported` boolean — Whether authorization requests can use signed request objects.
        - `request_uri_parameter_supported` boolean — Whether authorization requests can use request_uri.
        - `require_request_uri_registration` boolean — Whether request_uri values must be registered in advance.
        - `service_documentation` string — Authorization server documentation URL.
        - `op_policy_uri` string — Authorization server privacy policy URL.
        - `op_tos_uri` string — Authorization server terms of service URL.
        - `logo_uri` string — Authorization server logo URL.
        - `client_id_metadata_document_supported` boolean — Whether the server supports OAuth client ID metadata documents.
        - `authorization_details_types_supported` string[] — OAuth authorization-detail types supported by the server.
      - `clientId` string — OAuth client ID.
      - `clientName` string — OAuth client name.
      - `clientSecret` string — OAuth client secret.
      - `tokenEndpointAuthMethod` string — OAuth token endpoint authentication method. Common values are client_secret_post, client_secret_basic, none, and private_key_jwt. If omitted, Vercel selects a supported method from serverConfig and otherwise uses client_secret_post.
      - `responseType` string — OAuth authorization response type. Defaults to code. Other provider-supported values are accepted. An empty string clears the configured type.
      - `pkceRequired` boolean — Whether user authorization must use PKCE.
      - `codeChallengeMethod` string — PKCE code challenge method. Supported values are S256 and plain. Vercel prefers S256 when the provider supports it. An empty string clears the configured method.
      - `userAuthorization` object — User authorization grant settings.
        - `enabled` boolean, required — Whether this OAuth grant is enabled.
        - `scopes` string[] — Default scopes to request when token params specify scopes: [\"*\"].
      - `refreshTokens` object — Refresh token settings.
        - `enabled` boolean, required — Whether this OAuth grant is enabled.
      - `clientCredentials` object — Client credentials grant settings.
        - `enabled` boolean, required — Whether this OAuth grant is enabled.
        - `scopes` string[] — Default scopes to request when token params specify scopes: [\"*\"].
      - `forwardedClaims` object — Allow-list of extra claims to propagate, keyed by source (idToken). Only claims named here and present in that source are exposed.
        - `idToken` string[] — ID token claim names that Connect can expose.
      - `defaultAudience` string — Default audience used when a token request omits one. An empty string clears the default.
      - `defaultTokenExpiresIn` number — Default token lifetime in seconds to use when the token response omits expires_in.
      - `authorizationUrlParams` object — Extra query parameters added to authorization URLs.
      - `jwtBearer` object — JWT bearer grant settings.
        - `enabled` boolean — Whether JWT bearer grants are enabled.
        - `scopes` string[] — Default scopes to request when token params specify scopes: [\"*\"].
        - `sub` string — Default JWT subject claim.
        - `iss` string — Default JWT issuer claim.
        - `aud` string — Default JWT audience claim.
        - `additionalClaims` object — Additional claims included in generated JWT assertions.
        - `ttl` number — JWT lifetime in seconds.
        - `useClientCredentials` boolean — Whether JWT bearer requests also use client credentials.
      - `clientAssertion` object — `private_key_jwt` client assertion settings.
        - `type` string — OAuth client assertion type. Defaults to urn:ietf:params:oauth:client-assertion-type:jwt-bearer. An empty string clears the configured type.
        - `ttl` number — Client assertion lifetime in seconds.
        - `claims` object — Additional claims included in the client assertion.
    - object
      - `toDelete` string[] — Stored API key value IDs to delete.
      - `toAdd` object[] — API key values to add.
        - `value` string, required — API key value.
        - `scope` string — Optional scope associated with the API key value.
        - `expiresAt` integer — The timestamp when the API key value expires in milliseconds.
      - `toUpdate` object[] — Existing API key values to update.
        - `id` string, required — Stored API key value ID.
        - `value` union — Replacement API key value. Use null to keep the stored value.
          - string
          - string
        - `scope` union — Replacement scope. Use null to remove the scope.
          - string
          - string
        - `expiresAt` union — The timestamp when the API key value expires in milliseconds.
          - integer
          - string
    - object
      - `appId` integer — GitHub App numeric ID.
      - `appSlug` string — GitHub App slug.
      - `appName` string — GitHub App display name.
      - `clientId` string — GitHub App OAuth client ID.
      - `owner` object — GitHub App owner.
        - `type` 'user' | 'organization' | 'User' | 'Organization', required — GitHub App owner type.
        - `id` integer, required — GitHub App owner numeric ID.
        - `slug` string, required — GitHub App owner login.
        - `name` string — GitHub App owner display name.
      - `clientSecret` string — GitHub App OAuth client secret.
      - `privateKeyPem` string — GitHub App private key in PEM format.
      - `webhookSecret` string — GitHub App webhook secret.
      - `extras` object — Additional provider metadata stored with the connector.
    - object
      - `appId` string — Linear application ID.
      - `appName` string — Linear application name.
      - `clientId` string — Linear OAuth client ID.
      - `clientSecret` string — Linear OAuth client secret.
      - `webhookSecret` string — Linear webhook verification secret.
      - `appScopes` string[] — OAuth scopes requested for Linear application tokens.
      - `userScopes` string[] — OAuth scopes requested for Linear user tokens.
      - `ownerOrganization` object — Linear organization that owns the OAuth application.
        - `id` string, required — Linear organization ID.
        - `slug` string, required — Linear organization slug.
        - `name` string, required — Linear organization name.
        - `logoUrl` string, nullable — Linear organization logo URL.
      - `application` object — Linear OAuth application metadata.
        - `id` string, required — Linear OAuth application ID.
        - `clientId` string, required — Linear OAuth client ID.
        - `name` string, required — Linear OAuth application name.
        - `description` string, nullable — Linear OAuth application description.
        - `developer` string, nullable — Linear OAuth application developer name.
        - `developerUrl` string, nullable — Linear OAuth application developer URL.
        - `imageUrl` string, nullable — Linear OAuth application image URL.
        - `redirectUris` string[] — Registered redirect URIs for the Linear OAuth application.
        - `distribution` string, nullable — Linear OAuth application distribution mode.
        - `webhookResourceTypes` string[] — Linear resource types delivered to the webhook.
        - `webhookUrl` string, nullable — Linear webhook URL.
        - `webhookEnabled` boolean — Whether the Linear webhook is enabled.
        - `createdAt` string — Linear OAuth application creation timestamp.
        - `updatedAt` string — Linear OAuth application update timestamp.
      - `extras` object — Additional provider metadata stored with the connector.
    - object
      - `consumerKey` string — Salesforce connected app consumer key.
      - `consumerSecret` string — Salesforce connected app consumer secret.
      - `loginHost` string — Salesforce login host, such as login.salesforce.com.
    - object
      - `appId` string — Slack app ID.
      - `appName` string — Slack app display name.
      - `clientId` string — Slack app OAuth client ID.
      - `clientSecret` string — Slack app OAuth client secret.
      - `slackTeam` object — Slack workspace metadata.
        - `id` string, required — Slack workspace ID.
        - `name` string — Slack workspace name.
        - `domain` string — Slack workspace domain.
      - `signingSecret` string — Slack request signing secret.
      - `verificationToken` string — Legacy Slack webhook verification token.
      - `botScopes` string[] — OAuth scopes requested for Slack bot tokens.
      - `userScopes` string[] — OAuth scopes requested for Slack user tokens.
      - `slashCommands` object[] — Slash commands configured for the managed Slack app.
        - `command` string, required — Slash command including its leading slash.
        - `description` string, required — Description shown for the slash command in Slack.
        - `usageHint` string — Optional usage hint shown for the slash command.
        - `shouldEscape` boolean — Whether Slack should escape command arguments.
      - `shortcuts` object[] — Global and message shortcuts configured for the Slack app.
        - `type` 'global' | 'message', required — Where Slack exposes the shortcut.
        - `name` string, required — Shortcut display name.
        - `callbackId` string, required — Identifier included in the shortcut callback.
        - `description` string, required — Description shown for the shortcut in Slack.
      - `extras` object — Additional provider metadata stored with the connector.
    - object
      - `accountIdentifier` string — Snowflake account identifier.
      - `defaultSessionRole` string — Default Snowflake role for created sessions.
    - object
      - `accountIdentifier` string — Snowflake account identifier.
    - object
      - `apiToken` string — Linq partner API token for the shared line.
      - `phoneNumbers` string[]
    - object
      - `apiKeyId` string — Sendblue API key id (`sb-api-key-id`).
      - `apiSecretKey` string — Sendblue API secret key (`sb-api-secret-key`).
      - `phoneNumbers` string[] — E.164 Sendblue lines this connector sends and receives on. Used as the connector's display name, and the only lines its webhooks are registered for; an empty array clears them, which also removes the webhook subscription.
    - object
      - `projectSecret` string — Photon project secret.
      - `webhookSecret` string — Photon webhook verification secret.
      - `repairWebhook` boolean — Whether Connect should recreate the Photon webhook.
    - object
  - `icon` string — SHA-1 digest of a PNG or JPEG icon that is at least 640 by 640 pixels. This field does not accept a URL or image bytes. First compute the digest and upload the raw image with [POST /v2/files](https://vercel.com/docs/rest-api/deployments/upload-deployment-files). Send `Content-Length` and the same 40-character digest in `x-vercel-digest`. Then set `icon` to that digest. ```js import { createHash } from 'node:crypto'; import { readFile } from 'node:fs/promises'; const VERCEL_TOKEN = process.env.VERCEL_TOKEN; const connectorId = 'scl_...'; const bytes = await readFile('icon.png'); const digest = createHash('sha1').update(bytes).digest('hex'); await fetch('https://api.vercel.com/v2/files', { method: 'POST', headers: { Authorization: `Bearer ${VERCEL_TOKEN}`, 'Content-Type': 'application/octet-stream', 'Content-Length': String(bytes.length), 'x-vercel-digest': digest, }, body: bytes, }); await fetch(`https://api.vercel.com/v2/connect/connectors/${connectorId}`, { method: 'PATCH', headers: { Authorization: `Bearer ${VERCEL_TOKEN}`, 'Content-Type': 'application/json', }, body: JSON.stringify({ icon: digest }), }); ```
  - `backgroundColor` string
  - `accentColor` string
  - `uid` string — Full team-scoped UID, such as `slack/my-bot`. It cannot contain whitespace, `%`, `#`, control characters, or Vercel-owned namespaces. Changing it breaks callers that use the old UID. The stable connector ID does not change.
  - `name` string — Display name for the connector. It is trimmed and cannot be empty or contain control characters.

## Response `200`

The updated connector and any required service-side follow-up signals.

- ConnectConnectorUpdateResult — Updated connector and any required provider follow-up actions.
  - `connector` ConnectConnector, required — A connector that defines how Vercel accesses an external service.
    - `id` string, required — Stable `scl_` connector ID. Use this value directly in `{connector}`.
    - `uid` string, required — Team-scoped UID. URL-encode this value before using it in `{connector}`.
    - `defaultInstallationId` string — Installation used when a token request does not specify an installation.
    - `createdAt` number, required — Creation time in epoch milliseconds.
    - `updatedAt` number, required — Last update time in epoch milliseconds.
    - `reinstallAt` number — Time when this connector started requiring reinstallation because an installation-affecting app-token grant changed.
    - `createdBy` union — Principal that created the connector.
      - object — Principal that originally created the connector — either a Vercel user (interactive dashboard / CLI flow) or a Vercel deployment (OIDC-authenticated project, used by runtime auto-provisioning). See {@link ConnexPrincipal}. Optional: pre-existing rows from before this shape was introduced may carry no attribution at all.
        - `type` 'user', required — Principal kind.
        - `id` string, required — Vercel user ID.
      - object — Principal that originally created the connector — either a Vercel user (interactive dashboard / CLI flow) or a Vercel deployment (OIDC-authenticated project, used by runtime auto-provisioning). See {@link ConnexPrincipal}. Optional: pre-existing rows from before this shape was introduced may carry no attribution at all.
        - `type` 'project', required — Principal kind.
        - `id` string, required — Vercel project ID.
        - `environment` union, required — Deployment environment of the project principal.
          - string
          - 'development' | 'preview' | 'production'
    - `updatedBy` union — Principal that most recently updated the connector.
      - object — Principal that most recently mutated the connector. Same shape as {@link createdBy} but tracks the most recent updater, not the original creator. At create time the two fields point at the same principal; they diverge on the first subsequent update.
        - `type` 'user', required — Principal kind.
        - `id` string, required — Vercel user ID.
      - object — Principal that most recently mutated the connector. Same shape as {@link createdBy} but tracks the most recent updater, not the original creator. At create time the two fields point at the same principal; they diverge on the first subsequent update.
        - `type` 'project', required — Principal kind.
        - `id` string, required — Vercel project ID.
        - `environment` union, required — Deployment environment of the project principal.
          - string
          - 'development' | 'preview' | 'production'
    - `creationMode` 'managed' | 'manual' — How the connector row was originally created. New create paths stamp this explicitly; older rows may omit it.
    - `managed` object — Managed connector metadata exposed without leaking the manager connector or installation identifiers.
      - `sync` false | true — Whether Vercel synchronizes provider-side configuration.
    - `type` 'api-key' | 'custom' | 'discord' | 'github' | 'linear' | 'linq' | 'microsoft-entra' | 'microsoft-teams' | 'oauth' | 'photon' | 'salesforce' | 'sendblue' | 'slack' | 'snowflake' | 'snowflake-wif', required — Connector implementation type.
    - `service` string, required — Best-effort identifier of the third-party service this connector represents, independent of `type`. Examples: `'slack'`, `'mcp.linear.app'`, and `'auth.example.com'`. Always present in API responses.
    - `connectionMethod` string — The connection method this connector was created from, when the create request named one.
    - `target` string — Which of the service's products/surfaces this connector points at.
    - `name` string, required — Connector name within the owning team.
    - `displayName` string, required — Human-readable connector name.
    - `clientUrl` string, nullable — Provider-side URL for viewing or managing the resource represented by the connector. The destination can be an app, account, phone line, or service instance, depending on the connector type.
    - `redirectUri` string — Redirect URI registered with the third-party service for this connector, if any. Used by `startAuthorization`/`startInstallation` to replay the exact URI back to the provider's token endpoint. Absent on connectors created before this field was introduced; those callers fall back to the `https://connect.vercel.com/callback` default.
    - `typeName` string, required — Human-readable name of the connector type.
    - `typeIcon` string — Icon identifier supplied by the connector type.
    - `website` string — Public website for the connected service.
    - `devsite` string — Developer website for the connected service.
    - `docsite` string — Developer documentation for the connected service.
    - `icon` string — Connector branding icon. SHA-1 hash that resolves to the uploaded icon through the Vercel avatar service. Consumers render this with `https://vercel.com/api/www/avatar/{icon}`.
    - `backgroundColor` string — Hex background color (e.g., `#000000`) for branding.
    - `accentColor` string — Hex accent color (e.g., `#000000`) for branding.
    - `supportedSubjectTypes` string[], required — Token subject types supported by the connector.
    - `appTokens` object — App-token capabilities and known grants for the connector.
      - `crossInstallation` false | true, required — Whether one app token can be used across installations.
      - `supportsRefinement` false | true, required — Whether callers can narrow app-token grants per request.
      - `requiresReinstallation` false | true — True when changing app token grants requires reinstalling the app, so tokens cannot be partitioned independently by requester environment.
      - `scopes` string[] — Known allowed app-level scopes. For Slack this is the bot scope set configured on the app; for OAuth it is the connector's enabled `clientCredentials.scopes` configuration.
      - `supportedAuthorizationDetails` string[] — Supported OAuth authorization-detail type names.
      - `permissionsUrl` string — Link to the page on the service where this connector's app-level permissions are declared and granted, when the service has one and it differs from `clientUrl`.
    - `userTokens` object — User-token capabilities and known grants for the connector.
      - `crossInstallation` false | true, required — Whether one user token can be used across installations.
      - `supportsRefinement` false | true, required — Whether callers can narrow user-token grants per request.
      - `scopes` string[] — Known allowed user-level scopes. For Slack this is the user scope set configured on the app; for OAuth it is the connector's enabled `userAuthorization.scopes` configuration.
      - `supportedAuthorizationDetails` string[] — Supported OAuth authorization-detail type names.
      - `manualCredentialInput` false | true — User authorization is completed by the Connect consent screen submitting a credential instead of an OAuth redirect.
    - `supportsInstallation` false | true, required — Whether the connector supports an installation flow.
    - `supportsRevocation` false | true, required — Whether Connect can revoke tokens for this connector.
    - `supportsTriggers` false | true, required — Whether this connector type supports trigger webhooks. Derived from the type definition; indicates that `triggers` and `triggerDestinations` may be meaningful for this connector.
    - `supportsIcon` unknown, required
    - `triggers` ConnectTriggerConfiguration — Incoming trigger configuration. Only present when enabled.
      - `enabled` false | true, required — Whether incoming triggers are enabled for the connector.
    - `events` string[] — Known events this connector subscribes to (e.g. Slack bot events, GitHub webhook events). Names are type-specific and validated by the managed-create flow when forwarded to the third-party service.
    - `triggerDestinations` ConnectTriggerDestination[] — Destinations that incoming triggers should be forwarded to. Limited to 3 entries. Set the initial destination with `triggerDestination` during creation. Replace the complete set with `PATCH /v1/connect/connectors/{connector}/trigger-destinations`.
      - `projectId` string, required — Vercel project that receives matching trigger requests.
      - `customEnvironmentId` string — Stable custom-environment ID to route this destination to. Mutually exclusive with `branch`; omitted destinations keep the legacy production behavior.
      - `branch` string — Git branch used to select a preview deployment.
      - `path` string — Route path that receives the forwarded trigger request.
  - `reinstallNeeded` false | true — When true, prompt a team owner or administrator to reinstall the connector before relying on the change.
  - `reconsentNeeded` ConnectReconsent — Existing authorizations no longer cover the connector's configured scopes, so they must be re-authorized.
    - `scope` 'user', required — The affected authorization scope. user means each affected user must authorize again.
  - `serviceSync` ConnectServiceSync — Provider-side configuration synchronization result.
    - `status` 'done' | 'required', required — done means the external service was updated. required means the Vercel update was saved, but provider-side configuration still needs attention.
    - `errors` ConnectServiceSyncError[] — Provider synchronization errors. Present when serviceSync.status is required.
      - `message` string, required — Human-readable provider synchronization error.
      - `fields` string[] — Connector fields that caused the synchronization error.
      - `vendor` object — Provider-specific error details that are safe to expose.

## Other responses

- `400` — One of the provided values in the request body is invalid. One of the provided values in the request query is invalid.
- `401` — The request is not authorized.
- `403` — You do not have permission to access this resource.
- `404` — The requested resource was not found.
- `409` — The request conflicts with the current resource state.
- `410` — The requested resource is no longer available.
- `422` — The request cannot be completed in the current state.
- `502` — A dependency returned an invalid or unsuccessful response.

## Changes

- **2026-09-02** `284e10c18f4d` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/vercel/apis/api/changes/v2/connect/connectors/:connector/patch.md)

---

[API](https://skmtc.dev/vercel/apis/api.md) · [All operations](https://skmtc.dev/vercel/apis/api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/vercel/api/revisions/284e10c18f4d/schema)
