# Visão geral da API

> Automatize o PentAGI via REST e GraphQL — crie um token Bearer, inicie flows a partir de CI/CD, extraia resultados para suas próprias ferramentas e gere um cliente.

A maior parte do que você pode fazer na interface web está disponível pela API — inicie [flows](https://pentagi.com/pt-br/docs/glossary/#flow) a partir de CI/CD, extraia resultados para suas próprias ferramentas ou crie integrações.

| API     | Endpoint          | Documentação interativa      |
| ------- | ----------------- | ---------------------------- |
| GraphQL | `/api/v1/graphql` | `/api/v1/graphql/playground` |
| REST    | `/api/v1/...`     | `/api/v1/swagger/index.html` |

## [Criar um token](https://pentagi.com/pt-br/docs/api/overview/#create-a-token)

1. Abra **Settings → API Tokens** na interface web.
2. Clique em **Create Token**, dê um nome a ele (opcional) e defina uma validade entre 1 minuto e 3 anos.
3. Copie o token imediatamente — ele é exibido apenas uma vez.

Um token pertence à sua conta e herda as permissões do seu papel. Usuários, papéis e tokens de API, [templates](https://pentagi.com/pt-br/docs/glossary/#template) de flow, favoritos e suas configurações são gerenciados apenas a partir de uma sessão de navegador conectada: um token recebe 403 nas rotas REST `/users`, `/roles` e `/tokens` e um erro nessas operações GraphQL.

## [Chamar a API](https://pentagi.com/pt-br/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"
```

Inicie um flow com uma mutação GraphQL:

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

## [Gerar um cliente](https://pentagi.com/pt-br/docs/api/overview/#generate-a-client)

* **GraphQL** — o esquema está em `backend/pkg/graph/schema.graphqls` no repositório; use GraphQL Code Generator, genqlient ou Apollo.
* **REST** — a especificação OpenAPI é servida em `/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
```