---
title: "Minds API"
description: "カスタム構成とパーソナリティを持つAIマインドをプログラムで作成・管理します。"
---

# Minds API

AIマインド（エージェント）をプログラムで作成・管理します。Mindsは、特定の専門知識、パーソナリティ、ナレッジを持つカスタマイズ可能なAIアシスタントです。

**ベースURL:** `https://getminds.ai/api/v1` または `https://api.getminds.ai/v1`

## Mindの取得

システムプロンプト、共有設定、ナレッジアイテム数などの詳細情報を含む単一のマインドを取得します。

**エンドポイント:** `GET /api/v1/minds/{mindId}`

**ヘッダー:**

```text
Authorization: Bearer minds_your_api_key
```

### レスポンス

```json
{
  "data": {
    "id": "550e8400-e29b-41d4-a716-446655440000",
    "name": "Marketing Expert",
    "description": "Experienced marketing director",
    "type": "expert",
    "discipline": "Marketing",
    "systemPrompt": "## Life Story & Background\n\nYou are a seasoned marketing director...",
    "tags": ["marketing", "b2b"],
    "isPublic": false,
    "isLinkSharingEnabled": false,
    "publicShareId": null,
    "profileImageUrl": "https://...",
    "phoneNumber": null,
    "clonedVoiceStatus": null,
    "profitSplitOptIn": false,
    "createdAt": "2025-12-10T12:00:00.000Z",
    "updatedAt": "2025-12-10T12:00:00.000Z",
    "knowledgeItemCount": 12
  }
}
```

### レスポンスフィールド

<table>
<thead>
  <tr>
    <th>
      フィールド
    </th>
    
    <th>
      タイプ
    </th>
    
    <th>
      説明
    </th>
  </tr>
</thead>

<tbody>
  <tr>
    <td>
      <code>
        id
      </code>
    </td>
    
    <td>
      string
    </td>
    
    <td>
      一意のマインド識別子
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        name
      </code>
    </td>
    
    <td>
      string
    </td>
    
    <td>
      マインド名
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        description
      </code>
    </td>
    
    <td>
      string
    </td>
    
    <td>
      マインドの説明
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        type
      </code>
    </td>
    
    <td>
      string
    </td>
    
    <td>
      <code>
        creative
      </code>
      
      、<code>
        expert
      </code>
      
      、または<code>
        user
      </code>
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        discipline
      </code>
    </td>
    
    <td>
      string
    </td>
    
    <td>
      専門分野
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        systemPrompt
      </code>
    </td>
    
    <td>
      string
    </td>
    
    <td>
      マインドの振る舞いを定義する完全なシステムプロンプト
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        tags
      </code>
    </td>
    
    <td>
      array
    </td>
    
    <td>
      分類用のタグ
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        isPublic
      </code>
    </td>
    
    <td>
      boolean
    </td>
    
    <td>
      マインドが一般公開されているかどうか
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        isLinkSharingEnabled
      </code>
    </td>
    
    <td>
      boolean
    </td>
    
    <td>
      リンク共有が有効になっているかどうか
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        publicShareId
      </code>
    </td>
    
    <td>
      string
    </td>
    
    <td>
      一般公開用の共有ID（共有されていない場合はnull）
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        profileImageUrl
      </code>
    </td>
    
    <td>
      string
    </td>
    
    <td>
      アバター画像のURL
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        phoneNumber
      </code>
    </td>
    
    <td>
      string
    </td>
    
    <td>
      関連付けられた電話番号（ない場合はnull）
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        clonedVoiceStatus
      </code>
    </td>
    
    <td>
      string
    </td>
    
    <td>
      音声クローンステータス（クローンされていない場合はnull）
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        profitSplitOptIn
      </code>
    </td>
    
    <td>
      boolean
    </td>
    
    <td>
      収益分配が有効になっているかどうか
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        knowledgeItemCount
      </code>
    </td>
    
    <td>
      number
    </td>
    
    <td>
      添付されているナレッジアイテムの数
    </td>
  </tr>
</tbody>
</table>

### リクエスト例

```bash
curl -X GET "https://getminds.ai/api/v1/minds/{mindId}" \
  -H "Authorization: Bearer minds_your_api_key"
```

### エラーレスポンス

**400 Bad Request** - 無効なmind ID形式

**401 Unauthorized** - 無効または欠落しているAPIキー

**403 Forbidden** - このマインドへのアクセス権がありません

**404 Not Found** - マインドが存在しません

---

## Mindsのリスト取得

認証されたユーザーに属するすべてのマインドを取得します。

**エンドポイント:** `GET /api/v1/minds`

**ヘッダー:**

```text
Authorization: Bearer minds_your_api_key
```

### クエリパラメータ

