Aller au contenu principal
QualiForma
CatalogueDevenir formateurQualiopiIADéveloppeurs
Connexion
  • Catalogue
  • Devenir formateur
  • Qualiopi
  • IA
  • Développeurs
  • Connexion
  • Vue d'ensemble

Démarrage

  • Quickstart
  • Authentification

Référence

  • API Reference (Scalar)

Endpoints

  • Tous les endpoints

Cœur LMS

  • Tenants
  • Utilisateurs
  • Formations
  • Inscriptions
  • Sessions live

Conformité Qualiopi

  • Dashboard Qualiopi
  • Conformité
  • Émargement
  • Questionnaires
  • Réclamations
  • Plans d'amélioration
  • Parcours adaptatifs
  • Compétences formateurs
  • BPF
  • Médiateurs

Paiements & Facturation

  • Paiements
  • Facturation Factur-X
  • Webhooks

Design System

  • Vue d'ensemble
  • Couleurs
  • Typographie
  • Espacement
  • Elevation
  • Motion
  • Radius
  • Composants
  • · Formulaires
  • · Feedback
  • · Navigation
  • · Progression
  • · Données
Swagger UI (s'ouvre dans un nouvel onglet)
  1. Développeurs
  2. Endpoints
  3. Mediators

Mediators — Médiateurs de la consommation

Gestion des médiateurs de la consommation référencés et du contrat actif du tenant. Obligation légale (article L612-1 du Code de la consommation) pour tout professionnel proposant des services à des consommateurs.

Obligations légales

  • L612-1 du Code de la consommation : tout professionnel B2C doit adhérer à un dispositif de médiation et en communiquer les coordonnées sur ses CGV et sa page contact.
  • Les coordonnées du médiateur souscrit sont automatiquement affichées sur les CGV générées et la page de contact publique du tenant.
  • Lien automatique avec le module complaints : toute réclamation peut être escaladée vers le médiateur via POST /complaints/:id/escalate-mediator.

Endpoints détaillés

get/api/v1/mediators

Lister les médiateurs référencés

Liste paginée des médiateurs de la consommation accrédités CECMC (Commission d’Évaluation et de Contrôle de la Médiation de la Consommation).

  • Mediators

Paramètres

NomTypeRequisExempleDescription
pagequerynon1—
perPagequerynon20—
scopequerynonNATIONALNATIONAL | REGIONAL
categoryquerynontrainingFiltrer par domaine (training, education, etc.)

Réponses

  • 200Liste paginée
    Réponse 200 · JSON
    {
      "data": [
        {
          "id": "med_abc123",
          "name": "Sophie Dupont",
          "organization": "Médiation Conso France",
          "contactEmail": "contact@mediation-conso.fr",
          "contactPhone": "+33 1 23 45 67 89",
          "website": "https://www.mediation-conso.fr",
          "accreditationNumber": "CECMC-2024-042",
          "scope": "NATIONAL",
          "categories": [
            "training",
            "education"
          ]
        }
      ],
      "meta": {
        "page": 1,
        "perPage": 20,
        "total": 18
      }
    }

Exemples

GET /api/v1/mediators · cURL / Shell
curl -X GET https://api.qualiforma.site/api/v1/mediators?page=1&perPage=20&scope=NATIONAL&category=training \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
  -H "X-Tenant-ID: qualiforma-demo"
GET /api/v1/mediators · JavaScript
const response = await fetch('https://api.qualiforma.site/api/v1/mediators?page=1&perPage=20&scope=NATIONAL&category=training', {
  method: 'GET',
  headers: {
    'Authorization': 'Bearer YOUR_ACCESS_TOKEN',
    'X-Tenant-ID': 'qualiforma-demo',
  },
});

if (!response.ok) {
  throw new Error(`HTTP ${response.status}: ${await response.text()}`);
}

const data = await response.json();
console.log(data);
GET /api/v1/mediators · Python
import requests

response = requests.get(
    'https://api.qualiforma.site/api/v1/mediators?page=1&perPage=20&scope=NATIONAL&category=training',
    headers={
        'Authorization': 'Bearer YOUR_ACCESS_TOKEN',
        'X-Tenant-ID': 'qualiforma-demo',
    },
    timeout=30,
)
response.raise_for_status()
data = response.json()
print(data)
GET /api/v1/mediators · PHP
<?php

use GuzzleHttp\Client;
use GuzzleHttp\Exception\GuzzleException;

$client = new Client(['base_uri' => 'https://api.qualiforma.site/api/v1/']);

try {
    $response = $client->get('mediators?page=1&perPage=20&scope=NATIONAL&category=training', [
        'headers' => [
            'Authorization' => 'Bearer YOUR_ACCESS_TOKEN',
            'X-Tenant-ID' => 'qualiforma-demo',
        ],
    ]);
    $data = json_decode($response->getBody()->getContents(), true);
    var_dump($data);
} catch (GuzzleException $e) {
    fwrite(STDERR, $e->getMessage());
}
get/api/v1/mediators/:id

Détail d’un médiateur

Retourne toutes les coordonnées et la portée d’accréditation du médiateur.

  • Mediators

Paramètres

NomTypeRequisExempleDescription
idpathouimed_abc123—

Réponses

  • 200OK
    Réponse 200 · JSON
    {
      "data": {
        "id": "med_abc123",
        "name": "Sophie Dupont",
        "organization": "Médiation Conso France",
        "contactEmail": "contact@mediation-conso.fr",
        "accreditationNumber": "CECMC-2024-042",
        "scope": "NATIONAL",
        "categories": [
          "training"
        ]
      }
    }
  • 404Médiateur introuvable

Exemples

GET /api/v1/mediators/:id · cURL / Shell
curl -X GET https://api.qualiforma.site/api/v1/mediators/med_abc123 \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
  -H "X-Tenant-ID: qualiforma-demo"
GET /api/v1/mediators/:id · JavaScript
const response = await fetch('https://api.qualiforma.site/api/v1/mediators/med_abc123', {
  method: 'GET',
  headers: {
    'Authorization': 'Bearer YOUR_ACCESS_TOKEN',
    'X-Tenant-ID': 'qualiforma-demo',
  },
});

if (!response.ok) {
  throw new Error(`HTTP ${response.status}: ${await response.text()}`);
}

const data = await response.json();
console.log(data);
GET /api/v1/mediators/:id · Python
import requests

response = requests.get(
    'https://api.qualiforma.site/api/v1/mediators/med_abc123',
    headers={
        'Authorization': 'Bearer YOUR_ACCESS_TOKEN',
        'X-Tenant-ID': 'qualiforma-demo',
    },
    timeout=30,
)
response.raise_for_status()
data = response.json()
print(data)
GET /api/v1/mediators/:id · PHP
<?php

use GuzzleHttp\Client;
use GuzzleHttp\Exception\GuzzleException;

$client = new Client(['base_uri' => 'https://api.qualiforma.site/api/v1/']);

try {
    $response = $client->get('mediators/med_abc123', [
        'headers' => [
            'Authorization' => 'Bearer YOUR_ACCESS_TOKEN',
            'X-Tenant-ID' => 'qualiforma-demo',
        ],
    ]);
    $data = json_decode($response->getBody()->getContents(), true);
    var_dump($data);
} catch (GuzzleException $e) {
    fwrite(STDERR, $e->getMessage());
}
post/api/v1/mediators

Référencer un médiateur (admin)

Ajoute un médiateur à la base de référence. Réservé aux super-admins. Le numéro d’accréditation CECMC doit être unique.

  • Mediators

Corps de requête

Content-Type : application/json

Body · JSON
{
  "name": "Sophie Dupont",
  "organization": "Médiation Conso France",
  "contactEmail": "contact@mediation-conso.fr",
  "contactPhone": "+33 1 23 45 67 89",
  "website": "https://www.mediation-conso.fr",
  "accreditationNumber": "CECMC-2024-042",
  "scope": "NATIONAL",
  "categories": [
    "training",
    "education"
  ]
}

Réponses

  • 201Médiateur créé
    Réponse 201 · JSON
    {
      "data": {
        "id": "med_new"
      }
    }
  • 409Numéro d’accréditation déjà utilisé
  • 422Validation échouée

Exemples

POST /api/v1/mediators · cURL / Shell
curl -X POST https://api.qualiforma.site/api/v1/mediators \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
  -H "X-Tenant-ID: qualiforma-demo" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "Sophie Dupont",
  "organization": "Médiation Conso France",
  "contactEmail": "contact@mediation-conso.fr",
  "contactPhone": "+33 1 23 45 67 89",
  "website": "https://www.mediation-conso.fr",
  "accreditationNumber": "CECMC-2024-042",
  "scope": "NATIONAL",
  "categories": [
    "training",
    "education"
  ]
}'
POST /api/v1/mediators · JavaScript
const response = await fetch('https://api.qualiforma.site/api/v1/mediators', {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer YOUR_ACCESS_TOKEN',
    'X-Tenant-ID': 'qualiforma-demo',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "name": "Sophie Dupont",
    "organization": "Médiation Conso France",
    "contactEmail": "contact@mediation-conso.fr",
    "contactPhone": "+33 1 23 45 67 89",
    "website": "https://www.mediation-conso.fr",
    "accreditationNumber": "CECMC-2024-042",
    "scope": "NATIONAL",
    "categories": [
      "training",
      "education"
    ]
  }),
});

