---
title: "Minds API"
description: "Özel yapılandırmalar ve kişiliklerle AI mind'ları programatik olarak oluşturun ve yönetin."
---

# Minds API

AI mind'ları (ajanlar) programatik olarak oluşturun ve yönetin. Mind'lar, belirli uzmanlık, kişilik ve bilgiye sahip özelleştirilebilir AI asistanlardır.

**Base URL:** `https://getminds.ai/api/v1` veya `https://api.getminds.ai/v1`

## Mind Al

System prompt, paylaşım ayarları ve bilgi öğesi sayısı dahil olmak üzere tam ayrıntılarla tek bir mind alın.

**Endpoint:** `GET /api/v1/minds/{mindId}`

**Headers:**

```text
Authorization: Bearer minds_your_api_key
```

### Yanıt

```json
{
  "data": {
    "id": "550e8400-e29b-41d4-a716-446655440000",
    "name": "Marketing Expert",
    "description": "Experienced marketing director",
    "type": "expert",
    "discipline": "Marketing",
    "systemPrompt": "## Core Identity & Personality\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
  }
}
```

### Yanıt Alanları

<table>
<thead>
  <tr>
    <th>
      Alan
    </th>
    
    <th>
      Tip
    </th>
    
    <th>
      Açıklama
    </th>
  </tr>
</thead>

<tbody>
  <tr>
    <td>
      <code>
        id
      </code>
    </td>
    
    <td>
      string
    </td>
    
    <td>
      Benzersiz mind tanımlayıcısı
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        name
      </code>
    </td>
    
    <td>
      string
    </td>
    
    <td>
      Mind adı
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        description
      </code>
    </td>
    
    <td>
      string
    </td>
    
    <td>
      Mind açıklaması
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        type
      </code>
    </td>
    
    <td>
      string
    </td>
    
    <td>
      <code>
        creative
      </code>
      
      , <code>
        expert
      </code>
      
       veya <code>
        user
      </code>
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        discipline
      </code>
    </td>
    
    <td>
      string
    </td>
    
    <td>
      Uzmanlık alanı
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        systemPrompt
      </code>
    </td>
    
    <td>
      string
    </td>
    
    <td>
      Mind'ın davranışını tanımlayan tam system prompt
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        tags
      </code>
    </td>
    
    <td>
      array
    </td>
    
    <td>
      Kategorilendirme etiketleri
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        isPublic
      </code>
    </td>
    
    <td>
      boolean
    </td>
    
    <td>
      Mind'ın herkese açık erişilebilir olup olmadığı
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        isLinkSharingEnabled
      </code>
    </td>
    
    <td>
      boolean
    </td>
    
    <td>
      Bağlantı paylaşımının etkin olup olmadığı
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        publicShareId
      </code>
    </td>
    
    <td>
      string
    </td>
    
    <td>
      Public erişim için paylaşım ID'si (paylaşılmadıysa null)
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        profileImageUrl
      </code>
    </td>
    
    <td>
      string
    </td>
    
    <td>
      Avatar resim URL'i
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        phoneNumber
      </code>
    </td>
    
    <td>
      string
    </td>
    
    <td>
      İlişkili telefon numarası (yoksa null)
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        clonedVoiceStatus
      </code>
    </td>
    
    <td>
      string
    </td>
    
    <td>
      Ses klonlama durumu (klonlanmadıysa null)
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        profitSplitOptIn
      </code>
    </td>
    
    <td>
      boolean
    </td>
    
    <td>
      Kar paylaşımının etkin olup olmadığı
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        knowledgeItemCount
      </code>
    </td>
    
    <td>
      number
    </td>
    
    <td>
      Ekli bilgi öğelerinin sayısı
    </td>
  </tr>
</tbody>
</table>

### Örnek İstek

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

### Hata Yanıtları

**400 Bad Request** - Geçersiz mind ID formatı

**401 Unauthorized** - Geçersiz veya eksik API key

**403 Forbidden** - Bu mind'a erişim yok

**404 Not Found** - Mind mevcut değil

---

## Mind'ları Listele

Kimliği doğrulanmış kullanıcıya ait tüm mind'ları al.