<table>
<thead>
  <tr>
    <th>
      パラメータ
    </th>
    
    <th>
      タイプ
    </th>
    
    <th>
      デフォルト
    </th>
    
    <th>
      説明
    </th>
  </tr>
</thead>

<tbody>
  <tr>
    <td>
      <code>
        search
      </code>
    </td>
    
    <td>
      string
    </td>
    
    <td>
      ,
    </td>
    
    <td>
      名前、説明、または専門分野でマインドをフィルタリング（大文字と小文字を区別しない）
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        limit
      </code>
    </td>
    
    <td>
      number
    </td>
    
    <td>
      100
    </td>
    
    <td>
      返すマインドの最大数（1～100）
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        offset
      </code>
    </td>
    
    <td>
      number
    </td>
    
    <td>
      0
    </td>
    
    <td>
      ページネーションのためにスキップするマインドの数
    </td>
  </tr>
</tbody>
</table>

### レスポンス

```json
{
  "data": [
    {
      "id": "550e8400-e29b-41d4-a716-446655440000",
      "name": "Marketing Expert",
      "description": "Experienced marketing director",
      "type": "expert",
      "discipline": "Marketing",
      "tags": ["marketing", "b2b"],
      "profileImageUrl": "https://...",
      "createdAt": "2025-12-10T12:00:00.000Z",
      "updatedAt": "2025-12-10T12:00:00.000Z"
    }
  ],
  "pagination": {
    "total": 42,
    "limit": 100,
    "offset": 0
  }
}
```

### レスポンスフィールド

<table>
<thead>
  <tr>
    <th>
      フィールド
    </th>
    
    <th>
      タイプ
    </th>
    
    <th>
      説明
    </th>
  </tr>
</thead>

<tbody>
  <tr>
    <td>
      <code>
        data
      </code>
    </td>
    
    <td>
      array
    </td>
    
    <td>
      マインドオブジェクトの配列
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        pagination.total
      </code>
    </td>
    
    <td>
      number
    </td>
    
    <td>
      クエリに一致するマインドの総数
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        pagination.limit
      </code>
    </td>
    
    <td>
      number
    </td>
    
    <td>
      1ページあたりの最大結果数
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        pagination.offset
      </code>
    </td>
    
    <td>
      number
    </td>
    
    <td>
      スキップされた結果の数
    </td>
  </tr>
</tbody>
</table>

### リクエスト例

```bash
curl -X GET "https://getminds.ai/api/v1/minds?limit=10&offset=0" \
  -H "Authorization: Bearer minds_your_api_key"
```

## Mindの作成

異なるトレーニングモードを使用して、カスタム構成で新しいAIマインドを作成します。

**エンドポイント:** `POST /api/v1/minds`

**ヘッダー:**

```text
Authorization: Bearer minds_your_api_key
Content-Type: application/json
```

### リクエストボディ

```json
{
  "name": "My AI Expert",
  "description": "An expert in renewable energy",
  "mode": "keywords",
  "type": "expert",
  "discipline": "Renewable Energy",
  "keywords": ["solar", "wind energy", "sustainability", "green tech"],
  "personaContext": "Ada Lovelace, pioneering computer scientist",
  "contextLink": "https://example.com/profile",
  "tags": ["energy", "solar", "sustainability"],
  "profileImageUrl": "https://example.com/avatar.jpg"
}
```

### パラメータ

<table>
<thead>
  <tr>
    <th>
      パラメータ
    </th>
    
    <th>
      タイプ
    </th>
    
    <th>
      必須
    </th>
    
    <th>
      説明
    </th>
  </tr>
</thead>

