Une API REST et un serveur MCP pour connecter vos scripts, vos automatisations (Zapier, Make, n8n) et vos assistants IA à vos événements, vos clients et votre matériel. Tout est piloté par des clés que vous créez et révoquez vous-même.
Trois étapes, moins de deux minutes.
Authorization.Premier appel
curl https://mydj-crm.com/api/v1/me \
-H "Authorization: Bearer $MYDJ_KEY"Une réponse contenant votre organisation confirme que tout est en place. Vous pouvez alors créer un événement complet en une requête :
Créer un événement
curl -X POST https://mydj-crm.com/api/v1/events \
-H "Authorization: Bearer $MYDJ_KEY" \
-H "Content-Type: application/json" \
-d '{
"title": "Mariage Dupont",
"eventTypeId": "<id renvoyé par /event-types>",
"primaryClientId": "<id renvoyé par /clients>",
"startDateTime": "2026-06-20T18:00:00+02:00",
"endDateTime": "2026-06-21T03:00:00+02:00",
"venue": "Château de X"
}'Toutes les requêtes portent un jeton dans l’en-tête Authorization.
Authorization: Bearer mydj_xxxxxxxxxxxxxxxxxxxxxxxx # clé d’API
Authorization: Bearer mydj_at_xxxxxxxxxxxxxxxxxxxxxxxx # jeton OAuthAppartient à l’organisation. Idéale pour vos scripts, vos automatisations et tout ce qui tourne sans intervention humaine. Valable jusqu’à sa révocation ou son expiration.
Obtenu automatiquement par un assistant IA après votre accord. Rattaché au membre qui l’a autorisé et coupé dès qu’il quitte l’organisation. Rien à copier-coller.
Seule l’empreinte des secrets est stockée : ni MyDJ CRM ni son équipe ne peuvent relire une clé existante. Perdue, elle se remplace — elle ne se retrouve pas.
Chaque clé porte la liste exacte de ce qu’elle peut faire. Une permission d’écriture inclut la lecture correspondante.
events:read | Événements — lecture Lister et consulter les événements (prospects, devis, validés), leurs clients, leur matériel et leur déroulé. Inclut les types d'événement. |
events:write | Événements — écriture Créer, modifier et supprimer des événements, et gérer le matériel affecté à un événement. |
clients:read | Clients — lecture Lister et consulter les clients et leurs contacts. |
clients:write | Clients — écriture Créer, modifier, archiver des clients et gérer leurs contacts. |
equipment:read | Matériel — lecture Lister le matériel, ses catégories et vérifier ses disponibilités. |
equipment:write | Matériel — écriture Créer, modifier et supprimer du matériel. |
Une requête qui dépasse les permissions de la clé reçoit un 403 FORBIDDEN nommant la permission manquante.
Le serveur MCP expose vos données comme des outils pour Claude, ChatGPT, Cursor et tout client compatible.
Il lit et écrit le déroulé de vos événements : construire un planning complet, déplacer une étape, changer une heure, noter la musique ou l’ambiance voulue à un moment donné, marquer une étape comme surprise pour qu’elle reste masquée dans l’espace client. Il gère aussi la liste des morceaux souhaités ou à éviter.
« Ajoute une pause photo à 22h » ou « décale le repas d’une demi-heure » suffit : l’assistant retrouve l’événement et applique le changement.
L’assistant ne voit que les outils autorisés par vos permissions, et les actions destructrices lui demandent une confirmation explicite. Les applications connectées se révoquent à tout moment depuis Paramètres → API & MCP.
Toutes les adresses commencent par https://mydj-crm.com/api/v1.
| Méthode | Chemin | Permission | Description |
|---|---|---|---|
| GET | /me | — | Organisation liée à la clé et permissions accordées |
| GET | /event-types | events:read | Types d’événement (Mariage, Anniversaire…) |
| GET | /events | events:read | Lister les événements — filtres status, from, to, search |
| POST | /events | events:write | Créer un événement |
| GET | /events/{id} | events:read | Détail d’un événement |
| PATCH | /events/{id} | events:write | Modifier un événement |
| DELETE | /events/{id} | events:write | Supprimer un événement |
| GET | /events/{id}/equipment | events:read | Matériel affecté à l’événement |
| POST | /events/{id}/equipment | events:write | Affecter du matériel à l’événement |
| DELETE | /events/{id}/equipment/{lineId} | events:write | Retirer une ligne de matériel |
| GET | /events/{id}/timeline | events:read | Déroulé de l’événement, ordonné |
| PUT | /events/{id}/timeline | events:write | Remplacer tout le déroulé — l’ordre du tableau fait foi |
| POST | /events/{id}/timeline | events:write | Insérer une étape, à un rang précis ou à la fin |
| PATCH | /events/{id}/timeline/{entryId} | events:write | Modifier une étape (heure, intitulé, note, surprise) |
| DELETE | /events/{id}/timeline/{entryId} | events:write | Supprimer une étape |
| GET | /events/{id}/music-preferences | events:read | Morceaux souhaités ou à éviter |
| POST | /events/{id}/music-preferences | events:write | Ajouter un morceau, artiste ou genre |
| PATCH | /events/{id}/music-preferences/{prefId} | events:write | Modifier une préférence musicale |
| DELETE | /events/{id}/music-preferences/{prefId} | events:write | Supprimer une préférence musicale |
| GET | /clients | clients:read | Lister les clients — filtres type, status, search |
| POST | /clients | clients:write | Créer un client avec ses contacts |
| GET | /clients/{id} | clients:read | Détail d’un client |
| PATCH | /clients/{id} | clients:write | Modifier un client |
| DELETE | /clients/{id} | clients:write | Supprimer un client |
| POST | /clients/{id}/contacts | clients:write | Ajouter un contact |
| PATCH | /clients/{id}/contacts/{contactId} | clients:write | Modifier un contact |
| DELETE | /clients/{id}/contacts/{contactId} | clients:write | Supprimer un contact |
| GET | /equipment-categories | equipment:read | Catégories du parc matériel |
| GET | /equipment | equipment:read | Lister le matériel |
| POST | /equipment | equipment:write | Créer du matériel |
| GET | /equipment/{id} | equipment:read | Détail d’un matériel |
| PATCH | /equipment/{id} | equipment:write | Modifier du matériel |
| DELETE | /equipment/{id} | equipment:write | Supprimer du matériel |
| GET | /equipment/{id}/availability | equipment:read | Disponibilité sur une période — from, to, quantity |
Les prospects sont des événements au statut PROSPECT : récupérez-les avec GET /events?status=PROSPECT.
Les listes sont paginées par curseur, ce qui reste fiable même quand des données sont créées pendant votre parcours.
{
"data": [ { "id": "evt_123", "title": "Mariage Dupont" } ],
"nextCursor": "ZXZ0XzEyMw"
}Repassez la valeur de nextCursor dans le paramètre cursor pour obtenir la page suivante. Quand il vaut null, vous êtes au bout. La taille de page se règle avec limit (1 à 200, 50 par défaut).
Toutes les erreurs partagent la même forme, avec un code stable que votre intégration peut tester.
{
"error": {
"code": "FORBIDDEN",
"message": "This API key lacks the `events:write` scope.",
"details": { "requiredScope": "events:write" }
}
}| Code | HTTP | Signification |
|---|---|---|
UNAUTHORIZED | 401 | Clé absente, inconnue, révoquée ou expirée |
SUBSCRIPTION_INACTIVE | 402 | L’abonnement de l’organisation n’est pas actif |
FORBIDDEN | 403 | La clé n’a pas la permission demandée |
NOT_FOUND | 404 | Ressource inexistante, ou hors de votre organisation |
VALIDATION_ERROR | 400 | Données invalides — le détail liste les champs en cause |
CONFLICT | 409 | Conflit de disponibilité ou doublon — souvent résolu avec force: true |
RATE_LIMITED | 429 | Plus de 300 requêtes par minute sur cette clé |
Limite d’usage : 300 requêtes par minute et par clé. Au-delà, l’API répond 429 — espacez les appels et réessayez.
Dates : les dates-heures doivent préciser leur fuseau (2026-06-20T19:00:00+02:00 ou …Z). Dans les filtres from / to, une date seule (2026-09-05) couvre toute la journée, heure de Paris.
Une collection prête à l’emploi pour explorer l’API sans écrire une ligne de code.
Téléchargez la collection, décompressez-la, puis ouvrez le dossier dans Bruno (gratuit, hors ligne) : Open Collection. Choisissez l’environnement Production, collez votre clé dans la variable apiKey, et lancez les requêtes une par une ou toutes d’un coup.
Les dossiers s’enchaînent : chaque requête mémorise ce qu’elle crée et le dossier de nettoyage supprime tout à la fin, donc une exécution complète ne laisse aucune trace dans votre organisation.
En ligne de commande
cd mydj-crm-api
bru run --env Production --env-var apiKey=$MYDJ_KEYLa spécification OpenAPI décrit chaque champ de chaque requête et sert de source de vérité. Pour le reste, écrivez-nous : nous répondons aussi aux questions d’intégration.