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

# Qovery API

The Qovery API deploys and runs applications, containers, databases, and jobs on Kubernetes clusters in your own cloud account, organised into organizations, projects, and environments. It deploys, stops, restarts, redeploys, and clones whole environments, deploys a single application at a chosen git_commit_id, and reports status and deployment logs. It also manages clusters, deployment rules and stages, custom domains, and environment variables and secrets at project, environment, and application level.

## For AI agents

Deploy, stop, restart, and clone Qovery environments and applications, read their status and deployment logs, and manage environment variables, secrets, clusters, and custom domains.

## Scope

Does not host source code, run CI test suites, or bill cloud usage. Use for deploying and operating applications, databases, and environments on Qovery-managed clusters only.

## Capabilities

- Deploy, stop, restart, redeploy, or cancel the deployment of a whole environment
- Deploy one application at a specific git_commit_id and read its status and deployment history
- Clone an environment under a new name, optionally onto another cluster_id or project_id, for previews
- Add, override, alias, or import environment variables and secrets for an application
- Order deployments with deployment stages and project deployment rules
- Create and deploy Kubernetes clusters for an organization and list their deployment history
- Attach custom domains to an application and check their configuration

## Use cases

### Agent-driven deploys through Jentic

A coding agent finishes a change and ships it: through Jentic it calls the Qovery deploy operation for one application with the new git_commit_id, then polls application status and reads the deployment logs. The developer's own Jentic One instance injects the Qovery token, and rules keep the agent to deploy and read operations on that application.

Example prompt: POST `/application/{applicationId}/deploy` with git_commit_id 'a1b2c3d', then poll GET `/application/{applicationId}/status` until the deployment finishes

### Preview environments per branch

Teams review features in throwaway copies of staging. POST `/environment/{environmentId}/clone` requires a name and accepts cluster_id, project_id, and mode, after which the clone is deployed and can be stopped with POST `/environment/{environmentId}/stop` when the review ends.

Example prompt: POST `/environment/{environmentId}/clone` with name 'preview-feature-login', then POST `/environment/{environmentId}/deploy` using the id of the new clone

### Configuration and secrets management

Applications need configuration at the right scope. Qovery keeps environment variables and secrets at project, environment, and application level, and an application variable can be overridden or aliased, so an agent can roll out a new setting without editing every service.

Example prompt: POST `/application/{applicationId}/secret` with key 'STRIPE_KEY' and its value, then POST `/application/{applicationId}/redeploy`

### Deployment health monitoring

Ops checks start with status. GET `/environment/{environmentId}/statuses` returns the environment and service statuses, and GET `/environment/{environmentId}/logs` returns the deployment logs, which an agent can summarise when a deploy fails.

Example prompt: GET `/environment/{environmentId}/statuses`, and if any service has failed, GET `/environment/{environmentId}/logs` and summarise the error

## Key endpoints

| Method | Path | Description |
| --- | --- | --- |
| POST | `/environment/{environmentId}/deploy` | Deploy an environment |
| POST | `/application/{applicationId}/deploy` | Deploy an application |
| GET | `/application/{applicationId}/status` | Get application status |
| POST | `/environment/{environmentId}/clone` | Clone an environment |
| POST | `/environment/{environmentId}/stop` | Stop an environment |
| GET | `/environment/{environmentId}/logs` | List environment deployment logs |
| POST | `/application/{applicationId}/secret` | Add a secret to an application |
| GET | `/organization/{organizationId}/cluster` | List clusters |

## Key resources

- **Organizations and projects** — Top-level grouping for clusters, projects, members, and environments
- **Environments** — Deploy, stop, restart, redeploy, clone, status, and logs
- **Applications** — Deploy by commit, status, history, custom domains, and network settings
- **Clusters** — Create, deploy, and stop Kubernetes clusters with deployment history
- **Environment variables and secrets** — Scoped configuration with overrides, aliases, and import
- **Deployment rules and stages** — Ordering and scheduling of deployments

## AI readiness

This API is usable in Jentic One now. Its AI-readiness score against Jentic's framework shows where it stands today and where improvements would make it even easier for agents to use.

