tutorflow module create, list, get, and open
Create one standalone lesson module:
tutorflow module create "Create a beginner Python variables lesson" \
--language en \
--idempotency-key "module-python-variables-v1"Example JSON response:
{
"id": "61f1b111-0df3-4de3-a83f-d4b10304949d",
"title": "Python Variables for Beginners",
"description": "A standalone lesson module introducing variable assignment and naming.",
"type": "lesson",
"status": "completed",
"publicUrl": "https://tutorflow.io/en/platform/modules/share_abc123",
"shareToken": "share_abc123",
"createdAt": "2026-05-12T03:10:00.000Z",
"priceSnapshot": {
"category": "module",
"catalogKey": "module.default",
"tier": "default",
"unit": "lesson",
"unitPrice": 0.05,
"units": 1,
"amountUsd": 0.05,
"currency": "USD",
"source": "platform_pricing_catalog_v2"
}
}List modules:
tutorflow module list --limit 10 --offset 0Example JSON response:
{
"items": [
{
"id": "61f1b111-0df3-4de3-a83f-d4b10304949d",
"title": "Python Variables for Beginners",
"status": "completed",
"publicUrl": "https://tutorflow.io/en/platform/modules/share_abc123",
"createdAt": "2026-05-12T03:10:00.000Z"
}
],
"total": 1
}Fetch or open a module:
tutorflow module get "module_id"
tutorflow module open "module_id"module open prints the resolved URL, even in non-interactive mode:
{
"publicUrl": "https://tutorflow.io/en/platform/modules/share_abc123"
}tutorflow test create, list, get, edit-token, and open
Create a generated test:
tutorflow test create "Create a 10-question algebra quiz" \
--language en \
--idempotency-key "test-algebra-v1"Example JSON response:
{
"id": "a1c2d3e4-f5a6-4789-8b0c-d1e2f3a4b5c6",
"status": "completed",
"title": "Algebra Readiness Quiz",
"description": "A 10-question algebra quiz with auto-graded items.",
"itemCount": 10,
"previewUrl": "https://tutorflow.io/en/platform/tests/preview_test_abc123",
"publicUrl": "https://tutorflow.io/en/platform/tests/take/share_test_abc123",
"createdAt": "2026-05-12T03:10:00.000Z"
}List, fetch, open, or rotate an edit token:
tutorflow test list --limit 10 --offset 0
tutorflow test get "test_id"
tutorflow test open "test_id"
tutorflow test edit-token "test_id"Example JSON response from test list:
{
"items": [
{
"id": "a1c2d3e4-f5a6-4789-8b0c-d1e2f3a4b5c6",
"status": "completed",
"title": "Algebra Readiness Quiz",
"itemCount": 10,
"previewUrl": "https://tutorflow.io/en/platform/tests/preview_test_abc123",
"createdAt": "2026-05-12T03:10:00.000Z"
}
],
"total": 1
}Example JSON response from test edit-token:
{
"editToken": "7d6f51fdfef3412ea9c35b6116d9be0a",
"editTokenExpiresAt": "2026-05-12T04:10:00.000Z"
}tutorflow slide create, list, get, and open
Create a slide deck:
tutorflow slide create "Intro to photosynthesis for grade 6"Example JSON response:
{
"id": "61f1b111-0df3-4de3-a83f-d4b10304949d",
"title": "Intro to Photosynthesis",
"status": "completed",
"createdAt": "2026-05-12T03:10:00.000Z",
"previewUrl": "https://tutorflow.io/en/platform/slides/edit/...",
"priceSnapshot": {
"category": "slide",
"catalogKey": "slide.default",
"tier": "default",
"unit": "slide",
"unitPrice": 0.03,
"units": 10,
"amountUsd": 0.3,
"currency": "USD",
"source": "platform_pricing_catalog_v2"
}
}List, fetch, or open slides:
tutorflow slide list
tutorflow slide get "slide_id"
tutorflow slide open "slide_id"Example JSON response from slide list:
[
{
"id": "61f1b111-0df3-4de3-a83f-d4b10304949d",
"title": "Intro to Photosynthesis",
"status": "completed",
"createdAt": "2026-05-12T03:10:00.000Z",
"previewUrl": "https://tutorflow.io/en/platform/slides/edit/..."
}
]tutorflow video create, list, get, and open
Create video content metadata:
tutorflow video create "Explain Newton's first law with examples"Example JSON response:
{
"id": "e41a085a-e43f-4f63-92f4-9e11250f6e63",
"title": "Newton's First Law",
"status": "completed",
"sceneCount": 5,
"createdAt": "2026-05-12T03:10:00.000Z",
"previewUrl": "https://tutorflow.io/en/platform/videos/edit/...",
"renderStatus": "PENDING",
"requiresRenderTrigger": true
}List, fetch, or open videos:
tutorflow video list
tutorflow video get "video_id"
tutorflow video open "video_id"Example JSON response from video list:
[
{
"id": "e41a085a-e43f-4f63-92f4-9e11250f6e63",
"title": "Newton's First Law",
"status": "completed",
"sceneCount": 5,
"createdAt": "2026-05-12T03:10:00.000Z",
"previewUrl": "https://tutorflow.io/en/platform/videos/edit/..."
}
]Video creation does not imply that a rendered video file is immediately available. Check the returned status and follow the video API response fields.
tutorflow course create, list, get, and open
Create a course:
tutorflow course create "Build an introductory JavaScript course"Example JSON response:
{
"id": "a1c2d3e4-f5a6-4789-8b0c-d1e2f3a4b5c6",
"title": "Introductory JavaScript",
"status": "completed",
"createdAt": "2026-05-12T03:10:00.000Z",
"previewUrl": "https://tutorflow.io/en/platform/courses/share_course_abc123",
"publicUrl": "https://tutorflow.io/en/platform/courses/share_course_abc123/lessons/1",
"lessonCount": 8
}List, fetch, or open courses:
tutorflow course list
tutorflow course get "course_id"
tutorflow course open "course_id"Example JSON response from course list:
[
{
"id": "a1c2d3e4-f5a6-4789-8b0c-d1e2f3a4b5c6",
"title": "Introductory JavaScript",
"status": "completed",
"createdAt": "2026-05-12T03:10:00.000Z",
"previewUrl": "https://tutorflow.io/en/platform/courses/share_course_abc123"
}
]tutorflow evaluate
Evaluate a learner answer:
tutorflow evaluate \
--type open_ended \
--question "Explain the water cycle" \
--student-answer "Water evaporates, condenses, and falls as rain."Example JSON response:
{
"id": "2f4ad455-1e8e-4b6c-9f3a-7ebf4cf6f483",
"status": "COMPLETED",
"evaluationType": "open_ended",
"score": 8,
"maxScore": 10,
"normalizedScore": 80,
"confidence": 0.92,
"strengths": [
"Correctly identifies evaporation and condensation"
],
"mistakes": [],
"suggestions": [
"Mention collection as the final stage of the cycle"
],
"feedbackSummary": "The answer shows a solid understanding of the major water cycle stages.",
"isTerminal": true,
"createdAt": "2026-05-12T03:10:00.000Z",
"completedAt": "2026-05-12T03:10:01.000Z"
}Exact evaluations should include an expected answer:
tutorflow evaluate \
--type exact \
--question "What is 2 + 2?" \
--student-answer "4" \
--expected-answer "4"Rubric evaluations require rubric criteria as JSON:
tutorflow evaluate \
--type rubric_short_answer \
--question "Explain the water cycle" \
--student-answer "Water evaporates and condenses." \
--rubric-json '{"criteria":[{"name":"Accuracy","description":"Scientific correctness","maxScore":10}]}'Use --json when another agent or script needs to parse the result.