conductorv2

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. 1.Go to vercel.com/account/settings/tokens.
  2. 2.Click Create. Give the token a name (e.g., "Conductor").
  3. 3.Choose scope: Full Account for all operations, or a limited scope for specific teams.
  4. 4.Set an expiration or choose "No expiration" for long-lived automation tokens.
  5. 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

where to find IDs
// 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.

conductor.config.json
{
  "plugins": {
    "vercel": {
      "token": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
      "teamId": "team_xxxxxxxxxxxxxxxxxxxxxxxxxxxx",
      "projectId": "prj_xxxxxxxxxxxxxxxxxxxxxxxxxxxx"
    }
  }
}

Available tools

ToolDescription
vercel.deployment.listList recent deployments for a project. Returns URL, state, branch, and created time.
vercel.deployment.getGet full details for a deployment by deployment ID.
vercel.deployment.createCreate a new deployment from a Git ref or file bundle.
vercel.deployment.cancelCancel a queued or building deployment by deployment ID.
vercel.domain.listList all domains attached to the team or a specific project.
vercel.domain.addAdd a domain to a project. Returns DNS configuration required.
vercel.env.listList all environment variables for a project across all environments.
vercel.env.addAdd or update an environment variable for a project.
vercel.env.deleteDelete an environment variable by its ID.
vercel.project.listList all projects in the team or personal account.
vercel.project.getGet metadata for a project including framework, repo, and domains.
vercel.logs.getRetrieve 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.

creating a deploy hook
// 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/yyyyyyyy
triggering a deploy hook
curl -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.

vercel.env.add example
// 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

ErrorCauseFix
403 — missing scopeThe 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 foundThe 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 foundThe 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 cancellableThe 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 exceededToo 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 tokenToken was deleted, expired, or belongs to a different account.Create a new token at vercel.com/account/settings/tokens. Update the Conductor config.