{"openapi":"3.1.0","info":{"title":"FastAPI","version":"0.1.0"},"paths":{"/blog":{"get":{"summary":"Blog Index","operationId":"blog_index_blog_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/blog/rss.xml":{"get":{"summary":"Blog Rss","operationId":"blog_rss_blog_rss_xml_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/blog/{slug}":{"get":{"summary":"Blog Post","operationId":"blog_post_blog__slug__get","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/":{"get":{"summary":"Main Handler","operationId":"main_handler__get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/new":{"get":{"summary":"New From Idea","description":"Instant onboarding: turn a one-line idea into a saved sim and open it.","operationId":"new_from_idea_new_get","parameters":[{"name":"idea","in":"query","required":false,"schema":{"type":"string","default":"","title":"Idea"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/_ah/warmup":{"get":{"summary":"Warmup Handler","operationId":"warmup_handler__ah_warmup_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/health":{"get":{"summary":"Health Check","description":"Health check endpoint for load balancers and monitoring","operationId":"health_check_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/account":{"get":{"summary":"Account Page","description":"User account page","operationId":"account_page_account_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/api/user/{user_id}/fiddles":{"get":{"summary":"Get User Fiddles","description":"Get fiddles created by a user","operationId":"get_user_fiddles_api_user__user_id__fiddles_get","parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"string","title":"User Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/files/{user_id}":{"get":{"summary":"File Browser","operationId":"file_browser_files__user_id__get","parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"string","title":"User Id"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/gallery":{"get":{"summary":"Gallery Page","operationId":"gallery_page_gallery_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/pricing":{"get":{"summary":"Pricing Page","operationId":"pricing_page_pricing_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/signup":{"get":{"summary":"Signup Redirect","operationId":"signup_redirect_signup_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/login":{"get":{"summary":"Login Redirect","operationId":"login_redirect_login_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/eval":{"get":{"summary":"Eval Dashboard","description":"Agent evaluation dashboard for tracking benchmark results.","operationId":"eval_dashboard_eval_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/createfiddle":{"get":{"summary":"Create Fiddle Handler","operationId":"create_fiddle_handler_createfiddle_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}},"post":{"summary":"Create Fiddle Post Handler","description":"Create/update fiddle via POST with JSON body (supports chat_history)","operationId":"create_fiddle_post_handler_createfiddle_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/fiddle/{fiddle_id}/chat":{"get":{"summary":"Get Fiddle Chat","description":"Get chat history for a fiddle with pagination (newest first)","operationId":"get_fiddle_chat_api_fiddle__fiddle_id__chat_get","parameters":[{"name":"fiddle_id","in":"path","required":true,"schema":{"type":"string","title":"Fiddle Id"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Offset"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":20,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"summary":"Save Fiddle Chat","description":"Save/update chat history for a fiddle","operationId":"save_fiddle_chat_api_fiddle__fiddle_id__chat_post","parameters":[{"name":"fiddle_id","in":"path","required":true,"schema":{"type":"string","title":"Fiddle Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/save_html_override":{"post":{"summary":"Save Html Override","description":"Save HTML override for a specific fiddle and URL path","operationId":"save_html_override_save_html_override_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/get_body_html":{"post":{"summary":"Get Body Html","description":"Get the original body HTML for a fiddle URL (override or cached/generated)","operationId":"get_body_html_get_body_html_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/sitemap.xml":{"get":{"summary":"Sitemap Handler","operationId":"sitemap_handler_sitemap_xml_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/sitemap-static.xml":{"get":{"summary":"Sitemap Static Handler","operationId":"sitemap_static_handler_sitemap_static_xml_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/sitemap-fiddles-{page}.xml":{"get":{"summary":"Sitemap Fiddles Handler","operationId":"sitemap_fiddles_handler_sitemap_fiddles__page__xml_get","parameters":[{"name":"page","in":"path","required":true,"schema":{"type":"integer","title":"Page"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/robots.txt":{"get":{"summary":"Robots Handler","operationId":"robots_handler_robots_txt_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/{fiddlekey}":{"get":{"summary":"Get Fiddle Handler","operationId":"get_fiddle_handler__fiddlekey__get","parameters":[{"name":"fiddlekey","in":"path","required":true,"schema":{"type":"string","title":"Fiddlekey"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{url}/":{"get":{"summary":"Slash Murderer","operationId":"slash_murderer__url___get","parameters":[{"name":"url","in":"path","required":true,"schema":{"type":"string","title":"Url"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/auth/signup":{"post":{"tags":["auth"],"summary":"Signup","description":"Create a new user account","operationId":"signup_api_auth_signup_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SignupRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/auth/login":{"post":{"tags":["auth"],"summary":"Login","description":"Login with email and password","operationId":"login_api_auth_login_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LoginRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/auth/logout":{"post":{"tags":["auth"],"summary":"Logout","description":"Logout current user","operationId":"logout_api_auth_logout_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/auth/me":{"get":{"tags":["auth"],"summary":"Get Me","description":"Get current logged-in user","operationId":"get_me_api_auth_me_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/auth/check":{"get":{"tags":["auth"],"summary":"Check Auth","description":"Check if user is authenticated (doesn't throw error if not)","operationId":"check_auth_api_auth_check_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/uploads/sign":{"get":{"summary":"Get Signed Upload Url","operationId":"get_signed_upload_url_api_uploads_sign_get","parameters":[{"name":"user_id","in":"query","required":true,"schema":{"type":"string","title":"User Id"}},{"name":"filename","in":"query","required":true,"schema":{"type":"string","title":"Filename"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/uploads/list":{"get":{"summary":"List Uploads","operationId":"list_uploads_api_uploads_list_get","parameters":[{"name":"user_id","in":"query","required":true,"schema":{"type":"string","title":"User Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/uploads/delete":{"post":{"summary":"Delete Upload","operationId":"delete_upload_api_uploads_delete_post","parameters":[{"name":"user_id","in":"query","required":true,"schema":{"type":"string","title":"User Id"}},{"name":"filename","in":"query","required":true,"schema":{"type":"string","title":"Filename"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/uploads/rename":{"post":{"summary":"Rename Upload","operationId":"rename_upload_api_uploads_rename_post","parameters":[{"name":"user_id","in":"query","required":true,"schema":{"type":"string","title":"User Id"}},{"name":"old_name","in":"query","required":true,"schema":{"type":"string","title":"Old Name"}},{"name":"new_name","in":"query","required":true,"schema":{"type":"string","title":"New Name"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/agent/chat":{"post":{"summary":"Agent Chat","operationId":"agent_chat_api_agent_chat_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/agent/apply":{"post":{"summary":"Apply Code","description":"Apply code changes from agent to the fiddle","operationId":"apply_code_api_agent_apply_post","requestBody":{"content":{"application/json":{"schema":{"type":"object","title":"Request"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/agent/evaluate":{"post":{"summary":"Evaluate Response","description":"LLM-as-judge evaluation of agent response quality","operationId":"evaluate_response_api_agent_evaluate_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EvalRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/agent/tools":{"get":{"summary":"Get Agent Tools","description":"Get available tools for the agent","operationId":"get_agent_tools_api_agent_tools_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/agent/evaluate-visual":{"post":{"summary":"Evaluate Visual","description":"Evaluate visual output using screenshots with Claude Vision","operationId":"evaluate_visual_api_agent_evaluate_visual_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VisualEvalRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/agent/stats":{"get":{"summary":"Get Agent Stats","description":"Get evaluation statistics","operationId":"get_agent_stats_api_agent_stats_get","parameters":[{"name":"user_id","in":"query","required":false,"schema":{"type":"string","title":"User Id"}},{"name":"days","in":"query","required":false,"schema":{"type":"integer","default":30,"title":"Days"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/agent/screenshot":{"post":{"summary":"Save Screenshot","description":"Save a screenshot for later comparison","operationId":"save_screenshot_api_agent_screenshot_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScreenshotRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/agent/screenshot/{screenshot_id}":{"get":{"summary":"Get Screenshot","description":"Retrieve a saved screenshot","operationId":"get_screenshot_api_agent_screenshot__screenshot_id__get","parameters":[{"name":"screenshot_id","in":"path","required":true,"schema":{"type":"string","title":"Screenshot Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/agent/benchmarks":{"get":{"summary":"Get Benchmarks","description":"Get available benchmark tasks","operationId":"get_benchmarks_api_agent_benchmarks_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/agent/benchmarks/result":{"post":{"summary":"Submit Benchmark Result","description":"Submit a benchmark result with optional visual evaluation","operationId":"submit_benchmark_result_api_agent_benchmarks_result_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BenchmarkResultRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/agent/benchmarks/history":{"get":{"summary":"Get Benchmark History","description":"Get benchmark history with optional detailed results","operationId":"get_benchmark_history_api_agent_benchmarks_history_get","parameters":[{"name":"benchmark_name","in":"query","required":false,"schema":{"type":"string","title":"Benchmark Name"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}},{"name":"detailed","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Detailed"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/agent/benchmarks/{result_id}":{"get":{"summary":"Get Benchmark Result","description":"Get detailed benchmark result by ID","operationId":"get_benchmark_result_api_agent_benchmarks__result_id__get","parameters":[{"name":"result_id","in":"path","required":true,"schema":{"type":"integer","title":"Result Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/agent/benchmarks/stats/summary":{"get":{"summary":"Get Benchmark Summary Stats","description":"Get aggregated stats for all benchmarks","operationId":"get_benchmark_summary_stats_api_agent_benchmarks_stats_summary_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/agent/benchmarks/run/{benchmark_name}":{"get":{"summary":"Get Benchmark Run Info","description":"Get info needed to run a specific benchmark","operationId":"get_benchmark_run_info_api_agent_benchmarks_run__benchmark_name__get","parameters":[{"name":"benchmark_name","in":"path","required":true,"schema":{"type":"string","title":"Benchmark Name"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/subscription/config":{"get":{"summary":"Get Config","description":"Get Stripe publishable key and price info","operationId":"get_config_api_subscription_config_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/subscription/status":{"get":{"summary":"Get Status","description":"Get subscription status for a user","operationId":"get_status_api_subscription_status_get","parameters":[{"name":"user_id","in":"query","required":true,"schema":{"type":"string","title":"User Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/subscription/create-checkout":{"post":{"summary":"Create Checkout","description":"Create a Stripe Checkout Session for embedded checkout","operationId":"create_checkout_api_subscription_create_checkout_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateCheckoutRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/subscription/session-status":{"get":{"summary":"Get Session Status","description":"Get the status of a checkout session and activate subscription if complete","operationId":"get_session_status_api_subscription_session_status_get","parameters":[{"name":"session_id","in":"query","required":true,"schema":{"type":"string","title":"Session Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/subscription/webhook":{"post":{"summary":"Stripe Webhook","description":"Placeholder webhook endpoint (not used - we check via Stripe API instead)","operationId":"stripe_webhook_api_subscription_webhook_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/subscription/cancel":{"post":{"summary":"Cancel Subscription","description":"Cancel a user's subscription","operationId":"cancel_subscription_api_subscription_cancel_post","parameters":[{"name":"user_id","in":"query","required":true,"schema":{"type":"string","title":"User Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/subscription/create-portal":{"post":{"summary":"Create Customer Portal","description":"Create a Stripe Customer Portal session for managing subscription","operationId":"create_customer_portal_api_subscription_create_portal_post","parameters":[{"name":"user_id","in":"query","required":false,"schema":{"type":"string","title":"User Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/subscription/limits":{"get":{"summary":"Get Usage Limits","description":"Get usage limits and current usage for a user","operationId":"get_usage_limits_api_subscription_limits_get","parameters":[{"name":"user_id","in":"query","required":false,"schema":{"type":"string","title":"User Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/subscription/track-view":{"post":{"summary":"Track Fiddle View","description":"Track a fiddle view and return whether viewing is still allowed","operationId":"track_fiddle_view_api_subscription_track_view_post","parameters":[{"name":"user_id","in":"query","required":true,"schema":{"type":"string","title":"User Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/subscription/track-create":{"post":{"summary":"Track Fiddle Create","description":"Track a fiddle creation and return whether creating is still allowed","operationId":"track_fiddle_create_api_subscription_track_create_post","parameters":[{"name":"user_id","in":"query","required":true,"schema":{"type":"string","title":"User Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/gallery/popular":{"get":{"summary":"Get Popular","description":"Get popular fiddles sorted by hits (cached)","operationId":"get_popular_api_gallery_popular_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":20,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/gallery/search":{"get":{"summary":"Search Fiddles","description":"Search fiddles by title, description, or URL (cached)","operationId":"search_fiddles_api_gallery_search_get","parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string","title":"Q"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":20,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/gallery/fiddle/{fiddle_id}":{"get":{"summary":"Get Fiddle Details","description":"Get details for a specific fiddle","operationId":"get_fiddle_details_api_gallery_fiddle__fiddle_id__get","parameters":[{"name":"fiddle_id","in":"path","required":true,"schema":{"type":"string","title":"Fiddle Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/gallery/hit/{fiddle_id}":{"post":{"summary":"Record Hit","description":"Record a hit/view for a fiddle","operationId":"record_hit_api_gallery_hit__fiddle_id__post","parameters":[{"name":"fiddle_id","in":"path","required":true,"schema":{"type":"string","title":"Fiddle Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/gallery/thumbnail":{"post":{"summary":"Upload Thumbnail","description":"Upload a thumbnail for a fiddle","operationId":"upload_thumbnail_api_gallery_thumbnail_post","requestBody":{"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_upload_thumbnail_api_gallery_thumbnail_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/gallery/thumbnail/file":{"post":{"summary":"Upload Thumbnail File","description":"Upload a thumbnail file for a fiddle","operationId":"upload_thumbnail_file_api_gallery_thumbnail_file_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_upload_thumbnail_file_api_gallery_thumbnail_file_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/image/generate":{"get":{"summary":"Generate Image Endpoint","description":"Generate an image from a prompt","operationId":"generate_image_endpoint_api_image_generate_get","parameters":[{"name":"prompt","in":"query","required":true,"schema":{"type":"string","title":"Prompt"}},{"name":"size","in":"query","required":false,"schema":{"type":"string","default":"512x512","title":"Size"}},{"name":"user_id","in":"query","required":false,"schema":{"type":"string","title":"User Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/img/{path}":{"get":{"summary":"Serve Generated Image","description":"Serve auto-generated images for any path.\nE.g., /img/happy-cat.png will generate an image with prompt \"happy cat\"\nE.g., /img/character-pose-1248x720.jpeg will generate at closest aspect ratio then crop/resize","operationId":"serve_generated_image_img__path__get","parameters":[{"name":"path","in":"path","required":true,"schema":{"type":"string","title":"Path"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/image/status":{"get":{"summary":"Image Generation Status","description":"Get image generation status and limits","operationId":"image_generation_status_api_image_status_get","parameters":[{"name":"user_id","in":"query","required":false,"schema":{"type":"string","title":"User Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/export/start":{"post":{"summary":"Start Export","description":"Start a new export job","operationId":"start_export_api_export_start_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StartExportRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/export/job/{job_id}/page":{"post":{"summary":"Submit Page","description":"Submit a crawled page to the export job","operationId":"submit_page_api_export_job__job_id__page_post","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubmitPageRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/export/job/{job_id}/status":{"get":{"summary":"Get Export Status","description":"Get the status of an export job","operationId":"get_export_status_api_export_job__job_id__status_get","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/export/job/{job_id}/cancel":{"post":{"summary":"Cancel Export","description":"Cancel an export job","operationId":"cancel_export_api_export_job__job_id__cancel_post","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/export/job/{job_id}/finalize":{"post":{"summary":"Finalize Export","description":"Finalize export and return ZIP file","operationId":"finalize_export_api_export_job__job_id__finalize_post","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/export/job/{job_id}":{"delete":{"summary":"Cleanup Job","description":"Clean up a completed or cancelled job","operationId":"cleanup_job_api_export_job__job_id__delete","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{fiddle_name}/{base_url}/cdn-cgi/rum":{"get":{"summary":"Mirrored Cloudflare Rum Handler","operationId":"mirrored_cloudflare_rum_handler__fiddle_name___base_url__cdn_cgi_rum_get","parameters":[{"name":"fiddle_name","in":"path","required":true,"schema":{"type":"string","title":"Fiddle Name"}},{"name":"base_url","in":"path","required":true,"schema":{"type":"string","title":"Base Url"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"summary":"Mirrored Cloudflare Rum Handler","operationId":"mirrored_cloudflare_rum_handler__fiddle_name___base_url__cdn_cgi_rum_get","parameters":[{"name":"fiddle_name","in":"path","required":true,"schema":{"type":"string","title":"Fiddle Name"}},{"name":"base_url","in":"path","required":true,"schema":{"type":"string","title":"Base Url"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{fiddle_name}/{base_url}":{"get":{"summary":"Mirror Handler","operationId":"mirror_handler__fiddle_name___base_url__get","parameters":[{"name":"fiddle_name","in":"path","required":true,"schema":{"type":"string","title":"Fiddle Name"}},{"name":"base_url","in":"path","required":true,"schema":{"type":"string","title":"Base Url"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}}},"components":{"schemas":{"BenchmarkResultRequest":{"properties":{"benchmark_name":{"type":"string","title":"Benchmark Name"},"task_description":{"type":"string","title":"Task Description"},"expected_elements":{"items":{"type":"string"},"type":"array","title":"Expected Elements"},"found_elements":{"items":{"type":"string"},"type":"array","title":"Found Elements"},"found_text":{"items":{"type":"string"},"type":"array","title":"Found Text"},"execution_time_ms":{"type":"integer","title":"Execution Time Ms"},"screenshot":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Screenshot"},"visual_criteria":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Visual Criteria"}},"type":"object","required":["benchmark_name","task_description","expected_elements","found_elements","found_text","execution_time_ms"],"title":"BenchmarkResultRequest"},"Body_upload_thumbnail_api_gallery_thumbnail_post":{"properties":{"fiddle_id":{"type":"string","title":"Fiddle Id"},"image_data":{"type":"string","title":"Image Data"}},"type":"object","required":["fiddle_id","image_data"],"title":"Body_upload_thumbnail_api_gallery_thumbnail_post"},"Body_upload_thumbnail_file_api_gallery_thumbnail_file_post":{"properties":{"fiddle_id":{"type":"string","title":"Fiddle Id"},"file":{"type":"string","format":"binary","title":"File"}},"type":"object","required":["fiddle_id","file"],"title":"Body_upload_thumbnail_file_api_gallery_thumbnail_file_post"},"ChatMessage":{"properties":{"role":{"type":"string","title":"Role"},"content":{"type":"string","title":"Content"}},"type":"object","required":["role","content"],"title":"ChatMessage"},"ChatRequest":{"properties":{"messages":{"items":{"$ref":"#/components/schemas/ChatMessage"},"type":"array","title":"Messages"},"context":{"anyOf":[{"type":"object"},{"type":"null"}],"title":"Context"},"user_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Id"},"tool_results":{"anyOf":[{"items":{"$ref":"#/components/schemas/ToolResult"},"type":"array"},{"type":"null"}],"title":"Tool Results"},"autofix_iteration":{"type":"integer","title":"Autofix Iteration","default":0},"browser_errors":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Browser Errors"}},"type":"object","required":["messages"],"title":"ChatRequest"},"CreateCheckoutRequest":{"properties":{"user_id":{"anyOf":[{"type":"string"},{"type":"integer"}],"title":"User Id"},"plan":{"type":"string","title":"Plan"},"success_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Success Url"},"cancel_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cancel Url"}},"type":"object","required":["user_id","plan"],"title":"CreateCheckoutRequest"},"EvalRequest":{"properties":{"user_request":{"type":"string","title":"User Request"},"agent_response":{"type":"string","title":"Agent Response"},"code_blocks":{"anyOf":[{"type":"object"},{"type":"null"}],"title":"Code Blocks"},"browser_errors":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Browser Errors"},"execution_result":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Execution Result"}},"type":"object","required":["user_request","agent_response"],"title":"EvalRequest"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"LoginRequest":{"properties":{"email":{"type":"string","title":"Email"},"password":{"type":"string","title":"Password"}},"type":"object","required":["email","password"],"title":"LoginRequest"},"ScreenshotRequest":{"properties":{"screenshot_data":{"type":"string","title":"Screenshot Data"},"label":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Label"}},"type":"object","required":["screenshot_data"],"title":"ScreenshotRequest"},"SignupRequest":{"properties":{"email":{"type":"string","title":"Email"},"password":{"type":"string","title":"Password"},"username":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Username"}},"type":"object","required":["email","password"],"title":"SignupRequest"},"StartExportRequest":{"properties":{"fiddle_id":{"type":"string","title":"Fiddle Id"},"start_url":{"type":"string","title":"Start Url"},"max_depth":{"type":"integer","title":"Max Depth","default":3},"max_pages":{"type":"integer","title":"Max Pages","default":79}},"type":"object","required":["fiddle_id","start_url"],"title":"StartExportRequest"},"SubmitPageRequest":{"properties":{"url":{"type":"string","title":"Url"},"html":{"type":"string","title":"Html"},"links":{"items":{"type":"string"},"type":"array","title":"Links"},"depth":{"type":"integer","title":"Depth"}},"type":"object","required":["url","html","links","depth"],"title":"SubmitPageRequest"},"ToolResult":{"properties":{"name":{"type":"string","title":"Name"},"result":{"title":"Result"},"success":{"type":"boolean","title":"Success","default":true},"error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error"}},"type":"object","required":["name","result"],"title":"ToolResult"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"VisualEvalRequest":{"properties":{"user_request":{"type":"string","title":"User Request"},"screenshot_before":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Screenshot Before"},"screenshot_after":{"type":"string","title":"Screenshot After"},"expected_changes":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Expected Changes"}},"type":"object","required":["user_request","screenshot_after"],"title":"VisualEvalRequest"}}}}