
# Prise en main de l'API

L'API REST <span data-t="appName">DM Champ</span> vous permet de créer votre propre intégration au-dessus de votre compte. Vous pouvez créer et consulter des contacts, gérer des campagnes, des FAQ, des tâches et des rendez-vous, envoyer des messages, enregistrer des webhooks, lire des analyses et connecter des canaux de messagerie — tout ce que fait le tableau de bord, piloté par le code.

Ceci est la page centrale de la documentation de l'API. Si vous connectez <span data-t="appName">DM Champ</span> à un outil qui dispose déjà d'une intégration intégrée, vous n'aurez peut-être pas besoin de l'API. L'API est destinée aux intégrations personnalisées et à l'automatisation à grande échelle.

::: note
**Remarque :** Ces pages sont destinées aux développeurs. Si vous n'êtes pas développeur, partagez cette section avec votre équipe technique.
:::


---

## URL de base

Chaque requête est envoyée à la même adresse web de base, et tous les chemins dans ces documents lui sont relatifs :

```
https://api.dmchamp.com/v1
```

Ainsi, le point de terminaison des agents IA est `https://api.dmchamp.com/v1/agents`, celui des contacts est `https://api.dmchamp.com/v1/contacts`, et ainsi de suite.

Toutes les requêtes doivent utiliser une connexion sécurisée (HTTPS). Les requêtes HTTP simples sont rejetées.

---

## Obtenir une clé API

L'accès à l'API est une **fonctionnalité payante**. Si votre forfait ne l'inclut pas, chaque requête renvoie une `403` avec ce corps :

```json
{
  "success": false,
  "error_code": 403,
  "error": "This action requires the \"api_access\" feature, which is not enabled for this account."
}
```

Une fois l'accès à l'API activé sur votre forfait, générez une clé depuis le tableau de bord. La procédure étape par étape complète se trouve dans [Accès API](../integrations/api-access.md) — en résumé : allez dans **Paramètres → Intégrations → Clé API** pour générer ou régénérer votre clé. La section Clé API est distincte sous Intégrations, séparée des Webhooks, et elle n'apparaît qu'une fois l'accès à l'API activé sur votre forfait. Traitez cette clé comme un mot de passe : elle donne un accès complet à votre compte.

---

## Authentification

Vous pouvez envoyer votre clé API de quatre manières. Toutes fonctionnent sur chaque point de terminaison qui accepte l'authentification par clé API.

| Méthode | Comment | Idéal pour |
|---|---|---|
| Paramètre de requête | `?apiKey=YOUR_API_KEY` | Tests rapides, URL de navigateur, configurations héritées |
| En-tête | `X-API-Key: YOUR_API_KEY` | Intégrations en production |
| En-tête Bearer | `Authorization: Bearer YOUR_API_KEY` | Intégrations en production |
| Jeton d'ID Firebase | `Authorization: Bearer <ID token>` | Sessions d'applications propriétaires uniquement |

Pour la production, privilégiez l'une des formes d'en-tête afin que votre clé ne se retrouve jamais dans un journal de serveur ou dans l'historique du navigateur. La forme de paramètre de requête fonctionne toujours et est la plus simple pour un test ponctuel.

Consultez [Authentification](authentication.md) pour une analyse complète de chaque méthode, avec des exemples et des conseils sur le moment d'utiliser laquelle.

---

## Votre première requête

Voici un appel complet et fonctionnel qui liste les agents IA de votre compte. Il utilise votre clé API et renvoie une courte ligne par agent, du plus récent au plus ancien.

**cURL**

```bash
curl "https://api.dmchamp.com/v1/agents?apiKey=YOUR_API_KEY&view=summary"
```

**JavaScript**

```javascript
const res = await fetch("https://api.dmchamp.com/v1/agents?view=summary", {
  headers: {
    "X-API-Key": "YOUR_API_KEY",
  },
});

const data = await res.json();
console.log(data.agents);
```

**Python**

```python
import requests

res = requests.get(
    "https://api.dmchamp.com/v1/agents",
    params={"view": "summary"},
    headers={"X-API-Key": "YOUR_API_KEY"},
)

data = res.json()
print(data["agents"])
```

