--- id: comfyui-api title: "ComfyUI API" category: "10_Wiki/Topics" status: "draft" verification_status: "conceptual" canonical_id: "" aliases: ["API Format", "workflow_api.json"] duplicate_of: "" source_trust_level: "B" confidence_score: 0.85 created_at: 2026-05-19 updated_at: 2026-05-19 review_reason: "" merge_history: [] tags: ["research", "Comfyui workflow json 생성 방법", "automation", "API"] raw_sources: ["NotebookLM Synthesis"] applied_in: - "comfyui-workflow-to-api-converter-endpoint (bc85382)" - "ComfyUI-WorkflowGenerator (82df278)" - "ComfyUI-to-Python-Extension (6cdcc23)" github_commit: "" --- # [[ComfyUI API]] ## 🎯 ν•œ 쀄 톡찰 (One-line insight) ComfyUI APIλŠ” λ…Έλ“œ 기반의 λΉ„μ£Όμ–Ό μ›Œν¬ν”Œλ‘œλ₯Ό **μ‹€ν–‰ κ°€λŠ₯ν•œ 데이터 ꡬ쑰(JSON)**둜 μ§λ ¬ν™”ν•˜μ—¬, 창의적 ν”„λ‘œμ„ΈμŠ€λ₯Ό μžλ™ν™”λœ ν”„λ‘œλ•μ…˜ νŒŒμ΄ν”„λΌμΈμœΌλ‘œ μ „ν™˜ν•˜λŠ” 핡심 μΈν„°νŽ˜μ΄μŠ€μ΄λ‹€ [1, 2]. ## 🧠 핡심 κ°œλ… (Core concepts) - **API Format (workflow_api.json):** μ‚¬μš©μž μΈν„°νŽ˜μ΄μŠ€(UI) 메타데이터(λ…Έλ“œ μœ„μΉ˜, 크기, κ·Έλ£Ή λ“±)λ₯Ό μ œκ±°ν•˜κ³  였직 λ°±μ—”λ“œ μ—”μ§„μ˜ 싀행에 ν•„μš”ν•œ λ…Έλ“œ μœ ν˜•κ³Ό μž…λ ₯ μ—°κ²° μ •λ³΄λ§Œμ„ ν¬ν•¨ν•˜λŠ” κ°„μ†Œν™”λœ κ·Έλž˜ν”„ 포맷이닀 [3-5]. - **Dev Mode Options:** API 포맷으둜 μ›Œν¬ν”Œλ‘œλ₯Ό 내보내기 μœ„ν•΄ λ°˜λ“œμ‹œ ν™œμ„±ν™”ν•΄μ•Ό ν•˜λŠ” μ„€μ •μœΌλ‘œ, ν™œμ„±ν™” μ‹œ 'Save (API format)' λ²„νŠΌμ΄ λ…ΈμΆœλœλ‹€ [6-8]. - **Serialization & Mapping:** λ…Έλ“œλ§μ„ JSON ν˜•μ‹μ˜ λ”•μ…”λ„ˆλ¦¬λ‘œ λ³€ν™˜ν•˜λ©°, 각 λ…Έλ“œλŠ” κ³ μœ ν•œ numeric ID(예: "37")λ₯Ό ν‚€λ‘œ μ‚¬μš©ν•˜μ—¬ `class_type`κ³Ό `inputs` 값을 μ •μ˜ν•œλ‹€ [9-11]. - **Prompt Endpoint (/prompt):** μƒμ„±λœ API JSON νŽ˜μ΄λ‘œλ“œλ₯Ό ComfyUI μ„œλ²„μ˜ `/prompt` μ—”λ“œν¬μΈνŠΈλ‘œ POST μš”μ²­μ„ 보내 μ‹€μ œ 싀행을 νŠΈλ¦¬κ±°ν•œλ‹€ [10, 12]. ## 🧩 μΆ”μΆœλœ νŒ¨ν„΄ (Extracted patterns) - **Execution Model Inversion:** 엔진이 λͺ¨λ“  λ…Έλ“œλ₯Ό μ‹€ν–‰ν•˜λŠ” λŒ€μ‹  'Save Image'와 같은 좜λ ₯ λ…Έλ“œμ—μ„œ μ—­λ°©ν–₯으둜 νƒμƒ‰ν•˜μ—¬ μ΅œμ’… 결과에 ν•„μš”ν•œ μ˜μ‘΄μ„± λ…Έλ“œλ§Œ μ‹λ³„ν•˜κ³  μ‹€ν–‰ν•œλ‹€ [13]. - **Bifurcation of Formats:** μ‹œκ°μ  νŽΈμ§‘μ„ μœ„ν•œ Frontend 포맷(`workflow.json`)κ³Ό ν”„λ‘œκ·Έλž˜λ°μ  싀행을 μœ„ν•œ Backend 포맷(`workflow_api.json`)을 λΆ„λ¦¬ν•˜μ—¬ 운영 νš¨μœ¨μ„±μ„ κ·ΉλŒ€ν™”ν•œλ‹€ [3, 14]. - **Metadata Recovery:** PNG 파일의 `tEXt` λ˜λŠ” `zTXt` 청크에 μˆ¨κ²¨μ§„ μ›Œν¬ν”Œλ‘œ JSON 데이터λ₯Ό `exiftool`μ΄λ‚˜ μ „μš© μΆ”μΆœκΈ°λ₯Ό 톡해 λ³΅κ΅¬ν•˜μ—¬ 곡유 및 μž¬μ‚¬μš©ν•˜λŠ” νŒ¨ν„΄μ΄ λ°œκ²¬λœλ‹€ [15-17]. ## πŸ“– μ„ΈλΆ€ λ‚΄μš© (Details) ### 1. API JSON 생성 및 ꡬ쑰적 νŠΉμ§• API 포맷 JSON은 λ°±μ—”λ“œ μ‹€ν–‰ μ΅œμ ν™”λ₯Ό μœ„ν•΄ μ„€κ³„λ˜μ—ˆλ‹€. - **데이터 ꡬ쑰:** 루트 ν‚€λŠ” λ…Έλ“œ ID(λ¬Έμžμ—΄)이며, 각 값은 `class_type`κ³Ό `inputs` λ”•μ…”λ„ˆλ¦¬λ₯Ό ν¬ν•¨ν•œλ‹€ [10, 18]. - **μ—°κ²° ν‘œν˜„:** λ…Έλ“œ κ°„μ˜ λ§ν¬λŠ” λ³„λ„μ˜ 배열이 μ•„λ‹Œ λ…Έλ“œ μž…λ ₯ λ‚΄μ—μ„œ `[origin_node_id, output_slot_index]` ν˜•νƒœμ˜ 참쑰둜 직접 μž„λ² λ”©λœλ‹€ [3, 19]. - **μœ„μ ― κ°’ μ „ν™˜:** GUIμ—μ„œ μ‚¬μš©μžκ°€ μž…λ ₯ν•œ μœ„μ ― κ°’(μ‹œλ“œ, ν…μŠ€νŠΈ λ“±)은 API JSON의 `inputs` ν•„λ“œλ‘œ 직접 λ§€ν•‘λ˜μ–΄ κ³ μ •λœ 값이 λœλ‹€ [19]. ### 2. ν”„λ‘œκ·Έλž˜λ°μ  μ‘°μž‘ 및 μžλ™ν™” κ°œλ°œμžλŠ” ν…œν”Œλ¦Ών™”λœ API JSON을 Python 등을 톡해 λ™μ μœΌλ‘œ μˆ˜μ •ν•˜μ—¬ λŒ€λŸ‰ 생성을 μžλ™ν™”ν•  수 μžˆλ‹€. - **μž…λ ₯κ°’ ꡐ체:** `json` 라이브러리λ₯Ό μ‚¬μš©ν•˜μ—¬ νŠΉμ • λ…Έλ“œ ID의 `inputs` ν•„λ“œ(예: ν”„λ‘¬ν”„νŠΈ ν…μŠ€νŠΈ, μ‹œλ“œ κ°’)λ₯Ό λŸ°νƒ€μž„μ— λ³€κ²½ν•œλ‹€ [10, 20]. - **이미지 μ£Όμž…:** μ™ΈλΆ€ 이미지λ₯Ό API둜 전달할 λ•ŒλŠ” `Load Image (Base64)` λ…Έλ“œλ₯Ό μ‚¬μš©ν•˜κ±°λ‚˜ 이미지λ₯Ό μ„œλ²„μ˜ `input` 디렉토리에 μ—…λ‘œλ“œν•œ ν›„ 파일λͺ…μœΌλ‘œ μ°Έμ‘°ν•œλ‹€ [21, 22]. - **κ²°κ³Ό μˆ˜μ‹ :** 생성 μ§„ν–‰ 상황과 κ²°κ³Ό μ΄λ―Έμ§€λŠ” WebSocket 톡신을 톡해 μ‹€μ‹œκ°„μœΌλ‘œ λͺ¨λ‹ˆν„°λ§ν•˜λ©°, `SaveImageWebsocket` λ…Έλ“œλ₯Ό μ‚¬μš©ν•˜μ—¬ λ°”μ΄λ„ˆλ¦¬ 데이터λ₯Ό 직접 μˆ˜μ‹ ν•  수 μžˆλ‹€ [22]. ### 3. κ³ λ„ν™”λœ 생성 도ꡬ - **ComfyUI-to-Python-Extension:** JSON μ›Œν¬ν”Œλ‘œλ₯Ό λ…λ¦½μ μœΌλ‘œ μ‹€ν–‰ κ°€λŠ₯ν•œ `.py` 슀크립트둜 λ³€ν™˜ν•˜μ—¬ μ„œλ²„ 없이도 ν—€λ“œλ¦¬μŠ€ ν™˜κ²½μ—μ„œ μ‹€ν–‰ κ°€λŠ₯ν•˜κ²Œ ν•œλ‹€ [23, 24]. - **Comfy API Simplified:** λ…Έλ“œ ID λŒ€μ‹  μ‚¬μš©μžκ°€ μ§€μ •ν•œ λ…Έλ“œ 제λͺ©(title)으둜 νŒŒλΌλ―Έν„°λ₯Ό μ„€μ •ν•  수 있게 ν•˜μ—¬ μ›Œν¬ν”Œλ‘œ μˆ˜μ • μ‹œ μ½”λ“œμ˜ νŒŒμ†μ„ λ°©μ§€ν•œλ‹€ [23, 25]. - **LLM 기반 생성:** μžμ—°μ–΄ μ„€λͺ…을 μž…λ ₯ν•˜λ©΄ Qwen2.5와 같은 λͺ¨λΈμ΄ 이λ₯Ό ν•΄μ„ν•˜μ—¬ μœ νš¨ν•œ λ…Έλ“œ κ·Έλž˜ν”„ ꡬ쑰λ₯Ό μžλ™μœΌλ‘œ μƒμ„±ν•˜κ³  λΉŒλ“œν•œλ‹€ [26, 27]. ## βš–οΈ λͺ¨μˆœ 및 μ—…λ°μ΄νŠΈ (Contradictions & updates) - **ν•˜μœ„ ν˜Έν™˜μ„± 문제:** ComfyUI의 λΉˆλ²ˆν•œ μ—…λ°μ΄νŠΈλ‘œ 인해 ꡬ버전 JSON 파일이 μ΅œμ‹  λ²„μ „μ—μ„œ μ •μƒμ μœΌλ‘œ μž‘λ™ν•˜μ§€ μ•Šμ„ 수 μžˆλ‹€λŠ” κ²½κ³ κ°€ μ‘΄μž¬ν•œλ‹€ [28]. - **포맷의 λΉ„κ°€μ—­μ„±:** API 포맷 JSON은 μ‹€ν–‰ νš¨μœ¨μ€ λ†’μœΌλ‚˜, 이λ₯Ό λ‹€μ‹œ GUI둜 λ“œλž˜κ·Έν•˜μ—¬ λ‘œλ“œν•  경우 μ‹œκ°μ  λ ˆμ΄μ•„μ›ƒ(λ…Έλ“œ μœ„μΉ˜ λ“±)이 μœ μ‹€λœ 'μŠ€μΌˆλ ˆν†€' μƒνƒœλ‘œ λ‚˜νƒ€λ‚˜ νŽΈμ§‘μ΄ μ–΄λ ΅λ‹€ [12, 29]. ## πŸ› οΈ 적용 사둀 (Applied in summary) - **comfyui-workflow-to-api-converter-endpoint:** ν΄λΌμ΄μ–ΈνŠΈ μ‚¬μ΄λ“œμ˜ JS λ‘œμ§μ„ Python으둜 λ³€ν™˜ν•˜μ—¬ μ„œλ²„ μΈ‘μ—μ„œ 일반 JSON을 API JSON으둜 μ¦‰μ‹œ λ³€ν™˜ν•˜λŠ” μ—”λ“œν¬μΈνŠΈλ₯Ό κ΅¬ν˜„ν•¨ (컀밋: bc85382) [12, 30]. - **ComfyUI-WorkflowGenerator:** μžμ—°μ–΄ ν”„λ‘¬ν”„νŠΈλ₯Ό 기반으둜 3단계 νŒŒμ΄ν”„λΌμΈ(생성-검증-λΉŒλ“œ)을 거쳐 μ‹€ν–‰ κ°€λŠ₯ν•œ μ›Œν¬ν”Œλ‘œλ₯Ό μƒμ„±ν•˜λŠ” μ‹œμŠ€ν…œ (컀밋: 82df278) [27, 31]. - **ComfyUI-to-Python-Extension:** μ›Œν¬ν”Œλ‘œλ₯Ό Python μ½”λ“œλ‘œ λ²ˆμ—­ν•˜μ—¬ μžλ™ν™” 및 반볡 생성에 μ΅œμ ν™”λœ 슀크립트λ₯Ό μ œκ³΅ν•¨ (컀밋: 6cdcc23) [24, 32]. ## βœ… 검증 μƒνƒœ 및 신뒰도 - **μƒνƒœ:** draft - **검증 단계:** conceptual (λ‹€μˆ˜μ˜ GitHub ν”„λ‘œμ νŠΈλ₯Ό 톡해 μ‹€μš©μ„± μž…μ¦λ¨) - **좜처 신뒰도:** B (곡식 λ¬Έμ„œ 및 μ˜€ν”ˆμ†ŒμŠ€ ν”„λ‘œμ νŠΈ README 기반) - **쀑볡 검사 κ²°κ³Ό:** μ‹ κ·œ 생성 ## πŸ”— κ΄€λ ¨ λ¬Έμ„œ 링크 (Related document links) ### μƒμœ„/μœ μ‚¬ κ°œλ… #### [μ•„ν‚€ν…μ²˜/기반 기술] - [[Workflow JSON]] - μ—°κ²° 이유: API λ°μ΄ν„°μ˜ 근간이 λ˜λŠ” μŠ€ν‚€λ§ˆ 규격 - 이 κ°œλ…μ„ 톡해 더 깊게 이해할 수 μžˆλŠ” λΆ€λΆ„: λ…Έλ“œ 속성 및 링크 μŠ€ν‚€λ§ˆ v1.0의 기술적 μ œμ•½ 사항 [33]. #### [κ΅¬ν˜„/ν™œμš© 도ꡬ] - [[API Format]] - μ—°κ²° 이유: ComfyUI μ„œλ²„ 톡신을 μœ„ν•œ ν•„μˆ˜ 데이터 포맷 - 이 κ°œλ…μ„ 톡해 더 깊게 이해할 수 μžˆλŠ” λΆ€λΆ„: UI 메타데이터 제거 및 μ‹€ν–‰ μ΅œμ ν™” 둜직 [5]. - [[ComfyUI-Manager]] - μ—°κ²° 이유: API μ‹€ν–‰ μ‹œ λˆ„λ½λœ μ»€μŠ€ν…€ λ…Έλ“œ μ˜μ‘΄μ„± ν•΄κ²° 도ꡬ - 이 κ°œλ…μ„ 톡해 더 깊게 이해할 수 μžˆλŠ” λΆ€λΆ„: JSON λ‚΄ `class_type`을 기반으둜 ν•œ μžλ™ λ…Έλ“œ μ„€μΉ˜ ν”„λ‘œμ„ΈμŠ€ [34]. ### 심측 후속 질문 (Deeper Research Questions) - API JSON의 `inputs` ν•„λ“œμ—μ„œ λ…Έλ“œ μ°Έμ‘° μ‹œ μ‚¬μš©λ˜λŠ” 슬둯 인덱슀의 μ •ν™•ν•œ λ§€ν•‘ κ·œμΉ™μ€ 무엇인가? [35] - `Execution Model Inversion`이 λŒ€κ·œλͺ¨ μ›Œν¬ν”Œλ‘œμ—μ„œ μ‹€μ œ μ„±λŠ₯(VRAM/μ—°μ‚°)에 λ―ΈμΉ˜λŠ” μ •λŸ‰μ  영ν–₯은 μ–΄λŠ 정도인가? [13] - LLM 기반 μ›Œν¬ν”Œλ‘œ 생성 μ‹œ `NodeValidator`κ°€ μ‚¬μš©ν•˜λŠ” μ‹œλ§¨ν‹± μž„λ² λ”© 방식은 μ»€μŠ€ν…€ λ…Έλ“œμ˜ 정확도λ₯Ό μ–΄λ–»κ²Œ 보μž₯ν•˜λŠ”κ°€? [36, 37] - PNG 메타데이터가 μ†μƒλœ 경우, `exiftool` 외에 λ°”μ΄λ„ˆλ¦¬ μˆ˜μ€€μ—μ„œ μ›Œν¬ν”Œλ‘œλ₯Ό 볡ꡬ할 수 μžˆλŠ” λŒ€μ•ˆμ  방법이 μžˆλŠ”κ°€? [17, 38] - `comfyui-workflow-to-api-converter`κ°€ μ²˜λ¦¬ν•˜λŠ” 1MB μš”μ²­ μ œν•œμ˜ 기술적 근거와 λŒ€κ·œλͺ¨ μ›Œν¬ν”Œλ‘œ(Flux λ“±) λŒ€μ‘ λ°©μ•ˆμ€ 무엇인가? [39, 40] ### 싀무 적용 λ§₯락 (Practical Application Contexts) - **Implementation:** `/prompt` μ—”λ“œν¬μΈνŠΈμ— 전솑할 JSON νŽ˜μ΄λ‘œλ“œλ₯Ό μƒμ„±ν•˜κΈ° μœ„ν•΄ GUI의 'Dev mode'λ₯Ό ν™œμš©ν•˜μ—¬ ν…œν”Œλ¦Ώμ„ ν™•λ³΄ν•œλ‹€ [8]. - **System Design:** ν”„λ‘œλ•μ…˜ ν™˜κ²½μ—μ„œλŠ” μ‚¬μš©μžμ˜ μž…λ ₯을 μˆ˜μ‹ ν•˜λŠ” 미듀웨어λ₯Ό κ΅¬μΆ•ν•˜κ³ , ν…œν”Œλ¦Ώ JSON의 νŠΉμ • λ…Έλ“œ ID 값을 λ™μ μœΌλ‘œ μΉ˜ν™˜ν•˜μ—¬ ComfyUI μΈμŠ€ν„΄μŠ€μ— μ „λ‹¬ν•œλ‹€ [22, 41]. - **Operation / Maintenance:** μ›Œν¬ν”Œλ‘œ λ³€κ²½ μ‹œ λ…Έλ“œ IDκ°€ λ³€ν•  수 μžˆμœΌλ―€λ‘œ, μœ μ§€λ³΄μˆ˜μ„±μ„ μœ„ν•΄ `comfy_api_simplified`와 같이 λ…Έλ“œ 제λͺ© 기반으둜 μ ‘κ·Όν•˜λŠ” 래퍼 μ‚¬μš©μ„ ꢌμž₯ν•œλ‹€ [23, 25]. - **Learning Path:** κΈ°λ³Έ UI μ‚¬μš©λ²• μˆ™μ§€ β†’ Dev mode ν™œμ„±ν™” 및 API JSON ꡬ쑰 뢄석 β†’ Python `requests` 및 `websocket`을 μ΄μš©ν•œ 원격 μ œμ–΄ 순으둜 ν•™μŠ΅ν•œλ‹€ [42, 43]. ### 인접 μ£Όλ³€ 주제 (Adjacent Topics) - [[Comfy GPT]] - ν™•μž₯ λ°©ν–₯: AI μ—μ΄μ „νŠΈκ°€ 직접 λ…Έλ“œλ₯Ό μ‘°λ¦½ν•˜κ³  λ””λ²„κΉ…ν•˜λŠ” μžκ°€ μ΅œμ ν™” μ‹œμŠ€ν…œ 연ꡬ [27, 44]. - [[Model Hashing]] - ν™•μž₯ λ°©ν–₯: 파일λͺ… λŒ€μ‹  ν•΄μ‹œκ°’μ„ μ‚¬μš©ν•˜μ—¬ API 호좜 μ‹œ λͺ¨λΈ 뢈일치 문제λ₯Ό ν•΄κ²°ν•˜λŠ” 기술 [45]. ## πŸ“ λ³€κ²½ 이λ ₯ (Change history) - 2026-05-19: Initial draft generated via Datacollector_MAC P-Reinforce engine. (Based on 18 sources)