---
title: list-connectors
product: vercel
url: /docs/rest-api/sdk/connect/list-connectors
canonical_url: "https://vercel.com/docs/rest-api/sdk/connect/list-connectors"
last_updated: 2026-09-24
type: reference
prerequisites:
  []
related:
  - /docs/rest-api
summary: Learn about list-connectors on Vercel.
install_vercel_plugin: npx plugins add vercel/vercel-plugin
---

# List connectors

```http
GET /v2/connect/connectors
```

List connectors that belong to a team.

## Authentication

**bearerToken**: HTTP bearer

## Query parameters

| Name | Type | Required | Description |
|---|---|---|---|
| `limit` | integer. min: 1; max: 100 | No | Maximum number of connectors to return. Defaults to 20. |
| `cursor` | string | No | Cursor from `pagination.next` on the previous response. |
| `projectId` | string | No | Return only connectors connected to this project. |
| `search` | string. maxLength: 100 | No | Search connector names, UIDs, and services. |
| `type` | string | No | Comma-separated connector types: `slack`, `discord`, `github`, `linear`, `linq`, `salesforce`, `sendblue`, `snowflake`, `snowflake-wif`, `microsoft-entra`, `api-key`, `photon`, `oauth`, or `custom`. |
| `service` | string | No | Comma-separated provider or service identifiers. |
| `sort` | string. enum: name, createdAt, updatedAt | No | Sort by name in ascending order, or by creation or update time in descending order. |
| `teamId` | string | No | The team ID that scopes the request. Do not send it with slug. If both are omitted, Vercel uses the team associated with the token or the authenticated user's default team. The request returns 401 if no team can be selected. |
| `slug` | string | No | The team slug that scopes the request. Do not send it with teamId. If both are omitted, Vercel uses the team associated with the token or the authenticated user's default team. The request returns 401 if no team can be selected. |


## Example request

```typescript
import { Vercel } from "@vercel/sdk";

const vercel = new Vercel({
  bearerToken: "<YOUR_BEARER_TOKEN_HERE>",
});

async function run() {
  const result = await vercel.connect.listConnectors({
    teamId: "team_1a2b3c4d5e6f7g8h9i0j1k2l",
    slug: "my-team-url-slug",
  });

  console.log(result);
}

run();
```

## Example response

```json
{
  "connectors": [
    {
      "accentColor": "string",
      "appTokens": {
        "crossInstallation": "false",
        "permissionsUrl": "https://example.com",
        "requiresReinstallation": "false",
        "scopes": [],
        "supportedAuthorizationDetails": [],
        "supportsRefinement": "false",
        "supportsResources": "false"
      },
      "backgroundColor": "string",
      "clientUrl": "https://example.com",
      "connectionMethod": "string",
      "createdAt": "123",
      "createdBy": {
        "id": "icfg_1234567890",
        "type": "user"
      },
      "creationMode": "managed",
      "defaultInstallationId": "example_id",
      "devsite": "string",
      "displayName": "Example Name",
      "docsite": "string",
      "events": [],
      "icon": "string",
      "id": "icfg_1234567890",
      "knownStale": "false",
      "managed": {
        "sync": "false"
      },
      "name": "Example Name",
      "redirectUri": "https://example.com",
      "reinstallAt": "123",
      "service": "string",
      "supportedSubjectTypes": [],
      "supportsIcon": "false",
      "supportsInstallation": "false",
      "supportsRevocation": "false",
      "supportsTriggers": "false",
      "target": "string",
      "triggerDestinations": [
        {
          "branch": "string",
          "customEnvironmentId": "example_id",
          "path": "string",
          "projectId": "example_id"
        }
      ],
      "triggers": {
        "enabled": "false"
      },
      "type": "api-key",
      "typeIcon": "string",
      "typeName": "Example Name",
      "uid": "example_id",
      "updatedAt": "123",
      "updatedBy": {
        "id": "icfg_1234567890",
        "type": "user"
      },
      "userTokens": {
        "crossInstallation": "false",
        "manualCredentialInput": "false",
        "scopes": [],
        "supportedAuthorizationDetails": [],
        "supportsRefinement": "false",
        "supportsResources": "false"
      },
      "website": "string"
    }
  ],
  "pagination": {
    "next": "string"
  }
}
```

## Responses

### 200: A page of connectors.

Content-Type: `application/json`