Une réponse réussie ressemble à ceci :

```json
{
  "success": true,
  "campaigns": [
    {
      "id": "NBCXrhqGPSFsd6MV7pRo",
      "name": "Inbound WhatsApp Leads",
      "type": "Incoming from Unknown Contacts",
      "status": "Live",
      "enabled": true,
      "archived": false,
      "created_at": 1700000000000,
      "ai_mode": true,
      "language": "en",
      "enabled_channels": ["whatsapp", "instagram"]
    }
  ],
  "next_cursor": null
}
```

---

## Réponses de succès et d'erreur

Chaque réponse JSON comporte un indicateur `success` afin que vous puissiez effectuer des branchements sans avoir à analyser les codes de statut.

Une réponse réussie est `success: true` accompagnée des données pour ce point de terminaison (le nom du champ varie — `campaigns`, `contacts`, `data`, etc.) :

```json
{
  "success": true,
  "campaigns": []
}
```

Une réponse en échec est `success: false` avec un message `error` lisible par l'humain et un `error_code` numérique qui correspond au statut HTTP :

```json
{
  "success": false,
  "error": "Invalid cursor",
  "error_code": 400
}
```

Vérifiez toujours `success` (ou le statut HTTP) avant de lire les données. Consultez [Erreurs et pagination](errors-and-pagination.md) pour obtenir le tableau complet des codes de statut et savoir comment paginer les grands ensembles de résultats.

---

## Limites de débit

Les requêtes authentifiées sont limitées à **300 requêtes par minute** par clé API. Il existe également un plafond plus large de **1 200 requêtes par minute par compte**, qui comptabilise toutes les requêtes authentifiées effectuées pour ce compte.

::: master-only
Agences : le second chiffre est celui sur lequel vous devez baser votre planification. Les requêtes que vous effectuez avec votre clé d'agence sont comptabilisées dans votre compte d'agence, même lorsqu'elles ciblent un sous-compte avec `sub_account_id` ; ainsi, un pic de provisionnement sur plusieurs clients partage un seul budget. Si un client a besoin de son propre budget, utilisez la clé API de ce sous-compte.
:::

Si vous dépassez l'une ou l'autre de ces limites, vous recevrez une réponse `429` :

```json
{
  "success": false,
  "error_code": 429,
  "error": "Rate limit exceeded. Please try again later."
}
```

Attendez un court instant avant de réessayer. Vous pouvez également vérifier votre utilisation actuelle à tout moment avec `GET https://api.dmchamp.com/v1/api-keys/usage`, qui renvoie le nombre de requêtes que vous avez effectuées dans la fenêtre actuelle et le moment où elle se réinitialise — utile pour créer une limitation côté client. Consultez [Clés API](api-keys.md).

---

## Guides des ressources

Les groupes de ressources ci-dessous disposent chacun de leur propre guide avec les chemins exacts, les champs de requête et les structures de réponse.