if (!response.ok) {
  throw new Error(`HTTP ${response.status}: ${await response.text()}`);
}

const data = await response.json();
console.log(data);
POST /api/v1/mediators · Python
import requests

response = requests.post(
    'https://api.qualiforma.site/api/v1/mediators',
    headers={
        'Authorization': 'Bearer YOUR_ACCESS_TOKEN',
        'X-Tenant-ID': 'qualiforma-demo',
        'Content-Type': 'application/json',
    },
    json={
        'name': 'Sophie Dupont',
        'organization': 'Médiation Conso France',
        'contactEmail': 'contact@mediation-conso.fr',
        'contactPhone': '+33 1 23 45 67 89',
        'website': 'https://www.mediation-conso.fr',
        'accreditationNumber': 'CECMC-2024-042',
        'scope': 'NATIONAL',
        'categories': [
            'training',
            'education',
        ],
    },
    timeout=30,
)
response.raise_for_status()
data = response.json()
print(data)
POST /api/v1/mediators · PHP
<?php

use GuzzleHttp\Client;
use GuzzleHttp\Exception\GuzzleException;

$client = new Client(['base_uri' => 'https://api.qualiforma.site/api/v1/']);

try {
    $response = $client->post('mediators', [
        'headers' => [
            'Authorization' => 'Bearer YOUR_ACCESS_TOKEN',
            'X-Tenant-ID' => 'qualiforma-demo',
        ],
        'json' => [
            'name' => 'Sophie Dupont',
            'organization' => 'Médiation Conso France',
            'contactEmail' => 'contact@mediation-conso.fr',
            'contactPhone' => '+33 1 23 45 67 89',
            'website' => 'https://www.mediation-conso.fr',
            'accreditationNumber' => 'CECMC-2024-042',
            'scope' => 'NATIONAL',
            'categories' => [
                'training',
                'education',
            ],
        ],
    ]);
    $data = json_decode($response->getBody()->getContents(), true);
    var_dump($data);
} catch (GuzzleException $e) {
    fwrite(STDERR, $e->getMessage());
}
patch/api/v1/mediators/:id