**Endpoint:** `GET /api/v1/minds`

**Headers:**

```text
Authorization: Bearer minds_your_api_key
```

### Sorgu Parametreleri

<table>
<thead>
  <tr>
    <th>
      Parametre
    </th>
    
    <th>
      Tip
    </th>
    
    <th>
      Varsayılan
    </th>
    
    <th>
      Açıklama
    </th>
  </tr>
</thead>

<tbody>
  <tr>
    <td>
      <code>
        search
      </code>
    </td>
    
    <td>
      string
    </td>
    
    <td>
      —
    </td>
    
    <td>
      Mind'ları ada, açıklamaya veya disipline göre filtrele (büyük/küçük harf duyarsız)
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        limit
      </code>
    </td>
    
    <td>
      number
    </td>
    
    <td>
      100
    </td>
    
    <td>
      Döndürülecek maksimum mind sayısı (1–100)
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        offset
      </code>
    </td>
    
    <td>
      number
    </td>
    
    <td>
      0
    </td>
    
    <td>
      Sayfalama için atlanacak mind sayısı
    </td>
  </tr>
</tbody>
</table>

### Yanıt

```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
  }
}
```

### Yanıt Alanları

<table>
<thead>
  <tr>
    <th>
      Alan
    </th>
    
    <th>
      Tip
    </th>
    
    <th>
      Açıklama
    </th>
  </tr>
</thead>

<tbody>
  <tr>
    <td>
      <code>
        data
      </code>
    </td>
    
    <td>
      array
    </td>
    
    <td>
      Mind nesnelerinin dizisi
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        pagination.total
      </code>
    </td>
    
    <td>
      number
    </td>
    
    <td>
      Sorguyla eşleşen toplam mind sayısı
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        pagination.limit
      </code>
    </td>
    
    <td>
      number
    </td>
    
    <td>
      Sayfa başına maksimum sonuç
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        pagination.offset
      </code>
    </td>
    
    <td>
      number
    </td>
    
    <td>
      Atlanan sonuç sayısı
    </td>
  </tr>
</tbody>
</table>

### Örnek İstek

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

## Mind Oluştur

Farklı eğitim modlarını kullanarak özel yapılandırmayla yeni bir AI mind oluşturun.

**Endpoint:** `POST /api/v1/minds`

**Headers:**

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

### İstek Body

```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"
}
```

### Parametreler

<table>
<thead>
  <tr>
    <th>
      Parametre
    </th>
    
    <th>
      Tip
    </th>
    
    <th>
      Zorunlu
    </th>
    
    <th>
      Açıklama
    </th>
  </tr>
</thead>

