{"openapi":"3.1.0","info":{"title":"Fabryka AI API","description":"Open-weight Bielik, Qwen, Muse Glimmer, PLLuM and hybrid inference through an OpenAI-compatible API. Muse Glimmer 30B Q4 runs on the GB10 GPU with a 131,072-token context window. Set model to auto to route by tool requirements, language and context size. Chat completions use application-level zero data retention for prompt and response content, including free keys. Operational metadata remains. Queued batches and browser demos have separate storage behavior. Commons collection is paused. See /polityka-prywatnosci.html and /data-controls.html.","version":"1.0.0"},"servers":[{"url":"https://fabryka.ai","description":"Production"}],"paths":{"/v1/plan/reset-password":{"post":{"summary":"Reset Password","operationId":"reset_password_v1_plan_reset_password_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResetInput"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/plan/register":{"post":{"summary":"Register","operationId":"register_v1_plan_register_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccountInput"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/plan/login":{"post":{"summary":"Login","operationId":"login_v1_plan_login_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccountInput"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/plan/logout":{"post":{"summary":"Logout","operationId":"logout_v1_plan_logout_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/plan/me":{"get":{"summary":"Me","operationId":"me_v1_plan_me_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/plan/usage":{"get":{"summary":"Usage","operationId":"usage_v1_plan_usage_get","parameters":[{"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"}}}}}}},"/v1/plan/refresh":{"post":{"summary":"Refresh","operationId":"refresh_v1_plan_refresh_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/plan/checkout":{"post":{"summary":"Checkout","operationId":"checkout_v1_plan_checkout_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutInput"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/plan/portal":{"post":{"summary":"Portal","operationId":"portal_v1_plan_portal_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/plan/keys":{"post":{"summary":"Issue Key","operationId":"issue_key_v1_plan_keys_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/plan/keys/{key_id}":{"delete":{"summary":"Revoke Key","operationId":"revoke_key_v1_plan_keys__key_id__delete","parameters":[{"name":"key_id","in":"path","required":true,"schema":{"type":"string","title":"Key Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/plan/webhook":{"post":{"summary":"Webhook","operationId":"webhook_v1_plan_webhook_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/basal/usage":{"get":{"tags":["Decisions"],"summary":"Content-free Basal usage counters","operationId":"usage_v1_basal_usage_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/basal/demo":{"post":{"tags":["Decisions"],"summary":"Try one Basal decision without an account","operationId":"demo_v1_basal_demo_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DemoDecisionRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/systemone":{"post":{"tags":["Decisions"],"summary":"Basal calibrated typed decisions","description":"Classify a state with choice, noul (probability of yes), or score questions. Uses both option orders and the author's calibration. No text generation. Usage is measured without daily request or token quotas. No content is stored. Standard and subscription API keys are supported; hardware admission still applies.","operationId":"decide_v1_systemone_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"janusz_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Janusz Session"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DecisionRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"title":"Response Decide V1 Systemone Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/commons/contributions":{"post":{"tags":["Commons"],"summary":"Contribution","operationId":"contribution_v1_commons_contributions_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContributionInput"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/privacy/preferences":{"get":{"tags":["Privacy"],"summary":"Get Preferences","operationId":"get_preferences_v1_privacy_preferences_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"janusz_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Janusz Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["Privacy"],"summary":"Set Preferences","operationId":"set_preferences_v1_privacy_preferences_put","security":[{"HTTPBearer":[]}],"parameters":[{"name":"janusz_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Janusz Session"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PreferenceInput"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/privacy/demo":{"get":{"tags":["Privacy"],"summary":"Get Demo","operationId":"get_demo_v1_privacy_demo_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}},"put":{"tags":["Privacy"],"summary":"Set Demo","operationId":"set_demo_v1_privacy_demo_put","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PreferenceInput"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/health":{"get":{"tags":["System"],"summary":"Check API availability","operationId":"health_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":{"type":"string"},"type":"object","title":"Response Health Health Get"}}}}}}},"/v1/auth/register":{"post":{"tags":["Account"],"summary":"Create an account and API key","operationId":"register_v1_auth_register_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegisterRequest"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Register V1 Auth Register Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/auth/anonymous":{"post":{"tags":["Account"],"summary":"Issue an anonymous test key","operationId":"anonymous_key_v1_auth_anonymous_post","responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Anonymous Key V1 Auth Anonymous Post"}}}}}}},"/v1/session/login":{"post":{"tags":["Account"],"summary":"Sign in to the dashboard","operationId":"session_login_v1_session_login_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminLoginRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":{"type":"string"},"type":"object","title":"Response Session Login V1 Session Login Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/session/logout":{"post":{"tags":["Account"],"summary":"Sign out of the dashboard","operationId":"session_logout_v1_session_logout_post","parameters":[{"name":"janusz_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Janusz Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"string"},"title":"Response Session Logout V1 Session Logout Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/me":{"get":{"tags":["Account"],"summary":"Get account details","operationId":"me_v1_me_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"janusz_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Janusz Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Me V1 Me Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/balance":{"get":{"tags":["Account"],"summary":"Check account balance","operationId":"balance_v1_balance_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"janusz_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Janusz Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Balance V1 Balance Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/batches":{"post":{"tags":["Batch"],"summary":"Create a batch job","operationId":"create_batch_v1_batches_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"janusz_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Janusz Session"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateBatchRequest"}}}},"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Create Batch V1 Batches Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["Batch"],"summary":"List batch jobs","operationId":"list_batches_v1_batches_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"janusz_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Janusz Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Batches V1 Batches Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/chat/completions":{"post":{"tags":["Chat"],"summary":"Generate or automatically route a response","description":"Set `model` to `auto` to let Fabryka select a compatible published model based on tool requirements, language and context size. Pin a model ID when deterministic model selection matters. The response and streamed chunks report the model actually used. Routing is resolved once before generation; a partially streamed request is never replayed against another model. For Qwen or Bielik, set `logprobs: true` and optionally `top_logprobs: 5` (0–20) to receive token log probabilities in `choices[].logprobs.content`, including in SSE chunks. Set `top_logprobs: -1` and `max_tokens` between 1 and 8 for the entire vocabulary at each generated position (32128 tokens for Bielik; 248320 for Qwen). Use `max_tokens: 1` for next-token scoring. These are normalized log probabilities, not raw logits or prompt-token scores.","operationId":"chat_completion_v1_chat_completions_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"janusz_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Janusz Session"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatCompletionRequest"}}}},"responses":{"200":{"description":"Completion response or OpenAI-compatible SSE stream.","content":{"application/json":{"schema":{"title":"Response Chat Completion V1 Chat Completions Post"}}},"headers":{"X-Fabryka-Requested-Model":{"description":"The model ID sent by the client, including auto.","schema":{"type":"string"}},"X-Fabryka-Selected-Model":{"description":"The concrete model selected before generation.","schema":{"type":"string"}},"X-Fabryka-Route-Reason":{"description":"Stable reason code for the routing decision.","schema":{"type":"string"}},"X-Fabryka-Streaming-Mode":{"description":"Native upstream deltas or buffered compatibility delivery.","schema":{"type":"string","enum":["native","buffered"]}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/batches/{batch_id}":{"get":{"tags":["Batch"],"summary":"Get a batch job","operationId":"get_batch_v1_batches__batch_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"batch_id","in":"path","required":true,"schema":{"type":"string","title":"Batch Id"}},{"name":"janusz_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Janusz Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Batch V1 Batches  Batch Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/batches/{batch_id}/cancel":{"post":{"tags":["Batch"],"summary":"Cancel a batch job","operationId":"cancel_batch_v1_batches__batch_id__cancel_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"batch_id","in":"path","required":true,"schema":{"type":"string","title":"Batch Id"}},{"name":"janusz_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Janusz Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Cancel Batch V1 Batches  Batch Id  Cancel Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/models":{"get":{"tags":["System"],"summary":"List available models","operationId":"models_v1_models_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Models V1 Models Get"}}}}}}}},"components":{"schemas":{"AccountInput":{"properties":{"email":{"type":"string","format":"email","title":"Email"},"password":{"type":"string","maxLength":256,"minLength":10,"title":"Password"},"accept_terms":{"type":"boolean","title":"Accept Terms","default":false}},"additionalProperties":false,"type":"object","required":["email","password"],"title":"AccountInput"},"AdminLoginRequest":{"properties":{"email":{"type":"string","format":"email","title":"Email"},"password":{"type":"string","maxLength":256,"minLength":10,"title":"Password"}},"type":"object","required":["email","password"],"title":"AdminLoginRequest"},"BatchItem":{"properties":{"custom_id":{"type":"string","maxLength":200,"minLength":1,"title":"Custom Id"},"model":{"type":"string","enum":["bielik-11b","bielik-11b-v3","qwen3.8-27b","muse-glimmer:latest","pllum-12b-instruct-2512","gollem-v4-250m-pl","slayerlab-sub150-32m-completion","qwen-bielik-hybrid"],"title":"Model","default":"bielik-11b-v3"},"messages":{"items":{"$ref":"#/components/schemas/Message"},"type":"array","minItems":1,"title":"Messages"},"max_tokens":{"type":"integer","maximum":65536.0,"minimum":1.0,"title":"Max Tokens","default":2048},"temperature":{"type":"number","maximum":2.0,"minimum":0.0,"title":"Temperature","default":0.0}},"type":"object","required":["custom_id","messages"],"title":"BatchItem"},"ChatCompletionRequest":{"properties":{"model":{"type":"string","enum":["bartender-2","auto","bielik-11b","bielik-11b-v3","qwen3.8-27b","muse-glimmer:latest","pllum-12b-instruct-2512","gollem-v4-250m-pl","slayerlab-sub150-32m-completion","qwen-bielik-hybrid"],"title":"Model","description":"Use auto to route by tool requirements, language and context size, or pin a published model ID. Responses report the concrete model actually used.","default":"auto","examples":["auto"]},"messages":{"items":{"$ref":"#/components/schemas/Message"},"type":"array","minItems":1,"title":"Messages"},"max_tokens":{"type":"integer","maximum":65536.0,"minimum":1.0,"title":"Max Tokens","description":"Maximum generated tokens (not characters); defaults to 2048. Bielik supports up to 32768, Qwen up to 65536, and Muse up to 131072 context; other models support up to 4096.","default":2048},"temperature":{"type":"number","maximum":2.0,"minimum":0.0,"title":"Temperature","default":0.0},"stream":{"type":"boolean","title":"Stream","default":false},"logprobs":{"type":"boolean","title":"Logprobs","description":"Return generated-token log probabilities (not raw logits). Pin Qwen or Bielik.","default":false},"top_logprobs":{"anyOf":[{"type":"integer","maximum":20.0,"minimum":-1.0},{"type":"null"}],"title":"Top Logprobs","description":"Alternative tokens per generated position: 0–20, or -1 for the entire vocabulary. Requires logprobs=true. Full-vocabulary mode requires max_tokens <= 8 because each position can contain 248320 token records."},"tools":{"anyOf":[{"items":{"additionalProperties":true,"type":"object"},"type":"array","maxItems":128},{"type":"null"}],"title":"Tools"},"tool_choice":{"anyOf":[{"type":"string"},{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Tool Choice"}},"type":"object","required":["messages"],"title":"ChatCompletionRequest"},"CheckoutInput":{"properties":{"accept_terms":{"type":"boolean","const":true,"title":"Accept Terms"}},"additionalProperties":false,"type":"object","required":["accept_terms"],"title":"CheckoutInput"},"ContributionInput":{"properties":{"tag":{"type":"string","enum":["wrong-answer","hallucination","good-example","hard-task"],"title":"Tag"},"mission":{"type":"string","enum":["conversation","polish-trap","code-edge","ocr-text"],"title":"Mission","default":"conversation"},"prompt":{"type":"string","maxLength":12000,"minLength":1,"title":"Prompt"},"response":{"type":"string","maxLength":16000,"minLength":1,"title":"Response"},"correction":{"type":"string","maxLength":12000,"title":"Correction","default":""},"explanation":{"type":"string","maxLength":4000,"minLength":10,"title":"Explanation"},"rights_confirmed":{"type":"boolean","const":true,"title":"Rights Confirmed"}},"additionalProperties":false,"type":"object","required":["tag","prompt","response","explanation","rights_confirmed"],"title":"ContributionInput"},"CreateBatchRequest":{"properties":{"requests":{"items":{"$ref":"#/components/schemas/BatchItem"},"type":"array","maxItems":10000,"minItems":1,"title":"Requests"},"completion_window":{"type":"string","const":"4h","title":"Completion Window","default":"4h"},"webhook_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Webhook Url"}},"type":"object","required":["requests"],"title":"CreateBatchRequest"},"DecisionRequest":{"properties":{"model":{"type":"string","enum":["basal-1.5-mini","Remek/basal-1.5-mini","basal-1.0-1.5B","Remek/basal-1.0-1.5B","basal-1.5-4.5B","Remek/basal-1.5-4.5B","basal-1.5","Remek/basal-1.5","basal-1.5-max","Remek/basal-1.5-max","basal-omni-1.0-ultra","Remek/basal-omni-1.0-ultra"],"title":"Model","default":"basal-1.5-mini"},"state":{"$ref":"#/components/schemas/JsonValue"},"questions":{"additionalProperties":{"$ref":"#/components/schemas/Question"},"type":"object","maxProperties":8,"minProperties":1,"title":"Questions"}},"additionalProperties":false,"type":"object","required":["state","questions"],"title":"DecisionRequest"},"DemoDecisionRequest":{"properties":{"model":{"type":"string","enum":["basal-1.5-mini","Remek/basal-1.5-mini","basal-1.0-1.5B","Remek/basal-1.0-1.5B","basal-1.5-4.5B","Remek/basal-1.5-4.5B","basal-1.5","Remek/basal-1.5","basal-1.5-max","Remek/basal-1.5-max","basal-omni-1.0-ultra","Remek/basal-omni-1.0-ultra"],"title":"Model","default":"basal-omni-1.0-ultra"},"state":{"$ref":"#/components/schemas/JsonValue"},"questions":{"additionalProperties":{"$ref":"#/components/schemas/Question"},"type":"object","maxProperties":1,"minProperties":1,"title":"Questions"}},"additionalProperties":false,"type":"object","required":["state","questions"],"title":"DemoDecisionRequest"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"ImageBlock":{"properties":{"type":{"type":"string","const":"image_url","title":"Type"},"image_url":{"$ref":"#/components/schemas/ImageURL"}},"additionalProperties":false,"type":"object","required":["type","image_url"],"title":"ImageBlock"},"ImageURL":{"properties":{"url":{"type":"string","title":"Url"},"detail":{"type":"string","enum":["auto","low","high"],"title":"Detail","default":"auto"}},"additionalProperties":false,"type":"object","required":["url"],"title":"ImageURL"},"JsonValue":{},"Message":{"properties":{"role":{"type":"string","enum":["system","user","assistant","tool"],"title":"Role"},"content":{"anyOf":[{"type":"string"},{"items":{"anyOf":[{"$ref":"#/components/schemas/TextBlock"},{"$ref":"#/components/schemas/ImageBlock"}]},"type":"array"},{"type":"null"}],"title":"Content"},"tool_calls":{"anyOf":[{"items":{"additionalProperties":true,"type":"object"},"type":"array"},{"type":"null"}],"title":"Tool Calls"},"tool_call_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tool Call Id"}},"type":"object","required":["role"],"title":"Message"},"PreferenceInput":{"properties":{"policy_version":{"type":"string","title":"Policy Version"},"product":{"type":"string","enum":["community","private_lite"],"title":"Product"}},"additionalProperties":false,"type":"object","required":["policy_version","product"],"title":"PreferenceInput"},"Question":{"properties":{"type":{"type":"string","enum":["choice","noul","score"],"title":"Type","default":"choice"},"instructions":{"type":"string","maxLength":2000,"minLength":1,"title":"Instructions"},"criteria":{"anyOf":[{"additionalProperties":{"$ref":"#/components/schemas/JsonValue"},"type":"object"},{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Criteria"},"levels":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Levels"},"option_keys":{"type":"string","enum":["show","hide"],"title":"Option Keys","default":"show"}},"additionalProperties":false,"type":"object","required":["instructions"],"title":"Question"},"RegisterRequest":{"properties":{"email":{"type":"string","format":"email","title":"Email"},"password":{"type":"string","maxLength":256,"minLength":10,"title":"Password"},"accept_terms":{"type":"boolean","title":"Accept Terms"},"accept_privacy":{"type":"boolean","title":"Accept Privacy"}},"type":"object","required":["email","password","accept_terms","accept_privacy"],"title":"RegisterRequest"},"ResetInput":{"properties":{"token":{"type":"string","maxLength":128,"minLength":40,"title":"Token"},"password":{"type":"string","maxLength":256,"minLength":10,"title":"Password"}},"additionalProperties":false,"type":"object","required":["token","password"],"title":"ResetInput"},"TextBlock":{"properties":{"type":{"type":"string","const":"text","title":"Type"},"text":{"type":"string","title":"Text"}},"additionalProperties":false,"type":"object","required":["type","text"],"title":"TextBlock"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}},"securitySchemes":{"HTTPBearer":{"type":"http","scheme":"bearer"}}}}