DokumentationProdukteArtim Academy LMSKurseKurse V1

Kurs anlegen

2 min Lesezeit · zuletzt aktualisiert 18. August 2026

In API Explorer austestenÖffnet den Explorer mit Methode und Pfad dieses Requests.

Legt einen Kurs in der Akademie an.

Der Kurs gehört danach dem Konto, das ihn angelegt hat. Discord-Kanäle entstehen dabei nicht — die legt im LMS der Kanal-Arbeitsplatz beim ersten Abgleich an.

POST https://courses.api.lms.artim-industries.com/v1/courses
MethodePOST
Basiscourses.api.lms.artim-industries.com/v1
Scopelms.courses:write
Antwort201
ZugangDeveloper Mitgliedschaft
AuthAuthorization: Bearer lmsapi_…

Parameter

Dieser Endpunkt nimmt keine Parameter.

Anfragekörper

FeldTypBedeutung
titlestringDer Titel. Pflicht.
descriptionstringDie Kurzbeschreibung.
visibilitystringpublic oder private. Standard private.
tagsarraySchlagworte als Liste von Zeichenketten.
modulesarrayModule als {id, title, order} — auch später ergänzbar.

Felder, die der Vertrag nicht nennt, werden verworfen — ein Client kann keine eigenen Felder unterschieben.

{
  "title": "TypeScript von Grund auf",
  "description": "Typen, Generics, Tooling.",
  "visibility": "private",
  "tags": ["typescript"],
  "modules": [{ "id": "mod_01", "title": "Grundlagen", "order": 1 }]
}

Anfrage

curl -X POST "https://courses.api.lms.artim-industries.com/v1/courses" \
  -H "Authorization: Bearer lmsapi_…" \
  -H "Content-Type: application/json" \
  -d '{ "title": "TypeScript von Grund auf", "description": "Typen, Generics, Tooling.", "visibility": "private", "tags": ["typescript"], "modules": [{ "id": "mod_01", "title": "Grundlagen", "order": 1 }] }'

Antwort

FeldTypBedeutung
idstringDie Kennung des neuen Kurses.
titlestringDer Titel.
createdBystringDas Konto, dem er gehört.
{ "id": "crs_1a9f", "title": "TypeScript von Grund auf", "createdBy": "usr_1f04" }

Fehler

StatuscodeWann
400invalid_requestEin Pflichtfeld fehlt, ein Typ passt nicht, oder ein Verweis zeigt auf etwas, das es hier nicht gibt.
401invalid_tokenBearer fehlt, ist unbekannt oder abgelaufen.
403missing_scopeDas Token trägt den Scope dieses Endpunkts nicht.
404not_foundDer Eintrag gehört nicht zum freigegebenen Akademie — oder die Anfrage kam auf der falschen Subdomain an.
409conflictDer Zustand verbietet die Änderung — der Fehlerkörper nennt den Grund.
429rate_limitedKontingent 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.

ZugangProduktionSandbox
Hobby60 Anfragen/Minuteohne Limit
Developer Mitgliedschaft10.000 Anfragen/Minuteohne Limit

Bei 429 sagt der Retry-After-Header, wie lange du warten sollst.