<tbody>
  <tr>
    <td>
      <code>
        name
      </code>
    </td>
    
    <td>
      string
    </td>
    
    <td>
      <strong>
        Evet
      </strong>
    </td>
    
    <td>
      Mind'ın adı (2-100 karakter)
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        discipline
      </code>
    </td>
    
    <td>
      string
    </td>
    
    <td>
      <strong>
        Evet
      </strong>
    </td>
    
    <td>
      Mind'ın uzmanlık alanı (örn. "Marketing", "Engineering")
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        mode
      </code>
    </td>
    
    <td>
      string
    </td>
    
    <td>
      Hayır
    </td>
    
    <td>
      Eğitim modu: <code>
        keywords
      </code>
      
      , <code>
        clone
      </code>
      
      , <code>
        link
      </code>
      
       veya <code>
        manual
      </code>
      
      . Varsayılan: <code>
        keywords
      </code>
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        type
      </code>
    </td>
    
    <td>
      string
    </td>
    
    <td>
      Hayır
    </td>
    
    <td>
      Mind tipi: <code>
        creative
      </code>
      
      , <code>
        expert
      </code>
      
       veya <code>
        user
      </code>
      
      . Varsayılan: <code>
        creative
      </code>
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        description
      </code>
    </td>
    
    <td>
      string
    </td>
    
    <td>
      Hayır
    </td>
    
    <td>
      Mind'ın amacının açıklaması
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        keywords
      </code>
    </td>
    
    <td>
      array
    </td>
    
    <td>
      Koşullu
    </td>
    
    <td>
      Anahtar kelimeler dizisi (eğer <code>
        mode
      </code>
      
       <code>
        keywords
      </code>
      
       ise zorunlu)
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        personaContext
      </code>
    </td>
    
    <td>
      string
    </td>
    
    <td>
      Koşullu
    </td>
    
    <td>
      Taklit edilecek kişinin adı/bağlamı (eğer <code>
        mode
      </code>
      
       <code>
        clone
      </code>
      
       ise zorunlu; ayrıca anahtar kelimeleri otomatik olarak türetmek için kullanılır)
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        contextLink
      </code>
    </td>
    
    <td>
      string
    </td>
    
    <td>
      Koşullu
    </td>
    
    <td>
      Profil/içerik URL'i (eğer <code>
        mode
      </code>
      
       <code>
        link
      </code>
      
       ise zorunlu; sunucu bunu scrape eder ve anahtar kelimeleri türetir)
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        tags
      </code>
    </td>
    
    <td>
      array
    </td>
    
    <td>
      Hayır
    </td>
    
    <td>
      Kategorilendirme için etiketler dizisi (maks 20 etiket)
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        profileImageUrl
      </code>
    </td>
    
    <td>
      string
    </td>
    
    <td>
      Hayır
    </td>
    
    <td>
      Avatar resim için harici URL (indirilir ve saklanır)
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        generateImage
      </code>
    </td>
    
    <td>
      boolean
    </td>
    
    <td>
      Hayır
    </td>
    
    <td>
      <code>
        true
      </code>
      
       olduğunda, arka planda AI profil resmi oluşturmayı tetikler
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        cloneVoice
      </code>
    </td>
    
    <td>
      boolean
    </td>
    
    <td>
      Hayır
    </td>
    
    <td>
      <code>
        true
      </code>
      
       olduğunda, YouTube araması yoluyla ses klonlamayı tetikler (deneysel)
    </td>
  </tr>
</tbody>
</table>

### Mode Değerleri

`mode` parametresi, mind'ınızın nasıl eğitileceğini belirler:

- **keywords** (varsayılan) - Mind'ınızı virgülle ayrılmış anahtar kelimeler kullanarak eğitin. AI, mind'ın bilgi tabanını oluşturmak için bu anahtar kelimelere dayalı çeşitli kaynaklardan ilgili bilgileri toplayacaktır.
  - **Zorunlu alan:** `keywords` - Anahtar kelimeler/konular dizisi
  - **En uygun:** Belirli konular veya alanlarda genel uzmanlık için
- **clone** - Bir kişinin tarzını ve bilgisini adlarını ve bağlamlarını sağlayarak klonlayın. AI, uzmanlıklarını ve iletişim tarzlarını taklit eden kapsamlı bir profil araştıracak ve oluşturacaktır.
  - **Zorunlu alan:** `personaContext` - Ad ve kısa bağlam (örn. "Ada Lovelace, pioneering computer scientist")
  - **En uygun:** Belirli kişileri, tarihi figürleri veya tanınmış uzmanları taklit etmek için
- **link** - Mind'ınızı belirli bir URL'den alınan içerikle eğitin. Bir profile, portfolyoya veya web sitesine bağlantı sağlayın; AI ilgili bilgileri analiz edip çıkaracaktır.
  - **Zorunlu alan:** `contextLink` - İçerik kaynağına URL
  - **En uygun:** Belirli web sitelerinden, portföylerden veya çevrimiçi profillerden eğitim için
- **manual** - Otomatik eğitim olmadan bir mind oluşturun. Tüm ayarları manuel olarak yapılandıracak ve daha sonra knowledge API aracılığıyla bilgi ekleyeceksiniz.
  - **Ek alan gerekmez**
  - **En uygun:** Eğitim verileri üzerinde tam kontrol istediğiniz özel yapılandırmalar için

> **Otomatik işleme:** `keywords`, `clone` veya `link` kullandığınızda, backend ürün içi Add Mind formunu yansıtır — entity anahtar kelimelerini türetir (`clone`/`link` için AI destekli) ve mind'ı asenkron olarak eğitir. Bu eğitimi, oluşturma yanıtındaki `training` bloğu ve aşağıdaki **Mind eğitim yaşam döngüsü** bölümünde açıklanan özel uç nokta üzerinden izleyin. `manual` modu bu otomasyonu atlar, böylece mind'ı daha sonra Knowledge API aracılığıyla eğitebilirsiniz.

