URL of the generated character portrait when generate_portrait=true was passed and image generation succeeded. Null otherwise.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"KiteFrost - Game Narrative API","colors":{"primary":"#3B82F6","light":"#93C5FD","dark":"#1D4ED8"},"logo":{"light":"https://mintcdn.com/kitefrost-game-narrative/TXACUuFm5_v3CabZ/logo/light.svg?fit=max\u0026auto=format\u0026n=TXACUuFm5_v3CabZ\u0026q=85\u0026s=4e755bdf37013538201f10d1d3b1f51e","dark":"https://mintcdn.com/kitefrost-game-narrative/TXACUuFm5_v3CabZ/logo/dark.svg?fit=max\u0026auto=format\u0026n=TXACUuFm5_v3CabZ\u0026q=85\u0026s=7bf34f07be95bdfd76e030ec1a3b0fc1"},"favicon":"https://mintcdn.com/kitefrost-game-narrative/TXACUuFm5_v3CabZ/favicon.svg?fit=max\u0026auto=format\u0026n=TXACUuFm5_v3CabZ\u0026q=85\u0026s=e660c0c1ac490a7af2577082bf3c9b18","navbar":{"links":[{"href":"/changelog","label":"Changelog"},{"href":"/status","label":"Status"},{"href":"https://staging.kitefrost.ai/game-narrative/login","label":"Sign in"}],"primary":{"type":"button","label":"Start free","href":"https://staging.kitefrost.ai/game-narrative/signup"}},"footer":{"socials":{"discord":"https://discord.gg/eCJy9Hy8MY"}},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"kitefrost-game-narrative","hasAudioNarration":false,"actualSubdomain":"kitefrost-game-narrative","customDomains":["game-narrative.docs.kitefrost.ai"],"gitSource":{"type":"gitlab","owner":"kitefrost","repo":"kitefrost-docs","deployBranch":"main","contentDirectory":"game-narrative","isPrivate":true,"projectId":84511791,"mountPath":"","label":""},"entitlements":{},"buildId":"6af0f0ccc47501c36a58f2ee","clientVersion":"0.0.4124","searchFilterCounts":[{"language":"default","tag":"API Reference","count":125},{"language":"default","tag":"Errors","count":28},{"language":"default","tag":"dialogue","count":21},{"language":"default","tag":"pack-entities","count":20},{"language":"default","tag":"seeds","count":8},{"language":"default","tag":"characters","count":7},{"language":"default","tag":"scenes","count":7},{"language":"default","tag":"story-arcs","count":7},{"language":"default","tag":"webhooks","count":7},{"language":"default","tag":"billing","count":6}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-rbac-roles","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-metadata","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"api-reference/characters/batch-create-npcs","slug":"/api-reference/characters/batch-create-npcs","pageMetadata":{"title":"Batch create NPCs","description":"Create multiple NPCs in one call (max 50).","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/projects/{project_id}/game-narrative/characters/batch","href":"/api-reference/characters/batch-create-npcs","autogeneratedByOpenApi":true},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Create multiple NPCs in one call (max 50).\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){return _jsx(_Fragment,{})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Batch create NPCs","description":"Create multiple NPCs in one call (max 50).","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/projects/{project_id}/game-narrative/characters/batch","href":"/api-reference/characters/batch-create-npcs","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"tags":["characters"],"summary":"Batch create NPCs","description":"Create multiple NPCs in one call (max 50).","operationId":"batch_create_characters_v1_projects__project_id__game_narrative_characters_batch_post","requestBody":"44321a86-92f3-4eee-9969-d9247d4e0c6d","responses":{"201":"77228160-7e73-4660-896b-39502e6b3fd0","401":"e76d61e8-333e-43b6-b493-9f139bbb7992","403":"a9da6e55-8490-41fe-86e2-89634fa89940","404":"2c3e72f6-d8e0-4d7d-9a44-77b2fc41ee70","422":"82826b4c-5f24-4f1d-b919-6d35860d6175","429":"435c385d-f32d-4784-a5b2-e7e2f426eeb7","500":"8309beaa-b05f-408a-8382-1494fd9a2584"},"parameters":["0ce0324e-0df9-4bb0-a04e-ae2168cb1430"],"method":"post","type":"path","servers":["88315cd7-5714-4b44-a506-6c089a5361a3"],"security":[],"path":"/v1/projects/{project_id}/game-narrative/characters/batch","baseUrlOptions":["https://api-staging.kitefrost.ai"],"title":"Batch create NPCs","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"0ce0324e-0df9-4bb0-a04e-ae2168cb1430":{"name":"project_id","in":"path","required":true,"schema":{"type":"string","title":"Project Id","isRequired":true,"uniqueKey":"","typeLabel":"string"}}},"requestBody":{"content":{"application/json":{"schema":{"properties":{"npcs":{"items":{"properties":{"npc_name":{"type":"string","maxLength":100,"minLength":1,"title":"Npc Name","description":"Display name of the NPC","isRequired":true,"uniqueKey":"npcs.items.[INDEX].npc_name","typeLabel":"string"},"npc_role":{"oneOf":[{"type":"string","title":"Npc Role","description":"Role in the story project (e.g. 'merchant', 'villain')","uniqueKey":"npcs.items.[INDEX].npc_role.oneOf.0","typeLabel":"string"},{"type":"null","title":"Npc Role","description":"Role in the story project (e.g. 'merchant', 'villain')","uniqueKey":"npcs.items.[INDEX].npc_role.oneOf.1","typeLabel":"null"}],"uniqueKey":"npcs.items.[INDEX].npc_role","typeLabel":"string | null"},"project_context":{"oneOf":[{"type":"string","title":"Project Context","description":"Brief description of the project/setting","uniqueKey":"npcs.items.[INDEX].project_context.oneOf.0","typeLabel":"string"},{"type":"null","title":"Project Context","description":"Brief description of the project/setting","uniqueKey":"npcs.items.[INDEX].project_context.oneOf.1","typeLabel":"null"}],"uniqueKey":"npcs.items.[INDEX].project_context","typeLabel":"string | null"},"personality_hints":{"items":{"type":"string","uniqueKey":"npcs.items.[INDEX].personality_hints.items.[INDEX]","typeLabel":"string"},"type":"array","title":"Personality Hints","description":"Trait keywords that shape the NPC's personality","uniqueKey":"npcs.items.[INDEX].personality_hints","typeLabel":"string[]"},"player_actions":{"items":{"type":"string","uniqueKey":"npcs.items.[INDEX].player_actions.items.[INDEX]","typeLabel":"string"},"type":"array","title":"Player Actions","description":"Actions the player can take with this NPC","uniqueKey":"npcs.items.[INDEX].player_actions","typeLabel":"string[]"},"generate_portrait":{"type":"boolean","title":"Generate Portrait","description":"When true, generate a fantasy character portrait via the configured image provider. Returns the portrait URL on the NPCResponse. Silently degrades to no image if image generation is unavailable or the prompt is blocked by content safety.","default":false,"uniqueKey":"npcs.items.[INDEX].generate_portrait","typeLabel":"boolean"}},"type":"object","required":["npc_name"],"title":"CreateNPCRequest","description":"POST /v1/projects/{project_id}/characters","example":{"npc_name":"Aria Shadowstep","npc_role":"merchant","personality_hints":["cunning","secretive","charming"],"player_actions":["talk","trade","persuade"],"project_context":"A bustling port city in a high-fantasy setting"},"uniqueKey":"npcs.items.[INDEX]","typeLabel":"CreateNPCRequest · object"},"type":"array","maxItems":50,"minItems":1,"title":"Npcs","description":"List of NPC definitions to create (max 50)","isRequired":true,"uniqueKey":"npcs","typeLabel":"CreateNPCRequest · object[]"}},"type":"object","required":["npcs"],"title":"BatchCreateNPCsRequest","description":"POST /v1/projects/{project_id}/characters/batch","uniqueKey":"","typeLabel":"BatchCreateNPCsRequest · object"},"examples":{"Example":{"title":"Example","value":{"npcs":[{"npc_name":"Aria Shadowstep","npc_role":"merchant","personality_hints":["cunning","secretive","charming"],"player_actions":["talk","trade","persuade"],"project_context":"A bustling port city in a high-fantasy setting"}]}}},"exampleType":"generated"}},"required":true,"exampleType":"generated"},"responses":{"77228160-7e73-4660-896b-39502e6b3fd0":{"description":"NPCs created successfully","content":{"application/json":{"schema":{"items":{"properties":{"npc_id":{"type":"string","title":"Npc Id","description":"Unique NPC identifier (UUID)","isRequired":true,"uniqueKey":"items.[INDEX].npc_id","typeLabel":"string"},"name":{"type":"string","title":"Name","description":"Display name of the NPC","isRequired":true,"uniqueKey":"items.[INDEX].name","typeLabel":"string"},"project_id":{"type":"string","title":"Project Id","description":"Project this NPC belongs to","isRequired":true,"uniqueKey":"items.[INDEX].project_id","typeLabel":"string"},"status":{"type":"string","title":"Status","description":"Lifecycle status: brainstorm | draft | final","default":"brainstorm","uniqueKey":"items.[INDEX].status","typeLabel":"string"},"session_id":{"oneOf":[{"type":"string","title":"Session Id","description":"Active generation session ID, if any","uniqueKey":"items.[INDEX].session_id.oneOf.0","typeLabel":"string"},{"type":"null","title":"Session Id","description":"Active generation session ID, if any","uniqueKey":"items.[INDEX].session_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"items.[INDEX].session_id","typeLabel":"string | null"},"created_at":{"oneOf":[{"type":"string","title":"Created At","description":"ISO 8601 creation timestamp","format":"date-time","uniqueKey":"items.[INDEX].created_at.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","title":"Created At","description":"ISO 8601 creation timestamp","uniqueKey":"items.[INDEX].created_at.oneOf.1","typeLabel":"null"}],"uniqueKey":"items.[INDEX].created_at","typeLabel":"string\u003cdate-time> | null"},"portrait_url":{"oneOf":[{"type":"string","title":"Portrait Url","description":"URL of the generated character portrait when `generate_portrait=true` was passed and image generation succeeded. Null otherwise.","uniqueKey":"items.[INDEX].portrait_url.oneOf.0","typeLabel":"string"},{"type":"null","title":"Portrait Url","description":"URL of the generated character portrait when `generate_portrait=true` was passed and image generation succeeded. Null otherwise.","uniqueKey":"items.[INDEX].portrait_url.oneOf.1","typeLabel":"null"}],"uniqueKey":"items.[INDEX].portrait_url","typeLabel":"string | null"}},"type":"object","required":["npc_id","name","project_id"],"title":"NPCResponse","description":"NPC resource representation.","example":{"created_at":"2026-01-01T12:00:00Z","name":"Aria Shadowstep","npc_id":"a1b2c3d4-e5f6-7890-abcd-ef1234567890","project_id":"proj_abc123","session_id":"sess_xyz789","status":"brainstorm"},"uniqueKey":"items.[INDEX]","typeLabel":"NPCResponse · object"},"type":"array","title":"Response Batch Create Characters V1 Projects Project Id Game Narrative Characters Batch Post","uniqueKey":"","typeLabel":"NPCResponse · object[]"},"examples":{"Example":{"title":"Example","value":[{"created_at":"2026-01-01T12:00:00Z","name":"Aria Shadowstep","npc_id":"a1b2c3d4-e5f6-7890-abcd-ef1234567890","project_id":"proj_abc123","session_id":"sess_xyz789","status":"brainstorm"}]}},"exampleType":"generated"}},"exampleType":"generated"},"e76d61e8-333e-43b6-b493-9f139bbb7992":{"description":"Invalid or missing API key","content":{"_mintlify/placeholder":{"schema":{"type":"object","description":""}}}},"a9da6e55-8490-41fe-86e2-89634fa89940":{"description":"Insufficient scope - requires `npcs:write`","content":{"_mintlify/placeholder":{"schema":{"type":"object","description":""}}}},"2c3e72f6-d8e0-4d7d-9a44-77b2fc41ee70":{"description":"Not Found - resource does not exist or is not accessible.","content":{"application/json":{"schema":{"properties":{"error":{"type":"string","title":"Error","isRequired":true,"uniqueKey":"error","typeLabel":"string"},"code":{"type":"string","title":"Code","isRequired":true,"uniqueKey":"code","typeLabel":"string"},"request_id":{"oneOf":[{"type":"string","title":"Request Id","uniqueKey":"request_id.oneOf.0","typeLabel":"string"},{"type":"null","title":"Request Id","uniqueKey":"request_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"request_id","typeLabel":"string | null"},"detail":{"oneOf":[{"type":"object","title":"Detail","additionalProperties":true,"uniqueKey":"detail.oneOf.0","typeLabel":"Detail · object"},{"type":"null","title":"Detail","uniqueKey":"detail.oneOf.1","typeLabel":"null"}],"uniqueKey":"detail","typeLabel":"Detail · object | null"},"message":{"oneOf":[{"type":"string","title":"Message","uniqueKey":"message.oneOf.0","typeLabel":"string"},{"type":"null","title":"Message","uniqueKey":"message.oneOf.1","typeLabel":"null"}],"uniqueKey":"message","typeLabel":"string | null"},"doc_url":{"oneOf":[{"type":"string","title":"Doc Url","uniqueKey":"doc_url.oneOf.0","typeLabel":"string"},{"type":"null","title":"Doc Url","uniqueKey":"doc_url.oneOf.1","typeLabel":"null"}],"uniqueKey":"doc_url","typeLabel":"string | null"},"feedback_id":{"oneOf":[{"type":"string","title":"Feedback Id","uniqueKey":"feedback_id.oneOf.0","typeLabel":"string"},{"type":"null","title":"Feedback Id","uniqueKey":"feedback_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"feedback_id","typeLabel":"string | null"}},"type":"object","required":["error","code"],"title":"APIError","example":{"code":"not_found","doc_url":"https://docs.kitefrost.ai/errors/not_found","error":"Not found","message":"The requested resource does not exist or you do not have permission to access it. Verify the resource ID and your API key scopes.","request_id":"3fa85f64-5717-4562-b3fc-2c963f66afa6"},"uniqueKey":"","typeLabel":"APIError · object"},"example":{"error":"Not found","code":"not_found","request_id":"3fa85f64-5717-4562-b3fc-2c963f66afa6","message":"The requested resource does not exist.","doc_url":"https://docs.kitefrost.ai/errors/not_found"},"examples":{"Example":{"title":"Example","value":{"error":"Not found","code":"not_found","request_id":"3fa85f64-5717-4562-b3fc-2c963f66afa6","message":"The requested resource does not exist.","doc_url":"https://docs.kitefrost.ai/errors/not_found"}}},"exampleType":"examples"}},"exampleType":"examples"},"82826b4c-5f24-4f1d-b919-6d35860d6175":{"description":"Validation error (e.g. too many NPCs)","content":{"_mintlify/placeholder":{"schema":{"type":"object","description":""}}}},"435c385d-f32d-4784-a5b2-e7e2f426eeb7":{"description":"Rate limit exceeded","content":{"_mintlify/placeholder":{"schema":{"type":"object","description":""}}}},"8309beaa-b05f-408a-8382-1494fd9a2584":{"description":"Internal Server Error - unexpected server-side failure. Retry with exponential back-off.","content":{"application/json":{"schema":{"properties":{"error":{"type":"string","title":"Error","isRequired":true,"uniqueKey":"error","typeLabel":"string"},"code":{"type":"string","title":"Code","isRequired":true,"uniqueKey":"code","typeLabel":"string"},"request_id":{"oneOf":[{"type":"string","title":"Request Id","uniqueKey":"request_id.oneOf.0","typeLabel":"string"},{"type":"null","title":"Request Id","uniqueKey":"request_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"request_id","typeLabel":"string | null"},"detail":{"oneOf":[{"type":"object","title":"Detail","additionalProperties":true,"uniqueKey":"detail.oneOf.0","typeLabel":"Detail · object"},{"type":"null","title":"Detail","uniqueKey":"detail.oneOf.1","typeLabel":"null"}],"uniqueKey":"detail","typeLabel":"Detail · object | null"},"message":{"oneOf":[{"type":"string","title":"Message","uniqueKey":"message.oneOf.0","typeLabel":"string"},{"type":"null","title":"Message","uniqueKey":"message.oneOf.1","typeLabel":"null"}],"uniqueKey":"message","typeLabel":"string | null"},"doc_url":{"oneOf":[{"type":"string","title":"Doc Url","uniqueKey":"doc_url.oneOf.0","typeLabel":"string"},{"type":"null","title":"Doc Url","uniqueKey":"doc_url.oneOf.1","typeLabel":"null"}],"uniqueKey":"doc_url","typeLabel":"string | null"},"feedback_id":{"oneOf":[{"type":"string","title":"Feedback Id","uniqueKey":"feedback_id.oneOf.0","typeLabel":"string"},{"type":"null","title":"Feedback Id","uniqueKey":"feedback_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"feedback_id","typeLabel":"string | null"}},"type":"object","required":["error","code"],"title":"APIError","example":{"code":"not_found","doc_url":"https://docs.kitefrost.ai/errors/not_found","error":"Not found","message":"The requested resource does not exist or you do not have permission to access it. Verify the resource ID and your API key scopes.","request_id":"3fa85f64-5717-4562-b3fc-2c963f66afa6"},"uniqueKey":"","typeLabel":"APIError · object"},"example":{"error":"Internal server error","code":"internal_error","request_id":"3fa85f64-5717-4562-b3fc-2c963f66afa6","message":"An unexpected error occurred.","doc_url":"https://docs.kitefrost.ai/errors/internal_error"},"examples":{"Example":{"title":"Example","value":{"error":"Internal server error","code":"internal_error","request_id":"3fa85f64-5717-4562-b3fc-2c963f66afa6","message":"An unexpected error occurred.","doc_url":"https://docs.kitefrost.ai/errors/internal_error"}}},"exampleType":"examples"}},"exampleType":"examples"}},"security":{},"servers":{"88315cd7-5714-4b44-a506-6c089a5361a3":{"url":"https://api-staging.kitefrost.ai","description":"Alpha (staging)"}}},"originalFileLocation":"openapi.json"},"subdomain":"kitefrost-game-narrative","siteName":"KiteFrost - Game Narrative API","title":"Batch create NPCs - KiteFrost - Game Narrative API","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-11-08T21:59:48.029Z","originalFileLocation":"api-reference/characters/batch-create-npcs.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Create multiple NPCs in one call (max 50).\">\u003cmeta data-mint-head name=\"application-name\" content=\"KiteFrost - Game Narrative API\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/kitefrost-game-narrative/S6vsDa3UgjY2JgZt/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/kitefrost-game-narrative/S6vsDa3UgjY2JgZt/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/kitefrost-game-narrative/S6vsDa3UgjY2JgZt/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/kitefrost-game-narrative/S6vsDa3UgjY2JgZt/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/kitefrost-game-narrative/S6vsDa3UgjY2JgZt/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/kitefrost-game-narrative/S6vsDa3UgjY2JgZt/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/kitefrost-game-narrative/S6vsDa3UgjY2JgZt/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/kitefrost-game-narrative/S6vsDa3UgjY2JgZt/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/kitefrost-game-narrative/S6vsDa3UgjY2JgZt/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Batch create NPCs - KiteFrost - Game Narrative API\">\u003cmeta data-mint-head property=\"og:description\" content=\"Create multiple NPCs in one call (max 50).\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"KiteFrost - Game Narrative API\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://game-narrative.docs.kitefrost.ai/api-reference/characters/batch-create-npcs\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://kitefrost-game-narrative.mintlify.site/_mintlify/api/og/v2?division=characters\u0026amp;title=Batch+create+NPCs\u0026amp;description=Create+multiple+NPCs+in+one+call+%28max+50%29.\u0026amp;theme=f532c15f60c17d844868f318\u0026amp;signature=f0f2ec6b067440cffe91e86e4c13a8780920fbe6ed7f255c5c543ed829615bca\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Batch create NPCs - KiteFrost - Game Narrative API\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Create multiple NPCs in one call (max 50).\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://kitefrost-game-narrative.mintlify.site/_mintlify/api/og/v2?division=characters\u0026amp;title=Batch+create+NPCs\u0026amp;description=Create+multiple+NPCs+in+one+call+%28max+50%29.\u0026amp;theme=f532c15f60c17d844868f318\u0026amp;signature=f0f2ec6b067440cffe91e86e4c13a8780920fbe6ed7f255c5c543ed829615bca\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/kitefrost-game-narrative/S6vsDa3UgjY2JgZt/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"KiteFrost - Game Narrative API\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#3B82F6\">\u003clink data-mint-head rel=\"canonical\" href=\"https://game-narrative.docs.kitefrost.ai/api-reference/characters/batch-create-npcs\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/characters/batch-create-npcs.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://game-narrative.docs.kitefrost.ai/#organization\",\"name\":\"KiteFrost - Game Narrative API\",\"url\":\"https://game-narrative.docs.kitefrost.ai\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/kitefrost-game-narrative/TXACUuFm5_v3CabZ/logo/light.svg?fit=max\u0026auto=format\u0026n=TXACUuFm5_v3CabZ\u0026q=85\u0026s=4e755bdf37013538201f10d1d3b1f51e\"}},{\"@type\":\"WebSite\",\"@id\":\"https://game-narrative.docs.kitefrost.ai#website\",\"name\":\"KiteFrost - Game Narrative API\",\"url\":\"https://game-narrative.docs.kitefrost.ai\",\"publisher\":{\"@id\":\"https://game-narrative.docs.kitefrost.ai/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://game-narrative.docs.kitefrost.ai/api-reference/characters/batch-create-npcs#webpage\",\"url\":\"https://game-narrative.docs.kitefrost.ai/api-reference/characters/batch-create-npcs\",\"name\":\"Batch create NPCs\",\"description\":\"Create multiple NPCs in one call (max 50).\",\"dateModified\":\"2026-11-08T21:59:48.029Z\",\"isPartOf\":{\"@id\":\"https://game-narrative.docs.kitefrost.ai#website\"},\"breadcrumb\":{\"@id\":\"https://game-narrative.docs.kitefrost.ai/api-reference/characters/batch-create-npcs#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://game-narrative.docs.kitefrost.ai/api-reference/characters/batch-create-npcs#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"API Reference\",\"item\":\"https://game-narrative.docs.kitefrost.ai/api-reference\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Batch create NPCs\",\"item\":\"https://game-narrative.docs.kitefrost.ai/api-reference/characters/batch-create-npcs\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://game-narrative.docs.kitefrost.ai/api-reference/characters/batch-create-npcs#apireference\",\"headline\":\"Batch create NPCs\",\"name\":\"Batch create NPCs\",\"description\":\"Create multiple NPCs in one call (max 50).\",\"url\":\"https://game-narrative.docs.kitefrost.ai/api-reference/characters/batch-create-npcs\",\"mainEntityOfPage\":{\"@id\":\"https://game-narrative.docs.kitefrost.ai/api-reference/characters/batch-create-npcs#webpage\"},\"dateModified\":\"2026-11-08T21:59:48.029Z\",\"publisher\":{\"@id\":\"https://game-narrative.docs.kitefrost.ai/#organization\"},\"isPartOf\":{\"@id\":\"https://game-narrative.docs.kitefrost.ai#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"KiteFrost - Game Narrative API\",\"publisher\":{\"@type\":\"Organization\",\"name\":\"KiteFrost - Game Narrative API\"},\"provider\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","agentPointerHref":"/api-reference/characters/batch-create-npcs.md","siteName":"KiteFrost - Game Narrative API","nav":{"global":null,"groups":[{"group":"Getting Started","pages":[{"title":"Game Narrative API","href":"/index"},{"title":"Quickstart","href":"/quickstart"}]},{"group":"Core Concepts","pages":[{"title":"Authentication","href":"/_shared/core-concepts/auth"},{"title":"Billing","href":"/core-concepts/billing"},{"title":"Bring Your Own Key (BYOK)","href":"/_shared/core-concepts/byok"},{"title":"Webhooks","href":"/_shared/core-concepts/webhooks"},{"title":"Telemetry \u0026 Privacy","href":"/_shared/core-concepts/telemetry"}]},{"group":"SDKs","pages":[{"title":"SDKs \u0026 Libraries","sidebarTitle":"Overview","href":"/_shared/sdks/overview"},{"title":"Python SDK","sidebarTitle":"Python","href":"/_shared/sdks/python"},{"title":"TypeScript SDK","sidebarTitle":"TypeScript","href":"/_shared/sdks/typescript"},{"title":"Game Narrative API access","href":"/mcp-server"}]},{"group":"API Reference","pages":[{"title":"API Reference","href":"/api-reference"},{"title":"GraphQL API","href":"/_shared/api-reference/graphql"},{"group":"health","pages":[{"title":"Liveness check","deprecated":null,"version":null,"openapi":"/openapi.json get /health","href":"/api-reference/health/liveness-check"},{"title":"Readiness probe","deprecated":null,"version":null,"openapi":"/openapi.json get /ready","href":"/api-reference/health/readiness-probe"}]},{"group":"auth","pages":[{"title":"Create account","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/auth/signup","href":"/api-reference/auth/create-account"},{"title":"Current identity (pack + billing plan)","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/auth/me","href":"/api-reference/auth/current-identity-pack-+-billing-plan"},{"title":"Login","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/auth/login","href":"/api-reference/auth/login"}]},{"group":"billing","pages":[{"title":"Get current tier","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/billing/tier","href":"/api-reference/billing/get-current-tier"},{"title":"Create checkout session","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/billing/checkout","href":"/api-reference/billing/create-checkout-session"},{"title":"Create portal session","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/billing/portal","href":"/api-reference/billing/create-portal-session"},{"title":"Stripe webhook receiver","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/billing/webhooks/stripe","href":"/api-reference/billing/stripe-webhook-receiver"},{"title":"Get usage stats","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/billing/usage","href":"/api-reference/billing/get-usage-stats"},{"title":"Get Story Unit usage","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/billing/su-usage","href":"/api-reference/billing/get-story-unit-usage"}]},{"group":"sessions","pages":[{"title":"Poll session status","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/sessions/{session_id}/status","href":"/api-reference/sessions/poll-session-status"},{"title":"Stream session events (SSE)","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/sessions/{session_id}/stream","href":"/api-reference/sessions/stream-session-events-sse"},{"title":"Submit HITL response","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/sessions/{session_id}/respond","href":"/api-reference/sessions/submit-hitl-response"},{"title":"Create state snapshot","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/sessions/{session_id}/snapshot","href":"/api-reference/sessions/create-state-snapshot"}]},{"group":"webhooks","pages":[{"title":"List webhooks","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/projects/{project_id}/webhooks","href":"/api-reference/webhooks/list-webhooks"},{"title":"Register webhook","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/projects/{project_id}/webhooks","href":"/api-reference/webhooks/register-webhook"},{"title":"Delete webhook","deprecated":null,"version":null,"openapi":"/openapi.json delete /v1/projects/{project_id}/webhooks/{webhook_id}","href":"/api-reference/webhooks/delete-webhook"},{"title":"Update webhook","deprecated":null,"version":null,"openapi":"/openapi.json patch /v1/projects/{project_id}/webhooks/{webhook_id}","href":"/api-reference/webhooks/update-webhook"},{"title":"Send test event","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/projects/{project_id}/webhooks/{webhook_id}/test","href":"/api-reference/webhooks/send-test-event"},{"title":"Rotate signing secret","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/projects/{project_id}/webhooks/{webhook_id}/rotate-secret","href":"/api-reference/webhooks/rotate-signing-secret"},{"title":"List delivery attempts","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/projects/{project_id}/webhooks/{webhook_id}/deliveries","href":"/api-reference/webhooks/list-delivery-attempts"}]},{"group":"keys","pages":[{"title":"Bootstrap: create initial API key pair","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/keys/bootstrap","href":"/api-reference/keys/bootstrap:-create-initial-api-key-pair"},{"title":"List API keys","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/keys","href":"/api-reference/keys/list-api-keys"},{"title":"Create API key","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/keys","href":"/api-reference/keys/create-api-key"},{"title":"Revoke API key","deprecated":null,"version":null,"openapi":"/openapi.json delete /v1/keys/{key_prefix}","href":"/api-reference/keys/revoke-api-key"},{"title":"Rotate API key","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/keys/{key_prefix}/rotate","href":"/api-reference/keys/rotate-api-key"},{"title":"Per-key usage rollup","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/keys/{key_prefix}/usage","href":"/api-reference/keys/per-key-usage-rollup"}]},{"group":"byok","pages":[{"title":"Get BYOK status","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/projects/{project_id}/byok","href":"/api-reference/byok/get-byok-status"},{"title":"Set BYOK key","deprecated":null,"version":null,"openapi":"/openapi.json put /v1/projects/{project_id}/byok","href":"/api-reference/byok/set-byok-key"},{"title":"Revoke BYOK key","deprecated":null,"version":null,"openapi":"/openapi.json delete /v1/projects/{project_id}/byok","href":"/api-reference/byok/revoke-byok-key"},{"title":"Update BYOK preferences","deprecated":null,"version":null,"openapi":"/openapi.json patch /v1/projects/{project_id}/byok","href":"/api-reference/byok/update-byok-preferences"}]},{"group":"seeds","pages":[{"title":"List seeds","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/projects/{project_id}/seeds","href":"/api-reference/seeds/list-seeds"},{"title":"Get seed","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/projects/{project_id}/seeds/{seed_id}","href":"/api-reference/seeds/get-seed"},{"title":"Soft-delete seed (transition to DEAD)","deprecated":null,"version":null,"openapi":"/openapi.json delete /v1/projects/{project_id}/seeds/{seed_id}","href":"/api-reference/seeds/soft-delete-seed-transition-to-dead"},{"title":"Transition seed lifecycle state","deprecated":null,"version":null,"openapi":"/openapi.json patch /v1/projects/{project_id}/seeds/{seed_id}","href":"/api-reference/seeds/transition-seed-lifecycle-state"},{"title":"Trigger on-demand seed discovery","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/projects/{project_id}/seeds/generate","href":"/api-reference/seeds/trigger-on-demand-seed-discovery"},{"title":"Promote seed to the project","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/projects/{project_id}/seeds/{seed_id}/promote","href":"/api-reference/seeds/promote-seed-to-the-project"},{"title":"Bulk validate (promote) seeds to this project","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/projects/{project_id}/seeds/batch/validate","href":"/api-reference/seeds/bulk-validate-promote-seeds-to-this-project"},{"title":"Bulk reject seeds (transition to REJECTED)","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/projects/{project_id}/seeds/batch/reject","href":"/api-reference/seeds/bulk-reject-seeds-transition-to-rejected"}]},{"group":"feedback","pages":[{"title":"Submit feedback envelope (C-FB1)","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/feedback","href":"/api-reference/feedback/submit-feedback-envelope-c-fb1"},{"title":"Feedback envelope JSON Schema (C-FB1)","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/feedback/schema.json","href":"/api-reference/feedback/feedback-envelope-json-schema-c-fb1"},{"title":"Mint a signed PUT URL for a screenshot attachment (C-FBSA2)","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/feedback/attachments/upload-url","href":"/api-reference/feedback/mint-a-signed-put-url-for-a-screenshot-attachment-c-fbsa2"},{"title":"Look up feedback by feedback_id","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/feedback/{feedback_id}","href":"/api-reference/feedback/look-up-feedback-by-feedback_id"},{"title":"Admin: list attachments on a feedback row with short-lived URLs","description":"Returns the attachments declared on a single ``feedback_raw`` row, each annotated with its current verify state and a 5-minute signed READ URL when (and only when) the post-upload verify worker has marked the attachment ``verified=true AND quarantined=false``. Quarantined or still-pending entries are returned with ``url=null`` and a ``status`` string the dashboard can render verbatim.\n\n**Admin-only** - this endpoint is gated by ``require_platform_admin``. There is NO customer-facing variant; customers cannot retrieve their own attachments via API (the only customer-side handle is the original submission receipt). Every call writes one Tier-2 ``feedback_admin_view`` row to ``audit_events`` (fail-open - audit failure never blocks the response).","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/feedback/{feedback_id}/attachments","href":"/api-reference/feedback/admin:-list-attachments-on-a-feedback-row-with-short-lived-urls"}]},{"group":"characters","pages":[{"title":"Batch create NPCs","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/projects/{project_id}/game-narrative/characters/batch","href":"/api-reference/characters/batch-create-npcs"},{"title":"Batch generate NPC dialogue","description":"Trigger dialogue generation for multiple NPCs with shared context.","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/projects/{project_id}/game-narrative/characters/batch/generate","href":"/api-reference/characters/batch-generate-npc-dialogue"},{"title":"Cast distinctiveness audit (advisory)","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/projects/{project_id}/game-narrative/characters/audit","href":"/api-reference/characters/cast-distinctiveness-audit-advisory"},{"title":"Generate NPC dialogue","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/projects/{project_id}/game-narrative/characters/{character_id}/generate","href":"/api-reference/characters/generate-npc-dialogue"},{"title":"Refine NPC","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/projects/{project_id}/game-narrative/characters/{character_id}/refine","href":"/api-reference/characters/refine-npc"},{"title":"Export NPC","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/projects/{project_id}/game-narrative/characters/{character_id}/export","href":"/api-reference/characters/export-npc"},{"title":"Synthesize dialogue audio","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/projects/{project_id}/game-narrative/characters/{character_id}/voice","href":"/api-reference/characters/synthesize-dialogue-audio"}]},{"group":"pack-entities","pages":[{"title":"List characters (npc entities for game-narrative)","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/projects/{project_id}/game-narrative/characters","href":"/api-reference/pack-entities/list-characters-npc-entities-for-game-narrative"},{"title":"Create a npc (game-narrative pack term: characters)","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/projects/{project_id}/game-narrative/characters","href":"/api-reference/pack-entities/create-a-npc-game-narrative-pack-term:-characters"},{"title":"Get one npc by entity_id","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/projects/{project_id}/game-narrative/characters/{entity_id}","href":"/api-reference/pack-entities/get-one-npc-by-entity_id"},{"title":"Delete a npc by entity_id","deprecated":null,"version":null,"openapi":"/openapi.json delete /v1/projects/{project_id}/game-narrative/characters/{entity_id}","href":"/api-reference/pack-entities/delete-a-npc-by-entity_id"},{"title":"Update a npc by entity_id","deprecated":null,"version":null,"openapi":"/openapi.json patch /v1/projects/{project_id}/game-narrative/characters/{entity_id}","href":"/api-reference/pack-entities/update-a-npc-by-entity_id"},{"title":"List factions (faction entities for game-narrative)","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/projects/{project_id}/game-narrative/factions","href":"/api-reference/pack-entities/list-factions-faction-entities-for-game-narrative"},{"title":"Create a faction (game-narrative pack term: factions)","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/projects/{project_id}/game-narrative/factions","href":"/api-reference/pack-entities/create-a-faction-game-narrative-pack-term:-factions"},{"title":"Get one faction by entity_id","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/projects/{project_id}/game-narrative/factions/{entity_id}","href":"/api-reference/pack-entities/get-one-faction-by-entity_id"},{"title":"Delete a faction by entity_id","deprecated":null,"version":null,"openapi":"/openapi.json delete /v1/projects/{project_id}/game-narrative/factions/{entity_id}","href":"/api-reference/pack-entities/delete-a-faction-by-entity_id"},{"title":"Update a faction by entity_id","deprecated":null,"version":null,"openapi":"/openapi.json patch /v1/projects/{project_id}/game-narrative/factions/{entity_id}","href":"/api-reference/pack-entities/update-a-faction-by-entity_id"},{"title":"List items (item entities for game-narrative)","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/projects/{project_id}/game-narrative/items","href":"/api-reference/pack-entities/list-items-item-entities-for-game-narrative"},{"title":"Create a item (game-narrative pack term: items)","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/projects/{project_id}/game-narrative/items","href":"/api-reference/pack-entities/create-a-item-game-narrative-pack-term:-items"},{"title":"Get one item by entity_id","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/projects/{project_id}/game-narrative/items/{entity_id}","href":"/api-reference/pack-entities/get-one-item-by-entity_id"},{"title":"Delete a item by entity_id","deprecated":null,"version":null,"openapi":"/openapi.json delete /v1/projects/{project_id}/game-narrative/items/{entity_id}","href":"/api-reference/pack-entities/delete-a-item-by-entity_id"},{"title":"Update a item by entity_id","deprecated":null,"version":null,"openapi":"/openapi.json patch /v1/projects/{project_id}/game-narrative/items/{entity_id}","href":"/api-reference/pack-entities/update-a-item-by-entity_id"},{"title":"List locations (location entities for game-narrative)","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/projects/{project_id}/game-narrative/locations","href":"/api-reference/pack-entities/list-locations-location-entities-for-game-narrative"},{"title":"Create a location (game-narrative pack term: locations)","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/projects/{project_id}/game-narrative/locations","href":"/api-reference/pack-entities/create-a-location-game-narrative-pack-term:-locations"},{"title":"Get one location by entity_id","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/projects/{project_id}/game-narrative/locations/{entity_id}","href":"/api-reference/pack-entities/get-one-location-by-entity_id"},{"title":"Delete a location by entity_id","deprecated":null,"version":null,"openapi":"/openapi.json delete /v1/projects/{project_id}/game-narrative/locations/{entity_id}","href":"/api-reference/pack-entities/delete-a-location-by-entity_id"},{"title":"Update a location by entity_id","deprecated":null,"version":null,"openapi":"/openapi.json patch /v1/projects/{project_id}/game-narrative/locations/{entity_id}","href":"/api-reference/pack-entities/update-a-location-by-entity_id"}]},{"group":"API Reference","pages":[{"title":"Handle Http Get","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/graphql","href":"/api-reference/handle-http-get"},{"title":"Handle Http Post","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/graphql","href":"/api-reference/handle-http-post"}]},{"group":"locations","pages":[{"title":"Generate location details","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/projects/{project_id}/game-narrative/locations/{location_id}/generate","href":"/api-reference/locations/generate-location-details"},{"title":"Refine location details","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/projects/{project_id}/game-narrative/locations/{location_id}/refine","href":"/api-reference/locations/refine-location-details"},{"title":"Export location","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/projects/{project_id}/game-narrative/locations/{location_id}/export","href":"/api-reference/locations/export-location"}]},{"group":"items","pages":[{"title":"Generate item details","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/projects/{project_id}/game-narrative/items/{item_id}/generate","href":"/api-reference/items/generate-item-details"},{"title":"Refine item details","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/projects/{project_id}/game-narrative/items/{item_id}/refine","href":"/api-reference/items/refine-item-details"},{"title":"Export item","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/projects/{project_id}/game-narrative/items/{item_id}/export","href":"/api-reference/items/export-item"}]},{"group":"factions","pages":[{"title":"Generate faction details","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/projects/{project_id}/game-narrative/factions/{faction_id}/generate","href":"/api-reference/factions/generate-faction-details"},{"title":"Refine faction details","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/projects/{project_id}/game-narrative/factions/{faction_id}/refine","href":"/api-reference/factions/refine-faction-details"},{"title":"Export faction","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/projects/{project_id}/game-narrative/factions/{faction_id}/export","href":"/api-reference/factions/export-faction"}]},{"group":"story-arcs","pages":[{"title":"Create story arc","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/projects/{project_id}/game-narrative/story-arcs","href":"/api-reference/story-arcs/create-story-arc"},{"title":"Get quest detail","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/projects/{project_id}/game-narrative/story-arcs/{quest_id}","href":"/api-reference/story-arcs/get-quest-detail"},{"title":"Delete story arc","deprecated":null,"version":null,"openapi":"/openapi.json delete /v1/projects/{project_id}/game-narrative/story-arcs/{quest_id}","href":"/api-reference/story-arcs/delete-story-arc"},{"title":"Update quest","deprecated":null,"version":null,"openapi":"/openapi.json patch /v1/projects/{project_id}/game-narrative/story-arcs/{quest_id}","href":"/api-reference/story-arcs/update-quest"},{"title":"Generate quest details","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/projects/{project_id}/game-narrative/story-arcs/{quest_id}/generate","href":"/api-reference/story-arcs/generate-quest-details"},{"title":"Refine quest details","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/projects/{project_id}/game-narrative/story-arcs/{quest_id}/refine","href":"/api-reference/story-arcs/refine-quest-details"},{"title":"Export quest","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/projects/{project_id}/game-narrative/story-arcs/{quest_id}/export","href":"/api-reference/story-arcs/export-quest"}]},{"group":"scenes","pages":[{"title":"Create scene","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/projects/{project_id}/game-narrative/scenes","href":"/api-reference/scenes/create-scene"},{"title":"Get scene detail","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/projects/{project_id}/game-narrative/scenes/{session_id}","href":"/api-reference/scenes/get-scene-detail"},{"title":"Delete scene","deprecated":null,"version":null,"openapi":"/openapi.json delete /v1/projects/{project_id}/game-narrative/scenes/{session_id}","href":"/api-reference/scenes/delete-scene"},{"title":"Update scene","deprecated":null,"version":null,"openapi":"/openapi.json patch /v1/projects/{project_id}/game-narrative/scenes/{session_id}","href":"/api-reference/scenes/update-scene"},{"title":"Generate scene details","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/projects/{project_id}/game-narrative/scenes/{session_id}/generate","href":"/api-reference/scenes/generate-scene-details"},{"title":"Refine scene details","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/projects/{project_id}/game-narrative/scenes/{session_id}/refine","href":"/api-reference/scenes/refine-scene-details"},{"title":"Export scene","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/projects/{project_id}/game-narrative/scenes/{session_id}/export","href":"/api-reference/scenes/export-scene"}]},{"group":"dialogue","pages":[{"title":"List dialogue graphs","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/projects/{project_id}/game-narrative/dialogues","href":"/api-reference/dialogue/list-dialogue-graphs"},{"title":"Create dialogue graph","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/projects/{project_id}/game-narrative/dialogues","href":"/api-reference/dialogue/create-dialogue-graph"},{"title":"Get dialogue graph","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/projects/{project_id}/game-narrative/dialogues/{graph_id}","href":"/api-reference/dialogue/get-dialogue-graph"},{"title":"Delete dialogue graph","deprecated":null,"version":null,"openapi":"/openapi.json delete /v1/projects/{project_id}/game-narrative/dialogues/{graph_id}","href":"/api-reference/dialogue/delete-dialogue-graph"},{"title":"Update dialogue graph","deprecated":null,"version":null,"openapi":"/openapi.json patch /v1/projects/{project_id}/game-narrative/dialogues/{graph_id}","href":"/api-reference/dialogue/update-dialogue-graph"},{"title":"List dialogue nodes for a graph","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/projects/{project_id}/game-narrative/dialogues/{graph_id}/nodes","href":"/api-reference/dialogue/list-dialogue-nodes-for-a-graph"},{"title":"Create dialogue node","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/projects/{project_id}/game-narrative/dialogues/{graph_id}/nodes","href":"/api-reference/dialogue/create-dialogue-node"},{"title":"Get dialogue node","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/projects/{project_id}/game-narrative/dialogue-nodes/{node_id}","href":"/api-reference/dialogue/get-dialogue-node"},{"title":"Delete dialogue node","deprecated":null,"version":null,"openapi":"/openapi.json delete /v1/projects/{project_id}/game-narrative/dialogue-nodes/{node_id}","href":"/api-reference/dialogue/delete-dialogue-node"},{"title":"Update dialogue node","deprecated":null,"version":null,"openapi":"/openapi.json patch /v1/projects/{project_id}/game-narrative/dialogue-nodes/{node_id}","href":"/api-reference/dialogue/update-dialogue-node"},{"title":"List narrative variables","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/projects/{project_id}/game-narrative/narrative-variables","href":"/api-reference/dialogue/list-narrative-variables"},{"title":"Create narrative variable","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/projects/{project_id}/game-narrative/narrative-variables","href":"/api-reference/dialogue/create-narrative-variable"},{"title":"Get narrative variable","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/projects/{project_id}/game-narrative/narrative-variables/{variable_id}","href":"/api-reference/dialogue/get-narrative-variable"},{"title":"Delete narrative variable","deprecated":null,"version":null,"openapi":"/openapi.json delete /v1/projects/{project_id}/game-narrative/narrative-variables/{variable_id}","href":"/api-reference/dialogue/delete-narrative-variable"},{"title":"Update narrative variable","deprecated":null,"version":null,"openapi":"/openapi.json patch /v1/projects/{project_id}/game-narrative/narrative-variables/{variable_id}","href":"/api-reference/dialogue/update-narrative-variable"},{"title":"Generate dialogue graph nodes via AI","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/projects/{project_id}/game-narrative/dialogues/{graph_id}/generate","href":"/api-reference/dialogue/generate-dialogue-graph-nodes-via-ai"},{"title":"Refine dialogue graph nodes via AI","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/projects/{project_id}/game-narrative/dialogues/{graph_id}/refine","href":"/api-reference/dialogue/refine-dialogue-graph-nodes-via-ai"},{"title":"Validate dialogue graph structure","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/projects/{project_id}/game-narrative/dialogues/{graph_id}/validate","href":"/api-reference/dialogue/validate-dialogue-graph-structure"},{"title":"Simulate a walk through the dialogue graph","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/projects/{project_id}/game-narrative/dialogues/{graph_id}/simulate","href":"/api-reference/dialogue/simulate-a-walk-through-the-dialogue-graph"},{"title":"Export a dialogue graph (JSON, Ink, or Yarn Spinner)","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/projects/{project_id}/game-narrative/dialogues/{graph_id}/export","href":"/api-reference/dialogue/export-a-dialogue-graph-json-ink-or-yarn-spinner"},{"title":"Import dialogue_graph JSON into a dialogue graph","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/projects/{project_id}/game-narrative/dialogues/{graph_id}/import","href":"/api-reference/dialogue/import-dialogue_graph-json-into-a-dialogue-graph"}]},{"group":"continuity","pages":[{"title":"Run the dev-time consistency check (advisory)","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/projects/{project_id}/game-narrative/continuity/check","href":"/api-reference/continuity/run-the-dev-time-consistency-check-advisory"},{"title":"Audit your own Ink / Yarn files for continuity breaks (advisory)","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/projects/{project_id}/game-narrative/continuity/audit-files","href":"/api-reference/continuity/audit-your-own-ink-yarn-files-for-continuity-breaks-advisory"}]},{"group":"lore-bible","pages":[{"title":"Generate the project's lore-bible (priced)","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/projects/{project_id}/game-narrative/lore-bible/generate","href":"/api-reference/lore-bible/generate-the-projects-lore-bible-priced"}]}]},{"group":"Updates","pages":[{"title":"Changelog","href":"/changelog"},{"title":"Status","href":"/status"}]},{"group":"Errors","pages":[{"title":"Error codes","href":"/errors/overview"},{"title":"validation_error","href":"/errors/validation_error"},{"title":"not_found","href":"/errors/not_found"},{"title":"forbidden","href":"/errors/forbidden"},{"title":"unauthorized","href":"/errors/unauthorized"},{"title":"rate_limited","href":"/errors/rate_limited"},{"title":"conflict","href":"/errors/conflict"},{"title":"payload_too_large","href":"/errors/payload_too_large"},{"title":"method_not_allowed","href":"/errors/method_not_allowed"},{"title":"gone","href":"/errors/gone"},{"title":"unprocessable_entity","href":"/errors/unprocessable_entity"},{"title":"content_policy_violation","href":"/errors/content_policy_violation"},{"title":"invalid_byok_key","href":"/errors/invalid_byok_key"},{"title":"budget_exceeded","href":"/errors/budget_exceeded"},{"title":"session_expired","href":"/errors/session_expired"},{"title":"feature_disabled","href":"/errors/feature_disabled"},{"title":"tenant_suspended","href":"/errors/tenant_suspended"},{"title":"webhook_delivery_failed","href":"/errors/webhook_delivery_failed"},{"title":"output_validation_blocked","href":"/errors/output_validation_blocked"},{"title":"byok_unavailable","href":"/errors/byok_unavailable"},{"title":"byok_provider_mismatch","href":"/errors/byok_provider_mismatch"},{"title":"feedback_payload_too_large","href":"/errors/feedback_payload_too_large"},{"title":"feedback_invalid_schema","href":"/errors/feedback_invalid_schema"},{"title":"feedback_auth_required_for_signal","href":"/errors/feedback_auth_required_for_signal"},{"title":"feedback_storage_unavailable","href":"/errors/feedback_storage_unavailable"},{"title":"internal_error","href":"/errors/internal_error"},{"title":"service_unavailable","href":"/errors/service_unavailable"},{"title":"dependency_timeout","href":"/errors/dependency_timeout"}]}]},"basePath":"","title":"Batch create NPCs - KiteFrost - Game Narrative API","buildId":"dpl_8hoxaqFTU7hTr6A2fUraxAyjuiZo","deploymentId":"dpl_8hoxaqFTU7hTr6A2fUraxAyjuiZo","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-CDiBsYGW.js","utils-KF9rPlmF.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-C26urKTX.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-BdjmJAC1.js","snippetPresets-3IpDBjt3.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","conditional-requirements-CFM0id0Q.js","ApiExamples-D4x_2vvo.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-BIWdc5Pa.js","shallow-LQqfiMNd.js","getApiPlaygroundDisplay-DryzlOZG.js","CodeSnippet-tcJujU4r.js","CodeSnippets-BHp0nVLL.js","Page-1CZdsdAn.js","getPastedJson-DU-1ayUv.js","icon-CZK2hPr4.js","MethodPill-DOaqmTFC.js","DuplicateIcon-B5-nUxxl.js","createIcon-CDP_U77G.js","DynamicMarkdown-GHvayGOn.js","SectionHeading-BYvpkmUD.js","axios-vUo_bRtp.js","Markdown-uxhlayGT.js","clsx-B35qUV0p.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-BvrGG8gU.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-CAf0yVYe.js"]}