--- id: api-json-(backend-format) title: "API JSON (Backend Format)" category: "10_Wiki/Topics" status: "draft" verification_status: "conceptual" canonical_id: "" aliases: ["workflow_api.json", "Backend Format"] duplicate_of: "" source_trust_level: "B" confidence_score: 0.85 created_at: 2026-05-20 updated_at: 2026-05-20 review_reason: "" merge_history: [] tags: ["research", "Comfyui workflow json ์ƒ์„ฑ ๋ฐฉ๋ฒ•"] raw_sources: ["NotebookLM Synthesis"] applied_in: ["workflow_api.json", "/workflow/convert", "new_pipeline.py", "SaveImageWebsocket"] github_commit: "bc85382" --- # [[API JSON (Backend Format)]] ## ๐ŸŽฏ ํ•œ ์ค„ ํ†ต์ฐฐ (One-line insight) API JSON์€ UI ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ๋ฐฐ์ œํ•˜๊ณ  ์‹คํ–‰ ๋กœ์ง๊ณผ ๋ฐ์ดํ„ฐ ํ๋ฆ„๋งŒ์„ ์••์ถ•ํ•˜์—ฌ ์„œ๋ฒ„ ์ธก ์‹คํ–‰ ๋ฐ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ฐฉ์‹์˜ ์ž๋™ํ™”์— ์ตœ์ ํ™”๋œ ๋ฐฑ์—”๋“œ ์ „์šฉ ์›Œํฌํ”Œ๋กœ์šฐ ๊ทœ๊ฒฉ์ด๋‹ค [1, 2]. ## ๐Ÿง  ํ•ต์‹ฌ ๊ฐœ๋… (Core concepts) 1. **์‹คํ–‰ ์ค‘์‹ฌ ๊ทธ๋ž˜ํ”„ (Execution Graph):** ์œ„์น˜, ํฌ๊ธฐ, ์ƒ‰์ƒ ๋“ฑ ์‹œ๊ฐ์  ์š”์†Œ๋ฅผ ์ œ๊ฑฐํ•˜๊ณ  ์—”์ง„์ด ๋…ธ๋“œ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ํ•ต์‹ฌ ๋…ผ๋ฆฌ ๊ตฌ์กฐ๋งŒ ํฌํ•จํ•œ๋‹ค [1, 3, 4]. 2. **์ฐธ์กฐ ๊ธฐ๋ฐ˜ ๋…ธ๋“œ ์—ฐ๊ฒฐ:** ๋งํฌ ๊ฐ์ฒด๋ฅผ ๋ณ„๋„๋กœ ๊ด€๋ฆฌํ•˜๋Š” ๋Œ€์‹  ๋…ธ๋“œ ์ž…๋ ฅ(`inputs`) ํ•„๋“œ ๋‚ด์— ์†Œ์Šค ๋…ธ๋“œ ID์™€ ์ถœ๋ ฅ ์Šฌ๋กฏ ์ธ๋ฑ์Šค๋ฅผ ์ง์ ‘ ๋ฐฐ์—ด(์˜ˆ: `[node_id, slot_index]`) ํ˜•ํƒœ๋กœ ์ž„๋ฒ ๋”ฉํ•œ๋‹ค [1, 5, 6]. 3. **๋ฐ์ดํ„ฐ ๊ฒฝ๋Ÿ‰ํ™”:** ์‹œ๊ฐ์  ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ์ œ๊ฑฐ๋ฅผ ํ†ตํ•ด ํ”„๋ŸฐํŠธ์—”๋“œ JSON๋ณด๋‹ค ํŒŒ์ผ ํฌ๊ธฐ๊ฐ€ ํ›จ์”ฌ ์ž‘์œผ๋ฉฐ, ๋„คํŠธ์›Œํฌ ์ „์†ก ๋ฐ API ํ˜ธ์ถœ ํŽ˜์ด๋กœ๋“œ๋กœ ์‚ฌ์šฉํ•˜๊ธฐ์— ์ ํ•ฉํ•˜๋‹ค [2, 7, 8]. 4. **๊ฐœ๋ฐœ์ž ๋ชจ๋“œ ํ™œ์„ฑํ™”:** ํ‘œ์ค€ ์ €์žฅ ๋ฐฉ์‹๊ณผ ๋‹ฌ๋ฆฌ ComfyUI ์„ค์ •์—์„œ 'Dev mode'๋ฅผ ๋ช…์‹œ์ ์œผ๋กœ ํ™œ์„ฑํ™”ํ•ด์•ผ๋งŒ ์ƒ์„ฑ ๋ฐ ๋‚ด๋ณด๋‚ด๊ธฐ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค [9-11]. ## ๐Ÿงฉ ์ถ”์ถœ๋œ ํŒจํ„ด (Extracted patterns) - **๋…ธ๋“œ ID ํ‚ค ๋งคํ•‘ ํŒจํ„ด:** JSON์˜ ๋ฃจํŠธ ๋ ˆ๋ฒจ์—์„œ ๊ฐ ๋…ธ๋“œ์˜ ๊ณ ์œ  ์ˆซ์ž ID(๋ฌธ์ž์—ด ํ˜•ํƒœ)๋ฅผ ํ‚ค๊ฐ’์œผ๋กœ ์‚ฌ์šฉํ•˜๋ฉฐ, ๊ทธ ๋‚ด๋ถ€์— `class_type`๊ณผ `inputs`๋ฅผ ์ •์˜ํ•œ๋‹ค [3, 12, 13]. - **์ž…์ถœ๋ ฅ ๋…ธ๋“œ ์ตœ์ ํ™”:** API ํ™œ์šฉ ์‹œ ์ด๋ฏธ์ง€๋ฅผ ์›น์†Œ์ผ“์œผ๋กœ ์ง์ ‘ ์ˆ˜์‹ ํ•˜๊ธฐ ์œ„ํ•ด `SaveImageWebsocket` ๋…ธ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜, `Load Image (Base64)`๋ฅผ ํ†ตํ•ด ์ด๋ฏธ์ง€ ๋ฐ์ดํ„ฐ๋ฅผ ์ง์ ‘ ์ฃผ์ž…ํ•˜๋Š” ๊ตฌ์กฐ๋ฅผ ์ทจํ•œ๋‹ค [14]. - **์—ญ๋ฐฉํ–ฅ ๊ทธ๋ž˜ํ”„ ํƒ์ƒ‰:** ๋ฐฑ์—”๋“œ ์—”์ง„์€ API JSON์„ ์‹คํ–‰ํ•  ๋•Œ ์ถœ๋ ฅ ๋…ธ๋“œ(์˜ˆ: Save Image)๋ถ€ํ„ฐ ์—ญ๋ฐฉํ–ฅ์œผ๋กœ ํƒ์ƒ‰ํ•˜์—ฌ ๊ฒฐ๊ณผ ๋„์ถœ์— ํ•„์š”ํ•œ ์ข…์† ๋…ธ๋“œ๋งŒ ์‹๋ณ„ํ•˜๊ณ  ์‹คํ–‰ํ•œ๋‹ค [15]. ## ๐Ÿ“– ์„ธ๋ถ€ ๋‚ด์šฉ (Details) API JSON(์ผ๋ฐ˜์ ์œผ๋กœ `workflow_api.json`์œผ๋กœ ๋ช…๋ช…)์€ ComfyUI์˜ ๋ฐฑ์—”๋“œ ์—”์ง„๊ณผ ์ง์ ‘ ํ†ต์‹ ํ•˜๋Š” ์–ธ์–ด ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค [1, 2, 16]. - **ํ”„๋ŸฐํŠธ์—”๋“œ ํฌ๋งท๊ณผ์˜ ์ฐจ๋ณ„์„ฑ:** ํ‘œ์ค€ `workflow.json`์ด ์ธ๊ฐ„์˜ ๊ฐ€๋…์„ฑ๊ณผ ํŽธ์ง‘ ํŽธ์˜์„ฑ์„ ์œ„ํ•ด ๋…ธ๋“œ ์ขŒํ‘œ(`pos`), ํฌ๊ธฐ(`size`), ๊ทธ๋ฃน, ์œ„์ ฏ ์ƒํƒœ(`flags`) ๋“ฑ์„ ํฌํ•จํ•˜๋Š” ๊ฒƒ๊ณผ ๋‹ฌ๋ฆฌ, API ํฌ๋งท์€ ์ด๋Ÿฌํ•œ ์ •๋ณด๋ฅผ ๋ชจ๋‘ ํ๊ธฐํ•˜๊ณ  ์˜ค์ง ์‹คํ–‰์— ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋งŒ ๋‚จ๊ธด๋‹ค [1-3, 17, 18]. - **๋‚ด๋ถ€ ๊ตฌ์กฐ ๋ถ„์„:** - **`class_type`:** ๋…ธ๋“œ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ์— ๋“ฑ๋ก๋œ ์‹ค์ œ Python ํด๋ž˜์Šค ์ด๋ฆ„์„ ์ฐธ์กฐํ•œ๋‹ค [4, 12, 19]. - **`inputs`:** ์œ„์ ฏ ๊ฐ’(ํ…์ŠคํŠธ, ์ˆซ์ž ๋“ฑ)๊ณผ ๋‹ค๋ฅธ ๋…ธ๋“œ๋กœ๋ถ€ํ„ฐ ์˜ค๋Š” ๋™์  ๋งํฌ ์ •๋ณด๋ฅผ ๋ชจ๋‘ ํฌํ•จํ•œ๋‹ค [4, 5]. - **์ƒ์„ฑ ํ”„๋กœ์„ธ์Šค:** 1. ComfyUI ์„ค์ • ์•„์ด์ฝ˜์„ ํด๋ฆญํ•œ๋‹ค [9, 10, 20]. 2. 'Enable Dev mode Options' ์ฒดํฌ๋ฐ•์Šค๋ฅผ ํ™œ์„ฑํ™”ํ•œ๋‹ค [9-11]. 3. ๋ฉ”์ธ ๋ฉ”๋‰ด์— ์ƒˆ๋กœ ๋‚˜ํƒ€๋‚œ 'Save (API Format)' ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜์—ฌ ๋‹ค์šด๋กœ๋“œํ•œ๋‹ค [10, 11, 21]. - **์ด๋ฏธ์ง€ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ์™€์˜ ๊ด€๊ณ„:** ComfyUI์—์„œ ์ƒ์„ฑ๋œ PNG ํŒŒ์ผ์˜ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ์—๋Š” ํ”„๋ŸฐํŠธ์—”๋“œ ํฌ๋งท(workflow)๊ณผ API ํฌ๋งท(prompt) ๋ฐ์ดํ„ฐ๊ฐ€ ๋™์‹œ์— ์ €์žฅ๋˜์–ด ์žˆ์–ด, ์ด๋ฏธ์ง€๋งŒ์œผ๋กœ๋„ ์‹œ๊ฐ์  ๋ณต๊ตฌ์™€ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ฐฉ์‹์˜ ์žฌ์‹คํ–‰์ด ๋ชจ๋‘ ๊ฐ€๋Šฅํ•˜๋‹ค [8, 22, 23]. - **์ž๋™ํ™” ๋ฐ ํ™•์žฅ:** Python์˜ `json` ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋…ธ๋“œ ID๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ”„๋กฌํ”„ํŠธ๋‚˜ ์‹œ๋“œ ๊ฐ’์„ ๋™์ ์œผ๋กœ ๋ณ€๊ฒฝํ•œ ํ›„ ์„œ๋ฒ„์˜ `/prompt` ์—”๋“œํฌ์ธํŠธ๋กœ ์ „์†กํ•˜์—ฌ ๋Œ€๋Ÿ‰์˜ ์ด๋ฏธ์ง€๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค [6, 12, 14]. ## โš–๏ธ ๋ชจ์ˆœ ๋ฐ ์—…๋ฐ์ดํŠธ (Contradictions & updates) - **๊ฐ€์—ญ์„ฑ์˜ ํ•œ๊ณ„:** API JSON์„ ๋‹ค์‹œ ComfyUI ์ธํ„ฐํŽ˜์ด์Šค๋กœ ๋“œ๋ž˜๊ทธํ•˜์—ฌ ๋ถˆ๋Ÿฌ์˜ฌ ๊ฒฝ์šฐ, ์‹œ๊ฐ์  ์œ„์น˜ ์ •๋ณด๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— ๋…ธ๋“œ๋“ค์ด ๋ชจ๋‘ ๊ฒน์ณ์„œ ๋‚˜ํƒ€๋‚˜๋Š” '์Šค์ผˆ๋ ˆํ†ค(skeleton)' ์ƒํƒœ๊ฐ€ ๋œ๋‹ค [24]. ๋”ฐ๋ผ์„œ ์žฌํŽธ์ง‘์„ ์œ„ํ•ด์„œ๋Š” ๋ฐ˜๋“œ์‹œ ์›๋ณธ ํ”„๋ŸฐํŠธ์—”๋“œ ํฌ๋งท์„ ๋ณ„๋„๋กœ ๋ณด๊ด€ํ•ด์•ผ ํ•œ๋‹ค [24]. - **๋ฒ„์ „ ํ˜ธํ™˜์„ฑ ๋ฌธ์ œ:** ComfyUI์˜ ๋นˆ๋ฒˆํ•œ ์—…๋ฐ์ดํŠธ๋กœ ์ธํ•ด ๊ตฌ๋ฒ„์ „ JSON ํŒŒ์ผ์ด ์ตœ์‹  ๋ฒ„์ „์—์„œ ์ •์ƒ์ ์œผ๋กœ ์ž‘๋™ํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์œผ๋ฉฐ, ํŠนํžˆ ์ปค์Šคํ…€ ๋…ธ๋“œ ์˜์กด์„ฑ์ด ์žˆ๋Š” ๊ฒฝ์šฐ ๋”์šฑ ๋นˆ๋ฒˆํ•˜๊ฒŒ ๋ฐœ์ƒํ•œ๋‹ค [25]. ## ๐Ÿ› ๏ธ ์ ์šฉ ์‚ฌ๋ก€ (Applied in summary) - **RunComfy Serverless API:** `workflow_api.json`์„ ๋‚ด๋ถ€์ ์œผ๋กœ ์ €์žฅํ•˜์—ฌ ์„œ๋ฒ„๋ฆฌ์Šค ์‹คํ–‰ ์‹œ ๋ฒ ์ด์Šค๋ผ์ธ์œผ๋กœ ํ™œ์šฉํ•˜๋ฉฐ, API ํ˜ธ์ถœ ์‹œ ์ž…๋ ฅ๊ฐ’๋งŒ ์˜ค๋ฒ„๋ผ์ด๋“œํ•œ๋‹ค [4, 16]. - **Mystic Pipeline (`new_pipeline.py`):** Python SDK๋ฅผ ํ†ตํ•ด ComfyUI ์„œ๋ฒ„๋ฅผ ์‹œ์ž‘ํ•˜๊ณ  API ํฌ๋งท JSON์— ํ”„๋กฌํ”„ํŠธ๋ฅผ ์ฃผ์ž…ํ•˜์—ฌ ์‹คํ–‰ํ•˜๋Š” ํ…œํ”Œ๋ฆฟ์— ์ ์šฉ๋จ [26, 27]. - **ComfyUI Workflow Converter (`bc85382`):** `/workflow/convert` ์—”๋“œํฌ์ธํŠธ๋ฅผ ํ†ตํ•ด ๋น„ API ํฌ๋งท(Frontend)์„ ์‹ค์‹œ๊ฐ„์œผ๋กœ API ํฌ๋งท์œผ๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ `/prompt` ์—”๋“œํฌ์ธํŠธ์— ์ฆ‰์‹œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ์ง€์› [28-30]. - **SaveImageWebsocket ๋…ธ๋“œ:** API ํ™˜๊ฒฝ์—์„œ ์ƒ์„ฑ๋œ ์ด๋ฏธ์ง€๋ฅผ ํŒŒ์ผ ์ €์žฅ ๋Œ€์‹  ์›น์†Œ์ผ“์„ ํ†ตํ•ด ์‹ค์‹œ๊ฐ„ ๋ฐ”์ด๋„ˆ๋ฆฌ๋กœ ์ˆ˜์‹ ํ•  ๋•Œ ์‚ฌ์šฉ๋จ [14]. ## โœ… ๊ฒ€์ฆ ์ƒํƒœ ๋ฐ ์‹ ๋ขฐ๋„ - **์ƒํƒœ:** draft - **๊ฒ€์ฆ ๋‹จ๊ณ„:** conceptual (์‹ค์ œ ์ ์šฉ ์‚ฌ๋ก€ ๋ฐœ๊ฒฌ ์‹œ applied/validated๋กœ ์Šน๊ฒฉ ๊ฐ€๋Šฅ) - **์ถœ์ฒ˜ ์‹ ๋ขฐ๋„:** B (Official Documentation / Primary Source via NotebookLM) - **์ค‘๋ณต ๊ฒ€์‚ฌ ๊ฒฐ๊ณผ:** ์‹ ๊ทœ ์ƒ์„ฑ (New discovery) ## ๐Ÿ“ ๋ณ€๊ฒฝ ์ด๋ ฅ (Change history) - 2026-05-20: Initial draft generated via Datacollector_MAC P-Reinforce engine.