### Type Değerleri

- **creative** - Sanatçılar, tasarımcılar, yazarlar ve yaratıcı profesyoneller için
- **expert** - Uzmanlar, danışmanlar ve alan uzmanları için
- **user** - Kullanıcı personaları, müşteriler ve hedef kitle arketipleri için

### Yanıt

```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` bloğu, mind'ın oluşturma anındaki yaşam döngüsünü bildirir. `keywords`, `clone` ve `link` modları `queued` olarak başlar ve arka planda eğitilir; `manual` mind'lar `readyToChat` zaten `true` olacak şekilde `completed` döner. Bir mind'ın `id`'si bu çağrı döndüğü anda vardır, ancak mind yalnızca `readyToChat` `true` olduğunda yanıt verebilir. Yoklama için aşağıdaki **Mind eğitim yaşam döngüsü** bölümüne bakın.

### Örnek: Keywords Modu ile Mind Oluştur

```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"]
  }'
```

### Örnek: Clone Modu ile Mind Oluştur

```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"]
  }'
```

### Örnek: Link Modu ile Mind Oluştur

```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"]
  }'
```

### Örnek: Manual Modu ile Mind Oluştur

```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"]
  }'
```

## Mind eğitim yaşam döngüsü

Bir mind oluşturmak asenkrondur. `POST /v1/minds` hemen bir `id` döndürür, ancak `keywords`, `clone` ve `link` modlarında mind hâlâ arka planda eğitilmektedir. **Bir mind'ın id'sinin var olması, mind'ın hazır olduğu anlamına gelmez** — mind yalnızca `readyToChat` `true` olduğunda yanıt verebilir. Tek istisna `manual` modudur: bu mind'lar veri toplamayı atlar ve oluşturuldukları anda `completed` olur.

Mind hazır olana kadar özel eğitim uç noktasını yoklayın:

```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
}
```

### Durum değerleri

<table>
<thead>
  <tr>
    <th>
      Durum
    </th>
    
    <th>
      Anlamı
    </th>
    
    <th>
      <code>
        readyToChat
      </code>
    </th>
  </tr>
</thead>

<tbody>
  <tr>
    <td>
      <code>
        queued
      </code>
    </td>
    
    <td>
      Eğitim kuyruğa alındı ama henüz başlamadı.
    </td>
    
    <td>
      <code>
        false
      </code>
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        running
      </code>
    </td>
    
    <td>
      Mind etkin şekilde bilgi topluyor ve persona'sını oluşturuyor.
    </td>
    
    <td>
      <code>
        false
      </code>
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        completed
      </code>
    </td>
    
    <td>
      Eğitim bitti. Mind sohbete hazır.
    </td>
    
    <td>
      <code>
        true
      </code>
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        failed
      </code>
    </td>
    
    <td>
      Eğitim tamamlanmadı. <code>
        error
      </code>
      
      'u inceleyin ve yeniden denenebilirse yeniden eğitin.
    </td>
    
    <td>
      <code>
        false
      </code>
    </td>
  </tr>
</tbody>
</table>

`GET /v1/minds/{id}` de mind'ın geri kalanıyla birlikte `readyToChat` (ve `trainingStatus`) döndürür; böylece tek bir okuma size hem mind'ın kim olduğunu hem de henüz yanıt verip veremeyeceğini söyler.

### Eğitim başarısız olduğunda

`status` `failed` olduğunda, yanıt bir `code` ve bir `retryable` bayrağı içeren bir `error` nesnesi içerir:

<table>
<thead>
  <tr>
    <th>
      Hata kodu
    </th>
    
    <th>
      Anlamı
    </th>
    
    <th>
      <code>
        retryable
      </code>
    </th>
  </tr>
</thead>