<tbody>
  <tr>
    <td>
      <code>
        name
      </code>
    </td>
    
    <td>
      string
    </td>
    
    <td>
      <strong>
        はい
      </strong>
    </td>
    
    <td>
      マインドの名前（2～100文字）
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        discipline
      </code>
    </td>
    
    <td>
      string
    </td>
    
    <td>
      <strong>
        はい
      </strong>
    </td>
    
    <td>
      マインドの専門分野（例：「マーケティング」、「エンジニアリング」）
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        mode
      </code>
    </td>
    
    <td>
      string
    </td>
    
    <td>
      いいえ
    </td>
    
    <td>
      トレーニングモード: <code>
        keywords
      </code>
      
      、<code>
        clone
      </code>
      
      、<code>
        link
      </code>
      
      、または<code>
        manual
      </code>
      
      。デフォルト: <code>
        keywords
      </code>
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        type
      </code>
    </td>
    
    <td>
      string
    </td>
    
    <td>
      いいえ
    </td>
    
    <td>
      マインドのタイプ: <code>
        creative
      </code>
      
      、<code>
        expert
      </code>
      
      、または<code>
        user
      </code>
      
      。デフォルト: <code>
        creative
      </code>
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        description
      </code>
    </td>
    
    <td>
      string
    </td>
    
    <td>
      いいえ
    </td>
    
    <td>
      マインドの目的の説明
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        keywords
      </code>
    </td>
    
    <td>
      array
    </td>
    
    <td>
      条件付き
    </td>
    
    <td>
      キーワードの配列（<code>
        mode
      </code>
      
      が<code>
        keywords
      </code>
      
      の場合に必須）
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        personaContext
      </code>
    </td>
    
    <td>
      string
    </td>
    
    <td>
      条件付き
    </td>
    
    <td>
      エミュレートする人物の名前/コンテキスト（<code>
        mode
      </code>
      
      が<code>
        clone
      </code>
      
      の場合に必須。キーワードの自動導出にも使用されます）
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        contextLink
      </code>
    </td>
    
    <td>
      string
    </td>
    
    <td>
      条件付き
    </td>
    
    <td>
      プロフィール/コンテンツへのURL（<code>
        mode
      </code>
      
      が<code>
        link
      </code>
      
      の場合に必須。サーバーがこれをスクレイピングしてキーワードを導出します）
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        tags
      </code>
    </td>
    
    <td>
      array
    </td>
    
    <td>
      いいえ
    </td>
    
    <td>
      分類用のタグの配列（最大20タグ）
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        profileImageUrl
      </code>
    </td>
    
    <td>
      string
    </td>
    
    <td>
      いいえ
    </td>
    
    <td>
      アバター画像への外部リンク（ダウンロードされて保存されます）
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        generateImage
      </code>
    </td>
    
    <td>
      boolean
    </td>
    
    <td>
      いいえ
    </td>
    
    <td>
      <code>
        true
      </code>
      
      の場合、バックグラウンドでAIプロフィール画像の生成をトリガーします
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        cloneVoice
      </code>
    </td>
    
    <td>
      boolean
    </td>
    
    <td>
      いいえ
    </td>
    
    <td>
      <code>
        true
      </code>
      
      の場合、YouTube検索を介した音声クローニングをトリガーします（実験的）
    </td>
  </tr>
</tbody>
</table>

### Modeの値

`mode`パラメータは、マインドのトレーニング方法を決定します。

- **keywords** (デフォルト) - カンマ区切りのキーワードを使用してマインドをトレーニングします。AIはこれらのキーワードに基づいて様々なソースから関連情報を収集し、マインドのナレッジベースを構築します。
  - **必須フィールド:** `keywords` - キーワード/トピックの配列
  - **最適な用途:** 特定のトピックやドメインに関する一般的な専門知識
- **clone** - 人物の名前とコンテキストを提供することで、その人物のスタイルと知識をクローンします。AIが調査を行い、その専門知識とコミュニケーションスタイルを模倣した包括的なプロファイルを構築します。
  - **必須フィールド:** `personaContext` - 名前と簡単なコンテキスト（例：「エイダ・ラブレス、先駆的なコンピュータ科学者」）
  - **最適な用途:** 特定の個人、歴史上の人物、または著名な専門家のエミュレーション
- **link** - 特定のURLのコンテンツを使用してマインドをトレーニングします。プロフィール、ポートフォリオ、またはウェブサイトへのリンクを提供すると、AIが関連情報を分析・抽出します。
  - **必須フィールド:** `contextLink` - コンテンツソースへのURL
  - **最適な用途:** 特定のウェブサイト、ポートフォリオ、またはオンラインプロフィールでのトレーニング
- **manual** - 自動トレーニングなしでマインドを作成します。すべての設定を手動で構成し、後でナレッジAPIを介してナレッジを追加します。
  - **追加のフィールドは不要です**
  - **最適な用途:** トレーニングデータを完全に制御したいカスタム構成

> **自動処理:** `keywords`、`clone`、または`link`を使用すると、バックエンドは製品内の「Mindを追加」フォームの動作を模倣します。エンティティキーワードを導出し（`clone`/`link`ではAIが支援）、マインドを非同期でトレーニングします。このトレーニングは、作成レスポンスの`training`ブロックと、後述の**マインドのトレーニングライフサイクル**で説明されている専用エンドポイントを通じて追跡します。`manual`モードではこの自動化がスキップされるため、後でナレッジAPIを介してマインドをトレーニングできます。

### Typeの値

- **creative** - アーティスト、デザイナー、ライター、クリエイティブ専門家向け
- **expert** - スペシャリスト、コンサルタント、ドメインエキスパート向け
- **user** - ユーザーペルソナ、顧客、ターゲットオーディエンスのアーキタイプ向け

### レスポンス

