> ## Documentation Index
> Fetch the complete documentation index at: https://mintlify.com/cvat-ai/cvat/llms.txt
> Use this file to discover all available pages before exploring further.

# REST API Overview

> Introduction to the CVAT REST API

## Introduction

The CVAT REST API provides programmatic access to all Computer Vision Annotation Tool features. You can use the API to create and manage projects, tasks, jobs, annotations, and more.

## Base URL

All API requests should be made to:

```
https://app.cvat.ai/api
```

For self-hosted instances, replace the domain with your instance URL.

## API Version

The current API version is **2.58.1**.

The API version follows semantic versioning and is included in the response headers and documentation.

## Request Format

All requests should include the appropriate `Content-Type` header:

* `application/json` for JSON payloads
* `multipart/form-data` for file uploads
* `application/vnd.cvat+json` for CVAT-specific content

## Response Format

All API responses use the `application/vnd.cvat+json` content type and return JSON-formatted data.

### Success Responses

* **200 OK** - Request succeeded
* **201 Created** - Resource created successfully
* **202 Accepted** - Request accepted, processing asynchronously
* **204 No Content** - Request succeeded with no response body

### Error Responses

* **400 Bad Request** - Invalid request parameters
* **401 Unauthorized** - Authentication required
* **403 Forbidden** - Insufficient permissions
* **404 Not Found** - Resource not found
* **405 Method Not Allowed** - HTTP method not supported
* **409 Conflict** - Request conflicts with current state
* **410 Gone** - Resource no longer available

### Example Response

```json theme={null}
{
  "id": 1,
  "name": "My Project",
  "owner": {
    "id": 1,
    "username": "admin"
  },
  "created_date": "2024-01-15T10:30:00Z",
  "updated_date": "2024-01-15T10:30:00Z"
}
```

## Pagination

List endpoints support pagination with the following query parameters:

<ParamField query="page" type="integer">
  Page number within the paginated result set
</ParamField>

<ParamField query="page_size" type="integer">
  Number of results to return per page
</ParamField>

### Paginated Response Format

```json theme={null}
{
  "count": 100,
  "next": "https://app.cvat.ai/api/projects?page=2",
  "previous": null,
  "results": [
    // Array of resources
  ]
}
```

## Filtering

Many endpoints support advanced filtering using JSON Logic syntax:

<ParamField query="filter" type="string">
  JSON Logic filter expression for complex queries
</ParamField>

### Example Filter

Get all resources created by a specific user:

```json theme={null}
{"and":[{"==":[{"var":"owner"},"username"]}]}
```

## Sorting

List endpoints support sorting with the `sort` parameter:

<ParamField query="sort" type="string">
  Field name to sort by (prefix with `-` for descending order)
</ParamField>

### Example

```
/api/projects?sort=-updated_date
```

## Search

Many endpoints support text search:

<ParamField query="search" type="string">
  Search term to filter results
</ParamField>

## Organizations

When working within an organization context, include the organization identifier:

<ParamField header="X-Organization" type="string">
  Organization unique slug
</ParamField>

Alternatively, use query parameters:

<ParamField query="org" type="string">
  Organization unique slug
</ParamField>

<ParamField query="org_id" type="integer">
  Organization identifier
</ParamField>

## Asynchronous Operations

Some operations (imports, exports, backups) are processed asynchronously and return a request ID:

```json theme={null}
{
  "rq_id": "abc123-def456"
}
```

Check the operation status:

```bash theme={null}
curl -X GET "https://app.cvat.ai/api/requests/abc123-def456" \
  -H "Authorization: Token <your_token>"
```

## Rate Limiting

API requests may be subject to rate limiting. Check response headers for rate limit information:

* `X-RateLimit-Limit` - Maximum requests allowed
* `X-RateLimit-Remaining` - Requests remaining
* `X-RateLimit-Reset` - Time when limit resets

## Next Steps

<CardGroup cols={2}>
  <Card title="Authentication" icon="key" href="/api/authentication">
    Learn how to authenticate API requests
  </Card>

  <Card title="Projects" icon="folder" href="/api/projects">
    Manage annotation projects
  </Card>

  <Card title="Tasks" icon="list-check" href="/api/tasks">
    Create and manage annotation tasks
  </Card>

  <Card title="Annotations" icon="tag" href="/api/annotations">
    Work with annotation data
  </Card>
</CardGroup>
