---
title: "API Knowledge"
description: "Ajoutez des connaissances à vos minds via des fichiers, des mots-clés ou des liens."
---

# API Knowledge

Ajoutez des connaissances à vos minds via trois méthodes : **Fichier**, **Mot-clé** ou **Lien**. Les connaissances sont traitées, embarquées et récupérées automatiquement pendant les conversations.

**Remarque :** Les opérations de liste, d'ajout et de suppression sont disponibles via l'API v1. L'enrichissement de connaissances via recherche par mots-clés est également pris en charge via le même endpoint d'ajout.

---

## Lister les éléments de connaissance

Récupère tous les éléments de connaissance d'un mind.

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

**En-têtes :**

```text
Authorization: Bearer minds_your_api_key
```

**Exemple :**

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

**Réponse :**

```json
{
  "success": true,
  "data": {
    "items": [
      {
        "id": "660e8400-e29b-41d4-a716-446655440001",
        "description": "Company Employee Handbook 2025",
        "link": null,
        "filePath": "portfolio/user-id/1234567890_handbook.pdf",
        "isWatched": false,
        "createdAt": "2025-12-10T12:00:00.000Z",
        "updatedAt": "2025-12-10T12:00:00.000Z"
      }
    ],
    "total": 1
  }
}
```

<table>
<thead>
  <tr>
    <th>
      Champ
    </th>
    
    <th>
      Type
    </th>
    
    <th>
      Description
    </th>
  </tr>
</thead>

<tbody>
  <tr>
    <td>
      <code>
        data.items
      </code>
    </td>
    
    <td>
      array
    </td>
    
    <td>
      Tableau d'objets éléments de connaissance
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        data.total
      </code>
    </td>
    
    <td>
      number
    </td>
    
    <td>
      Nombre total d'éléments de connaissance pour ce mind
    </td>
  </tr>
</tbody>
</table>

---

## Téléversement de fichiers

Téléversez des documents ou des images directement vers un mind.

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

**Content-Type :** `multipart/form-data`

<table>
<thead>
  <tr>
    <th>
      Champ
    </th>
    
    <th>
      Type
    </th>
    
    <th>
      Requis
    </th>
    
    <th>
      Description
    </th>
  </tr>
</thead>

<tbody>
  <tr>
    <td>
      <code>
        file
      </code>
    </td>
    
    <td>
      file
    </td>
    
    <td>
      Oui
    </td>
    
    <td>
      Fichier à téléverser (max 50 Mo)
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        description
      </code>
    </td>
    
    <td>
      string
    </td>
    
    <td>
      Oui
    </td>
    
    <td>
      Description du contenu
    </td>
  </tr>
</tbody>
</table>

**Formats pris en charge :**

- Documents : PDF, DOCX, DOC, TXT, MD, RTF, CSV, JSON, XML
- Images : JPG, JPEG, PNG, GIF, WEBP

**Exemple :**

```bash
curl -X POST "https://getminds.ai/api/v1/minds/{mindId}/knowledge" \
  -H "Authorization: Bearer minds_your_api_key" \
  -F "file=@./handbook.pdf" \
  -F "description=Company Employee Handbook 2025"
```

**Réponse :** `201 Created`

```json
{
  "success": true,
  "data": {
    "id": "660e8400-e29b-41d4-a716-446655440001",
    "description": "Company Employee Handbook 2025",
    "filePath": "portfolio/user-id/1234567890_handbook.pdf",
    "createdAt": "2025-12-10T12:00:00.000Z"
  }
}
```

---

## Recherche par mots-clés

Ajoutez des connaissances en recherchant des mots-clés sur le web. Interroge Exa et YouTube, extrait le contenu et l'ajoute à la base de connaissances du mind.

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

**Content-Type :** `application/json`

Envoyez un corps JSON avec un tableau `keywords` (au lieu de `link`/`file`) pour déclencher l'enrichissement par recherche web.

<table>
<thead>
  <tr>
    <th>
      Paramètre
    </th>
    
    <th>
      Type
    </th>
    
    <th>
      Requis
    </th>
    
    <th>
      Description
    </th>
  </tr>
</thead>