<tbody>
  <tr>
    <td>
      <code>
        COLLECTION_FAILED
      </code>
    </td>
    
    <td>
      Bilgi toplama tamamlanamadı.
    </td>
    
    <td>
      <code>
        true
      </code>
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        PROFILE_GEN_FAILED
      </code>
    </td>
    
    <td>
      Persona profili oluşturulamadı.
    </td>
    
    <td>
      <code>
        true
      </code>
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        TIMEOUT
      </code>
    </td>
    
    <td>
      Eğitim zaman bütçesini aştı ve durduruldu.
    </td>
    
    <td>
      <code>
        true
      </code>
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        INTERNAL
      </code>
    </td>
    
    <td>
      Beklenmeyen bir iç hata oluştu.
    </td>
    
    <td>
      <code>
        false
      </code>
    </td>
  </tr>
</tbody>
</table>

### Yeniden eğitim

Bir mind `failed` ile biterse (ya da yalnızca `completed` bir mind'ı yeniden oluşturmak isterseniz) onu yeniden eğitin:

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

Bu, mind'ı yeniden kuyruğa alır ve `status` değeri `queued` olan yeni bir `training` bloğu döndürür. Yeniden eğitim yalnızca tamamlanmış mind'larda çalışır: hâlâ `queued` veya `running` olan bir mind, zaten bir eğitim çalışması sürdüğü için `409 Conflict` döndürür. Yeniden eğitimden sonra, `readyToChat` `true` olana kadar `GET /v1/minds/{id}/training`'i tekrar yoklayın.

## Profil Resimleri

Bir `profileImageUrl` sağladığınızda:

1. Resim harici URL'den indirilir
2. Güvenli depolamaya yüklenir
3. Saklanan URL yanıtta döndürülür

Desteklenen formatlar: JPG, PNG, GIF, WEBP

## Eğitim Nasıl Çalışır

Sistem, seçtiğiniz mod, tip ve disipline dayalı olarak akıllı bir system prompt'u otomatik olarak oluşturur:

- **Keywords modu**: Belirttiğiniz anahtar kelimeler etrafında uzmanlık oluşturur
- **Clone modu**: Belirtilen kişinin tarzını ve bilgisini taklit eden bir profil oluşturur
- **Link modu**: Sağlanan URL'den bilgi çıkarır
- **Manual modu**: Özel bilgi ile eğiteceğiniz temel bir asistan oluşturur

Mind'ınızı oluşturduktan sonra [bilgi yükleyerek](/api/knowledge) daha da geliştirebilirsiniz.

## Plan Limitleri

Güncel herkese açık varsayılanlar için oluşturulan [plan limiti tablosuna](/api/overview) bakın. Sözleşmeye özel geçersiz kılmalar farklı olabilir; entegrasyonlar kimliği doğrulanmış bir `PLAN_LIMIT` yanıtındaki `data.limit` ve `data.current` değerlerini kullanmalıdır. Individual planı API payload'larında `"premium"` olarak görünür.

Limitinize ulaştığınızda, `403 Forbidden` hatası alırsınız:

```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
  }
}
```

## Hata Yanıtları

### 400 Bad Request

Eksik veya geçersiz parametreler.

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

### 401 Unauthorized

Geçersiz veya eksik API key.

### 403 Forbidden

Plan limitine ulaşıldı.

### 500 Internal Server Error

Sunucu tarafı hata (nadir).

## Mind Güncelle

Ad, açıklama, system prompt ve diğer ayarlar dahil olmak üzere mevcut bir mind'ın yapılandırmasını güncelleyin.

**Endpoint:** `PUT /api/v1/minds/{mindId}`

**Headers:**

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

### İstek Body

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

### Parametreler

<table>
<thead>
  <tr>
    <th>
      Parametre
    </th>
    
    <th>
      Tip
    </th>
    
    <th>
      Zorunlu
    </th>
    
    <th>
      Açıklama
    </th>
  </tr>
</thead>

<tbody>
  <tr>
    <td>
      <code>
        name
      </code>
    </td>
    
    <td>
      string
    </td>
    
    <td>
      Hayır
    </td>
    
    <td>
      Mind'ın adı (2-100 karakter)
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        description
      </code>
    </td>
    
    <td>
      string
    </td>
    
    <td>
      Hayır
    </td>
    
    <td>
      Mind'ın amacının açıklaması
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        type
      </code>
    </td>
    
    <td>
      string
    </td>
    
    <td>
      Hayır
    </td>
    
    <td>
      Tip: <code>
        creative
      </code>
      
      , <code>
        expert
      </code>
      
       veya <code>
        user
      </code>
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        discipline
      </code>
    </td>
    
    <td>
      string
    </td>
    
    <td>
      Hayır
    </td>
    
    <td>
      Mind'ın uzmanlık alanı
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        systemPrompt
      </code>
    </td>
    
    <td>
      string
    </td>
    
    <td>
      Hayır
    </td>
    
    <td>
      Mind'ın davranışını ve kişiliğini tanımlayan özel system prompt
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        tags
      </code>
    </td>
    
    <td>
      array
    </td>
    
    <td>
      Hayır
    </td>
    
    <td>
      Kategorilendirme için etiketler dizisi (maks 20 etiket)
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        isPublic
      </code>
    </td>
    
    <td>
      boolean
    </td>
    
    <td>
      Hayır
    </td>
    
    <td>
      Mind'ın herkese açık erişilebilir olup olmadığı
    </td>
  </tr>
</tbody>
</table>

### System Prompt

`systemPrompt` alanı, mind'ınızın nasıl davranacağını ve yanıt vereceğini özelleştirmenize olanak tanır. Bu şunlar için kullanışlıdır:

- **Persona özelleştirme**: Belirli kişilik özellikleri, iletişim tarzı veya uzmanlık alanları tanımlama
- **Yanıt formatı**: Mind'a belirli formatlarda yanıt vermesini söyleme (örn. madde işaretleri, numaralı listeler)
- **Alan kısıtlamaları**: Yanıtları belirli konular veya bakış açılarıyla sınırlama
- **Dil/ton**: Yanıtların dilini, resmiyet düzeyini veya tonunu ayarlama

**Örnek system prompt'lar:**

```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.
```

### Yanıt

```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"
  }
}
```

### Örnek: System Prompt Güncelle

```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."
  }'
```

### Örnek: Birden Fazla Alanı Güncelle

```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"]
  }'
```

### Hata Yanıtları

**400 Bad Request** - Güncellenecek geçerli alan yok veya geçersiz alan değerleri

**401 Unauthorized** - Geçersiz veya eksik API key

**403 Forbidden** - Bu mind'ı güncelleme izni yok (owner olmalısınız)

**404 Not Found** - Mind mevcut değil

## Mind Bilgi Örüntülerini Al

Belirli bir mind için düşünme örüntülerini ve çerçeveye göre düzenlenmiş bilgiyi al.

**Endpoint:** `GET /api/v1/minds/{mindId}/knowledge/patterns`

**Headers:**

```text
Authorization: Bearer minds_your_api_key
```

### Yanıt Yapısı

Endpoint, çerçevelere göre gruplandırılmış örüntüleri döndürür (örn. AOX Internal, OCEAN, DISC, vb.), yöntemler ve yetkinlikler, görülme sayılarını ve kanıtları gösterir.

```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"
                  }
                ]
              }
            ]
          }
        ]
      }
    ]
  }
}
```

### Yanıtı Anlamak

- **frameworks**: Mind'ın örüntülerini içeren çerçevelerin dizisi

  - **totalOccurrences**: Bu çerçevedeki toplam örüntü sayısı
  - **methods**: Tespit edilen düşünme yöntemleri veya yaklaşımları
  
    - **occurrences**: Bu yöntemin kaç kez göründüğü
    - **competencies**: Yöntem içindeki belirli beceriler veya alt alanlar
    
      - **occurrences**: Bu yetkinlik için örüntü sayısı
      - **evidence**: Bu örüntüyü gösteren alıntıların/kanıtların dizisi
      
        - **mind**: İçerikten gerçek alıntı veya öngörü
        - **portfolioItemId**: Kaynak materyale referans
        - **createdAt**: Bu örüntünün ne zaman tespit edildiği

### Örnek İstek

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

### Kullanım Senaryoları

- **Mind uzmanlığını anlama**: Mind'ınızın hangi yöntemleri ve yetkinlikleri öğrendiğini görün
- **Kalite güvencesi**: Örüntülerin eğitim verilerinden doğru şekilde çıkarıldığını doğrulayın
- **Bilgi boşlukları**: Daha fazla eğitim verisine ihtiyaç duyulan alanları belirleyin
- **Çerçeve karşılaştırması**: Bir mind'ın farklı çerçevelerde nasıl performans gösterdiğini karşılaştırın

### Hata Yanıtları

**401 Unauthorized** - Geçersiz veya eksik API key

**403 Forbidden** - Bu mind'a erişim yok

**404 Not Found** - Mind mevcut değil

## System Prompt'u Yeniden Oluştur

Mevcut bilgi tabanını kullanarak bir mind için tüm system prompt bileşenlerini yeniden oluşturun. Bu, UI'nin "Generate All" düğmesiyle aynı AI destekli oluşturmayı kullanır.

**Endpoint:** `POST /api/v1/minds/{mindId}/regenerate-prompt`

**Headers:**

```text
Authorization: Bearer minds_your_api_key
```

### Nasıl Çalışır

Endpoint, mind'ın bilgi tabanını (portfolio öğeleri, örüntüler, embedding'ler) analiz eder ve tüm prompt bileşenlerini oluşturur:

