# Обзор API

> Автоматизируйте PentAGI через REST и GraphQL — создайте Bearer-токен, запускайте flows из CI/CD, получайте результаты в свои инструменты и генерируйте клиент.

Большая часть функций веб-интерфейса доступна через API — запускайте [flows](https://pentagi.com/ru/docs/glossary/#flow) из CI/CD, получайте результаты в собственные инструменты или создавайте интеграции.

| API     | Конечная точка    | Интерактивная документация   |
| ------- | ----------------- | ---------------------------- |
| GraphQL | `/api/v1/graphql` | `/api/v1/graphql/playground` |
| REST    | `/api/v1/...`     | `/api/v1/swagger/index.html` |

## [Создание токена](https://pentagi.com/ru/docs/api/overview/#create-a-token)

1. В веб-интерфейсе перейдите в раздел **Settings → API Tokens**.
2. Нажмите **Create Token**, при необходимости задайте имя и установите срок действия от 1 минуты до 3 лет.
3. Скопируйте токен сразу после создания — он отображается только один раз.

Токен привязан к вашей учётной записи и наследует разрешения вашей роли. Пользователи, роли и токены API, шаблоны flow, избранное и ваши настройки управляются только из авторизованного сеанса браузера: токен получает ошибку 403 на маршрутах REST `/users`, `/roles` и `/tokens`, а также ошибку от соответствующих операций GraphQL.

## [Обращение к API](https://pentagi.com/ru/docs/api/overview/#call-the-api)

```bash
curl -X POST https://your-pentagi-host:8443/api/v1/graphql \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"query": "{ flows { id title status } }"}'

curl https://your-pentagi-host:8443/api/v1/flows/ \
  -H "Authorization: Bearer YOUR_API_TOKEN"
```

Запустите flow с помощью мутации GraphQL:

```graphql
mutation CreateFlow {
  createFlow(modelProvider: "openai", input: "Test the security of https://example.com") {
    id
    title
    status
    createdAt
  }
}
```

## [Генерация клиента](https://pentagi.com/ru/docs/api/overview/#generate-a-client)

* **GraphQL** — схема доступна по адресу `backend/pkg/graph/schema.graphqls` в репозитории; используйте GraphQL Code Generator, genqlient или Apollo.
* **REST** — спецификация OpenAPI доступна по адресу `/api/v1/swagger/doc.json`:

```bash
openapi-generator-cli generate \
  -i https://your-pentagi-host:8443/api/v1/swagger/doc.json \
  -g python \
  -o ./pentagi-client
```