<tbody>
  <tr>
    <td>
      <code>
        keywords
      </code>
    </td>
    
    <td>
      string<span>
        
      </span>
    </td>
    
    <td>
      Oui
    </td>
    
    <td>
      Mots-clés à rechercher (max 35)
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        regeneratePrompt
      </code>
    </td>
    
    <td>
      boolean
    </td>
    
    <td>
      Non
    </td>
    
    <td>
      Régénère le system prompt après (par défaut : true)
    </td>
  </tr>
</tbody>
</table>

**Exemple :**

```bash
curl -X POST "https://getminds.ai/api/v1/minds/{mindId}/knowledge" \
  -H "Authorization: Bearer minds_your_api_key" \
  -H "Content-Type: application/json" \
  -d '{"keywords": ["solar panel efficiency", "photovoltaic trends"]}'
```

**Réponse :** `202 Accepted`

```json
{
  "success": true,
  "data": {
    "sparkId": "660e8400-e29b-41d4-a716-446655440000",
    "keywords": ["solar panel efficiency", "photovoltaic trends"],
    "queued": true,
    "regeneratePrompt": true,
    "message": "Knowledge enrichment queued with 2 keyword(s)."
  }
}
```

**Remarque :** Opération asynchrone. Le traitement s'exécute en arrière-plan et peut prendre plusieurs minutes.

---

## Lien

Ajoutez des connaissances depuis une URL. Prend en charge les pages web, les vidéos YouTube et les articles de recherche.

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

**Content-Type :** `application/json`

<table>
<thead>
  <tr>
    <th>
      Paramètre
    </th>
    
    <th>
      Type
    </th>
    
    <th>
      Requis
    </th>
    
    <th>
      Description
    </th>
  </tr>
</thead>

<tbody>
  <tr>
    <td>
      <code>
        link
      </code>
    </td>
    
    <td>
      string
    </td>
    
    <td>
      Oui
    </td>
    
    <td>
      URL vers le contenu web
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        description
      </code>
    </td>
    
    <td>
      string
    </td>
    
    <td>
      Oui
    </td>
    
    <td>
      Description du contenu
    </td>
  </tr>
</tbody>
</table>

**Exemple :**

```bash
curl -X POST "https://getminds.ai/api/v1/minds/{mindId}/knowledge" \
  -H "Authorization: Bearer minds_your_api_key" \
  -H "Content-Type: application/json" \
  -d '{"link": "https://example.com/article", "description": "Industry trends article"}'
```

**Réponse :** `201 Created`

```json
{
  "success": true,
  "data": {
    "id": "660e8400-e29b-41d4-a716-446655440001",
    "link": "https://example.com/article",
    "description": "Industry trends article",
    "createdAt": "2025-12-10T12:00:00.000Z"
  }
}
```

**Types de liens pris en charge :**

- Pages web (contenu extrait via scraping)
- Vidéos YouTube (transcriptions extraites automatiquement)
- Articles de recherche (arxiv, etc.)

---

## Watch (mise à jour automatique)

Les éléments de connaissance de type lien peuvent être « watched » pour vérifier automatiquement les mises à jour de contenu sur un cycle hebdomadaire. Lorsque des changements sont détectés, les connaissances sont retraitées et re-embarquées.

Le Watch est géré via l'interface produit. Le statut Watch est visible lorsque vous listez les éléments de connaissance via l'API (champ `isWatched`).

**Remarque :** Le Watch n'est disponible que pour les connaissances de type lien, pas pour les fichiers ni les recherches par mots-clés.

---

## Mettre à jour un élément de connaissance

Met à jour la description d'un élément de connaissance existant.

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

**En-têtes :**

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

**Corps de la requête :**

```json
{
  "description": "Updated description for this knowledge item"
}
```

<table>
<thead>
  <tr>
    <th>
      Paramètre
    </th>
    
    <th>
      Type
    </th>
    
    <th>
      Requis
    </th>
    
    <th>
      Description
    </th>
  </tr>
</thead>

<tbody>
  <tr>
    <td>
      <code>
        description
      </code>
    </td>
    
    <td>
      string
    </td>
    
    <td>
      Oui
    </td>
    
    <td>
      Description mise à jour (ne doit pas être vide)
    </td>
  </tr>
</tbody>
</table>

**Exemple :**

```bash
curl -X PUT "https://getminds.ai/api/v1/minds/{mindId}/knowledge/{itemId}" \
  -H "Authorization: Bearer minds_your_api_key" \
  -H "Content-Type: application/json" \
  -d '{"description": "Updated handbook description"}'
```

