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

# API Overview

> Overview of the Tiro API for AI-powered note-taking

The Tiro API gives you programmatic access to notes, transcripts, summaries, and folders.

## Base URL

All API requests should be made to:

```
https://api.tiro.ooo
```

## Workspaces

Every Tiro API request runs inside a single **workspace**. Your API key is scoped to one workspace and reaches only that workspace's resources — its notes, transcripts, summaries, and folders. A key never crosses into another workspace.

Call `GET /v1/external/workspaces` to list the workspaces your account can reach; each entry carries a `guid`, a `name`, and `isWikiEnabled`. Call `GET /v1/external/workspaces/me` to resolve the workspace your current key maps to.

Workspace-scoped resources expose a `workspaceGuid`. Folder endpoints take it in the path — `POST /v1/external/workspaces/{workspaceGuid}/folders` creates a folder inside a specific workspace. If your integration spans several workspaces, create one key per workspace.

## Rate Limits

To ensure fair usage and system stability, the Tiro API allows up to 600 requests per 60 seconds per API key. When you exceed it, the response includes `Retry-After` and `X-RateLimit-*` headers telling you when to retry.

### Rate Limit Exceeded

When rate limits are exceeded, you receive a `429 Too Many Requests` response:

```json theme={null}
{
  "error": {
    "code": 429001,
    "message": "Rate limit exceeded. Try again in 60 seconds",
    "detail": "Limit of 600 requests per 60 seconds exceeded"
  }
}
```

## Response Format

All API responses follow a consistent JSON format:

### Success Response (List)

```json theme={null}
{
  "content": [...],
  "nextCursor": "opaque-cursor-string"
}
```

### Success Response (Single Resource)

```json theme={null}
{
  "id": "resource-id",
  "createdAt": "2024-01-01T00:00:00Z",
  ...
}
```

### Error Response

Errors include detailed information for debugging:

```json theme={null}
{
  "error": {
    "code": 400000,
    "message": "Human readable error message",
    "detail": null
  }
}
```