```json
{
  "data": {
    "id": "550e8400-e29b-41d4-a716-446655440000",
    "name": "My AI Expert",
    "description": "An expert in renewable energy",
    "type": "expert",
    "discipline": "Renewable Energy",
    "tags": ["energy", "solar", "sustainability"],
    "profileImageUrl": "https://...",
    "createdAt": "2025-12-10T12:00:00.000Z",
    "updatedAt": "2025-12-10T12:00:00.000Z"
  },
  "training": {
    "status": "queued",
    "readyToChat": false,
    "message": "Queued for data collection",
    "startedAt": null,
    "completedAt": null,
    "error": null
  }
}
```

`training`ブロックは、作成時のマインドのライフサイクルを報告します。`keywords`、`clone`、および`link`モードは`queued`で開始し、バックグラウンドでトレーニングを行います。`manual`のマインドは、`readyToChat`がすでに`true`の状態で`completed`として返されます。マインドの`id`はこの呼び出しが返された瞬間に存在しますが、マインドが応答できるのは`readyToChat`が`true`になってからです。ポーリングの方法については、後述の**マインドのトレーニングライフサイクル**を参照してください。

### 例: Keywordsモードでマインドを作成

```bash
curl -X POST "https://getminds.ai/api/v1/minds" \
  -H "Authorization: Bearer minds_your_api_key" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Marketing Expert",
    "description": "Experienced marketing director with expertise in B2B SaaS",
    "mode": "keywords",
    "type": "expert",
    "discipline": "Marketing",
    "keywords": ["B2B marketing", "SaaS", "growth marketing", "content strategy", "brand positioning", "ROI"],
    "tags": ["marketing", "b2b", "saas", "growth"]
  }'
```

### 例: Cloneモードでマインドを作成

```bash
curl -X POST "https://getminds.ai/api/v1/minds" \
  -H "Authorization: Bearer minds_your_api_key" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Ada Lovelace AI",
    "description": "AI trained to emulate Ada Lovelace",
    "mode": "clone",
    "type": "expert",
    "discipline": "Computer Science Pioneer",
    "personaContext": "Ada Lovelace, pioneering computer scientist and mathematician, first computer programmer",
    "tags": ["computer science", "mathematics", "history"]
  }'
```

### 例: Linkモードでマインドを作成

```bash
curl -X POST "https://getminds.ai/api/v1/minds" \
  -H "Authorization: Bearer minds_your_api_key" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Brand Voice Expert",
    "description": "Trained on company brand guidelines",
    "mode": "link",
    "type": "creative",
    "discipline": "Brand Strategy",
    "contextLink": "https://example.com/brand-guidelines",
    "tags": ["branding", "copywriting"]
  }'
```

### 例: Manualモードでマインドを作成

```bash
curl -X POST "https://getminds.ai/api/v1/minds" \
  -H "Authorization: Bearer minds_your_api_key" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Custom Assistant",
    "description": "Custom configured assistant",
    "mode": "manual",
    "type": "creative",
    "discipline": "General Assistant",
    "tags": ["custom"]
  }'
```

## マインドのトレーニングライフサイクル

マインドの作成は非同期です。`POST /v1/minds`はすぐに`id`を返しますが、`keywords`、`clone`、および`link`モードでは、マインドはまだバックグラウンドでトレーニング中です。**マインドのidが存在していても、マインドが準備完了であるとは限りません**。マインドが応答できるのは、`readyToChat`が`true`になってからです。唯一の例外は`manual`モードです。これらのマインドはデータ収集をスキップし、作成された瞬間に`completed`になります。

マインドの準備が完了するまで、専用のトレーニングエンドポイントをポーリングしてください。

```bash
curl "https://getminds.ai/api/v1/minds/{mindId}/training" \
  -H "Authorization: Bearer minds_your_api_key"
```

```json
{
  "status": "running",
  "readyToChat": false,
  "message": "Collecting knowledge...",
  "startedAt": "2025-12-10T12:00:01.000Z",
  "completedAt": null,
  "error": null
}
```

### ステータス値

<table>
<thead>
  <tr>
    <th>
      ステータス
    </th>
    
    <th>
      意味
    </th>
    
    <th>
      <code>
        readyToChat
      </code>
    </th>
  </tr>
</thead>

<tbody>
  <tr>
    <td>
      <code>
        queued
      </code>
    </td>
    
    <td>
      トレーニングはキューに追加されましたが、まだ開始されていません。
    </td>
    
    <td>
      <code>
        false
      </code>
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        running
      </code>
    </td>
    
    <td>
      マインドはナレッジを積極的に収集し、ペルソナを構築しています。
    </td>
    
    <td>
      <code>
        false
      </code>
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        completed
      </code>
    </td>
    
    <td>
      トレーニングが完了しました。マインドはチャットの準備ができています。
    </td>
    
    <td>
      <code>
        true
      </code>
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        failed
      </code>
    </td>
    
    <td>
      トレーニングが完了しませんでした。<code>
        error
      </code>
      
      を調査し、再試行可能であれば再トレーニングしてください。
    </td>
    
    <td>
      <code>
        false
      </code>
    </td>
  </tr>