Mettre à jour un médiateur (admin)

Mise à jour partielle (coordonnées, portée, catégories).

  • Mediators

Paramètres

NomTypeRequisExempleDescription
idpathouimed_abc123—

Corps de requête

Content-Type : application/json

Body · JSON
{
  "contactEmail": "nouveau@mediation-conso.fr",
  "categories": [
    "training",
    "b2b"
  ]
}

Réponses

  • 200Mis à jour
  • 404Introuvable

Exemples

PATCH /api/v1/mediators/:id · cURL / Shell
curl -X PATCH https://api.qualiforma.site/api/v1/mediators/med_abc123 \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
  -H "X-Tenant-ID: qualiforma-demo" \
  -H "Content-Type: application/json" \
  -d '{
  "contactEmail": "nouveau@mediation-conso.fr",
  "categories": [
    "training",
    "b2b"
  ]
}'
PATCH /api/v1/mediators/:id · JavaScript
const response = await fetch('https://api.qualiforma.site/api/v1/mediators/med_abc123', {
  method: 'PATCH',
  headers: {
    'Authorization': 'Bearer YOUR_ACCESS_TOKEN',
    'X-Tenant-ID': 'qualiforma-demo',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "contactEmail": "nouveau@mediation-conso.fr",
    "categories": [
      "training",
      "b2b"
    ]
  }),
});

