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

# Créer une liste

> Créez une nouvelle liste de contacts pour organiser vos contacts et les réutiliser dans plusieurs campagnes.

### Endpoint

<ParamField method="POST" path="/v1/contact-groups/create" />

### Headers

<ParamField header="Authorization" type="string" required>
  Bearer token avec votre Secret Key (format: `Bearer sk_...`)
</ParamField>

### Body Parameters

<ParamField body="name" type="string" required>
  Nom de la liste de contacts
</ParamField>

<ParamField body="csvUrl" type="string">
  URL d'un fichier CSV à importer
</ParamField>

<ParamField body="contacts" type="array">
  Liste de contacts à ajouter directement (format JSON). Voir structure ci-dessous.
</ParamField>

#### Structure d'un contact (si fourni via JSON)

| Champ   | Type   | Requis | Description                                 |
| :------ | :----- | :----- | :------------------------------------------ |
| `phone` | string | Oui    | Numéro de téléphone au format international |
| `name`  | string | Non    | Nom du contact                              |
| `...`   | any    | Non    | Autres champs personnalisés                 |

### Exemples de requêtes

<CodeGroup>
  ```bash BASH theme={null}
  # Création via JSON direct
  curl -X POST https://api.wachap.com/v1/contact-groups/create \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer token" \
    -d '{
      "name": "Clients Premium",
      "contacts": [
        {
          "phone": "+2290112345678",
          "name": "John Doe",
          "city": "Abidjan"
        },
        {
          "phone": "+33612345678",
          "name": "Marie Dupont",
          "city": "Paris"
        }
      ]
    }'

  # Création via URL CSV
  curl -X POST https://api.wachap.com/v1/contact-groups/create \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer token" \
    -d '{
      "name": "Import CSV",
      "csvUrl": "https://example.com/contacts.csv"
    }'
  ```

  ```javascript JAVASCRIPT theme={null}
  const response = await fetch('https://api.wachap.com/v1/contact-groups/create', {
    method: 'POST',
    headers: {
      'Authorization': 'Bearer token',
      'Content-Type': 'application/json'
    },
    body: JSON.stringify({
      name: 'Clients Premium',
      contacts: [
        { phone: '+2290112345678', name: 'John Doe' }
      ]
    })
  });
  const data = await response.json();
  console.log(data);
  ```

  ```python PYTHON theme={null}
  import requests

  url = "https://api.wachap.com/v1/contact-groups/create"
  headers = {
      "Authorization": "Bearer token",
      "Content-Type": "application/json"
  }
  payload = {
      "name": "Clients Premium",
      "contacts": [
          { "phone": "+2290112345678", "name": "John Doe" }
      ]
  }
  response = requests.post(url, json=payload, headers=headers)
  print(response.json())
  ```

  ```php PHP theme={null}
  <?php
  $curl = curl_init();
  $payload = [
      "name" => "Clients Premium",
      "contacts" => [
          ["phone" => "+2290112345678", "name" => "John Doe"]
      ]
  ];
  curl_setopt_array($curl, [
    CURLOPT_URL => "https://api.wachap.com/v1/contact-groups/create",
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_POST => true,
    CURLOPT_POSTFIELDS => json_encode($payload),
    CURLOPT_HTTPHEADER => [
      "Authorization: Bearer token",
      "Content-Type: application/json"
    ],
  ]);
  $response = curl_exec($curl);
  curl_close($curl);
  echo $response;
  ?>
  ```
</CodeGroup>

### Exemple de réponse

```json theme={null}
{
  "success": true,
  "listId": "65f1234567890abcdef12345",
  "contactGroup": {
    "$id": "65f1234567890abcdef12345",
    "userId": "user_xxx",
    "name": "Clients Premium",
    "csvUrl": null,
    "status": "ready",
    "createdAt": "2024-03-15T10:00:00.000Z",
    "updatedAt": "2024-03-15T10:00:00.000Z"
  }
}
```

### Statuts possibles

| Statut      | Description                 |
| :---------- | :-------------------------- |
| `ready`     | Liste prête à être utilisée |
| `importing` | Import CSV en cours         |

### Codes d'erreur

| Code  | Description                                                |
| :---- | :--------------------------------------------------------- |
| `400` | MISSING\_NAME - Le nom de la liste est requis              |
| `401` | INVALID\_SECRET\_KEY - Clé secrète invalide                |
| `500` | CREATE\_CONTACT\_GROUP\_ERROR - Erreur lors de la création |


## OpenAPI

````yaml POST /contact-groups/create
openapi: 3.0.3
info:
  title: WaChap API
  version: 2.0.0
servers:
  - url: https://api.wachap.com/v1
    description: WaChap API server
security:
  - BearerAuth: []
tags:
  - name: Instances
    description: Créer et gérer des instances WhatsApp
  - name: Webhook
    description: Configuration des webhooks de réception
  - name: Messages
    description: Envoyer des messages WhatsApp
  - name: Comptes
    description: Gérer vos comptes WhatsApp connectés
  - name: SMS
    description: Service SMS de WaChap (V4) via FCM
  - name: Étiquettes WhatsApp
    description: Créer et associer des étiquettes aux conversations WhatsApp
paths:
  /contact-groups/create:
    post:
      tags:
        - Listes de contacts
      summary: Créer une liste de contacts
      description: Créer une nouvelle liste de contacts.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                csvUrl:
                  type: string
                contacts:
                  type: array
                  items:
                    type: object
                    properties:
                      phone:
                        type: string
                      name:
                        type: string
                      city:
                        type: string
      responses:
        '200':
          description: OK
components:
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT

````