diff --git a/app/api/etudiants.py b/app/api/etudiants.py
index 743ddf622a650da7e48f8957518826159afe1ed2..821a545c34e22adebb9d8860fd1e3ee20054960d 100755
--- a/app/api/etudiants.py
+++ b/app/api/etudiants.py
@@ -523,7 +523,7 @@ def etudiant_create(force=False):
 
     L'étudiant créé n'est pas inscrit à un semestre.
 
-    Champs requis: nom, prenom (sauf si config sans prénom), dept (string:acronyme)
+    Champs requis: civilite ('M', 'F' ou 'X'), dept (string:acronyme), nom, prenom (sauf si config sans prénom).
     """
     args = request.get_json(force=True)  # may raise 400 Bad Request
     dept = args.get("dept", None)
diff --git a/app/models/etudiants.py b/app/models/etudiants.py
index 8d6e02664312af0771a6c2e7ee72d4f113984902..1dc846e14a76788d9653e0a7f139681d175b3dad 100644
--- a/app/models/etudiants.py
+++ b/app/models/etudiants.py
@@ -256,6 +256,8 @@ class Identite(models.ScoDocModel):
         """
         check_etud_duplicate_code(args, "code_nip", dest_url=None)
         check_etud_duplicate_code(args, "code_ine", dest_url=None)
+        if not "civilite" in args:
+            raise ScoValueError("civilite manquante")
         if not "dept_id" in args:
             if "dept" in args:
                 departement = Departement.query.filter_by(acronym=args["dept"]).first()