if (!response.ok) {
  throw new Error(`HTTP ${response.status}: ${await response.text()}`);
}

const data = await response.json();
console.log(data);
PATCH /api/v1/mediators/:id · Python
import requests

response = requests.patch(
    'https://api.qualiforma.site/api/v1/mediators/med_abc123',
    headers={
        'Authorization': 'Bearer YOUR_ACCESS_TOKEN',
        'X-Tenant-ID': 'qualiforma-demo',
        'Content-Type': 'application/json',
    },
    json={
        'contactEmail': 'nouveau@mediation-conso.fr',
        'categories': [
            'training',
            'b2b',
        ],
    },
    timeout=30,
)
response.raise_for_status()
data = response.json()
print(data)
PATCH /api/v1/mediators/:id · PHP
<?php

use GuzzleHttp\Client;
use GuzzleHttp\Exception\GuzzleException;

$client = new Client(['base_uri' => 'https://api.qualiforma.site/api/v1/']);

try {
    $response = $client->patch('mediators/med_abc123', [
        'headers' => [
            'Authorization' => 'Bearer YOUR_ACCESS_TOKEN',
            'X-Tenant-ID' => 'qualiforma-demo',
        ],
        'json' => [
            'contactEmail' => 'nouveau@mediation-conso.fr',
            'categories' => [
                'training',
                'b2b',
            ],
        ],
    ]);
    $data = json_decode($response->getBody()->getContents(), true);
    var_dump($data);
} catch (GuzzleException $e) {
    fwrite(STDERR, $e->getMessage());
}
delete/api/v1/mediators/:id

Supprimer un médiateur (admin)

Supprime un médiateur référencé. Refuse la suppression si un tenant a un contrat actif (résilier d’abord).

  • Mediators

Paramètres

NomTypeRequisExempleDescription
idpathouimed_abc123—

Réponses

  • 204Supprimé
  • 409Médiateur encore lié à des contrats actifs

Exemples

DELETE /api/v1/mediators/:id · cURL / Shell
curl -X DELETE https://api.qualiforma.site/api/v1/mediators/med_abc123 \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
  -H "X-Tenant-ID: qualiforma-demo"
DELETE /api/v1/mediators/:id · JavaScript
const response = await fetch('https://api.qualiforma.site/api/v1/mediators/med_abc123', {
  method: 'DELETE',
  headers: {
    'Authorization': 'Bearer YOUR_ACCESS_TOKEN',
    'X-Tenant-ID': 'qualiforma-demo',
  },
});

if (!response.ok) {
  throw new Error(`HTTP ${response.status}: ${await response.text()}`);
}

const data = await response.json();
console.log(data);
DELETE /api/v1/mediators/:id · Python
import requests

response = requests.delete(
    'https://api.qualiforma.site/api/v1/mediators/med_abc123',
    headers={
        'Authorization': 'Bearer YOUR_ACCESS_TOKEN',
        'X-Tenant-ID': 'qualiforma-demo',
    },
    timeout=30,
)
response.raise_for_status()
data = response.json()
print(data)
DELETE /api/v1/mediators/:id · PHP
<?php

use GuzzleHttp\Client;
use GuzzleHttp\Exception\GuzzleException;

$client = new Client(['base_uri' => 'https://api.qualiforma.site/api/v1/']);

try {
    $response = $client->delete('mediators/med_abc123', [
        'headers' => [
            'Authorization' => 'Bearer YOUR_ACCESS_TOKEN',
            'X-Tenant-ID' => 'qualiforma-demo',
        ],
    ]);
    $data = json_decode($response->getBody()->getContents(), true);
    var_dump($data);
} catch (GuzzleException $e) {
    fwrite(STDERR, $e->getMessage());
}
get/api/v1/tenants/current/mediator-contract

Contrat de médiation actif du tenant

Retourne le contrat actif entre le tenant courant et le médiateur souscrit, ou 404 si aucun contrat actif.

  • Mediators
  • Tenants