**Réponse :**

```json
{
  "success": true,
  "data": {
    "id": "660e8400-e29b-41d4-a716-446655440001",
    "description": "Updated handbook description",
    "link": null,
    "filePath": "portfolio/user-id/1234567890_handbook.pdf",
    "isWatched": false,
    "createdAt": "2025-12-10T12:00:00.000Z",
    "updatedAt": "2025-12-15T08:30:00.000Z"
  }
}
```

### Réponses d'erreur

**400 Bad Request** — Aucun champ valide à mettre à jour ou description vide

**401 Unauthorized** — Clé API invalide ou manquante

**404 Not Found** — Élément de connaissance ou mind non trouvé

---

## Enrichir via des mots-clés (convenance)

Alias pratique pour l'enrichissement de connaissances par mots-clés.

**Endpoint :** `POST /api/v1/minds/{mindId}/knowledge/enrich`

Équivaut à `POST /api/v1/minds/{mindId}/knowledge` avec un corps `keywords`. Voir [Recherche par mots-clés](#keyword-search) pour tous les détails.

**Exemple :**

```bash
curl -X POST "https://getminds.ai/api/v1/minds/{mindId}/knowledge/enrich" \
  -H "Authorization: Bearer minds_your_api_key" \
  -H "Content-Type: application/json" \
  -d '{"keywords": ["solar panel efficiency", "photovoltaic trends"]}'
```

---

## Supprimer un élément de connaissance

Supprime définitivement un élément de connaissance et toutes les données associées (embeddings, patterns, fichiers).

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

**En-têtes :**

```text
Authorization: Bearer minds_your_api_key
```

**Exemple :**

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

**Réponse :** `204 No Content` (corps vide en cas de succès)

### Ce qui est supprimé

- L'enregistrement de l'élément de connaissance
- Tous les embeddings vectoriels associés
- Tous les patterns associés
- Le fichier téléversé depuis le stockage (si basé sur un fichier)

**Avertissement :** Cette action est irréversible.

---

## Fonctionnement du traitement

1. **Upload** — Le contenu est stocké et l'API renvoie un succès
2. **Extraction** — Un traitement en arrière-plan extrait le texte (scraping, transcriptions, OCR, vision)
3. **Embedding** — Le contenu est converti en embeddings vectoriels
4. **Retrieval** — Pendant le chat, les connaissances pertinentes sont récupérées automatiquement par recherche sémantique

---

## Erreurs

<table>
<thead>
  <tr>
    <th>
      Code
    </th>
    
    <th>
      Message
    </th>
    
    <th>
      Cause
    </th>
  </tr>
</thead>

<tbody>
  <tr>
    <td>
      400
    </td>
    
    <td>
      <code>
        Link and description are required
      </code>
    </td>
    
    <td>
      Champs requis manquants
    </td>
  </tr>
  
  <tr>
    <td>
      400
    </td>
    
    <td>
      <code>
        Keywords array is required
      </code>
    </td>
    
    <td>
      Mots-clés vides ou manquants
    </td>
  </tr>
  
  <tr>
    <td>
      400
    </td>
    
    <td>
      <code>
        File too large
      </code>
    </td>
    
    <td>
      Le fichier dépasse la limite de 50 Mo
    </td>
  </tr>
  
  <tr>
    <td>
      400
    </td>
    
    <td>
      <code>
        Can only watch link-based knowledge
      </code>
    </td>
    
    <td>
      Tentative de watch sur un fichier
    </td>
  </tr>
  
  <tr>
    <td>
      404
    </td>
    
    <td>
      <code>
        Mind not found or access denied
      </code>
    </td>
    
    <td>
      ID de Mind invalide ou pas d'accès
    </td>
  </tr>
  
  <tr>
    <td>
      415
    </td>
    
    <td>
      <code>
        Unsupported Content-Type
      </code>
    </td>
    
    <td>
      En-tête Content-Type incorrect
    </td>
  </tr>
</tbody>
</table>

---

## Étapes suivantes

- [Converser avec votre mind](/docs/api/chat)
- [Créer des minds](/docs/api/minds)
- [Erreurs et limites de l'API](/docs/api/errors)