| Ressource | Ce qu'elle couvre |
|---|---|
| [Agents IA](agents.md) | Créer et configurer des agents IA : paramètres, heures d'activité, connaissances, règles de marquage, outils, médias et brouillons |
| [Points d'entrée](entry-points.md) | Décider quel agent IA répond à une nouvelle conversation : canaux par défaut, un agent par numéro WhatsApp, règles de mots-clés, de commentaires et d'abonnés |
| [Diffusions](broadcasts.md) | Créer, tarifer, lancer, suspendre et dupliquer des envois ponctuels vers une liste de contacts |
| [Campagnes](campaigns.md) | Créer, mettre à jour, dupliquer, activer, archiver et inspecter les campagnes et leur configuration de bot |
| [Contacts](contacts.md) | Créer, rechercher, lister, mettre à jour, importer, marquer et supprimer des contacts |
| [FAQ](faqs.md) | Gérer les entrées de questions-réponses utilisées par votre assistant IA et les lier aux campagnes |
| [Base de connaissances](knowledge-base.md) | Importer des sites web et des documents dans les connaissances de votre IA et regrouper les FAQ en groupes |
| [Tâches](tasks.md) | Créer et gérer les tâches CRM, les étapes de tableau et les types de tâches |
| [Messages](messages.md) | Envoyer des messages sortants et lire l'historique des conversations |
| [Rendez-vous](appointments.md) | Réserver, reprogrammer, annuler et supprimer des rendez-vous |
| [Canaux](channels.md) | Connecter et déconnecter des canaux de messagerie, acheter des numéros et définir quel agent IA répond aux nouvelles conversations sur chaque canal |
| [Modèles](templates.md) | Créer, soumettre et vérifier le statut d'approbation des modèles de messages WhatsApp |
| [Analytique](analytics.md) | Lire les statistiques quotidiennes des événements de message, l'utilisation des crédits et les cumuls des coûts de l'IA |
| [Webhooks](webhooks.md) | Enregistrer des points de terminaison pour recevoir des notifications d'événements en temps réel |
| [Équipe](team.md) | Gérer les membres de l'équipe, les invitations, les rôles, les autorisations et les départements |
| [Clés API](api-keys.md) | Inspecter, faire pivoter et révoquer votre clé API, vérifier l'utilisation des limites de débit et créer des clés supplémentaires avec un accès limité |

### Agents, points d'entrée et diffusions

Les agents IA, les points d'entrée et les diffusions sont tous inclus dans la spécification OpenAPI publiée, vous pouvez donc parcourir leurs champs exacts et exécuter des requêtes en direct dans l'[explorateur d'API](reference.md). Chacun dispose de son propre guide : [Agents IA](agents.md), [Points d'entrée](entry-points.md) et [Diffusions](broadcasts.md).

::: master-only
Le fait d'être dans la spécification signifie également que ces points de terminaison apparaissent comme des outils pour tout assistant IA que vous [connectez via MCP](../integrations/connect-ai-clients.md).
:::

---

## Lire cette documentation au format Markdown

Chaque page de cette documentation possède un équivalent en Markdown brut : prenez l'adresse de la page et ajoutez `/index.md` à la fin. Cette page est donc également disponible à l'adresse `https://docs.dmchamp.com/api/getting-started/index.md`, et elle est renvoyée sous forme de texte brut plutôt que de page web — pratique lorsque vous souhaitez coller une page dans un assistant IA ou l'intégrer dans un script.

Pour un assistant IA ou un script devant lire l'ensemble des données, deux fichiers prêts à l'emploi sont disponibles :

- `https://docs.dmchamp.com/llms.txt` — l'index : chaque page avec un résumé d'une ligne et un lien vers son équivalent Markdown, regroupés comme dans la barre latérale.
- `https://docs.dmchamp.com/llms-full.txt` — l'intégralité de la documentation dans un seul fichier Markdown. Chaque page commence par son titre et une ligne `Source:` contenant l'adresse de la page, afin qu'un assistant puisse citer la source d'une réponse.

Ces deux fichiers existent également pour chaque langue, sous le préfixe de langue (`https://docs.dmchamp.com/nl/llms.txt`, `https://docs.dmchamp.com/es/llms-full.txt`, etc.). Donnez à votre assistant l'adresse `llms.txt` et il récupérera les pages dont il a besoin, ou fournissez-lui `llms-full.txt` s'il doit avoir tout le contexte à la fois. Ils sont reconstruits à chaque modification de la documentation, ils ne sont donc jamais obsolètes.

Pour parcourir les pages vous-même, `https://docs.dmchamp.com/sitemap.xml` répertorie toutes les pages que nous publions. La documentation est délibérément exclue des moteurs de recherche ; récupérer ces adresses directement est donc le moyen d'y accéder depuis du code.

Rien de tout cela ne nécessite de clé API : les équivalents Markdown, les deux fichiers `llms` et le plan du site constituent l'interface complète.

---

## Étapes suivantes

- [Authentification](authentication.md) — choisissez la méthode d'authentification adaptée à votre intégration.
- [Erreurs et pagination](errors-and-pagination.md) — gérez les échecs et parcourez les résultats par page.
- [Accès API](../integrations/api-access.md) — générez votre clé et consultez des exemples concrets.