Réponses

  • 200Contrat actif
    Réponse 200 · JSON
    {
      "data": {
        "id": "ctr_xyz",
        "mediatorId": "med_abc123",
        "mediator": {
          "name": "Sophie Dupont",
          "organization": "Médiation Conso France",
          "contactEmail": "contact@mediation-conso.fr",
          "website": "https://www.mediation-conso.fr"
        },
        "subscribedAt": "2026-01-15T00:00:00Z",
        "renewsAt": "2027-01-15T00:00:00Z"
      }
    }
  • 404Aucun contrat actif (obligation légale non remplie)

Exemples

GET /api/v1/tenants/current/mediator-contract · cURL / Shell
curl -X GET https://api.qualiforma.site/api/v1/tenants/current/mediator-contract \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
  -H "X-Tenant-ID: qualiforma-demo"
GET /api/v1/tenants/current/mediator-contract · JavaScript
const response = await fetch('https://api.qualiforma.site/api/v1/tenants/current/mediator-contract', {
  method: 'GET',
  headers: {
    'Authorization': 'Bearer YOUR_ACCESS_TOKEN',
    'X-Tenant-ID': 'qualiforma-demo',
  },
});

if (!response.ok) {
  throw new Error(`HTTP ${response.status}: ${await response.text()}`);
}

const data = await response.json();
console.log(data);
GET /api/v1/tenants/current/mediator-contract · Python
import requests

response = requests.get(
    'https://api.qualiforma.site/api/v1/tenants/current/mediator-contract',
    headers={
        'Authorization': 'Bearer YOUR_ACCESS_TOKEN',
        'X-Tenant-ID': 'qualiforma-demo',
    },
    timeout=30,
)
response.raise_for_status()
data = response.json()
print(data)
GET /api/v1/tenants/current/mediator-contract · PHP
<?php

use GuzzleHttp\Client;
use GuzzleHttp\Exception\GuzzleException;

$client = new Client(['base_uri' => 'https://api.qualiforma.site/api/v1/']);

try {
    $response = $client->get('tenants/current/mediator-contract', [
        'headers' => [
            'Authorization' => 'Bearer YOUR_ACCESS_TOKEN',
            'X-Tenant-ID' => 'qualiforma-demo',
        ],
    ]);
    $data = json_decode($response->getBody()->getContents(), true);
    var_dump($data);
} catch (GuzzleException $e) {
    fwrite(STDERR, $e->getMessage());
}
post/api/v1/tenants/current/mediator-contract

Souscrire un médiateur

Le tenant souscrit à un médiateur référencé. L’article L612-1 du code de la consommation rend ce contrat obligatoire pour tout professionnel B2C.

  • Mediators
  • Tenants

Corps de requête

Content-Type : application/json

Body · JSON
{
  "mediatorId": "med_abc123"
}

Réponses

  • 201Contrat créé
    Réponse 201 · JSON
    {
      "data": {
        "id": "ctr_xyz",
        "mediatorId": "med_abc123",
        "subscribedAt": "2026-05-15T10:00:00Z"
      }
    }
  • 409Un contrat actif existe déjà (résilier avant de changer)

Exemples

POST /api/v1/tenants/current/mediator-contract · cURL / Shell
curl -X POST https://api.qualiforma.site/api/v1/tenants/current/mediator-contract \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
  -H "X-Tenant-ID: qualiforma-demo" \
  -H "Content-Type: application/json" \
  -d '{
  "mediatorId": "med_abc123"
}'
POST /api/v1/tenants/current/mediator-contract · JavaScript
const response = await fetch('https://api.qualiforma.site/api/v1/tenants/current/mediator-contract', {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer YOUR_ACCESS_TOKEN',
    'X-Tenant-ID': 'qualiforma-demo',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "mediatorId": "med_abc123"
  }),
});

if (!response.ok) {
  throw new Error(`HTTP ${response.status}: ${await response.text()}`);
}

const data = await response.json();
console.log(data);
POST /api/v1/tenants/current/mediator-contract · Python
import requests

response = requests.post(
    'https://api.qualiforma.site/api/v1/tenants/current/mediator-contract',
    headers={
        'Authorization': 'Bearer YOUR_ACCESS_TOKEN',
        'X-Tenant-ID': 'qualiforma-demo',
        'Content-Type': 'application/json',
    },
    json={
        'mediatorId': 'med_abc123',
    },
    timeout=30,
)
response.raise_for_status()
data = response.json()
print(data)
POST /api/v1/tenants/current/mediator-contract · PHP
<?php

