API v1

Branchez vos outils sur vos données

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.

Démarrage

Trois étapes, moins de deux minutes.

  1. 1Dans MyDJ CRM, ouvrez Paramètres → API & MCP et créez une clé. Réservé aux propriétaires et administrateurs.
  2. 2Cochez uniquement les permissions dont votre intégration a besoin, puis copiez le secret : il n’est affiché qu’une seule fois.
  3. 3Appelez l’API en passant la clé dans l’en-tête 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"
  }'

Authentification

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 OAuth
Clé d’API

Appartient à 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.

Jeton OAuth

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.

Permissions

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.

Assistants IA (MCP)

Le serveur MCP expose vos données comme des outils pour Claude, ChatGPT, Cursor et tout client compatible.

1

Copiez l’adresse du connecteur

Gardez-la : vous allez la coller dans Claude à l’étape suivante.
https://mydj-crm.com/api/mcp
2

Ouvrez vos connecteurs

Dans Claude (application ou claude.ai) :
  1. Ouvrez Paramètres, puis Connecteurs.
  2. Ajoutez un connecteur personnalisé.
  3. Nommez-le MyDJ CRM et collez l’adresse copiée.
3

Posez votre première question

Claude vous demande de vous connecter et de choisir les permissions à accorder. Demandez-lui « quels sont mes prochains événements ? » pour vérifier.

Ce que l’assistant peut faire du déroulé

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.

Endpoints REST

Toutes les adresses commencent par https://mydj-crm.com/api/v1.

MéthodeCheminPermissionDescription
GET/me—Organisation liée à la clé et permissions accordées
GET/event-typesevents:readTypes d’événement (Mariage, Anniversaire…)
GET/eventsevents:readLister les événements — filtres status, from, to, search
POST/eventsevents:writeCréer un événement
GET/events/{id}events:readDétail d’un événement
PATCH/events/{id}events:writeModifier un événement
DELETE/events/{id}events:writeSupprimer un événement
GET/events/{id}/equipmentevents:readMatériel affecté à l’événement
POST/events/{id}/equipmentevents:writeAffecter du matériel à l’événement
DELETE/events/{id}/equipment/{lineId}events:writeRetirer une ligne de matériel
GET/events/{id}/timelineevents:readDéroulé de l’événement, ordonné
PUT/events/{id}/timelineevents:writeRemplacer tout le déroulé — l’ordre du tableau fait foi
POST/events/{id}/timelineevents:writeInsérer une étape, à un rang précis ou à la fin
PATCH/events/{id}/timeline/{entryId}events:writeModifier une étape (heure, intitulé, note, surprise)
DELETE/events/{id}/timeline/{entryId}events:writeSupprimer une étape
GET/events/{id}/music-preferencesevents:readMorceaux souhaités ou à éviter
POST/events/{id}/music-preferencesevents:writeAjouter un morceau, artiste ou genre
PATCH/events/{id}/music-preferences/{prefId}events:writeModifier une préférence musicale
DELETE/events/{id}/music-preferences/{prefId}events:writeSupprimer une préférence musicale
GET/clientsclients:readLister les clients — filtres type, status, search
POST/clientsclients:writeCréer un client avec ses contacts
GET/clients/{id}clients:readDétail d’un client
PATCH/clients/{id}clients:writeModifier un client
DELETE/clients/{id}clients:writeSupprimer un client
POST/clients/{id}/contactsclients:writeAjouter un contact
PATCH/clients/{id}/contacts/{contactId}clients:writeModifier un contact
DELETE/clients/{id}/contacts/{contactId}clients:writeSupprimer un contact
GET/equipment-categoriesequipment:readCatégories du parc matériel
GET/equipmentequipment:readLister le matériel
POST/equipmentequipment:writeCréer du matériel
GET/equipment/{id}equipment:readDétail d’un matériel
PATCH/equipment/{id}equipment:writeModifier du matériel
DELETE/equipment/{id}equipment:writeSupprimer du matériel
GET/equipment/{id}/availabilityequipment:readDisponibilité 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.

Pagination

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).

Erreurs

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" }
  }
}
CodeHTTPSignification
UNAUTHORIZED401Clé absente, inconnue, révoquée ou expirée
SUBSCRIPTION_INACTIVE402L’abonnement de l’organisation n’est pas actif
FORBIDDEN403La clé n’a pas la permission demandée
NOT_FOUND404Ressource inexistante, ou hors de votre organisation
VALIDATION_ERROR400Données invalides — le détail liste les champs en cause
CONFLICT409Conflit de disponibilité ou doublon — souvent résolu avec force: true
RATE_LIMITED429Plus 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.

Collection Bruno

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_KEY

Une question, un cas particulier ?

La 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.