- **Score:** 53 / 100
- **Maturity:** Foundational
- **Dimensions:**
  - Foundational Compliance: 48 / 100
  - Developer Experience & Jentic Compatibility: 64 / 100
  - AI-Readiness & Agent Experience: 51 / 100
  - Agent Usability: 43 / 100
  - Security: 63 / 100
  - AI Discoverability: 67 / 100
- **View full report:** https://jentic.com/apis/qovery.com/qovery/scorecard
- **How the score is calculated:** https://docs.jentic.com/reference/api-readiness-framework/overview/
- **More about the dimensions:** https://docs.jentic.com/reference/api-readiness-framework/specification/#dimensional-model-overview

### Score it yourself

Every API in the directory is allowlisted, so you can re-score it with no key required.

- **Score your own API:** https://jentic.com/scorecard.md
- **Scoring CLI agent skill:** https://github.com/jentic/jentic-api-scorecard/blob/main/skills/jentic-api-scorecard/SKILL.md

```sh
npx @jentic/api-scorecard-cli score <openapi-url>
```

## Why Jentic

- **Setup:** Wiring Qovery by hand means choosing between its expiring JWT and its Token-prefixed API token in the Authorization header, then chaining organization, project, environment, and application ids across calls. Through Jentic you install once, import Qovery from the API Directory, store the token once, and your agent calls it.
- **Permission scoping:** Qovery puts the environment and application ids in the URL path (`/environment/{environmentId}/deploy`, `/application/{applicationId}/deploy`), so a rule can pin your agent to one environment, such as staging. You choose the operations it may call, so destructive ones like cluster deletion or application uninstall are not included unless you add them.
- **Credential handling:** Your Qovery token is stored once, encrypted, by your own Jentic One instance and injected at execution time. It never enters the agent's prompt, logs, or context.
- **Discovery method:** Agents search Jentic by intent such as 'deploy an environment' or 'clone an environment for a preview', and Jentic returns the matching Qovery operation with its input schema so the agent finds the right call among hundreds without browsing the reference docs.

## Related APIs

- **Render API** — Managed hosting for web services, workers, and databases
- **Railway API** — Managed app and database deployment platform
- **DigitalOcean API** — Cloud provider for droplets, Kubernetes, and managed databases
- **GitHub API** — Source control for the repositories Qovery deploys

## FAQ

### What authentication does the Qovery API use?

The Qovery OpenAPI spec declares two schemes. bearerAuth is an HTTP bearer JWT, meant for human OIDC sessions and subject to a TTL. ApiKeyAuth is an API token sent in the Authorization header as 'Token' followed by the value, generated for machine-to-machine use without a TTL. For an agent, the API token is the usual choice; Jentic stores it encrypted in your own Jentic One instance and injects it at execution time.

### Can I deploy a specific commit with the Qovery API?

Yes. POST `/application/{applicationId}/deploy` requires git_commit_id in the body and deploys that commit. To redeploy the current version use POST `/application/{applicationId}/redeploy`, and to ship every service in an environment use POST `/environment/{environmentId}/deploy.`

### What are the rate limits for the Qovery API?

The OpenAPI spec does not specify rate limits. Check the Qovery documentation at https://hub.qovery.com/docs for current limits.

### How do I deploy an environment with the Qovery API through Jentic?

Install Jentic One, import the Qovery API from the Jentic API Directory, and store your Qovery API token. Your agent searches for 'deploy an environment', Jentic returns POST `/environment/{environmentId}/deploy` with its schema, and the agent calls it with the environment id. To run it on your own infrastructure, install Jentic One from its GitHub repo.

### Is there a Qovery MCP server?

You don't need an MCP server to give your agent Qovery. Jentic connects it directly from the API Directory: import it, store your credential once, and your agent calls it, discovering operations on demand rather than loading hundreds of tool definitions into its context.

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

Yes. Write a rule that allows POST `/environment/{environmentId}/deploy`, GET `/environment/{environmentId}/statuses`, and GET `/environment/{environmentId}/logs` for your staging environment id only. The agent can then ship and check staging, while production, cluster operations, and secret edits stay outside its reach. Every call it makes is logged.

### Can the Qovery API create preview environments?

Yes. POST `/environment/{environmentId}/clone` copies an environment and requires a name; you can also pass cluster_id, project_id, mode, and apply_deployment_rule. Deploy the clone with POST `/environment/{environmentId}/deploy` and stop it with POST `/environment/{environmentId}/stop` when you are done.