use GuzzleHttp\Client;
use GuzzleHttp\Exception\GuzzleException;

$client = new Client(['base_uri' => 'https://api.qualiforma.site/api/v1/']);

try {
    $response = $client->post('tenants/current/mediator-contract', [
        'headers' => [
            'Authorization' => 'Bearer YOUR_ACCESS_TOKEN',
            'X-Tenant-ID' => 'qualiforma-demo',
        ],
        'json' => [
            'mediatorId' => 'med_abc123',
        ],
    ]);
    $data = json_decode($response->getBody()->getContents(), true);
    var_dump($data);
} catch (GuzzleException $e) {
    fwrite(STDERR, $e->getMessage());
}
delete/api/v1/tenants/current/mediator-contract

Résilier le contrat de médiation

Résilie le contrat actif. Attention : le tenant doit conserver un médiateur référencé pour rester conforme à L612-1.

  • Mediators
  • Tenants

Réponses

  • 200Contrat résilié
    Réponse 200 · JSON
    {
      "data": {
        "id": "ctr_xyz",
        "cancelledAt": "2026-05-15T11:00:00Z"
      }
    }
  • 404Aucun contrat actif

Exemples

DELETE /api/v1/tenants/current/mediator-contract · cURL / Shell
curl -X DELETE https://api.qualiforma.site/api/v1/tenants/current/mediator-contract \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
  -H "X-Tenant-ID: qualiforma-demo"
DELETE /api/v1/tenants/current/mediator-contract · JavaScript
const response = await fetch('https://api.qualiforma.site/api/v1/tenants/current/mediator-contract', {
  method: 'DELETE',
  headers: {
    'Authorization': 'Bearer YOUR_ACCESS_TOKEN',
    'X-Tenant-ID': 'qualiforma-demo',
  },
});

if (!response.ok) {
  throw new Error(`HTTP ${response.status}: ${await response.text()}`);
}

const data = await response.json();
console.log(data);
DELETE /api/v1/tenants/current/mediator-contract · Python
import requests

response = requests.delete(
    'https://api.qualiforma.site/api/v1/tenants/current/mediator-contract',
    headers={
        'Authorization': 'Bearer YOUR_ACCESS_TOKEN',
        'X-Tenant-ID': 'qualiforma-demo',
    },
    timeout=30,
)
response.raise_for_status()
data = response.json()
print(data)
DELETE /api/v1/tenants/current/mediator-contract · PHP
<?php

use GuzzleHttp\Client;
use GuzzleHttp\Exception\GuzzleException;

$client = new Client(['base_uri' => 'https://api.qualiforma.site/api/v1/']);

try {
    $response = $client->delete('tenants/current/mediator-contract', [
        'headers' => [
            'Authorization' => 'Bearer YOUR_ACCESS_TOKEN',
            'X-Tenant-ID' => 'qualiforma-demo',
        ],
    ]);
    $data = json_decode($response->getBody()->getContents(), true);
    var_dump($data);
} catch (GuzzleException $e) {
    fwrite(STDERR, $e->getMessage());
}
QualiForma

La plateforme de formation professionnelle certifiee Qualiopi.

Plateforme

  • Catalogue
  • Espace formateur
  • Étude de besoin

Societe

  • A propos
  • Contact

Ressources

  • Développeurs
  • Référence API
  • Webhooks

Legal

  • CGV
  • Mentions legales
  • Confidentialite

Catalogue par catégorie

  • Management
  • Digital
  • Communication
  • Langues
  • Sécurité
  • Gestion

Comparatifs

  • QualiForma vs Didask
  • QualiForma vs Edusign
  • QualiForma vs Klaxoon
  • QualiForma vs 360Learning

Glossaire Qualiopi

  • I01 — Conditions d'information
  • I05 — Adaptation des prestations
  • I11 — Évaluations en cours
  • I22 — Compétences des intervenants
  • I30 — Recueil des appréciations
  • Voir les 32 indicateurs →

© 2026 QualiForma. Tous droits reserves.

Certifie Qualiopi