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

# API Reference

> Complete REST API documentation

## Base URL

```
https://api.getagentdrive.com
```

## Authentication

Most endpoints require a Bearer token:

```
Authorization: Bearer agd_your_key
```

The provision endpoint (`POST /v0/drives/provision`) does not require authentication.

## Response format

All responses follow this structure:

```json theme={null}
// Success
{ "data": { ... } }

// Error
{
  "error": {
    "code": "NOT_FOUND",
    "message": "File not found"
  }
}
```

## Standard headers

Every response includes:

| Header                  | Description                |
| ----------------------- | -------------------------- |
| `X-Request-Id`          | Unique request identifier  |
| `X-RateLimit-Limit`     | Max requests per minute    |
| `X-RateLimit-Remaining` | Remaining requests         |
| `X-RateLimit-Reset`     | Seconds until limit resets |

## Endpoints

### Drives

* `POST /v0/drives/provision` — Provision a drive (no auth required)
* `POST /v0/drives/claim` — Claim an unclaimed drive
* `POST /v0/drives` — Create a drive (dashboard users)
* `GET /v0/drives` — List drives (supports `?slug=` query)
* `GET /v0/drives/:id` — Get a drive
* `DELETE /v0/drives/:id` — Delete a drive

### Files

* `POST /v0/files` — Upload a file
* `GET /v0/files` — List files
* `GET /v0/files/:id` — Get file info
* `GET /v0/files/:id/download` — Download a file
* `PATCH /v0/files/:id` — Update a file
* `DELETE /v0/files/:id` — Delete a file
* `POST /v0/files/:id/copy` — Copy a file
* `POST /v0/files/:id/move` — Move a file
* `POST /v0/files/bulk-delete` — Bulk delete files
* `POST /v0/files/:id/extract` — Extract file content
* `POST /v0/files/:id/presigned-url` — Generate presigned URL
* `GET /v0/search` — Search files

### Folders

* `POST /v0/folders` — Create a folder
* `DELETE /v0/folders` — Delete a folder

### API Keys

* `POST /v0/keys` — Create a key
* `GET /v0/keys` — List keys
* `DELETE /v0/keys/:id` — Revoke a key

### Account

* `GET /v0/account` — Account info
* `GET /v0/account/usage` — Usage stats

## Slug support

Anywhere a `drive_id` parameter is accepted (query params, request body), you can pass a drive slug instead of a UUID:

```bash theme={null}
# Both work:
GET /v0/files?drive_id=d7f3e-abc-123
GET /v0/files?drive_id=alice/research-q1
```
