> ## Documentation Index
> Fetch the complete documentation index at: https://docs.bookivox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Uploads de fichiers

> Uploader des fichiers via l'API : source CSV de campagne et documents de base de connaissance (URL présignées + processing).

## CSV de campagne (`source_id`)

### 1. Obtenir une URL d'upload

`POST /api/v1/api/campaign/sources/presigned-upload-url`

| Champ | Type | Requis | Contraintes |
| - | - | -: | - |
| `file_name` | string | oui | Doit se terminer par `.csv` |
| `file_size` | int | oui | ≤ 10 485 760 octets (10 Mo) |
| `content_type` | string | non | Défaut `text/csv` |

```json theme={null}
{ "file_name": "contacts.csv", "file_size": 12345, "content_type": "text/csv" }
```

Réponse :

```json theme={null}
{
  "upload_url": "https://...",
  "file_key": "opaque-reference",
  "expires_in": 900
}
```

### 2. Uploader le fichier

Faites un `PUT` vers `upload_url` :

```bash theme={null}
curl -sS -X PUT "$UPLOAD_URL" \
  -H "Content-Type: text/csv" \
  --data-binary @contacts.csv
```

> [!NOTE]
>
> Le `PUT` ne passe **pas** par Bookivox : c'est un upload **direct** vers le
> storage. Conservez le `file_key` : c'est le `source_id` à passer à la création de
> campagne.

### 3. Créer la campagne

```json theme={null}
{
  "name": "Campagne demo",
  "workflow_id": "c1f0a2e4-...-9b7",
  "source_type": "csv",
  "source_id": "<le file_key renvoyé à l'étape 1>"
}
```

> [!NOTE]
>
> `workflow_id` est un **UUID public** opaque (chaîne), pas l'entier interne.

**Erreurs fréquentes** : `422` si `file_name` ne finit pas par `.csv` ou si
`file_size` > 10 Mo ; `500` si le storage est indisponible.

## Base de connaissance (documents)

### 1. Obtenir une URL d'upload

`POST /api/v1/api/knowledge-base/upload-url`

```json theme={null}
{ "filename": "faq.pdf", "mime_type": "application/pdf" }
```

Réponse :

```json theme={null}
{ "upload_url": "https://...", "document_uuid": "..." }
```

### 2. Uploader le fichier

Faites un `PUT` vers `upload_url` avec le `Content-Type` du fichier.

### 3. Lancer le processing

`POST /api/v1/api/knowledge-base/process-document`

```json theme={null}
{ "document_uuid": "...", "upload_url": "https://...", "retrieval_mode": "chunked" }
```

> **[Campagnes (API)](https://docs.bookivox.com/api-reference/campaigns)**
>
> Créer et démarrer une campagne.

> **[Knowledge base (API)](https://docs.bookivox.com/api-reference/knowledge-base)**
>
> Cycle de vie des documents.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.