</tbody>
</table>

`GET /v1/minds/{id}`は、マインドの他の部分とともに`readyToChat`（および`trainingStatus`）も返すため、一度の読み取りでマインドの正体と、応答可能かどうかを両方知ることができます。

### トレーニングが失敗した場合

`status`が`failed`の場合、レスポンスには`code`と`retryable`フラグを持つ`error`オブジェクトが含まれます。

<table>
<thead>
  <tr>
    <th>
      エラーコード
    </th>
    
    <th>
      意味
    </th>
    
    <th>
      <code>
        retryable
      </code>
    </th>
  </tr>
</thead>

<tbody>
  <tr>
    <td>
      <code>
        COLLECTION_FAILED
      </code>
    </td>
    
    <td>
      ナレッジ収集を完了できませんでした。
    </td>
    
    <td>
      <code>
        true
      </code>
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        PROFILE_GEN_FAILED
      </code>
    </td>
    
    <td>
      ペルソナプロファイルを生成できませんでした。
    </td>
    
    <td>
      <code>
        true
      </code>
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        TIMEOUT
      </code>
    </td>
    
    <td>
      トレーニングが時間予算を超過したため停止されました。
    </td>
    
    <td>
      <code>
        true
      </code>
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        INTERNAL
      </code>
    </td>
    
    <td>
      予期しない内部エラーが発生しました。
    </td>
    
    <td>
      <code>
        false
      </code>
    </td>
  </tr>
</tbody>
</table>

### 再トレーニング

マインドが`failed`で終了した場合（または単に`completed`のマインドを再構築したい場合）、再トレーニングしてください。

```bash
curl -X POST "https://getminds.ai/api/v1/minds/{mindId}/retrain" \
  -H "Authorization: Bearer minds_your_api_key"
```

これによりマインドが再キューされ、`status`が`queued`に設定された新しい`training`ブロックが返されます。再トレーニングは完了したマインドに対してのみ機能します。まだ`queued`または`running`のマインドは、トレーニングがすでに進行中であるため`409 Conflict`を返します。再トレーニング後、`readyToChat`が`true`になるまで再度`GET /v1/minds/{id}/training`をポーリングしてください。

## プロフィール画像

`profileImageUrl`を提供すると、以下の処理が行われます。

1. 画像が外部リンクからダウンロードされます
2. セキュアなストレージにアップロードされます
3. 保存されたURLがレスポンスで返されます

対応フォーマット: JPG, PNG, GIF, WEBP

## トレーニングの仕組み

システムは、選択したモード、タイプ、専門分野に基づいて、インテリジェントなシステムプロンプトを自動的に生成します。

- **Keywordsモード**: 指定したキーワードに関する専門知識を構築します
- **Cloneモード**: 指定した人物のスタイルと知識をエミュレートするプロファイルを構築します
- **Linkモード**: 提供されたURLからナレッジを抽出します
- **Manualモード**: カスタムナレッジでトレーニングする基本的なアシスタントを作成します

作成後、[ナレッジをアップロード](/api/knowledge)することで、マインドをさらに強化できます。

## プランの制限

現在の公開デフォルト値は、生成された[プラン制限表](/api/overview)を参照してください。契約固有のオーバーライドは異なる場合があるため、連携では認証済み`PLAN_LIMIT`レスポンスの`data.limit`と`data.current`を使用してください。IndividualプランはAPI payloadでは`"premium"`と表示されます。

上限に達すると、`403 Forbidden`エラーが表示されます。

```json
{
  "statusCode": 403,
  "statusMessage": "Individual plan limit reached",
  "message": "Individual plan limit reached",
  "url": "/api/v1/minds",
  "error": true,
  "data": {
    "code": "PLAN_LIMIT",
    "limitType": "minds",
    "currentPlan": "premium",
    "limit": 100,
    "current": 100
  }
}
```

## エラーレスポンス

### 400 Bad Request

パラメータが欠落しているか無効です。

```json
{
  "statusCode": 400,
  "statusMessage": "Name is required"
}
```

### 401 Unauthorized

APIキーが無効か欠落しています。

### 403 Forbidden

プランの上限に達しました。

### 500 Internal Server Error

サーバーサイドのエラー（稀）。

## Mindの更新

名前、説明、システムプロンプト、その他の設定など、既存のマインドの構成を更新します。

**エンドポイント:** `PUT /api/v1/minds/{mindId}`

**ヘッダー:**

