Skip to main content
POST
/
v1
/
courses
Create a course
curl --request POST \
  --url https://api.example.com/v1/courses \
  --header 'Content-Type: application/json' \
  --data '
{
  "name": "<string>",
  "language": "<string>",
  "description": "<string>",
  "hours": 123,
  "ai": {
    "instructions": "<string>",
    "evaluator": {}
  },
  "tutor": {},
  "metadata": {}
}
'

Documentation Index

Fetch the complete documentation index at: https://docs.hawkings.education/llms.txt

Use this file to discover all available pages before exploring further.

Parameters

name
string
required
Human-readable course name.
language
string
required
BCP-47 language code: "en", "es", "pt-BR", etc.
description
string
Long-form description; doubles as the default brief when you call generateSyllabus() without one.
hours
integer
default:"8"
Target total student hours.
ai
object
tutor
object
Tutor configuration. See Build an AI tutor.
metadata
object
Free-form key-value store.

Returns

A Course with status: "draft".

Examples

const course = await hk.courses.create({
  name: "Intro to Special Relativity",
  language: "en",
  hours: 12,
  description: "An undergraduate intro course...",
});
Response
{
  "id": "crs_01HX9N5AB3...",
  "object": "course",
  "name": "Intro to Special Relativity",
  "language": "en",
  "duration": { "hours": 12, "hours_generated": 0 },
  "status": "draft",
  "cohorts": [],
  "created_at": "2026-05-10T12:00:00Z"
}
A course on its own has no lessons. Either call generateSyllabus for an AI-built tree, or create units, lessons, and content by hand.