**user** tipi mind'lar için:

- Core Identity & Demographics
- Needs & Motivations
- Pain Points & Challenges
- Tone & Communication Style
- Goals & Desires
- Behavioral Patterns

**expert** tipi mind'lar için:

- Core Identity & Personality
- Professional Expertise & Credentials
- Tone & Communication Style
- Professional Approach & Methods
- Domain Knowledge

**creative** tipi mind'lar için:

- Core Identity & Personality
- Creative Philosophy & Values
- Tone & Communication Style
- Creative Approach & Methods
- Domain Expertise

### Yanıt

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

### Örnek İstek

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

### Kullanım Senaryoları

- **Bilgi ekledikten sonra**: Yeni eklenen bilgi öğelerini dahil etmek için prompt'u yeniden oluşturun
- **Persona iyileştirme**: Mevcut bilgi örüntülerine dayalı olarak personayı güncellemek için yeniden oluşturun
- **Özelleştirmeleri sıfırla**: Manuel düzenlemeleri temizleyin ve bilgi tabanından yeni prompt'lar yeniden oluşturun

### Hata Yanıtları

**401 Unauthorized** - Geçersiz veya eksik API key

**403 Forbidden** - Bu mind'ı değiştirme izni yok (owner olmalısınız)

**404 Not Found** - Mind mevcut değil

