Skip to content

Create Exercise

POST /exercises

Generic 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 }