canonical: https://jentic.com/apis/appveyor.com/appveyor

# AppVeyor REST API

The AppVeyor REST API drives AppVeyor's hosted continuous integration service for Windows, Linux, and macOS builds. Through 53 operations spanning 37 paths, it lets you create and configure projects, queue and cancel builds, manage deployments and environments, and administer team collaborators and roles. AppVeyor pairs cleanly with .NET, Windows-native, and cross-platform pipelines that need scripted access to build artefacts and deployment lifecycles.

## For AI agents

Trigger AppVeyor builds, manage projects and deployments, and administer collaborators across hosted Windows, Linux, and macOS CI runners.

## Scope

Does not host code, run package registries, or manage secrets outside AppVeyor - use for build, deployment, and collaborator management on AppVeyor only.

## Capabilities

- Queue a new build for a project from a branch or commit via /builds
- Cancel a running build or roll back a failed deployment
- Create and update projects with build configuration through /projects
- Manage deployments and deployment environments under /deployments and /environments
- List, invite, and revoke collaborators and update their roles via /collaborators and /roles
- Read build status, logs, and test results for a project's last build
- Configure environment variables and build settings per project

## Use cases

### Cross-Platform Build Trigger from External Systems

When a non-AppVeyor system - a custom dashboard, an internal release tool, or another CI provider - needs to kick off an AppVeyor build, it calls /builds with the project slug, branch, and optional commit. The API returns the build id which downstream systems poll for status. This is the standard pattern when AppVeyor sits inside a larger orchestration that includes other CI providers or release tooling.

Example prompt: POST /builds with accountName, projectSlug, and branch=master to queue a new build

### Deployment Promotion Workflow

After a successful AppVeyor build, a release manager promotes the resulting artefact through staging and production environments via the /deployments endpoint. The API tracks deployment history per environment so audit logs and rollback decisions are scriptable. Pair this with /environments to read the current state of each target before promoting.

Example prompt: POST /deployments with environmentName=production and buildVersion from the latest successful build

### Build Status Dashboard

An internal dashboard polls /projects and `/projects/{accountName}/{projectSlug}/history` to render build health across teams, surfacing pass/fail trends, average build duration, and the last failing commit per project. Combined with /collaborators it can attribute regressions to the responsible engineer for follow-up.

Example prompt: GET /projects to list all projects, then for each call `/projects/{accountName}/{projectSlug}/history`?recordsNumber=10 and aggregate pass rate

### AI Agent Build Orchestration

An AI agent uses Jentic to orchestrate AppVeyor builds inside a larger release flow - triggering builds, polling status, fetching logs on failure, and posting summaries to a Slack channel. Jentic securely stores the AppVeyor bearer token so the agent only sees scoped credentials at execution time.

Example prompt: Search Jentic for 'trigger appveyor build', call POST /builds, then poll `/builds/{accountName}/{projectSlug}/{buildVersion}` until status is 'success' or 'failed'

## Key endpoints

| Method | Path | Description |
| --- | --- | --- |
| GET | `/projects` | List all projects in the account |
| POST | `/builds` | Queue a new build for a project |
| DELETE | `/builds/{accountName}/{projectSlug}` | Cancel the currently running build |
| POST | `/deployments` | Trigger a deployment of a build to an environment |
| GET | `/environments` | List configured deployment environments |
| GET | `/collaborators` | List collaborators on the account |
| GET | `/roles` | List role definitions for collaborator assignment |

## Key resources

- **Project** — Manage AppVeyor project definitions and build configurations
- **Build** — Queue, cancel, and inspect builds and their logs
- **Deployment** — Promote successful builds across deployment targets
- **Environment** — Define and manage deployment environments
- **Collaborator** — Invite, list, and remove account collaborators
- **Role** — Assign roles and permissions to collaborators
- **User** — Read user profile and account information

## Why Jentic

- **Setup:** Wiring AppVeyor by hand means learning its long-lived API token scheme and threading account and project slugs through its build and deployment paths yourself. Through Jentic you install once, import the AppVeyor REST API from the API Directory, store the token once, and your agent calls it.
- **Permission scoping:** AppVeyor puts the account name and project slug in the URL path (`/builds/{accountName}/{projectSlug}`), so a rule can pin your agent to one project's builds. You choose the operations it may call, so destructive ones like deleting a build are not included unless you add them.
- **Credential handling:** Your AppVeyor API token is stored once, encrypted, by your own Jentic One instance and attached to the Authorization header at execution time. It never enters the agent's prompt, logs, or context.
- **Discovery method:** Agents search Jentic by intent such as 'trigger an AppVeyor build' or 'list projects', and Jentic returns the matching operation with its parameters and response schema so the agent calls the right endpoint without browsing the reference docs.

## Related APIs

- **CircleCI API** — Cloud CI service with stronger Linux/macOS focus and a similar build-trigger API
- **GitHub REST API** — Repository and webhook source that AppVeyor builds against
- **Bitrise API** — CI/CD focused on mobile (iOS, Android) with a similar trigger and status surface

## FAQ

### What authentication does the AppVeyor REST API use?

It uses an API token passed via the apiToken security scheme - typically as Authorization: Bearer {token}. You generate the token from the AppVeyor account settings page. Through Jentic the token is stored encrypted in your Jentic One instance and attached only at execution time.

### Can I trigger an AppVeyor build for a specific commit through the API?

Yes. POST /builds accepts accountName, projectSlug, branch, and optionally commitId. The response returns the queued build with its build id and version, which you can then poll via `/builds/{accountName}/{projectSlug}/{buildVersion}` to track status.

### How do I cancel a running AppVeyor build?

Send DELETE `/builds/{accountName}/{projectSlug}.` AppVeyor cancels the currently running or queued build for that project. The endpoint returns no body on success; verify by re-reading the build record afterward.

### What are the rate limits for the AppVeyor REST API?

AppVeyor does not publish hard rate limits in the spec; in practice, the API is tolerant of CI burst patterns but applies per-plan monthly build minute quotas. If a request is throttled the API returns 429. Check the AppVeyor pricing page for the build minute allocation on your plan.

### How do I deploy a successful AppVeyor build through Jentic?

Run pip install jentic, search 'trigger appveyor deployment', and load POST /deployments. Execute it with environmentName, accountName, projectSlug, and buildVersion. Jentic handles the bearer token and returns the deployment id for polling.

### Is this the official AppVeyor API spec?

The spec is maintained by the community at github.com/kevinoid/appveyor-swagger and tracks the official AppVeyor REST API. AppVeyor itself does not publish an OpenAPI document, so this third-party spec is the structured source the API community uses.

### Can I limit what my agent is allowed to do with the AppVeyor REST API?

Yes. Because Jentic One is self-hosted by you, your own rules decide which AppVeyor operations and credentials the agent can use. AppVeyor puts the account name and project slug in the URL path, such as `/builds/{accountName}/{projectSlug}`, so you can pin the agent to a single project's builds and deployments. You also choose the exact operations it may call, so destructive ones like DELETE `/builds/{accountName}/{projectSlug}` to cancel a build stay off the agent's list unless you add them.
