> ## Documentation Index
> Fetch the complete documentation index at: https://www.qovery.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.
# Getting Started with Qovery API
> Learn how to authenticate and use the Qovery API
## Introduction
Welcome to the Qovery API Reference! The Qovery API is a REST API that allows you to programmatically manage your entire infrastructure.
## Authentication
All API requests require authentication using an API token. Include your API token in the `Authorization` header of every request:
```bash theme={null}
Authorization: Token YOUR_API_TOKEN
```
**Token vs Bearer**: Qovery API supports two authentication schemes:
* **`Token`** (Recommended): Use for API tokens generated from Qovery Console. Format: `Authorization: Token `
* **`Bearer`**: Use for JWT tokens only (e.g., from OAuth flows). Format: `Authorization: Bearer `
For third-party API integrations and programmatic access, always use `Token` authentication with API tokens. JWT tokens with `Bearer` are intended for internal use cases only and are not recommended for external API calls.
### Creating an API Token
1. Log in to the [Qovery Console](https://console.qovery.com)
2. Navigate to **Organization Settings** → **API Tokens**
3. Click **Generate Token**
4. Give your token a descriptive name and set appropriate permissions
5. Copy and save the token securely (it will only be displayed once)
### Example Request
```bash theme={null}
curl -X GET "https://api.qovery.com/organization" \
-H "Authorization: Token YOUR_API_TOKEN" \
-H "Content-Type: application/json"
```
Replace `YOUR_API_TOKEN` with your actual API token generated from Qovery Console.
### Token Security
API tokens provide access to your infrastructure. Keep them secure:
* Never commit tokens to version control
* Store them in environment variables or secrets management systems
* Rotate tokens regularly
* Use minimal required permissions
## Official SDKs
Qovery provides official client libraries to simplify API integration:
### TypeScript/JavaScript
Install via npm:
```bash theme={null}
npm install @qovery/client
```
Usage:
```typescript theme={null}
import { QoveryClient } from '@qovery/client';
const client = new QoveryClient({
apiToken: process.env.QOVERY_API_TOKEN
});
// Get organization
const org = await client.organization.get();
console.log(`Organization: ${org.name}`);
// List projects
const projects = await client.projects.list();
projects.forEach(project => {
console.log(`Project: ${project.name}`);
});
```
**Resources:**
* [TypeScript SDK on npm](https://www.npmjs.com/package/@qovery/client)
* [GitHub Repository](https://github.com/Qovery/qovery-client-typescript)
### Go
Install via go get:
```bash theme={null}
go get github.com/qovery/qovery-client-go
```
Usage:
```go theme={null}
package main
import (
"context"
"fmt"
"os"
"github.com/qovery/qovery-client-go"
)
func main() {
token := os.Getenv("QOVERY_API_TOKEN")
client := qovery.NewAPIClient(&qovery.Configuration{
DefaultHeader: map[string]string{
"Authorization": fmt.Sprintf("Token %s", token),
},
})
ctx := context.Background()
// Get organization
org, _, err := client.OrganizationApi.GetOrganization(ctx)
if err != nil {
panic(err)
}
fmt.Printf("Organization: %s\n", org.Name)
// List projects
projects, _, err := client.ProjectsApi.ListProjects(ctx, org.Id)
if err != nil {
panic(err)
}
for _, project := range projects.Results {
fmt.Printf("Project: %s\n", project.Name)
}
}
```
**Resources:**
* [Go SDK on GitHub](https://github.com/Qovery/qovery-client-go)
* [Go Package Documentation](https://pkg.go.dev/github.com/qovery/qovery-client-go)
## Other Languages
For other languages, you can:
1. **Use the REST API directly** - All endpoints are documented in this reference
2. **Generate a client** - Use the [OpenAPI specification](https://raw.githubusercontent.com/qovery/qovery-openapi-spec/main/openapi.yaml) with code generation tools like:
* [OpenAPI Generator](https://openapi-generator.tech/)
* [Swagger Codegen](https://swagger.io/tools/swagger-codegen/)
## Base URL
All API requests should be made to:
```
https://api.qovery.com
```
## API Versioning
The current API version is included in the URL path:
```
https://api.qovery.com
```
We maintain backward compatibility within a major version. Breaking changes will result in a new major version (v2, v3, etc.).
## Rate Limits
* **1000 requests per hour** per API token
* Rate limit headers are included in all responses:
* `X-RateLimit-Limit`: Maximum requests per window
* `X-RateLimit-Remaining`: Remaining requests
* `X-RateLimit-Reset`: Time when limit resets (Unix timestamp)
If you exceed the rate limit, you'll receive a `429 Too Many Requests` response.
## Response Format
All successful responses return JSON:
```json theme={null}
{
"id": "resource-id",
"name": "resource-name",
"created_at": "2024-01-01T00:00:00.000Z",
"updated_at": "2024-01-01T00:00:00.000Z"
}
```
## Error Handling
Error responses include a status code and error details:
```json theme={null}
{
"status": 400,
"error": "Bad Request",
"message": "Validation error: name is required"
}
```
### Common Status Codes
| Code | Description |
| ----- | --------------------------------------- |
| `200` | Success |
| `201` | Created |
| `204` | No Content |
| `400` | Bad Request - Invalid input |
| `401` | Unauthorized - Invalid or missing token |
| `403` | Forbidden - Insufficient permissions |
| `404` | Not Found - Resource doesn't exist |
| `429` | Too Many Requests - Rate limit exceeded |
| `500` | Internal Server Error |
## Pagination
List endpoints support pagination:
```bash theme={null}
GET /projects?page=1&page_size=20
```
Response includes pagination metadata:
```json theme={null}
{
"results": [...],
"pagination": {
"page": 1,
"page_size": 20,
"total_count": 150,
"total_pages": 8
}
}
```
## Try It Out
Use the interactive API reference on the right to explore endpoints and make test requests. Each endpoint includes:
* **Request parameters** - Path, query, and body parameters
* **Example requests** - Code samples in multiple languages
* **Responses** - Expected response formats
* **Try it out** - Test the API directly from the documentation
## Next Steps
Browse all available API endpoints in the reference
See practical examples and common workflows
Use the official TypeScript client
Use the official Go client
## Support
Need help with the API?
* **GitHub Issues**: [Report bugs or request features](https://github.com/Qovery/qovery-client-go/issues)
* **Email Support**: [support@qovery.com](mailto:support@qovery.com)