MudeyMudeyAPI-documentatie
    OpenAPIMijn sleutelsTerug naar Mudey

    Gids

    • Overzicht
    • Démarrer
    • Mettre une formation en ligne
    • Erreurs
    • Sécurité
    Compte
    • getCompte et droits de la clé
    • getCatégories du catalogue
    Formations
    • getLister mes formations
    • postCréer une formation
    • getLire une formation complète
    • patchModifier une formation
    • delSupprimer une formation
    • postMettre en ligne
    • postRetirer du catalogue
    Modules
    • postAjouter un module
    • putRéordonner les modules
    • patchModifier un module
    • delSupprimer un module
    Leçons
    • postAjouter une leçon
    • putRéordonner les leçons d'un module
    • getLire une leçon
    • patchModifier une leçon
    • delSupprimer une leçon
    Fichiers
    • postObtenir une adresse d'envoi
    Coupons
    • getLister mes coupons
    • postCréer un coupon
    • getLire un coupon
    • patchModifier un coupon
    • delSupprimer un coupon
    Élèves et revenus
    • getÉlèves d'une formation
    • getStatistiques d'une formation
    • getStatistiques de toutes mes formations
    • getRevenus d'un mois

    Op deze pagina

    • Overzicht
    • Démarrer
    • Mettre une formation en ligne
    • Erreurs
    • Sécurité
    • Referentie van de routes

    Ontwikkelaars

    API voor docenten

    Publiceer en beheer je opleidingen vanuit je eigen tools: lesprogramma, video-uploads, publicatie, studenten, statistieken en inkomsten.

    Een sleutel aanmaken in mijn docentenruimteOpenAPI-specificatie

    Sleutels maak je aan vanuit je docentenaccount, tabblad „API”. Een sleutel werkt alleen op je eigen opleidingen. De referentie hieronder is in het Frans.

    Démarrer

    Mettre en ligne et gérer ses formations depuis un script, un outil interne ou une chaîne de production vidéo. Clés créées depuis l'espace formateur (Paramètres > API). Toutes les réponses sont en JSON, les dates en ISO 8601 (UTC).

    • Adresse de base : https://mudey.fr/api/v1
    • Authentification : en-tête Authorization: Bearer mudey_sk_…. Une clé n'agit que sur VOS formations, avec les droits choisis à sa création.
    • Quota : 300 appels par minute et par clé (en-têtes X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset).
    • Spécification OpenAPI à importer dans Postman, Insomnia ou un générateur de client : /api/v1/openapi.json
    • Prix en unités de la devise (49.99), durées en secondes, dates ISO 8601 en UTC.
    export MUDEY_API_KEY="mudey_sk_..."
    
    curl "https://mudey.fr/api/v1/me" \
      -H "Authorization: Bearer $MUDEY_API_KEY"
    Mettre une formation en ligne, pas à pas

    1. Créer la formation et son programme en un seul appel, avec tout ce que demande l'éditeur : informations de base (catégorie et sous-catégorie, données par GET /categories), participants cibles (objectives, requirements, targetAudience), prix, messages et programme. Elle naît en brouillon, invisible du catalogue. Les offres Prime et Business se règlent avec offerTier, primePrice, businessPrice et le tier de chaque module.

    export MUDEY_API_KEY="mudey_sk_..."
    
    curl -X POST "https://mudey.fr/api/v1/courses" \
      -H "Authorization: Bearer $MUDEY_API_KEY" \
      -H "Content-Type: application/json" \
      -d '{
      "title": "Apprendre TypeScript",
      "subtitle": "Des bases aux types avancés, pas à pas",
      "description": "Des bases aux types avancés, avec des exercices corrigés à chaque module.",
      "language": "fr",
      "level": "BEGINNER",
      "categoryId": "…",
      "subcategoryId": "…",
      "primaryTopic": "TypeScript",
      "objectives": [
        "Typer une application React",
        "Écrire des types génériques"
      ],
      "requirements": [
        "Connaître les bases de JavaScript"
      ],
      "targetAudience": [
        "Développeurs JavaScript",
        "Étudiants en informatique"
      ],
      "price": 49.99,
      "originalPrice": 89.99,
      "welcomeMessage": "Bienvenue ! Commencez par le module 1, à votre rythme.",
      "congratulationsMessage": "Bravo, vous avez terminé la formation !",
      "sections": [
        {
          "title": "Les bases",
          "lessons": [
            {
              "title": "Installer TypeScript",
              "isFree": true
            },
            {
              "title": "Types primitifs"
            },
            {
              "title": "Mémo des commandes",
              "type": "TEXT",
              "content": "# Mémo\n..."
            }
          ]
        }
      ]
    }'

    La réponse contient l'identifiant de la formation (id) et celui de chaque leçon (sections[].lessons[].id).

    2. Envoyer chaque vidéo directement sur notre stockage : demandez une adresse signée, puis envoyez le fichier par PUT. Le fichier ne passe pas par nos serveurs, la taille n'est donc limitée qu'à 5 Go.

    export MUDEY_API_KEY="mudey_sk_..."
    export COURSE_ID="..."  # à remplacer
    
    curl -X POST "https://mudey.fr/api/v1/courses/$COURSE_ID/uploads" \
      -H "Authorization: Bearer $MUDEY_API_KEY" \
      -H "Content-Type: application/json" \
      -d '{
      "kind": "video",
      "fileName": "01-installer.mp4",
      "contentType": "video/mp4",
      "size": 104857600
    }'
    # => { "key": "videos/…/01-installer.mp4", "uploadUrl": "https://…", "method": "PUT" }
    
    # uploadUrl reçu à l'étape précédente
    curl -X PUT "$UPLOAD_URL" \
      -H "Content-Type: video/mp4" \
      --upload-file 01-installer.mp4

    3. Rattacher la vidéo à sa leçon avec la clé reçue (nous vérifions que le fichier est bien arrivé) :

    export MUDEY_API_KEY="mudey_sk_..."
    export COURSE_ID="..."  # à remplacer
    export LESSON_ID="..."  # à remplacer
    
    curl -X PATCH "https://mudey.fr/api/v1/courses/$COURSE_ID/lessons/$LESSON_ID" \
      -H "Authorization: Bearer $MUDEY_API_KEY" \
      -H "Content-Type: application/json" \
      -d '{
      "videoKey": "videos/…/01-installer.mp4",
      "durationSeconds": 412
    }'

    4. Ajouter la couverture (kind thumbnail, même principe), posée par PATCH /courses/$COURSE_ID avec thumbnailKey.

    5. Publier. Si quelque chose manque, la réponse 422 en donne la liste dans error.details.

    export MUDEY_API_KEY="mudey_sk_..."
    export COURSE_ID="..."  # à remplacer
    
    curl -X POST "https://mudey.fr/api/v1/courses/$COURSE_ID/publish" \
      -H "Authorization: Bearer $MUDEY_API_KEY"

    6. Lancer avec un coupon (facultatif) : code de réduction sur la formation, ou sur toutes vos formations sans courseId.

    export MUDEY_API_KEY="mudey_sk_..."
    
    curl -X POST "https://mudey.fr/api/v1/coupons" \
      -H "Authorization: Bearer $MUDEY_API_KEY" \
      -H "Content-Type: application/json" \
      -d '{
      "code": "LANCEMENT-2026",
      "courseId": "…",
      "discountType": "PERCENTAGE",
      "discountValue": 30,
      "maxUses": 100,
      "expiresAt": "2026-12-31T23:59:59Z"
    }'
    Erreurs

    Toute erreur a la même forme. Testez code, stable ; message est rédigé pour un humain et peut évoluer. Chaque réponse porte un en-tête X-Request-Id à nous transmettre en cas de problème.

    { "error": { "code": "validation_error", "message": "Données invalides",
      "details": [{ "field": "price", "message": "Number must be greater than or equal to 0" }] } }
    400invalid_jsonCorps qui n'est pas du JSON.
    401unauthorized, invalid_key, key_revoked, key_expiredClé absente ou inutilisable.
    403insufficient_scope, not_instructorDroit manquant sur la clé, ou compte qui n'est plus formateur.
    404not_foundRessource absente de VOS formations (celles des autres formateurs sont invisibles).
    409course_has_students, student_data, coupon_used, code_takenSuppression refusée pour protéger les élèves (dépubliez) ou un coupon déjà utilisé (désactivez) ; code de coupon déjà pris.
    413file_too_large, payload_too_largeFichier ou corps trop lourd.
    422validation_error, not_publishable, invalid_category, invalid_subcategory, invalid_key, file_missing, invalid_order…Données refusées, details précise.
    429rate_limitedQuota dépassé : attendre Retry-After secondes.
    Sécurité
    • La clé n'est affichée qu'une fois ; nous n'en gardons qu'une empreinte et ne pouvons pas vous la renvoyer.
    • Appelez l'API depuis un serveur ou un script, jamais depuis une page web ou une application publiée : la clé y serait lisible.
    • Donnez à chaque clé le minimum de droits et une durée de validité ; révoquez-la dès qu'elle a pu fuiter.
    • Une clé ne voit que vos formations. Les élèves sont listés sans e-mail ni téléphone.
    • Les suppressions qui effaceraient la progression d'élèves sont refusées : dépubliez plutôt.

    Referentie van de routes

    Compte

    Clé utilisée et référentiels.

    • getCompte et droits de la clé/me
    • getCatégories du catalogue/categories

    Formations

    Créer, modifier, publier, supprimer.

    • getLister mes formations/courses
    • postCréer une formation/courses
    • getLire une formation complète/courses/{courseId}
    • patchModifier une formation/courses/{courseId}
    • deleteSupprimer une formation/courses/{courseId}
    • postMettre en ligne/courses/{courseId}/publish
    • postRetirer du catalogue/courses/{courseId}/unpublish

    Modules

    Sections du programme.

    • postAjouter un module/courses/{courseId}/sections
    • putRéordonner les modules/courses/{courseId}/sections/order
    • patchModifier un module/courses/{courseId}/sections/{sectionId}
    • deleteSupprimer un module/courses/{courseId}/sections/{sectionId}

    Leçons

    Contenu du programme.

    • postAjouter une leçon/courses/{courseId}/sections/{sectionId}/lessons
    • putRéordonner les leçons d'un module/courses/{courseId}/sections/{sectionId}/lessons/order
    • getLire une leçon/courses/{courseId}/lessons/{lessonId}
    • patchModifier une leçon/courses/{courseId}/lessons/{lessonId}
    • deleteSupprimer une leçon/courses/{courseId}/lessons/{lessonId}

    Fichiers

    Vidéos, couvertures et ressources, envoyées directement sur S3.

    • postObtenir une adresse d'envoi/courses/{courseId}/uploads

    Coupons

    Codes de réduction sur vos formations.

    • getLister mes coupons/coupons
    • postCréer un coupon/coupons
    • getLire un coupon/coupons/{couponId}
    • patchModifier un coupon/coupons/{couponId}
    • deleteSupprimer un coupon/coupons/{couponId}

    Élèves et revenus

    Inscriptions, statistiques, relevés.

    • getÉlèves d'une formation/courses/{courseId}/students
    • getStatistiques d'une formation/courses/{courseId}/stats
    • getStatistiques de toutes mes formations/stats
    • getRevenus d'un mois/revenue

    © 2026 Mudey · API-documentatie

    openapi.jsonHelpcentrumContact