```json
{
  "type": "object",
  "description": "Page of connectors.",
  "required": [
    "connectors",
    "pagination"
  ],
  "properties": {
    "connectors": {
      "type": "array",
      "description": "Connectors in this page.",
      "items": {
        "type": "object",
        "description": "A connector that defines how Vercel accesses an external service.",
        "required": [
          "createdAt",
          "displayName",
          "id",
          "name",
          "service",
          "supportedSubjectTypes",
          "supportsIcon",
          "supportsInstallation",
          "supportsRevocation",
          "supportsTriggers",
          "type",
          "typeName",
          "uid",
          "updatedAt"
        ],
        "properties": {
          "accentColor": {
            "type": "string",
            "description": "Hex accent color (e.g., `#000000`) for branding."
          },
          "appTokens": {
            "type": "object",
            "description": "App-token capabilities and known grants for the connector.",
            "required": [
              "crossInstallation",
              "supportsRefinement"
            ]
          },
          "backgroundColor": {
            "type": "string",
            "description": "Hex background color (e.g., `#000000`) for branding."
          },
          "clientUrl": {
            "type": "string",
            "description": "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.",
            "nullable": true
          },
          "connectionMethod": {
            "type": "string",
            "description": "The connection method this connector was created from, when the create request named one."
          },
          "createdAt": {
            "type": "number",
            "description": "Creation time in epoch milliseconds."
          },
          "createdBy": {
            "description": "Principal that created the connector."
          },
          "creationMode": {
            "type": "string",
            "description": "How the connector row was originally created. New create paths stamp this explicitly; older rows may omit it.",
            "enum": [
              "managed",
              "manual"
            ]
          },
          "defaultInstallationId": {
            "type": "string",
            "description": "Installation used when a token request does not specify an installation."
          },
          "devsite": {
            "type": "string",
            "description": "Developer website for the connected service."
          },
          "displayName": {
            "type": "string",
            "description": "Human-readable connector name."
          },
          "docsite": {
            "type": "string",
            "description": "Developer documentation for the connected service."
          },
          "events": {
            "type": "array",
            "description": "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."
          },
          "icon": {
            "type": "string",
            "description": "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}`."
          },
          "id": {
            "type": "string",
            "description": "Stable `scl_` connector ID. Use this value directly in `{connector}`."
          },
          "knownStale": {
            "type": "boolean",
            "description": "Whether the connector is known to have been edited since the app package it publishes to the provider was last built, so that package no longer matches it. Absent when it was not computed, or when the connector type publishes no such package. Derived on every read rather than marked at edit time, so reverting an edit clears it. Only reported by connector types that publish a package a user has to re-publish by hand — Microsoft Teams today.",
            "enum": [
              false,
              true
            ]
          },
          "managed": {
            "type": "object",
            "description": "Managed connector metadata exposed without leaking the manager connector or installation identifiers."
          },
          "name": {
            "type": "string",
            "description": "Connector name within the owning team."
          },
          "redirectUri": {
            "type": "string",
            "description": "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."
          },
          "reinstallAt": {
            "type": "number",
            "description": "Time when this connector started requiring reinstallation because an installation-affecting app-token grant changed."
          },
          "service": {
            "type": "string",
            "description": "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."
          },
          "supportedSubjectTypes": {
            "type": "array",
            "description": "Token subject types supported by the connector."
          },
          "supportsIcon": {
            "description": "Whether the connector icon can propagate to the provider.",
            "enum": [
              false,
              "maybe",
              true
            ]
          },
          "supportsInstallation": {
            "type": "boolean",
            "description": "Whether the connector supports an installation flow.",
            "enum": [
              false,
              true
            ]
          },
          "supportsRevocation": {
            "type": "boolean",
            "description": "Whether Connect can revoke tokens for this connector.",
            "enum": [
              false,
              true
            ]
          },
          "supportsTriggers": {
            "type": "boolean",
            "description": "Whether this connector type supports trigger webhooks. Derived from the type definition; indicates that `triggers` and `triggerDestinations` may be meaningful for this connector.",
            "enum": [
              false,
              true
            ]
          },
          "target": {
            "type": "string",
            "description": "Which of the service's products/surfaces this connector points at."
          },
          "triggerDestinations": {
            "type": "array",
            "description": "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`."
          },
          "triggers": {
            "type": "object",
            "description": "Incoming trigger configuration. Only present when enabled.",
            "required": [
              "enabled"
            ]
          },
          "type": {
            "type": "string",
            "description": "Connector implementation type.",
            "enum": [
              "api-key",
              "aws-alpha",
              "custom",
              "discord",
              "github",
              "linear",
              "linq",
              "microsoft-entra",
              "microsoft-teams",
              "oauth",
              "photon",
              "salesforce",
              "sendblue",
              "slack",
              "snowflake",
              "snowflake-wif"
            ]
          },
          "typeIcon": {
            "type": "string",
            "description": "Icon identifier supplied by the connector type."
          },
          "typeName": {
            "type": "string",
            "description": "Human-readable name of the connector type."
          },
          "uid": {
            "type": "string",
            "description": "Team-scoped UID. URL-encode this value before using it in `{connector}`."
          },
          "updatedAt": {
            "type": "number",
            "description": "Last update time in epoch milliseconds."
          },
          "updatedBy": {
            "description": "Principal that most recently updated the connector."
          },
          "userTokens": {
            "type": "object",
            "description": "User-token capabilities and known grants for the connector.",
            "required": [
              "crossInstallation",
              "supportsRefinement"
            ]
          },
          "website": {
            "type": "string",
            "description": "Public website for the connected service."
          }
        }
      }
    },
    "pagination": {
      "type": "object",
      "description": "Cursor for the next page.",
      "required": [
        "next"
      ],
      "properties": {
        "next": {
          "type": "string",
          "description": "Opaque value to pass as `cursor` on the next request.",
          "nullable": true
        }
      }
    }
  }
}
```

### 400: One of the provided values in the request query is invalid.

Content-Type: `application/json`

```json
{
  "type": "object",
  "description": "Error response returned by a Connect API operation.",
  "required": [
    "error"
  ],
  "properties": {
    "error": {
      "type": "object",
      "description": "Error details.",
      "required": [
        "code",
        "message"
      ],
      "properties": {
        "code": {
          "type": "string",
          "description": "Stable machine-readable error code."
        },
        "message": {
          "type": "string",
          "description": "Human-readable error message."
        }
      },
      "additionalProperties": true
    }
  }
}
```

### 401: The request is not authorized.

Content-Type: `application/json`

```json
{
  "type": "object",
  "description": "Error response returned by a Connect API operation.",
  "required": [
    "error"
  ],
  "properties": {
    "error": {
      "type": "object",
      "description": "Error details.",
      "required": [
        "code",
        "message"
      ],
      "properties": {
        "code": {
          "type": "string",
          "description": "Stable machine-readable error code."
        },
        "message": {
          "type": "string",
          "description": "Human-readable error message."
        }
      },
      "additionalProperties": true
    }
  }
}
```

### 403: You do not have permission to access this resource.

Content-Type: `application/json`

```json
{
  "type": "object",
  "description": "Error response returned by a Connect API operation.",
  "required": [
    "error"
  ],
  "properties": {
    "error": {
      "type": "object",
      "description": "Error details.",
      "required": [
        "code",
        "message"
      ],
      "properties": {
        "code": {
          "type": "string",
          "description": "Stable machine-readable error code."
        },
        "message": {
          "type": "string",
          "description": "Human-readable error message."
        }
      },
      "additionalProperties": true
    }
  }
}
```

### 410: The requested resource is no longer available.

Content-Type: `application/json`

```json
{
  "type": "object",
  "description": "Error response returned by a Connect API operation.",
  "required": [
    "error"
  ],
  "properties": {
    "error": {
      "type": "object",
      "description": "Error details.",
      "required": [
        "code",
        "message"
      ],
      "properties": {
        "code": {
          "type": "string",
          "description": "Stable machine-readable error code."
        },
        "message": {
          "type": "string",
          "description": "Human-readable error message."
        }
      },
      "additionalProperties": true
    }
  }
}
```

### 422: The request cannot be completed in the current state.

Content-Type: `application/json`

```json
{
  "type": "object",
  "description": "Error response returned by a Connect API operation.",
  "required": [
    "error"
  ],
  "properties": {
    "error": {
      "type": "object",
      "description": "Error details.",
      "required": [
        "code",
        "message"
      ],
      "properties": {
        "code": {
          "type": "string",
          "description": "Stable machine-readable error code."
        },
        "message": {
          "type": "string",
          "description": "Human-readable error message."
        }
      },
      "additionalProperties": true
    }
  }
}
```

---

## Related

- [connect endpoints](/docs/rest-api#connect)

- [REST API overview](/docs/rest-api)

- [OpenAPI spec](https://vercel.com/openapi.json) (machine-readable, all endpoints)

---

[View full sitemap](/docs/sitemap)
