# Overview

> Base URL, authentication, response shapes, pagination, and status flows.

Programmatic access to issues, conversations, products, and releases. Authenticate with an API key from your workspace settings.

## Base URL

```
https://app.getresolved.ai/api/v1
```

## Authentication

Send your key in the `Authorization` header. Keys start with `gr_` and are scoped to a single workspace — every response is filtered to that workspace.

```bash
curl https://app.getresolved.ai/api/v1/issues?status=pending \
  -H "Authorization: Bearer gr_..."
```

## Response format

List endpoints return:

```json
{
  "data": [],
  "pagination": { "total": 0, "limit": 50, "offset": 0 }
}
```

Single-resource endpoints return:

```json
{ "data": { } }
```

Errors return:

```json
{ "error_code": "...", "detail": "..." }
```

## Pagination

All list endpoints accept `limit` (default 50, max 200) and `offset` (default 0).

## Status flows

- **Issues**: `pending` → `in_progress` → `done` → `released` | `dismissed`. `released` is set automatically when the issue is linked to a release via `POST /releases`. `icebox` is also a valid status, for parking issues you want to keep without committing to.
- **Conversations**: `open` → `in_progress` → `resolved` | `dismissed`.

## Discovery

- [OpenAPI 3.1 spec](https://app.getresolved.ai/api/v1/openapi.json) — machine-readable schema for tooling and SDK generation.
- [llms.txt](https://app.getresolved.ai/api/v1/llms.txt) — full endpoint reference in plain markdown, optimized for AI agents.

## Deprecated aliases

- `/api/v1/actions` is a deprecated alias for `/api/v1/issues` and works identically.
- `/api/v1/items` is a deprecated alias for `/api/v1/conversations` and works identically.

