# API概要

> RESTおよびGraphQLを介してPentAGIを自動化します。Bearerトークンを作成し、CI/CDからflowsを開始し、結果を独自のツールに取り込んでクライアントを生成します。

Web UIで実行できる操作の大部分はAPIでも利用可能です。CI/CDから[flows](https://pentagi.com/ja/docs/glossary/#flow)を開始したり、結果を独自のツールに取得したり、インテグレーションを構築したりできます。

| API     | エンドポイント           | インタラクティブドキュメント               |
| ------- | ----------------- | ---------------------------- |
| GraphQL | `/api/v1/graphql` | `/api/v1/graphql/playground` |
| REST    | `/api/v1/...`     | `/api/v1/swagger/index.html` |

## [トークンの作成](https://pentagi.com/ja/docs/api/overview/#create-a-token)

1. Web UIで**Settings → API Tokens**を開きます。
2. **Create Token**をクリックし、必要に応じて名前を設定して、1分から3年の間で有効期限を指定します。
3. トークンをすぐにコピーしてください。表示されるのは一度だけです。

トークンはお客様のアカウントに関連付けられ、そのロールの権限を継承します。ユーザー、ロールおよびAPIトークン、flowテンプレート、お気に入り、そして設定は、サインインしたブラウザセッションからのみ管理されます。トークンはREST `/users`、`/roles` および `/tokens` ルートで403エラーとなり、それらのGraphQLオペレーションでもエラーが発生します。

## [APIの呼び出し](https://pentagi.com/ja/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"
```

GraphQLミューテーションを使用してflowを開始します：

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

## [クライアントの生成](https://pentagi.com/ja/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
```