Create Exercise
POST /exercisesGeneric creation endpoint. Validates the content for the given type and
returns a sanitized version (safe to show to the end user). The engine
does not persist the exercise — see ADR 0001.
Supported types today: drag_and_drop, match, word_search, crossword,
listening_multiple_choice. Other types don’t have a creation step — evaluate
them directly with answer + correctAnswer.
Request
{ "type": "listening_multiple_choice", "content": { "...shape depends on type, see /exercises/listening..." }, "metadata": { "difficulty": "easy", "tags": ["daily-life"], "language": "en" }}Responses
// 201 Created{ "id": "...", "type": "listening_multiple_choice", "group": "LISTENING", "subgroup": "MULTIPLE_CHOICE", "content": { "...sanitized..." }, "metadata": { "...": "..." } }
// 400 Bad Request{ "message": "Exercise type \"open_answer\" is not supported for creation.", "error": "Bad Request", "statusCode": 400 }