```text
Authorization: Bearer minds_your_api_key
Content-Type: application/json
```

### リクエストボディ

```json
{
  "name": "Updated Name",
  "description": "Updated description",
  "type": "expert",
  "discipline": "Updated Discipline",
  "systemPrompt": "Custom system prompt instructions...",
  "tags": ["tag1", "tag2"],
  "isPublic": false
}
```

### パラメータ

<table>
<thead>
  <tr>
    <th>
      パラメータ
    </th>
    
    <th>
      タイプ
    </th>
    
    <th>
      必須
    </th>
    
    <th>
      説明
    </th>
  </tr>
</thead>

<tbody>
  <tr>
    <td>
      <code>
        name
      </code>
    </td>
    
    <td>
      string
    </td>
    
    <td>
      いいえ
    </td>
    
    <td>
      マインドの名前（2～100文字）
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        description
      </code>
    </td>
    
    <td>
      string
    </td>
    
    <td>
      いいえ
    </td>
    
    <td>
      マインドの目的の説明
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        type
      </code>
    </td>
    
    <td>
      string
    </td>
    
    <td>
      いいえ
    </td>
    
    <td>
      タイプ: <code>
        creative
      </code>
      
      、<code>
        expert
      </code>
      
      、または<code>
        user
      </code>
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        discipline
      </code>
    </td>
    
    <td>
      string
    </td>
    
    <td>
      いいえ
    </td>
    
    <td>
      マインドの専門分野
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        systemPrompt
      </code>
    </td>
    
    <td>
      string
    </td>
    
    <td>
      いいえ
    </td>
    
    <td>
      マインドの振る舞いとパーソナリティを定義するカスタムシステムプロンプト
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        tags
      </code>
    </td>
    
    <td>
      array
    </td>
    
    <td>
      いいえ
    </td>
    
    <td>
      分類用のタグの配列（最大20タグ）
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        isPublic
      </code>
    </td>
    
    <td>
      boolean
    </td>
    
    <td>
      いいえ
    </td>
    
    <td>
      マインドが一般公開されているかどうか
    </td>
  </tr>
</tbody>
</table>

### システムプロンプト

`systemPrompt`フィールドを使用すると、マインドの振る舞いや応答方法をカスタマイズできます。これは以下の目的に役立ちます。

- **ペルソナのカスタマイズ**: 特定の性格特性、コミュニケーションスタイル、専門分野を定義します
- **レスポンスのフォーマット**: 特定のフォーマット（例：箇条書き、番号付きリスト）で応答するようにマインドに指示します
- **ドメインの制約**: 応答を特定のトピックや視点に限定します
- **言語/トーン**: 応答の言語、丁寧さのレベル、トーンを設定します

**システムプロンプトの例:**

```text
# Survey Response Expert
Du bist ein erfahrener Handwerker. Bei Umfragen antworte immer aus deiner
persönlichen Erfahrung, nicht mit allgemeinen Branchendurchschnittswerten.
Wähle bei Multiple-Choice-Fragen immer genau eine Option.
```

```text
# Technical Expert
You are a senior software architect. Always provide concrete,
actionable advice. Include code examples when relevant.
Avoid vague statements.
```

### レスポンス

```json
{
  "data": {
    "id": "550e8400-e29b-41d4-a716-446655440000",
    "name": "Updated Name",
    "description": "Updated description",
    "type": "expert",
    "discipline": "Updated Discipline",
    "systemPrompt": "Custom system prompt...",
    "tags": ["tag1", "tag2"],
    "isPublic": false,
    "profileImageUrl": "https://...",
    "createdAt": "2025-12-10T12:00:00.000Z",
    "updatedAt": "2025-12-29T15:30:00.000Z"
  }
}
```

### 例: システムプロンプトの更新

```bash
curl -X PUT "https://getminds.ai/api/v1/minds/{mindId}" \
  -H "Authorization: Bearer minds_your_api_key" \
  -H "Content-Type: application/json" \
  -d '{
    "systemPrompt": "Du bist ein erfahrener Handwerker im Sanitärbereich. Antworte immer aus deiner persönlichen Praxiserfahrung."
  }'
```

### 例: 複数フィールドの更新

```bash
curl -X PUT "https://getminds.ai/api/v1/minds/{mindId}" \
  -H "Authorization: Bearer minds_your_api_key" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Senior Plumber Expert",
    "description": "Expert plumber with 20 years of experience",
    "discipline": "Plumbing & Sanitary Installation",
    "tags": ["plumbing", "sanitary", "renovation"]
  }'
```

### エラーレスポンス

**400 Bad Request** - 更新する有効なフィールドがないか、フィールド値が無効です

**401 Unauthorized** - 無効または欠落しているAPIキー

