{"name":"labby-ai","description":"HTTP API for LabEx Labby assistant AI services.","version":"1.11.4","auth":{"type":"Bearer","header":"Authorization: Bearer <API_TOKEN>"},"common":{"content_type":"application/json","languages":["en","zh","ja","es","de","ru","ko","pt","fr"]},"endpoints":[{"method":"GET","path":"/","description":"Returns this API documentation as JSON."},{"method":"POST","path":"/ask","description":"Streams assistant chat responses with intent routing, AI Search, Durable Object sessions, and D1 logging.","request":{"required":["user_id","user_input","lang"],"optional":["lab_id","is_pro","step_content","lab_title","lab_type","user_command_history","recently_user_changed_files","script_results","skill_tree_name","solution","verify_scripts"]},"response":"text/event-stream"},{"method":"POST","path":"/deep-inspection","description":"Evaluates whether a failed lab step should be considered passed.","request":{"required":["user_id","lab_id","lab_title","lab_type","lang","step_content"],"optional":["skill_tree_name","is_pro","user_command_history","recently_user_changed_files","script_results","verify_scripts","solution"]}},{"method":"POST","path":"/generate-step-question","description":"Generates follow-up questions from lab step content.","request":{"required":["step_content","lang"],"optional":["skill_tree_name"]}},{"method":"POST","path":"/generate-question-tdk","description":"Generates SEO meta title, description, and keywords for a technical question.","request":{"required":["question_title","question_text"],"optional":["skill_tree_name"]}},{"method":"POST","path":"/search","description":"Searches lab metadata and returns Markdown recommendations.","request":{"required":["query"]}},{"method":"GET","path":"/stats?days=7&top_users=10","description":"Returns internal request and optional prompt-cache usage statistics from D1 logs."}]}