{"openapi":"3.1.0","info":{"title":"Sikho.ai Creator API","version":"1.0.0","description":"Creator/Publisher API for programmatically creating, managing, and generating courses on Sikho.ai. Similar to YouTube's Data API but for educational content.","contact":{"name":"Sikho.ai Developer Support","url":"https://sikho.ai/developer","email":"support@sikho.ai"},"license":{"name":"Proprietary","url":"https://sikho.ai/developer-api-terms"}},"servers":[{"url":"https://sikho.ai/api/v1","description":"Production"}],"security":[{"apiKey":[]}],"components":{"securitySchemes":{"apiKey":{"type":"http","scheme":"bearer","description":"API Key (sk_live_xxx). Get your key from the Developer section in your Sikho.ai dashboard."},"apiKeyHeader":{"type":"apiKey","in":"header","name":"X-API-Key","description":"Alternative: pass API key via X-API-Key header"}},"schemas":{"Course":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"title":{"type":"string"},"slug":{"type":"string"},"description":{"type":"string"},"short_description":{"type":"string"},"category":{"type":"string","enum":["programming","business","creative","science","languages","health","mathematics","arts","history","technology","music","sports","lifestyle","diy","cooking","finance","parenting","marketing","design","general"]},"difficulty_level":{"type":"string","enum":["beginner","intermediate","advanced","expert"]},"status":{"type":"string","enum":["draft","published","archived"]},"course_type":{"type":"string","enum":["micro","intensive","learning_path"]},"tags":{"type":"array","items":{"type":"string"}},"language":{"type":"string","default":"en"},"thumbnail_url":{"type":"string"},"enrollment_count":{"type":"integer"},"rating_average":{"type":"number"},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"}}},"Module":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"title":{"type":"string"},"description":{"type":"string"},"order_index":{"type":"integer"},"created_at":{"type":"string","format":"date-time"}}},"Lesson":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"title":{"type":"string"},"order_index":{"type":"integer"},"lesson_type":{"type":"string"},"estimated_duration":{"type":"integer"},"generation_status":{"type":"string"},"has_study_material":{"type":"boolean"},"has_video":{"type":"boolean"},"has_quiz":{"type":"boolean"},"has_resources":{"type":"boolean"},"has_practice":{"type":"boolean"},"has_summary":{"type":"boolean"}}},"Error":{"type":"object","properties":{"success":{"type":"boolean","const":false},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object"}}}}},"QuotaInfo":{"type":"object","properties":{"daily_limit":{"type":"integer","example":10000},"used":{"type":"integer"},"remaining":{"type":"integer"},"resets_at":{"type":"string","format":"date-time"}}}}},"paths":{"/courses":{"post":{"summary":"Create a new course","operationId":"createCourse","tags":["Courses"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["title"],"properties":{"title":{"type":"string","minLength":3,"maxLength":500},"description":{"type":"string"},"short_description":{"type":"string","maxLength":500},"category":{"type":"string","default":"general"},"difficulty_level":{"type":"string","default":"beginner"},"tags":{"type":"array","items":{"type":"string"}},"language":{"type":"string","default":"en"},"course_type":{"type":"string","default":"intensive"}}}}}},"responses":{"201":{"description":"Course created"},"400":{"description":"Validation error"},"402":{"description":"Insufficient credits"},"429":{"description":"Quota exceeded"}}},"get":{"summary":"List your courses","operationId":"listCourses","tags":["Courses"],"parameters":[{"name":"page","in":"query","schema":{"type":"integer","default":1}},{"name":"per_page","in":"query","schema":{"type":"integer","default":20,"maximum":100}},{"name":"status","in":"query","schema":{"type":"string","enum":["draft","published","archived"]}},{"name":"category","in":"query","schema":{"type":"string"}},{"name":"q","in":"query","schema":{"type":"string"},"description":"Search by title/description"}],"responses":{"200":{"description":"List of courses with pagination"}}}},"/courses/{id}":{"get":{"summary":"Get course detail with modules and lessons","operationId":"getCourse","tags":["Courses"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Course with modules and lessons"},"404":{"description":"Course not found"}}},"patch":{"summary":"Update course metadata","operationId":"updateCourse","tags":["Courses"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"title":{"type":"string"},"description":{"type":"string"},"category":{"type":"string"},"difficulty_level":{"type":"string"},"tags":{"type":"array","items":{"type":"string"}}}}}}},"responses":{"200":{"description":"Course updated"}}},"delete":{"summary":"Delete a course","operationId":"deleteCourse","tags":["Courses"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Course deleted"},"400":{"description":"Cannot delete course with enrollments"}}}},"/courses/bulk":{"post":{"summary":"Bulk upload a complete course with modules and lessons","operationId":"bulkCreateCourse","tags":["Courses"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["course","modules"],"properties":{"course":{"type":"object","required":["title"],"properties":{"title":{"type":"string"},"description":{"type":"string"},"category":{"type":"string"},"difficulty_level":{"type":"string"},"status":{"type":"string","default":"draft"}}},"modules":{"type":"array","items":{"type":"object","required":["title"],"properties":{"title":{"type":"string"},"description":{"type":"string"},"lessons":{"type":"array","items":{"type":"object","required":["title"],"properties":{"title":{"type":"string"},"study_material":{"type":"string"},"quiz":{"type":"object"},"resources":{"type":"object"},"practice":{"type":"object"},"video":{"type":"object"},"summary":{"type":"object"}}}}}}}}}}}},"responses":{"201":{"description":"Course created with all modules and lessons"}}}},"/courses/{courseId}/modules":{"post":{"summary":"Add a module to a course","operationId":"createModule","tags":["Modules"],"parameters":[{"name":"courseId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["title"],"properties":{"title":{"type":"string"},"description":{"type":"string"}}}}}},"responses":{"201":{"description":"Module created"}}}},"/modules/{id}":{"patch":{"summary":"Update a module","operationId":"updateModule","tags":["Modules"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Module updated"}}},"delete":{"summary":"Delete a module and its lessons","operationId":"deleteModule","tags":["Modules"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Module deleted"}}}},"/modules/{moduleId}/lessons":{"post":{"summary":"Add a lesson to a module","operationId":"createLesson","tags":["Lessons"],"parameters":[{"name":"moduleId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["title"],"properties":{"title":{"type":"string"},"lesson_type":{"type":"string"},"estimated_duration":{"type":"integer"}}}}}},"responses":{"201":{"description":"Lesson created"}}}},"/lessons/{id}":{"patch":{"summary":"Update lesson metadata","operationId":"updateLesson","tags":["Lessons"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Lesson updated"}}},"delete":{"summary":"Delete a lesson","operationId":"deleteLesson","tags":["Lessons"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Lesson deleted"}}}},"/lessons/{id}/content/{sectionType}":{"put":{"summary":"Upload content for a lesson section","operationId":"uploadLessonContent","tags":["Lessons"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"sectionType","in":"path","required":true,"schema":{"type":"string","enum":["study_material","video","quiz","resources","practice","summary"]}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["content"],"properties":{"content":{"description":"Content for the section. String for study_material, JSON object for others."}}}}}},"responses":{"200":{"description":"Content uploaded"}}}},"/lessons/{id}/generate/{contentType}":{"post":{"summary":"AI-generate a specific lesson section","operationId":"generateLessonSection","tags":["AI Generation"],"description":"Uses AI to generate content. Costs quota units AND credits (20% discount for API users).","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"contentType","in":"path","required":true,"schema":{"type":"string","enum":["study_material","resources","video","quiz","practice","summary"]}}],"responses":{"200":{"description":"Content generated and saved"},"402":{"description":"Insufficient credits"}}}},"/lessons/{id}/generate-full":{"post":{"summary":"AI-generate all lesson sections at once","operationId":"generateFullLesson","tags":["AI Generation"],"description":"Generates all 6 sections. 300 quota units, 40 credits (20% API discount). Failed sections are automatically refunded.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"All sections generated"},"402":{"description":"Insufficient credits"}}}},"/me":{"get":{"summary":"Get your profile","operationId":"getMe","tags":["Account"],"responses":{"200":{"description":"User profile"}}}},"/me/quota":{"get":{"summary":"Get quota and credit balance","operationId":"getQuota","tags":["Account"],"responses":{"200":{"description":"Quota status with credits"}}}},"/me/courses":{"get":{"summary":"List your created courses","operationId":"getMyCourses","tags":["Account"],"parameters":[{"name":"page","in":"query","schema":{"type":"integer","default":1}},{"name":"per_page","in":"query","schema":{"type":"integer","default":20}},{"name":"status","in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"List of your courses"}}}}},"tags":[{"name":"Courses","description":"Course CRUD and bulk upload"},{"name":"Modules","description":"Module management within courses"},{"name":"Lessons","description":"Lesson management and content upload"},{"name":"AI Generation","description":"AI-powered content generation (costs credits)"},{"name":"Account","description":"User profile, quota, and billing"}]}