{"openapi":"3.1.0","info":{"title":"FastAPI","version":"0.1.0"},"paths":{"/analyze-actions-contract":{"post":{"tags":["app"],"summary":"Analyze Actions Contract","description":"Analyze an unsaved draft through Core's real prompt composer.","operationId":"analyze_actions_contract_analyze_actions_contract_post","parameters":[{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"},"example":{}},{"name":"API-AUTH-TOKEN","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Api-Auth-Token"},"example":{}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AnalyzeActionsPromptRequest"},"example":{}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AnalyzeActionsPromptResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/inspect-effective-prompt":{"post":{"tags":["app"],"summary":"Inspect Effective Prompt For Mindview","description":"Render an owned character draft for an authorized MindView caller.","operationId":"inspect_effective_prompt_for_mindview_inspect_effective_prompt_post","parameters":[{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"},"example":{}},{"name":"API-AUTH-TOKEN","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Api-Auth-Token"},"example":{}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InspectEffectivePromptRequest"},"example":{}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InspectEffectivePromptResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/connect":{"post":{"tags":["app"],"summary":"Rtvi Connect","operationId":"rtvi_connect_connect_post","parameters":[{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"},"example":{}},{"name":"API-AUTH-TOKEN","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Api-Auth-Token"},"example":{}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConnectRequest"},"example":{}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConnectResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/disconnect":{"post":{"summary":"Disconnect Session","operationId":"disconnect_session_disconnect_post","parameters":[{"name":"session_id","in":"query","required":true,"schema":{"type":"string","title":"Session Id"},"example":{}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"string"},"title":"Response Disconnect Session Disconnect Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/character/custom-features":{"post":{"tags":["app"],"summary":"Update Character Custom Features","operationId":"update_character_custom_features_character_custom_features_post","parameters":[{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"},"example":{}},{"name":"API-AUTH-TOKEN","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Api-Auth-Token"},"example":{}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateCharacterCustomFeaturesRequest"},"example":{}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateCharacterCustomFeaturesResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/character/language-hardening":{"get":{"tags":["app"],"summary":"Get Character Language Hardening","description":"Report the character's language-hardening mode. Reads only.\n\nExists because a caller that can only SET cannot ask \"what is it now?\"\nwithout choosing a value to write. A client that reads by writing its\nguess overwrites the author's choice every time the screen is opened —\nmeasured on dev19, where opening Core AI Settings put `off` back to\n`default` on every page load, so the toggle could never stay off.","operationId":"get_character_language_hardening_character_language_hardening_get","parameters":[{"name":"character_id","in":"query","required":true,"schema":{"type":"string","format":"uuid","title":"Character Id"},"example":{}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"},"example":{}},{"name":"API-AUTH-TOKEN","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Api-Auth-Token"},"example":{}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LanguageHardeningResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/healthz":{"get":{"summary":"Health Check","operationId":"health_check_healthz_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/turn_event":{"post":{"tags":["latency"],"summary":"Turn Event","operationId":"turn_event_turn_event_post","parameters":[{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"},"example":{}},{"name":"API-AUTH-TOKEN","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Api-Auth-Token"},"example":{}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Turn Event Turn Event Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}}},"components":{"schemas":{"Action":{"properties":{"value":{"type":"string","title":"Value"}},"type":"object","required":["value"],"title":"Action"},"ActionCharacterConfig":{"properties":{"name":{"type":"string","title":"Name"},"bio":{"type":"string","title":"Bio"}},"type":"object","required":["name","bio"],"title":"ActionCharacterConfig"},"ActionConfig":{"properties":{"actions":{"anyOf":[{"items":{"$ref":"#/components/schemas/Action"},"type":"array"},{"type":"null"}],"title":"Actions"},"characters":{"anyOf":[{"items":{"$ref":"#/components/schemas/ActionCharacterConfig"},"type":"array"},{"type":"null"}],"title":"Characters"},"objects":{"anyOf":[{"items":{"$ref":"#/components/schemas/ActionObjectConfig"},"type":"array"},{"type":"null"}],"title":"Objects"},"current_attention_object":{"anyOf":[{"$ref":"#/components/schemas/ActionObjectConfig"},{"type":"null"}]},"tools":{"anyOf":[{"items":{"$ref":"#/components/schemas/ClientToolDeclaration"},"type":"array"},{"type":"null"}],"title":"Tools"}},"type":"object","title":"ActionConfig"},"ActionObjectConfig":{"properties":{"name":{"type":"string","title":"Name"},"description":{"type":"string","title":"Description"}},"type":"object","required":["name","description"],"title":"ActionObjectConfig"},"ActionProtocolCapabilities":{"properties":{"action_protocol_version":{"type":"integer","title":"Action Protocol Version","default":1},"model_output_version":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Model Output Version"}},"additionalProperties":false,"type":"object","title":"ActionProtocolCapabilities","description":"Client-requested or server-selected realtime protocol capabilities.\n\n``model_output_version`` remains absent for legacy clients so the serialized\nresponse shape is compatible with clients that use strict capability decoders."},"ActionsPromptCharacterDraft":{"properties":{"character_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Character Id"},"character_name":{"type":"string","maxLength":200,"minLength":1,"title":"Character Name","default":"Character"},"description":{"type":"string","maxLength":50000,"title":"Description","default":""},"speaking_style_description":{"type":"string","maxLength":20000,"title":"Speaking Style Description","default":""},"speaking_style_sample_dialogues":{"type":"string","maxLength":20000,"title":"Speaking Style Sample Dialogues","default":""},"character_traits":{"additionalProperties":true,"type":"object","title":"Character Traits"},"personality_enabled":{"type":"boolean","title":"Personality Enabled","default":true},"state_of_mind_enabled":{"type":"boolean","title":"State Of Mind Enabled","default":true},"moderation_enabled":{"type":"boolean","title":"Moderation Enabled","default":true},"custom_guardrails_enabled":{"type":"boolean","title":"Custom Guardrails Enabled","default":false},"guardrails_text":{"type":"string","maxLength":20000,"title":"Guardrails Text","default":""},"model_group_name":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Model Group Name"},"temperature":{"type":"number","maximum":2.0,"minimum":0.0,"title":"Temperature","default":0.7},"language_codes":{"items":{"type":"string"},"type":"array","maxItems":32,"title":"Language Codes"},"actions_enabled":{"type":"boolean","title":"Actions Enabled","default":true},"actions_contract":{"type":"string","maxLength":20000,"title":"Actions Contract","default":""},"show_full_unfiltered_llm_output":{"type":"boolean","title":"Show Full Unfiltered Llm Output","default":false},"character_actions":{"items":{"type":"string"},"type":"array","maxItems":256,"title":"Character Actions"},"looks_description":{"type":"string","maxLength":20000,"title":"Looks Description","default":""},"clothes_description":{"type":"string","maxLength":20000,"title":"Clothes Description","default":""},"custom_prompt":{"type":"string","maxLength":50000,"title":"Custom Prompt","default":""},"is_narrative_driven":{"type":"boolean","title":"Is Narrative Driven","default":false}},"additionalProperties":false,"type":"object","title":"ActionsPromptCharacterDraft","description":"Current editor values; this model never writes character state."},"ActionsPromptConflict":{"properties":{"code":{"type":"string","title":"Code"},"severity":{"type":"string","enum":["info","warning","error"],"title":"Severity"},"summary":{"type":"string","title":"Summary"},"source_paths":{"items":{"type":"string"},"type":"array","title":"Source Paths"},"recommendation":{"type":"string","title":"Recommendation"}},"type":"object","required":["code","severity","summary","source_paths","recommendation"],"title":"ActionsPromptConflict"},"ActionsPromptEffectivePrompt":{"properties":{"sha256":{"type":"string","title":"Sha256"},"character_count":{"type":"integer","title":"Character Count"},"render_mode":{"type":"string","enum":["combined_json","realtime_tools","natural_text"],"title":"Render Mode"},"provider_assumption":{"type":"string","enum":["discrete","realtime"],"title":"Provider Assumption"},"resolved_model_group_name":{"type":"string","title":"Resolved Model Group Name"},"resolved_provider":{"type":"string","title":"Resolved Provider"},"resolved_model":{"type":"string","title":"Resolved Model"}},"type":"object","required":["sha256","character_count","render_mode","provider_assumption","resolved_model_group_name","resolved_provider","resolved_model"],"title":"ActionsPromptEffectivePrompt"},"ActionsPromptFinding":{"properties":{"source_section":{"type":"string","title":"Source Section"},"field_path":{"type":"string","title":"Field Path"},"status":{"type":"string","enum":["present","empty","inactive","runtime_placeholder"],"title":"Status"},"excerpt":{"type":"string","title":"Excerpt"},"effect":{"type":"string","title":"Effect"},"precedence":{"type":"string","title":"Precedence"}},"type":"object","required":["source_section","field_path","status","excerpt","effect","precedence"],"title":"ActionsPromptFinding"},"ActionsPromptRuntimeContext":{"properties":{"dynamic_info":{"anyOf":[{"$ref":"#/components/schemas/DynamicInfo"},{"type":"null"}]},"scene_description":{"anyOf":[{"items":{"$ref":"#/components/schemas/ActionObjectConfig"},"type":"array"},{"type":"null"}],"title":"Scene Description"},"memory":{"anyOf":[{"type":"string","maxLength":50000},{"type":"null"}],"title":"Memory"},"narrative_prompt":{"anyOf":[{"type":"string","maxLength":50000},{"type":"null"}],"title":"Narrative Prompt"},"knowledge_base_context":{"anyOf":[{"type":"string","maxLength":100000},{"type":"null"}],"title":"Knowledge Base Context"},"vision_available":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Vision Available"},"vision_prompt_mode":{"type":"string","enum":["auto","disabled"],"title":"Vision Prompt Mode","default":"auto"},"provider_mode":{"anyOf":[{"type":"string","enum":["discrete","realtime"]},{"type":"null"}],"title":"Provider Mode"}},"additionalProperties":false,"type":"object","title":"ActionsPromptRuntimeContext","description":"Optional edit-time values for components normally known only at runtime."},"AnalyzeActionsPromptRequest":{"properties":{"character":{"$ref":"#/components/schemas/ActionsPromptCharacterDraft"},"action_config":{"anyOf":[{"$ref":"#/components/schemas/ActionConfig"},{"type":"null"}]},"runtime_context":{"anyOf":[{"$ref":"#/components/schemas/ActionsPromptRuntimeContext"},{"type":"null"}]},"capabilities":{"anyOf":[{"$ref":"#/components/schemas/ActionProtocolCapabilities"},{"type":"null"}]}},"additionalProperties":false,"type":"object","required":["character"],"title":"AnalyzeActionsPromptRequest"},"AnalyzeActionsPromptResponse":{"properties":{"analysis_version":{"type":"string","const":"actions-contract-v0","title":"Analysis Version","default":"actions-contract-v0"},"effective_prompt":{"$ref":"#/components/schemas/ActionsPromptEffectivePrompt"},"findings":{"items":{"$ref":"#/components/schemas/ActionsPromptFinding"},"type":"array","title":"Findings"},"conflicts":{"items":{"$ref":"#/components/schemas/ActionsPromptConflict"},"type":"array","title":"Conflicts"},"inferred_contract":{"$ref":"#/components/schemas/InferredActionsContract"},"system_generated_contract":{"items":{"$ref":"#/components/schemas/SystemGeneratedActionsPromptSection"},"type":"array","title":"System Generated Contract"},"recommendations":{"items":{"type":"string"},"type":"array","title":"Recommendations"}},"type":"object","required":["effective_prompt","findings","conflicts","inferred_contract","system_generated_contract","recommendations"],"title":"AnalyzeActionsPromptResponse"},"AudioRoutingMode":{"type":"string","enum":["audio_only","data_only","both"],"title":"AudioRoutingMode","description":"Audio routing mode for LiveKit audio output configuration."},"BlendshapeFormat":{"type":"string","enum":["mha","arkit","cc4_extended","cc5_hd","visemes"],"title":"BlendshapeFormat"},"ClientToolDeclaration":{"properties":{"name":{"type":"string","title":"Name"},"description":{"type":"string","title":"Description"},"inputSchema":{"additionalProperties":true,"type":"object","title":"Inputschema"}},"additionalProperties":false,"type":"object","required":["name","description","inputSchema"],"title":"ClientToolDeclaration","description":"A client-executed tool declared during action-protocol negotiation."},"ConnectCharacterRequest":{"properties":{"character_id":{"type":"string","format":"uuid","title":"Character Id"},"character_session_id":{"anyOf":[{"type":"string"},{"type":"string","format":"uuid"},{"type":"null"}],"title":"Character Session Id"}},"type":"object","required":["character_id"],"title":"ConnectCharacterRequest","description":"One ordered character instance requested for a roster room."},"ConnectCharacterResponse":{"properties":{"membership_id":{"type":"string","format":"uuid","title":"Membership Id"},"character_id":{"type":"string","format":"uuid","title":"Character Id"},"session_id":{"type":"string","title":"Session Id"},"character_session_id":{"type":"string","title":"Character Session Id"},"participant_identity":{"type":"string","title":"Participant Identity"},"is_initial":{"type":"boolean","title":"Is Initial"},"provisioning_status":{"type":"string","enum":["dispatch_queued","dispatch_accepted","dispatch_failed"],"title":"Provisioning Status"},"failure_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Failure Code"}},"type":"object","required":["membership_id","character_id","session_id","character_session_id","participant_identity","is_initial","provisioning_status"],"title":"ConnectCharacterResponse","description":"Durable identity and dispatch state for one room membership."},"ConnectRequest":{"properties":{"character_id":{"anyOf":[{"type":"string","pattern":"^(?P<character_id>[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})(?:-(?P<selector>latest|draft|(?:0|[1-9]\\d*)\\.(?:0|[1-9]\\d*)(?:\\.(?:0|[1-9]\\d*))?))?$"},{"type":"null"}],"title":"Character Id","description":"Single-character UUID, optionally followed by -draft, -latest, or a major.minor[.patch] version. Roster entries currently accept bare UUIDs only.","examples":["00000000-0000-4000-8000-000000000001","00000000-0000-4000-8000-000000000001-draft","00000000-0000-4000-8000-000000000001-1.0"]},"characters":{"anyOf":[{"items":{"$ref":"#/components/schemas/ConnectCharacterRequest"},"type":"array"},{"type":"null"}],"title":"Characters"},"connection_type":{"type":"string","enum":["audio","video","text"],"title":"Connection Type","default":"audio"},"llm_provider":{"type":"string","enum":["gemini-live","gemini-live-beta","gemini-baml","dynamic"],"title":"Llm Provider","default":"dynamic"},"blendshape_provider":{"type":"string","enum":["not_provided","ovr","neurosync"],"title":"Blendshape Provider","default":"not_provided"},"blendshape_config":{"anyOf":[{"$ref":"#/components/schemas/NeurosyncConfig"},{"type":"null"}]},"emotion_config":{"anyOf":[{"$ref":"#/components/schemas/NRCLexEmotionConfig"},{"$ref":"#/components/schemas/LLMEmotionConfig"},{"type":"null"}],"title":"Emotion Config"},"state_of_mind":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"State Of Mind"},"dynamic_info":{"anyOf":[{"$ref":"#/components/schemas/DynamicInfo"},{"type":"null"}]},"turn_detection_config":{"anyOf":[{"$ref":"#/components/schemas/TurnDetectionConfig"},{"type":"null"}]},"narrative_template_keys":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Narrative Template Keys","default":{}},"video_track_name":{"type":"string","title":"Video Track Name","default":"camera"},"vision_prompt_mode":{"type":"string","enum":["auto","disabled"],"title":"Vision Prompt Mode","description":"Controls Core-owned vision instructions and visual-input tooling for this session. 'auto' preserves legacy runtime behavior; 'disabled' omits the vision prompt and suppresses visual input while retaining scene metadata and other text context.","default":"auto"},"vision_input_config":{"anyOf":[{"$ref":"#/components/schemas/VisionInputConfig"},{"type":"null"}]},"respond_modes":{"anyOf":[{"$ref":"#/components/schemas/RespondModesConfig"},{"type":"null"}]},"thinking_mode":{"type":"boolean","title":"Thinking Mode","default":false},"action_config":{"anyOf":[{"$ref":"#/components/schemas/ActionConfig"},{"type":"null"}]},"capabilities":{"anyOf":[{"$ref":"#/components/schemas/ActionProtocolCapabilities"},{"type":"null"}]},"scene_description":{"anyOf":[{"items":{"$ref":"#/components/schemas/ActionObjectConfig"},"type":"array"},{"type":"null"}],"title":"Scene Description"},"character_session_id":{"anyOf":[{"type":"string"},{"type":"string","format":"uuid"},{"type":"null"}],"title":"Character Session Id"},"vad_params":{"$ref":"#/components/schemas/VADParams"},"room_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Room Name"},"room_session_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Room Session Id"},"mode":{"type":"string","enum":["create","join"],"title":"Mode","default":"create"},"spawn_agent":{"type":"boolean","title":"Spawn Agent","default":true},"shared_session_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Shared Session Key","description":"Client-provided grouping key used to deterministically place participants into the same shared session/room."},"connect_attempt_id":{"anyOf":[{"type":"string","maxLength":128,"minLength":1,"pattern":"^[a-zA-Z0-9_-]+$"},{"type":"null"}],"title":"Connect Attempt Id","description":"Client-generated idempotency key for one logical connection attempt. Retries with the same key and payload replay the original response."},"max_num_participants":{"type":"integer","minimum":1.0,"title":"Max Num Participants","default":1},"end_user_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"End User Id"},"end_user_metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"End User Metadata"},"default_tts_enabled":{"type":"boolean","title":"Default Tts Enabled","default":true},"default_stt_enabled":{"type":"boolean","title":"Default Stt Enabled","default":true},"disable_live_fallback":{"type":"boolean","title":"Disable Live Fallback","default":true},"stt_provider":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Stt Provider"},"debug":{"type":"boolean","title":"Debug","default":false},"debug_row_cap":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Debug Row Cap"},"use_response_lifecycle_contract":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Use Response Lifecycle Contract"},"invocation_metadata":{"anyOf":[{"$ref":"#/components/schemas/InvocationMetadata"},{"type":"null"}]},"audio_config":{"anyOf":[{"$ref":"#/components/schemas/models__api__AudioConfig__1"},{"type":"null"}]}},"type":"object","title":"ConnectRequest"},"ConnectResponse":{"properties":{"session_id":{"type":"string","title":"Session Id","description":"Unique session token"},"request_trace_id":{"type":"string","title":"Request Trace Id","description":"Server-side request trace ID for correlating client events, logs, telemetry, and session records for this /connect request"},"character_session_id":{"type":"string","title":"Character Session Id","description":"Interaction session id"},"room_url":{"type":"string","title":"Room Url","description":"URL of the room to connect to"},"room_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Room Name","description":"Room name (only for LiveKit transport)"},"token":{"type":"string","title":"Token","description":"Authentication token for the room"},"end_user_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"End User Id","description":"The end_user_id associated with this session when provided"},"end_user_metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"End User Metadata","description":"Metadata associated with the end user"},"room_session_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Room Session Id"},"active_membership_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Active Membership Id"},"route_epoch":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Route Epoch"},"roster_epoch":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Roster Epoch"},"partial_dispatch":{"type":"boolean","title":"Partial Dispatch","default":false},"characters":{"anyOf":[{"items":{"$ref":"#/components/schemas/ConnectCharacterResponse"},"type":"array"},{"type":"null"}],"title":"Characters"},"capabilities":{"anyOf":[{"$ref":"#/components/schemas/ActionProtocolCapabilities"},{"type":"null"}],"description":"Server-selected protocol capabilities for this connection"}},"type":"object","required":["session_id","request_trace_id","character_session_id","room_url","token"],"title":"ConnectResponse","description":"Response model for /connect endpoint"},"DynamicInfo":{"properties":{"text":{"type":"string","title":"Text","default":""},"keep_in_context":{"type":"boolean","title":"Keep In Context","description":"Whether to keep this dynamic info static in the context for the session.","default":false}},"type":"object","title":"DynamicInfo"},"EffectivePromptContent":{"properties":{"content":{"type":"string","maxLength":524288,"title":"Content"},"sha256":{"type":"string","maxLength":64,"minLength":64,"title":"Sha256"},"character_count":{"type":"integer","maximum":524288.0,"minimum":0.0,"title":"Character Count"},"render_mode":{"type":"string","enum":["combined_json","realtime_tools","natural_text"],"title":"Render Mode"},"provider_assumption":{"type":"string","enum":["discrete","realtime"],"title":"Provider Assumption"},"resolved_model_group_name":{"type":"string","title":"Resolved Model Group Name"},"resolved_provider":{"type":"string","title":"Resolved Provider"},"resolved_model":{"type":"string","title":"Resolved Model"}},"type":"object","required":["content","sha256","character_count","render_mode","provider_assumption","resolved_model_group_name","resolved_provider","resolved_model"],"title":"EffectivePromptContent"},"EffectivePromptSource":{"properties":{"order":{"type":"integer","minimum":0.0,"title":"Order"},"field_path":{"type":"string","title":"Field Path"},"source_section":{"type":"string","title":"Source Section"},"origin":{"type":"string","enum":["character","core","runtime"],"title":"Origin"},"layer":{"type":"string","enum":["static_system","static_cache","dynamic_context","chat"],"title":"Layer"},"status":{"type":"string","const":"present","title":"Status","default":"present"},"content":{"type":"string","maxLength":524288,"title":"Content"},"effect":{"type":"string","title":"Effect"},"precedence":{"type":"string","title":"Precedence"}},"type":"object","required":["order","field_path","source_section","origin","layer","content","effect","precedence"],"title":"EffectivePromptSource","description":"One ordered, active, model-facing prompt source."},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"InferredActionsContract":{"properties":{"output_mode":{"type":"string","enum":["combined_json","realtime_tools","natural_text"],"title":"Output Mode"},"action_transport":{"type":"string","enum":["action-response","tool-call","tool-and-action-response","none"],"title":"Action Transport"},"allowed_actions":{"items":{"type":"string"},"type":"array","title":"Allowed Actions"},"client_tools":{"items":{"type":"string"},"type":"array","title":"Client Tools"},"requires_structured_output":{"type":"boolean","title":"Requires Structured Output"},"summary":{"type":"string","title":"Summary"}},"type":"object","required":["output_mode","action_transport","allowed_actions","requires_structured_output","summary"],"title":"InferredActionsContract"},"InspectEffectivePromptRequest":{"properties":{"inspection_version":{"type":"string","const":"mindview-effective-prompt-v1","title":"Inspection Version","default":"mindview-effective-prompt-v1"},"character":{"$ref":"#/components/schemas/ActionsPromptCharacterDraft"},"action_config":{"anyOf":[{"$ref":"#/components/schemas/ActionConfig"},{"type":"null"}]},"runtime_context":{"anyOf":[{"$ref":"#/components/schemas/ActionsPromptRuntimeContext"},{"type":"null"}]}},"additionalProperties":false,"type":"object","required":["character"],"title":"InspectEffectivePromptRequest","description":"One unsaved draft rendered without writing character state."},"InspectEffectivePromptResponse":{"properties":{"inspection_version":{"type":"string","const":"mindview-effective-prompt-v1","title":"Inspection Version","default":"mindview-effective-prompt-v1"},"completeness":{"type":"string","enum":["static_complete","runtime_context_partial"],"title":"Completeness"},"effective_prompt":{"$ref":"#/components/schemas/EffectivePromptContent"},"sources":{"items":{"$ref":"#/components/schemas/EffectivePromptSource"},"type":"array","title":"Sources"},"unavailable_runtime_sources":{"items":{"$ref":"#/components/schemas/UnavailableRuntimeSource"},"type":"array","title":"Unavailable Runtime Sources"}},"type":"object","required":["completeness","effective_prompt","sources","unavailable_runtime_sources"],"title":"InspectEffectivePromptResponse"},"InvocationMetadata":{"properties":{"source":{"$ref":"#/components/schemas/InvocationSource","default":"not_provided"},"client_version":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Client Version"},"extra_metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Extra Metadata"}},"type":"object","title":"InvocationMetadata"},"InvocationSource":{"type":"string","enum":["not_provided","ue_sdk","unity_sdk","web_sdk","internal_testing"],"title":"InvocationSource"},"LLMEmotionConfig":{"properties":{"provider":{"type":"string","const":"llm","title":"Provider","default":"llm"}},"type":"object","title":"LLMEmotionConfig","description":"Configuration for LLM emotion detection provider."},"LanguageHardeningResponse":{"properties":{"character_id":{"type":"string","format":"uuid","title":"Character Id"},"mode":{"type":"string","title":"Mode"},"resolved_block":{"type":"string","title":"Resolved Block"},"language_codes":{"items":{"type":"string"},"type":"array","title":"Language Codes"},"has_custom_text":{"type":"boolean","title":"Has Custom Text","default":false}},"type":"object","required":["character_id","mode","resolved_block","language_codes"],"title":"LanguageHardeningResponse","description":"The setting AND the prompt text it currently resolves to.\n\n`resolved_block` is the exact string appended to the system prompt for\nthis character. It is returned so a client can show the author what the\nbackend actually sends instead of paraphrasing it — if the two ever\ndisagree, the displayed text stops being trustworthy."},"NRCLexEmotionConfig":{"properties":{"provider":{"type":"string","const":"nrclex","title":"Provider","default":"nrclex"},"min_word_threshold":{"type":"integer","title":"Min Word Threshold","description":"Minimum words required for analysis (used when use_sentence_detection=False)","default":3},"low_intensity_threshold":{"type":"number","title":"Low Intensity Threshold","description":"Threshold for low intensity emotions (0-1 scale)","default":0.33},"high_intensity_threshold":{"type":"number","title":"High Intensity Threshold","description":"Threshold for high intensity emotions (0-1 scale)","default":0.66},"use_sentence_detection":{"type":"boolean","title":"Use Sentence Detection","description":"Use sentence detection instead of word count threshold","default":true},"min_sentence_threshold":{"type":"integer","title":"Min Sentence Threshold","description":"Minimum complete sentences required for analysis (used when use_sentence_detection=True)","default":1}},"type":"object","title":"NRCLexEmotionConfig","description":"Configuration for NRCLex emotion detection provider."},"NeurosyncConfig":{"properties":{"provider":{"type":"string","const":"neurosync","title":"Provider","default":"neurosync"},"enable_chunking":{"type":"boolean","title":"Enable Chunking","default":true},"chunk_size":{"type":"integer","title":"Chunk Size","default":10},"deliver_chunks_ahead":{"type":"boolean","title":"Deliver Chunks Ahead","default":false},"output_fps":{"type":"integer","title":"Output Fps","default":60},"max_ahead_chunk_lead_seconds":{"type":"number","title":"Max Ahead Chunk Lead Seconds","default":2.0},"frames_buffer_duration":{"type":"number","title":"Frames Buffer Duration","default":0},"format":{"$ref":"#/components/schemas/BlendshapeFormat","default":"mha"}},"type":"object","title":"NeurosyncConfig","description":"Configuration for NeuroSync blendshape provider."},"OutputAudioConfig":{"properties":{"add_wav_header":{"type":"boolean","title":"Add Wav Header","description":"Whether to add WAV header to audio output","default":false},"sample_rate":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Sample Rate","description":"Audio sample rate (None for auto-detect)"},"max_chunk_duration_ms":{"type":"integer","maximum":1000.0,"minimum":10.0,"title":"Max Chunk Duration Ms","description":"Maximum duration of audio chunks in milliseconds (default: 100ms)","default":100},"audio_routing":{"$ref":"#/components/schemas/AudioRoutingMode","description":"Audio routing mode: 'audio_only' (default) (audio track only), 'data_only' (data channel only), 'both' (audio track AND data channel in parallel)","default":"audio_only"}},"type":"object","title":"OutputAudioConfig","description":"Configuration for audio output behavior (LiveKit-specific)."},"RespondModesConfig":{"properties":{"text":{"anyOf":[{"type":"string","enum":["must_respond","auto","silent"]},{"type":"null"}],"title":"Text"},"audio":{"anyOf":[{"type":"string","enum":["must_respond","auto","silent"]},{"type":"null"}],"title":"Audio"},"vision":{"anyOf":[{"type":"string","enum":["must_respond","auto","silent"]},{"type":"null"}],"title":"Vision"},"context_update":{"anyOf":[{"type":"string","enum":["must_respond","auto","silent"]},{"type":"null"}],"title":"Context Update"},"trigger":{"anyOf":[{"type":"string","enum":["must_respond","auto","silent"]},{"type":"null"}],"title":"Trigger"},"scene_metadata":{"anyOf":[{"type":"string","enum":["must_respond","auto","silent"]},{"type":"null"}],"title":"Scene Metadata"}},"type":"object","title":"RespondModesConfig","description":"Connect-time respond-mode defaults by modality.\n\nUser text and audio keep the product floor from the design doc: they may\nonly be set to must_respond."},"SmartTurnParams":{"properties":{"stop_secs":{"type":"number","title":"Stop Secs","default":3},"pre_speech_ms":{"type":"number","title":"Pre Speech Ms","default":500},"max_duration_secs":{"type":"number","title":"Max Duration Secs","default":8}},"type":"object","title":"SmartTurnParams","description":"Configuration parameters for smart turn analysis.\n\nParameters:\n    stop_secs: Maximum silence duration in seconds before ending turn.\n    pre_speech_ms: Milliseconds of audio to include before speech starts.\n    max_duration_secs: Maximum duration in seconds for audio segments."},"SystemGeneratedActionsPromptSection":{"properties":{"field_path":{"type":"string","title":"Field Path"},"source_section":{"type":"string","title":"Source Section"},"content":{"type":"string","title":"Content"},"effect":{"type":"string","title":"Effect"},"precedence":{"type":"string","title":"Precedence"}},"type":"object","required":["field_path","source_section","content","effect","precedence"],"title":"SystemGeneratedActionsPromptSection","description":"Exact Core-owned Actions prompt fragment shown read-only to authors."},"TransportType":{"type":"string","enum":["daily","livekit","livekit","sse","websocket"],"title":"TransportType"},"TurnDetectionConfig":{"properties":{"type":{"type":"string","enum":["smart_turn","not_provided"],"title":"Type","default":"not_provided"},"params":{"anyOf":[{"$ref":"#/components/schemas/SmartTurnParams"},{"type":"null"}],"default":{"stop_secs":3.0,"pre_speech_ms":500.0,"max_duration_secs":8.0}}},"type":"object","title":"TurnDetectionConfig"},"UnavailableRuntimeSource":{"properties":{"field_path":{"type":"string","title":"Field Path"},"source_section":{"type":"string","title":"Source Section"},"status":{"type":"string","const":"runtime_placeholder","title":"Status","default":"runtime_placeholder"},"reason":{"type":"string","title":"Reason"},"effect":{"type":"string","title":"Effect"},"precedence":{"type":"string","title":"Precedence"}},"type":"object","required":["field_path","source_section","reason","effect","precedence"],"title":"UnavailableRuntimeSource"},"UpdateCharacterCustomFeaturesRequest":{"properties":{"character_id":{"type":"string","format":"uuid","title":"Character Id"},"feature_name":{"type":"string","const":"GEMINI_CUSTOM_VAD_PARAMS","title":"Feature Name"},"feature_value":{"title":"Feature Value"}},"type":"object","required":["character_id","feature_name","feature_value"],"title":"UpdateCharacterCustomFeaturesRequest"},"UpdateCharacterCustomFeaturesResponse":{"properties":{"success":{"type":"boolean","title":"Success"}},"type":"object","required":["success"],"title":"UpdateCharacterCustomFeaturesResponse"},"VADParams":{"properties":{"confidence":{"type":"number","title":"Confidence","default":0.7},"start_secs":{"type":"number","title":"Start Secs","default":0.2},"stop_secs":{"type":"number","title":"Stop Secs","default":0.2},"min_volume":{"type":"number","title":"Min Volume","default":0.6}},"type":"object","title":"VADParams"},"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"},"VisionInputConfig":{"properties":{"enabled":{"type":"boolean","title":"Enabled","default":true},"sample_interval_secs":{"type":"number","maximum":60.0,"exclusiveMinimum":0.0,"title":"Sample Interval Secs","default":1.0},"frames_per_turn":{"type":"integer","maximum":20.0,"minimum":1.0,"title":"Frames Per Turn","default":5},"buffer_frames":{"anyOf":[{"type":"integer","maximum":120.0,"minimum":1.0},{"type":"null"}],"title":"Buffer Frames"},"sampling_windows":{"anyOf":[{"items":{"$ref":"#/components/schemas/VisionSamplingWindowConfig"},"type":"array"},{"type":"null"}],"title":"Sampling Windows"},"staleness_seconds":{"type":"number","maximum":120.0,"exclusiveMinimum":0.0,"title":"Staleness Seconds","default":10.0},"max_resolution":{"anyOf":[{"type":"integer","maximum":2048.0,"minimum":64.0},{"type":"null"}],"title":"Max Resolution"},"replace_previous_vision_context":{"type":"boolean","title":"Replace Previous Vision Context","default":true}},"type":"object","title":"VisionInputConfig","description":"Vision context injection settings for discrete multimodal LLMs.\n\nFrames are sampled from the video channel, buffered silently, and attached\nto the next LLM-triggering turn. max_resolution=None uses the provider-aware\ndefault (Gemini 384px for the single-tile token rate, others 768px)."},"VisionSamplingWindowConfig":{"properties":{"count":{"type":"integer","maximum":20.0,"minimum":1.0,"title":"Count","default":1},"interval_ms":{"type":"integer","maximum":60000.0,"exclusiveMinimum":0.0,"title":"Interval Ms","default":1000}},"type":"object","title":"VisionSamplingWindowConfig","description":"One horizon for selecting buffered frames at attach time."},"models__api__AudioConfig__1":{"properties":{"output":{"anyOf":[{"$ref":"#/components/schemas/OutputAudioConfig"},{"type":"null"}]}},"type":"object","title":"AudioConfig","description":"Configuration for audio behavior."},"models__api__AudioConfig__2":{"properties":{"output":{"anyOf":[{"$ref":"#/components/schemas/OutputAudioConfig"},{"type":"null"}]}},"type":"object","title":"AudioConfig","description":"Configuration for audio behavior."}}}}