**403 Forbidden** - このマインドを更新する権限がありません（所有者である必要があります）

**404 Not Found** - マインドが存在しません

## Mindパターンの取得 (Raw)

マインドの生の`Pattern[]`行を取得します。これは、製品UIのSphereGraphビジュアライゼーションで使用される未処理のフィードです。フレームワークによるグループ化や集計なしで、検出されたパターンごと（メソッド/コンピテンシーのペア、およびそれを裏付ける`mind`の引用とソースリンケージ）に1行を返します。

構造化され、フレームワークでグループ化されたビューが必要な場合は、代わりに以下の`Get Mind Knowledge Patterns`エンドポイントを使用してください。

**エンドポイント:** `GET /api/v1/minds/{mindId}/patterns`

**ヘッダー:**

```text
Authorization: Bearer minds_your_api_key
```

### レスポンス

```json
{
  "data": [
    {
      "id": 12345,
      "mindId": "550e8400-e29b-41d4-a716-446655440000",
      "userId": "...",
      "messageId": null,
      "portfolioItemId": "abc-123",
      "aspect": "Strategic Thinking",
      "subAspect": "Market Analysis",
      "mind": "Market segmentation requires understanding customer pain points...",
      "isPredefined": true,
      "isPredefinedAspect": true,
      "isPredefinedSubAspect": true,
      "createdAt": "2025-12-10T15:30:00.000Z"
    }
  ]
}
```

結果は`createdAt`の降順でソートされます。レガシーフィールド名`aspect`/`subAspect`は、基盤となるスキーマの`method`/`competency`列に対応しており、後方互換性のために保持されています。

### アクセスルール

- 公開マインド（`isPublic: true`）およびリンク共有マインド（`publicShareId`が設定されている）は、認証なしで読み取り可能です。
- プライベートマインドには、所有者がマインドの所有者、チームメンバー、または直接のメンバーであるAPIキーが必要です。

### リクエスト例

```bash
curl -X GET "https://getminds.ai/api/v1/minds/{mindId}/patterns" \
  -H "Authorization: Bearer minds_your_api_key"
```

### エラーレスポンス

**400 Bad Request** - 無効なmind ID形式

**401 Unauthorized** - マインドはプライベートであり、有効なAPIキーが提供されませんでした

**403 Forbidden** - このプライベートマインドへのアクセス権がありません

**404 Not Found** - マインドが存在しません

---

## Mindナレッジパターンの取得

特定のマインドについて、フレームワーク別に整理された思考パターンとナレッジを取得します。

**エンドポイント:** `GET /api/v1/minds/{mindId}/knowledge/patterns`

**ヘッダー:**

```text
Authorization: Bearer minds_your_api_key
```

### レスポンス構造

このエンドポイントは、フレームワーク（例：AOX Internal, OCEAN, DISCなど）ごとにグループ化されたパターンを返します。メソッドとコンピテンシーには、出現回数とエビデンスが表示されます。

```json
{
  "success": true,
  "data": {
    "mindId": "550e8400-e29b-41d4-a716-446655440000",
    "mindName": "Marketing Expert",
    "totalPatterns": 47,
    "frameworks": [
      {
        "id": "aox-internal",
        "name": "AOX Internal Framework",
        "totalOccurrences": 32,
        "methods": [
          {
            "id": "strategic-thinking",
            "name": "Strategic Thinking",
            "description": "Ability to think strategically and plan long-term",
            "occurrences": 15,
            "competencies": [
              {
                "id": "market-analysis",
                "name": "Market Analysis",
                "description": "Understanding market dynamics and trends",
                "occurrences": 8,
                "evidence": [
                  {
                    "mind": "Market segmentation requires understanding customer pain points and aligning product features with specific needs...",
                    "portfolioItemId": "abc-123",
                    "createdAt": "2025-12-10T15:30:00.000Z"
                  },
                  {
                    "mind": "Competitive analysis shows that timing and positioning are critical for market entry...",
                    "portfolioItemId": "def-456",
                    "createdAt": "2025-12-10T14:20:00.000Z"
                  }
                ]
              }
            ]
          }
        ]
      }
    ]
  }
}
```

### レスポンスの理解

- **frameworks**: mindのパターンを含むフレームワークの配列

  - **totalOccurrences**: このフレームワーク内のパターンの総数
  - **methods**: 検出された思考メソッドまたはアプローチ
  
    - **occurrences**: このメソッドの出現回数
    - **competencies**: メソッド内の特定のスキルまたはサブエリア
    
      - **occurrences**: このコンピテンシーのパターン数
      - **evidence**: このパターンを実証する引用/抜粋の配列
      
        - **mind**: コンテンツからの実際の引用またはインサイト
        - **portfolioItemId**: ソース資料への参照
        - **createdAt**: このパターンが特定された日時

