DokumentationProdukteArtim Academy LMSQuizzeQuizze V1
Quiz anlegen
In API Explorer austestenÖffnet den Explorer mit Methode und Pfad dieses Requests.
Legt ein Quiz samt Fragen in einem Kurs an.
POST https://quizzes.api.lms.artim-industries.com/v1/courses/{courseId}/quizzes
| Methode | POST |
| Basis | quizzes.api.lms.artim-industries.com/v1 |
| Scope | lms.quizzes:write |
| Antwort | 201 |
| Zugang | Developer Mitgliedschaft |
| Auth | Authorization: Bearer lmsapi_… |
Parameter
| Parameter | Ort | Typ | Pflicht | Bedeutung |
|---|---|---|---|---|
courseId | Pfad | string | ja | Die Kennung des Kurses aus der Kursliste. |
Anfragekörper
| Feld | Typ | Bedeutung |
|---|---|---|
title | string | Der Titel. Pflicht. |
description | string | Die Beschreibung. |
lessonId | string | Die Lesson, an der es hängt — sie entscheidet über die Freischaltung. |
passingScore | integer | Die Schwelle in Prozent. Standard 70. |
questions | array | Die Fragen als {id, type, prompt, options, correctAnswer, requiresManualReview} — type ist single, multiple, text, image oder file. Pflicht. |
Felder, die der Vertrag nicht nennt, werden verworfen — ein Client kann keine eigenen Felder unterschieben.
{
"title": "Typen-Quiz",
"lessonId": "lsn_2b3c",
"passingScore": 70,
"questions": [
{
"id": "qst_01",
"type": "single",
"prompt": "Was beschreibt ein Generic?",
"options": ["Einen festen Typ", "Einen Typparameter"],
"correctAnswer": "Einen Typparameter"
}
]
}
Anfrage
curl -X POST "https://quizzes.api.lms.artim-industries.com/v1/courses/{courseId}/quizzes" \
-H "Authorization: Bearer lmsapi_…" \
-H "Content-Type: application/json" \
-d '{ "title": "Typen-Quiz", "lessonId": "lsn_2b3c", "passingScore": 70, "questions": [ { "id": "qst_01", "type": "single", "prompt": "Was beschreibt ein Generic?", "options": ["Einen festen Typ", "Einen Typparameter"], "correctAnswer": "Einen Typparameter" } ] }'
Antwort
| Feld | Typ | Bedeutung |
|---|---|---|
id | string | Die Kennung des neuen Quiz. |
title | string | Der Titel. |
questionCount | integer | Wie viele Fragen angelegt wurden. |
{ "id": "qz_3311", "title": "Typen-Quiz", "questionCount": 1 }
Fehler
| Status | code | Wann |
|---|---|---|
400 | invalid_request | Ein Pflichtfeld fehlt, ein Typ passt nicht, oder ein Verweis zeigt auf etwas, das es hier nicht gibt. |
401 | invalid_token | Bearer fehlt, ist unbekannt oder abgelaufen. |
403 | missing_scope | Das Token trägt den Scope dieses Endpunkts nicht. |
404 | not_found | Der Eintrag gehört nicht zum freigegebenen Akademie — oder die Anfrage kam auf der falschen Subdomain an. |
409 | conflict | Der Zustand verbietet die Änderung — der Fehlerkörper nennt den Grund. |
429 | rate_limited | Kontingent erschöpft, siehe Retry-After. |
Jede Fehlerantwort trägt dieselbe Hülle: error.code benennt den Fehler, error.message sagt in einem Satz, was fehlt.
Rate Limits
Das Limit gilt pro Team, nicht pro Token.
| Zugang | Produktion | Sandbox |
|---|---|---|
| Hobby | 60 Anfragen/Minute | ohne Limit |
| Developer Mitgliedschaft | 10.000 Anfragen/Minute | ohne Limit |
Bei 429 sagt der Retry-After-Header, wie lange du warten sollst.