Integrations
Vercel
Connect Conductor to Vercel to manage deployments, domains, environment variables, and projects. Covers token creation, finding IDs, deploy hooks, and all available tools.
Creating an access token
- 1.Go to vercel.com/account/settings/tokens.
- 2.Click Create. Give the token a name (e.g., "Conductor").
- 3.Choose scope: Full Account for all operations, or a limited scope for specific teams.
- 4.Set an expiration or choose "No expiration" for long-lived automation tokens.
- 5.Copy the token immediately — it is only shown once.
Full vs limited scope
Full-scope tokens can access all teams the user belongs to. Limited-scope tokens are scoped to a single team. If you receive 403 errors on team operations, your token may be scoped to the wrong team or to personal only.
Finding Team ID and Project ID
// Team ID — go to vercel.com/[your-team]/settings
// Under "General" tab, look for "Team ID"
// Starts with "team_"
// Project ID — go to vercel.com/[team]/[project]/settings
// Under "General" tab, look for "Project ID"
// Starts with "prj_"Personal accounts do not have a Team ID. Leave teamId empty or omit it entirely when using a personal account token.
Conductor config
The projectId sets the default project for all project-scoped tools. You can override it per-call by passing the projectId parameter directly to any tool that accepts it.
{
"plugins": {
"vercel": {
"token": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"teamId": "team_xxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"projectId": "prj_xxxxxxxxxxxxxxxxxxxxxxxxxxxx"
}
}
}Available tools
| Tool | Description |
|---|---|
| vercel.deployment.list | List recent deployments for a project. Returns URL, state, branch, and created time. |
| vercel.deployment.get | Get full details for a deployment by deployment ID. |
| vercel.deployment.create | Create a new deployment from a Git ref or file bundle. |
| vercel.deployment.cancel | Cancel a queued or building deployment by deployment ID. |
| vercel.domain.list | List all domains attached to the team or a specific project. |
| vercel.domain.add | Add a domain to a project. Returns DNS configuration required. |
| vercel.env.list | List all environment variables for a project across all environments. |
| vercel.env.add | Add or update an environment variable for a project. |
| vercel.env.delete | Delete an environment variable by its ID. |
| vercel.project.list | List all projects in the team or personal account. |
| vercel.project.get | Get metadata for a project including framework, repo, and domains. |
| vercel.logs.get | Retrieve build or runtime logs for a deployment. |
Deploy hooks
Deploy hooks let you trigger a deployment without API credentials — useful for external systems or simple cron-based redeploys. Create one in project settings and trigger it with a plain HTTP POST.
// Create a deploy hook in:
// Project Settings → Git → Deploy Hooks
// Name: "Conductor trigger"
// Branch: main (or any branch)
// Vercel provides a URL like:
// https://api.vercel.com/v1/integrations/deploy/xxxxxxxx/yyyyyyyy
// Trigger it with:
curl -X POST https://api.vercel.com/v1/integrations/deploy/xxxxxxxx/yyyyyyyycurl -X POST \
"https://api.vercel.com/v1/integrations/deploy/YOUR_HOOK_ID/YOUR_HOOK_TOKEN"Environment variables
Vercel environment variables can target specific environments: production, preview, and development. The type field controls storage: encrypted for secrets (never shown after save), plain for non-sensitive values, sensitive for values masked in logs.
// Add an environment variable to a project
// vercel.env.add example parameters:
{
"tool": "vercel.env.add",
"projectId": "prj_xxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"key": "DATABASE_URL",
"value": "postgresql://user:pass@host/db",
"target": ["production", "preview", "development"],
"type": "encrypted"
}Rate limits
The Vercel REST API enforces 200 requests per minute per access token. Deployment creation is additionally limited to the number of deployments included in your plan (Hobby: 100/day, Pro: unlimited). Conductor retries 429 responses with exponential backoff. To avoid hitting limits when polling deployment status, use vercel.deployment.get once rather than repeatedly polling.
Common errors
| Error | Cause | Fix |
|---|---|---|
| 403 — missing scope | The access token does not have permission for the requested operation. | Create a new token at vercel.com/account/settings/tokens with full scope, or add the required scope to a limited token. |
| team not found | The teamId does not match any team the token has access to. | Copy the Team ID from team settings. Ensure the token belongs to a user who is a member of that team. |
| project not found | The projectId does not exist or does not belong to the configured team. | Copy the Project ID from project settings. Verify teamId and projectId match the same team/project. |
| deployment not cancellable | The deployment is already in a terminal state (READY, ERROR, or CANCELED). | Only deployments in QUEUED or BUILDING state can be cancelled. Check current state with vercel.deployment.get first. |
| rate limit exceeded | Too many API requests in a short window. | Vercel enforces 200 requests per minute per token. Conductor backs off automatically, but reduce frequency of polling if this occurs repeatedly. |
| Invalid token | Token was deleted, expired, or belongs to a different account. | Create a new token at vercel.com/account/settings/tokens. Update the Conductor config. |