### リクエスト例

```bash
curl -X GET "https://getminds.ai/api/v1/minds/{mindId}/knowledge/patterns" \
  -H "Authorization: Bearer minds_your_api_key"
```

### ユースケース

- **マインドの専門知識の理解**: マインドが学習したメソッドとコンピテンシーを確認します
- **品質保証**: トレーニングデータからパターンが正しく抽出されていることを確認します
- **ナレッジギャップの特定**: より多くのトレーニングデータが必要な領域を特定します
- **フレームワークの比較**: 異なるフレームワーク間でマインドがどのように機能するかを比較します

### エラーレスポンス

**401 Unauthorized** - 無効または欠落しているAPIキー

**403 Forbidden** - このマインドへのアクセス権がありません

**404 Not Found** - マインドが存在しません

## システムプロンプトの再生成

既存のナレッジベースを使用して、mindのすべてのシステムプロンプトコンポーネントを再生成します。これは、UIの「すべて生成」ボタンと同じAI搭載の生成機能を使用します。

**エンドポイント:** `POST /api/v1/minds/{mindId}/regenerate-prompt`

**ヘッダー:**

```text
Authorization: Bearer minds_your_api_key
```

### 仕組み

このエンドポイントは、マインドのナレッジベース（ポートフォリオアイテム、パターン、埋め込み）を分析し、**すべて**のmindタイプ（`user`、`expert`、`creative`）に対応する、統一された経歴プロンプトコンポーネントのセットを生成します。

- **ライフストーリーと背景** - 経歴の基礎、現在の年齢、場所、民族性、人格形成に影響を与えた経験
- **コミュニケーションと言語** - 特徴的な声、フレーズ、方言、感情のトリガー
- **知識と経験** - 何を知っていて、どのようにしてそれを知るようになったか
- **価値観と矛盾** - 信念、理想、そしてそれらの間の緊張関係
- **日常の現実とコンテキスト** - 経済的、時間的、社会的、物理的なコンテキスト

`type`フィールドは後方互換性のためにmind上に保持されますが、どのコンポーネントが生成されるかを変更することはありません。マインドはマインドです。統一された経歴アプローチは、タイプに関係なく、より強力で地に足のついたペルソナを生成します。

### レスポンス

```json
{
  "success": true,
  "data": {
    "id": "550e8400-e29b-41d4-a716-446655440000",
    "name": "My Mind",
    "systemPrompt": "## Life Story & Background\n\n...",
    "promptLength": 2847
  }
}
```

### リクエスト例

```bash
curl -X POST "https://getminds.ai/api/v1/minds/{mindId}/regenerate-prompt" \
  -H "Authorization: Bearer minds_your_api_key"
```

### ユースケース

- **ナレッジ追加後**: 新しく追加されたナレッジアイテムを組み込むためにプロンプトを再生成します
- **ペルソナの洗練**: 現在のナレッジパターンに基づいてペルソナを更新するために再生成します
- **カスタマイズのリセット**: 手動編集をクリアし、ナレッジベースから新しいプロンプトを再生成します

### エラーレスポンス

**401 Unauthorized** - 無効または欠落しているAPIキー

**403 Forbidden** - このマインドを修正する権限がありません（所有者である必要があります）

**404 Not Found** - マインドが存在しません

**500 Internal Server Error** - プロンプトの生成に失敗しました（例：ナレッジ不足）

## Mindの削除

マインドと、ナレッジ、ポートフォリオアイテム、ファイルを含むすべての関連データを永久に削除します。

**エンドポイント:** `DELETE /api/v1/minds/{mindId}`

**ヘッダー:**

```text
Authorization: Bearer minds_your_api_key
```

### レスポンス

成功すると、空のボディを持つ`204 No Content`を返します。

### リクエスト例

```bash
curl -X DELETE "https://getminds.ai/api/v1/minds/{mindId}" \
  -H "Authorization: Bearer minds_your_api_key"
```

### 削除されるもの

マインドを削除すると、以下が永久に削除されます。

- マインド自体とすべての構成
- すべてのナレッジとトレーニングデータ
- すべてのポートフォリオアイテムと関連ファイル
- すべてのチャット履歴とメッセージ
- プロフィール画像とアップロードされたファイル

**警告:** この操作は元に戻せません。

### エラーレスポンス

**400 Bad Request** - 無効なmind ID形式

**401 Unauthorized** - 無効または欠落しているAPIキー

**403 Forbidden** - このマインドを削除する権限がありません（所有者である必要があります）

**404 Not Found** - マインドが存在しません

## 次のステップ

- [マインドにナレッジをアップロードする](/api/knowledge)
- [マインドとチャットする](/api/chat)
- [エラーと制限](/api/errors)について学ぶ
