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

# List projects for a connector

```http
GET /v2/connect/connectors/{connector}/projects
```

List the projects connected to a connector and the environments where each connection is available.

## Authentication

**bearerToken**: HTTP bearer

## Path parameters

| Name | Type | Required | Description |
|---|---|---|---|
| `connector` | string | Yes | Stable connector ID or URL-encoded team-scoped UID. Examples: `scl_abc123` or `slack%2Fmy-bot`. |


## Query parameters

| Name | Type | Required | Description |
|---|---|---|---|
| `limit` | integer. min: 1; max: 100 | No | Maximum number of project connections to return. Defaults to 50. |
| `cursor` | string | No | Cursor from `pagination.next` on the previous response. |
| `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

```typescript
const response = await fetch('https://api.vercel.com/v2/connect/connectors/connector/projects?limit=123&cursor=string&teamId=string&slug=string', {
  method: 'GET',
  headers: {
    'Authorization': 'Bearer YOUR_ACCESS_TOKEN',
    'Content-Type': 'application/json',
  },
});

const data = await response.json();
console.log(data);
```

### Next.js

```typescript
'use server';

export async function callEndpoint() {
  const response = await fetch('https://api.vercel.com/v2/connect/connectors/connector/projects?limit=123&cursor=string&teamId=string&slug=string', {
    method: 'GET',
    headers: {
      'Authorization': `Bearer ${process.env.VERCEL_ACCESS_TOKEN}`,
      'Content-Type': 'application/json',
    },
    next: { revalidate: 3600 }
  });

  if (!response.ok) {
    throw new Error('Request failed');
  }

  return response.json();
}
```

### cURL

```bash
curl -X GET 'https://api.vercel.com/v2/connect/connectors/connector/projects?limit=123&cursor=string&teamId=string&slug=string' \
  -H 'Authorization: Bearer YOUR_ACCESS_TOKEN' \
  -H 'Content-Type: application/json'
```

## Example response

```json
{
  "projects": [
    {
      "connectorId": "example_id",
      "project": {
        "id": "icfg_1234567890",
        "name": "Example Name",
        "customEnvironments": [
          {}
        ]
      },
      "enabledEnvironments": [],
      "createdAt": "123",
      "updatedAt": "123"
    }
  ],
  "pagination": {
    "next": "string"
  }
}
```

## Responses

### 200: A page of project connections for the connector.

Content-Type: `application/json`

```json
{
  "type": "object",
  "description": "Page of projects connected to a connector.",
  "required": [
    "pagination",
    "projects"
  ],
  "properties": {
    "projects": {
      "type": "array",
      "description": "Project connections in this page.",
      "items": {
        "type": "object",
        "description": "A connection between a connector and a Vercel project, including the environments where the connector is enabled.",
        "required": [
          "connectorId",
          "createdAt",
          "enabledEnvironments",
          "project",
          "updatedAt"
        ],
        "properties": {
          "connectorId": {
            "type": "string",
            "description": "Stable `scl_` connector ID, even when the request used a UID."
          },
          "project": {
            "type": "object",
            "description": "Vercel project connected to the connector.",
            "required": [
              "id",
              "name"
            ]
          },
          "enabledEnvironments": {
            "type": "array",
            "description": "Environments where the connector is enabled for the project."
          },
          "createdAt": {
            "type": "number",
            "description": "Time when the project connection was created, in epoch milliseconds."
          },
          "updatedAt": {
            "type": "number",
            "description": "Time when the project connection was last updated, in epoch milliseconds."
          }
        }
      }
    },
    "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
    }
  }
}
```

### 404: The requested resource was not found.

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://openapi.vercel.sh/) (machine-readable, all endpoints)

---

[View full sitemap](/docs/sitemap)