**500 Internal Server Error** - Prompt oluşturulamadı (örn. yetersiz bilgi)

## Mind Sil

Bilgi, portfolio öğeleri ve dosyalar dahil olmak üzere bir mind'ı ve ilişkili tüm verileri kalıcı olarak silin.

**Endpoint:** `DELETE /api/v1/minds/{mindId}`

**Headers:**

```text
Authorization: Bearer minds_your_api_key
```

### Yanıt

Başarılı olduğunda boş bir body ile `204 No Content` döndürür.

### Örnek İstek

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

### Nelerin Silineceği

Bir mind sildiğinizde, aşağıdakiler kalıcı olarak kaldırılır:

- Mind'ın kendisi ve tüm yapılandırma
- Tüm bilgi ve eğitim verileri
- Tüm portfolio öğeleri ve ilişkili dosyalar
- Tüm sohbet geçmişi ve mesajlar
- Profil resimleri ve yüklenen dosyalar

**Uyarı:** Bu eylem geri alınamaz.

### Hata Yanıtları

**400 Bad Request** - Geçersiz mind ID formatı

**401 Unauthorized** - Geçersiz veya eksik API key

**403 Forbidden** - Bu mind'ı silme izni yok (owner olmalısınız)

**404 Not Found** - Mind mevcut değil

## Sonraki Adımlar

- [Mind'ınıza bilgi yükleyin](/api/knowledge)
- [Mind'ınızla sohbet edin](/api/chat)
- [Hatalar ve limitler](/api/errors) hakkında bilgi edinin
