Create a character
Create (or re-publish) a character owned by the caller’s app.
JSON-native authoring → the Gate-0 characters/character_versions
entity. Idempotent on content: re-sending identical content reuses the
version. A slug already owned by a DIFFERENT app is rejected 409.
Authentication
LoreOS API key, sent as Authorization: Bearer <key>.
Request
Default authored localization. When localizations is provided, the top-level display_name/profile/greeting/voice/example fields are the backward-compatible view of this locale.
Creation-time source of truth for visible character speech. Choose the language users should normally see in character replies, not the character’s region or the latest user’s message language. Use voice_samples, example_dialogues, and greeting text in this language unless stable code-switching is intentionally authored. Supported: en-US (English, default), ko-KR (Korean), ja-JP (Japanese), zh-CN (Simplified Chinese), zh-TW (Traditional Chinese). locale remains regional/provider metadata and does not control speech.
Optional runtime guard for end-user input locales. When omitted, LoreOS accepts sessions in the character’s primary_reply_language only. Use this when a character is intentionally multilingual; otherwise a KO-only character will reject an EN/JA session instead of serving the wrong locale by accident.
enforce_supported_input rejects /v1/sessions when request.locale is not in supported_input_languages. allow_cross_language records the metadata but lets the customer app own catalog routing.
Visible profile facts and style anchors.
extra="allow" preserves forward compatibility, but readiness warns on
unknown keys so typos do not silently become invisible runtime state.
Per-locale authored runtime packs keyed by BCP-47 locale. Each session selects exactly one localization; voice_samples, example_dialogues, greeting, and localized profile from other locales are not injected into that session’s context window.
Authored first character message emitted as-is on session start.