--- id: api-format-(workflow_api.json) title: "API Format (workflow_api.json)" category: "10_Wiki/Topics" status: "draft" verification_status: "conceptual" canonical_id: "" aliases: ["Backend Format", "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 생성 방법", "API"] raw_sources: ["NotebookLM Synthesis"] applied_in: ["comfyui-workflow-to-api-converter-endpoint/README.md", "comfy_api_simplified", "ComfyUI-to-Python-Extension", "Mystic pipeline code", "Replicate any-comfyui-workflow"] github_commit: "" --- # [[API Format (workflow_api.json)]] ## 🎯 ν•œ 쀄 톡찰 (One-line insight) UI 메타데이터λ₯Ό μ œκ±°ν•˜κ³  싀행에 ν•„μˆ˜μ μΈ λ…Έλ“œ 둜직과 데이터 νλ¦„λ§Œμ„ μ••μΆ•ν•˜μ—¬ μ„œλ²„ μΈ‘ ν”„λ‘œκ·Έλž˜λ° 및 `/prompt` μ—”λ“œν¬μΈνŠΈ 싀행에 μ΅œμ ν™”λœ 데이터 규격 [1, 2]. ## 🧠 핡심 κ°œλ… (Core concepts) - **μ‹€ν–‰ μ΅œμ ν™” (Execution-centric):** μ‹œκ°μ  배치 정보가 μ•„λ‹Œ λ°±μ—”λ“œ 엔진이 ν”„λ‘¬ν”„νŠΈλ₯Ό μ‹€ν–‰ν•˜λŠ” 데 ν•„μš”ν•œ μ΅œμ†Œν•œμ˜ 논리 κ·Έλž˜ν”„λ§Œ 포함함 [1, 3]. - **UI 메타데이터 제거 (Metadata Stripping):** λ…Έλ“œ μœ„μΉ˜(pos), 크기(size), κ·Έλ£Ή, 색상 λ“± μ‚¬μš©μž μΈν„°νŽ˜μ΄μŠ€μ™€ κ΄€λ ¨λœ λͺ¨λ“  정보λ₯Ό μ‚­μ œν•˜μ—¬ 파일 크기λ₯Ό κ²½λŸ‰ν™”ν•¨ [1, 2, 4]. - **λ‚΄μž₯ν˜• 링크 μ°Έμ‘° (Embedded Linkage):** λ³„λ„μ˜ 링크 객체 λ°°μ—΄ λŒ€μ‹  λ…Έλ“œ μž…λ ₯(inputs) 내에 μ†ŒμŠ€ λ…Έλ“œ ID와 좜λ ₯ 슬둯 인덱슀λ₯Ό 직접 ν¬ν•¨ν•˜λŠ” ꡬ쑰λ₯Ό 가짐 [1, 5]. - **개발자 λͺ¨λ“œ μ˜μ‘΄μ„± (Dev Mode Dependency):** ν‘œμ€€ ν™˜κ²½μ—μ„œλŠ” 숨겨져 있으며, μ„€μ •μ—μ„œ 'Dev mode Options'λ₯Ό ν™œμ„±ν™”ν•΄μ•Όλ§Œ 생성 및 내보내기가 κ°€λŠ₯함 [6-8]. ## 🧩 μΆ”μΆœλœ νŒ¨ν„΄ (Extracted patterns) - **λ…Έλ“œ 식별 νŒ¨ν„΄:** 각 λ…Έλ“œλŠ” 숫자 λ¬Έμžμ—΄(예: "5", "6") ν˜•νƒœμ˜ 고유 ν‚€λ₯Ό κ°€μ§€λ©°, μ΄λŠ” κ·Έλž˜ν”„ λ‚΄μ—μ„œ κΈ°λŠ₯적 맀핑을 μœ„ν•œ μ‹λ³„μžλ‘œ μ‚¬μš©λ¨ [3, 9, 10]. - **데이터 μ—°κ²° νŒ¨ν„΄:** νŠΉμ • λ…Έλ“œμ˜ μž…λ ₯ ν•„λ“œμ— `[λ…Έλ“œID, 좜λ ₯슬둯번호]` ν˜•νƒœμ˜ 리슀트(예: `[11, 12]`)λ₯Ό ν• λ‹Ήν•˜μ—¬ λ…Έλ“œ κ°„μ˜ 데이터 흐름을 μ •μ˜ν•¨ [5]. - **직렬화 ꡬ쑰:** 루트 λ ˆλ²¨μ—μ„œ λ…Έλ“œ IDλ₯Ό ν‚€λ‘œ ν•˜κ³ , κ·Έ κ°’μœΌλ‘œ `class_type`κ³Ό `inputs`λ₯Ό ν¬ν•¨ν•˜λŠ” 단일 JSON 객체 ꡬ쑰λ₯Ό μœ μ§€ν•¨ [10, 13]. ## πŸ“– μ„ΈλΆ€ λ‚΄μš© (Details) ### 1. 포맷의 μ •μ˜μ™€ λͺ©μ  API 포맷(`workflow_api.json`)은 ComfyUI λ°±μ—”λ“œ 엔진이 직접 해석할 수 μžˆλŠ” **ν‰νƒ„ν™”λœ μ‹€ν–‰ κ·Έλž˜ν”„(flattened execution graph)**μž…λ‹ˆλ‹€ [6]. 주둜 μ™ΈλΆ€ μ• ν”Œλ¦¬μΌ€μ΄μ…˜ 톡합, μžλ™ν™” 슀크립트 μ‹€ν–‰, μ„œλ²„λ¦¬μŠ€ 배포 ν™˜κ²½μ—μ„œ ν”„λ‘¬ν”„νŠΈλ₯Ό 큐(queue)에 μΆ”κ°€ν•  λ•Œ μ‚¬μš©λ©λ‹ˆλ‹€ [1, 9]. ### 2. 기술적 ꡬ성 μš”μ†Œ - **ꡬ쑰적 차이:** ν”„λ‘ νŠΈμ—”λ“œ 포맷(`workflow.json`)이 Litegraph ν‘œμ€€μ„ λ”°λ₯΄λ©° μ‹œκ°μ  가독성을 μ€‘μ‹œν•˜λŠ” 반면, API 포맷은 λ°±μ—”λ“œ μ—”μ§„μ˜ `/prompt` μ—”λ“œν¬μΈνŠΈ 사양에 맞좰 μ„€κ³„λ˜μ—ˆμŠ΅λ‹ˆλ‹€ [1, 9]. - **λ…Έλ“œ μ •μ˜:** 각 λ…Έλ“œ κ°μ²΄λŠ” ν•΄λ‹Ή λ…Έλ“œμ˜ 클래슀 이름을 λ‚˜νƒ€λ‚΄λŠ” `class_type`κ³Ό μ‹€μ œ νŒŒλΌλ―Έν„° 및 μ—°κ²° 정보λ₯Ό 담은 `inputs` λ”•μ…”λ„ˆλ¦¬λ‘œ κ΅¬μ„±λ©λ‹ˆλ‹€ [2, 10]. - **μ—°κ²° 방식:** ν”„λ‘ νŠΈμ—”λ“œ 포맷의 `links` 배열이 제거되고, λͺ¨λ“  μ—°κ²° 정보가 `inputs` 내에 직접 μ£Όμž…λ©λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄ CLIP ν…μŠ€νŠΈ 인코딩 λ…Έλ“œμ˜ `clip` μž…λ ₯값은 μ—°κ²°λœ μ†ŒμŠ€ λ…Έλ“œ 정보λ₯Ό 리슀트 ν˜•νƒœλ‘œ λ³΄μœ ν•©λ‹ˆλ‹€ [5]. ### 3. 생성 및 λ³€ν™˜ ν”„λ‘œμ„ΈμŠ€ - **μˆ˜λ™ 생성:** μ„€μ • λ©”λ‰΄μ—μ„œ 'Enable Dev mode Options'λ₯Ό μ²΄ν¬ν•œ ν›„, μ œμ–΄νŒμ— λ‚˜νƒ€λ‚˜λŠ” **'Save (API Format)'** λ²„νŠΌμ„ 톡해 μΆ”μΆœν•©λ‹ˆλ‹€ [7, 8, 14]. - **ν”„λ‘œκ·Έλž˜λ° 방식 λ³€ν™˜:** `comfyui-workflow-to-api-converter-endpoint`와 같은 μ»€μŠ€ν…€ λ…Έλ“œλ₯Ό μ‚¬μš©ν•˜λ©΄ ν΄λΌμ΄μ–ΈνŠΈ μΈ‘ μžλ°”μŠ€ν¬λ¦½νŠΈ 둜직 없이 μ„œλ²„ μΈ‘μ—μ„œ 직접 ν”„λ‘ νŠΈμ—”λ“œ ν˜•μ‹μ„ API ν˜•μ‹μœΌλ‘œ λ³€ν™˜ν•  수 μžˆμŠ΅λ‹ˆλ‹€ [15, 16]. ## βš–οΈ λͺ¨μˆœ 및 μ—…λ°μ΄νŠΈ (Contradictions & updates) - **κ°€μ—­μ„± 문제 (Fragility):** API 포맷은 μ‹€ν–‰μ—λŠ” μ™„λ²½ν•˜μ§€λ§Œ μ‹œκ°μ  정보가 μ—†μœΌλ―€λ‘œ, 이λ₯Ό λ‹€μ‹œ UI둜 λ“œλž˜κ·Έν•˜μ—¬ λ‘œλ“œν•˜λ©΄ λ…Έλ“œ λ°°μΉ˜κ°€ κΉ¨μ§€κ±°λ‚˜ κ·Έλ£Ή 정보가 사라진 'μŠ€μΌˆλ ˆν†€(skeleton)' μƒνƒœλ‘œ λ‚˜νƒ€λ‚˜ νŽΈμ§‘μ΄ 맀우 μ–΄λ ΅μŠ΅λ‹ˆλ‹€ [17, 18]. - **버전 ν˜Έν™˜μ„±:** ComfyUI의 λΉˆλ²ˆν•œ μ—…λ°μ΄νŠΈλ‘œ 인해 ꡬ버전 JSON 파일이 μ΅œμ‹  λ²„μ „μ—μ„œ μ •μƒμ μœΌλ‘œ μž‘λ™ν•˜μ§€ μ•Šμ„ 수 있으며, 특히 μ»€μŠ€ν…€ λ…Έλ“œ μ˜μ‘΄μ„±μ΄ μžˆλŠ” 경우 μ‹€ν–‰ μ‹€νŒ¨ κ°€λŠ₯성이 λ†’μŠ΅λ‹ˆλ‹€ [19, 20]. ## πŸ› οΈ 적용 사둀 (Applied in summary) - **comfyui-workflow-to-api-converter-endpoint:** ν”„λ‘ νŠΈμ—”λ“œ μ›Œν¬ν”Œλ‘œμš°λ₯Ό μ„œλ²„ μΈ‘μ—μ„œ API 포맷으둜 μ¦‰μ‹œ λ³€ν™˜ν•˜λŠ” `/workflow/convert` μ—”λ“œν¬μΈνŠΈλ₯Ό μ œκ³΅ν•©λ‹ˆλ‹€ [15, 21]. - **deimos-deimos/comfy_api_simplified:** API 포맷 μ›Œν¬ν”Œλ‘œμš°λ₯Ό λ‘œλ“œν•˜μ—¬ 파이썬 λ”•μ…”λ„ˆλ¦¬λ‘œ 닀루고, λ…Έλ“œ 제λͺ©(title)을 κΈ°μ€€μœΌλ‘œ νŒŒλΌλ―Έν„°λ₯Ό μˆ˜μ •ν•˜μ—¬ 큐에 μΆ”κ°€ν•˜λŠ” κΈ°λŠ₯을 κ΅¬ν˜„ν•©λ‹ˆλ‹€ [22, 23]. - **Mystic & Replicate:** μ‚¬μš©μž μ›Œν¬ν”Œλ‘œμš°λ₯Ό μ„œλ²„λ¦¬μŠ€ API둜 배포할 λ•Œ, μ‹€ν–‰μ˜ κΈ°λ³Έ λ‹¨μœ„λ‘œ `workflow_api.json`을 μš”κ΅¬ν•˜κ±°λ‚˜ λ‚΄λΆ€μ μœΌλ‘œ 이λ₯Ό μ‚¬μš©ν•˜μ—¬ 좔둠을 μˆ˜ν–‰ν•©λ‹ˆλ‹€ [14, 24, 25]. - **ComfyUI-to-Python-Extension:** API 포맷의 JSON을 μž…λ ₯λ°›μ•„ λ…λ¦½μ μœΌλ‘œ μ‹€ν–‰ κ°€λŠ₯ν•œ 파이썬 슀크립트(`.py`)둜 λ³€ν™˜ν•˜λŠ” κΈ°λŠ₯을 μˆ˜ν–‰ν•©λ‹ˆλ‹€ [26, 27]. ## βœ… 검증 μƒνƒœ 및 신뒰도 - **μƒνƒœ:** draft - **검증 단계:** conceptual (μ‹€μ œ μ˜€ν”ˆμ†ŒμŠ€ ν”„λ‘œμ νŠΈ 및 ν”Œλž«νΌμ—μ„œ 핡심 규격으둜 ν™œμš©λ¨) - **좜처 신뒰도:** B (Official Documentation / GitHub Repository README 및 μ†ŒμŠ€ μ½”λ“œ 기반) - **쀑볡 검사 κ²°κ³Ό:** μ‹ κ·œ 생성 (New discovery) ## πŸ”— κ΄€λ ¨ λ¬Έμ„œ 링크 (Related document links) ### μƒμœ„/μœ μ‚¬ κ°œλ… #### [μ•„ν‚€ν…μ²˜/기반 기술] - [[Frontend Format (workflow.json)]] - μ—°κ²° 이유: API 포맷과 λŒ€μΉ­λ˜λŠ” μ‹œκ°μ  νŽΈμ§‘μš© 데이터 κ·œκ²©μž„. - 이 κ°œλ…μ„ 톡해 더 깊게 이해할 수 μžˆλŠ” λΆ€λΆ„: 데이터 직렬화 μ‹œ UI 정보와 μ‹€ν–‰ μ •λ³΄μ˜ 뢄리 섀계 방식. - [[Directed Acyclic Graph (DAG)]] - μ—°κ²° 이유: API 포맷은 λ…Έλ“œμ™€ 링크둜 κ΅¬μ„±λœ μΆ”μƒν™”λœ κ·Έλž˜ν”„ ꡬ쑰λ₯Ό ν‘œν˜„ν•¨. - 이 κ°œλ…μ„ 톡해 더 깊게 이해할 수 μžˆλŠ” λΆ€λΆ„: λ…Έλ“œ κ°„ μ˜μ‘΄μ„± 및 μ‹€ν–‰ μˆœμ„œ κ²°μ • 원리. #### [κ΅¬ν˜„/ν™œμš© 도ꡬ] - [[ComfyUI API]] - μ—°κ²° 이유: API 포맷은 `/prompt` μ—”λ“œν¬μΈνŠΈ 호좜 μ‹œ μ „λ‹¬λ˜λŠ” νŽ˜μ΄λ‘œλ“œμ˜ 핡심 λ°μ΄ν„°μž„. - 이 κ°œλ…μ„ 톡해 더 깊게 이해할 수 μžˆλŠ” λΆ€λΆ„: μ‹€μ œ μ„œλ²„ 톡신 및 μž‘μ—… νμž‰ ν”„λ‘œμ„ΈμŠ€. - [[ComfyUI-to-Python-Extension]] - μ—°κ²° 이유: API JSON을 파이썬 μ½”λ“œλ‘œ λ³€ν™˜ν•˜μ—¬ 독립 μ‹€ν–‰ ν™˜κ²½μ„ ꡬ좕함. - 이 κ°œλ…μ„ 톡해 더 깊게 이해할 수 μžˆλŠ” λΆ€λΆ„: JSON 데이터가 μ‹€μ œ μ‹€ν–‰ μ½”λ“œλ‘œ μΉ˜ν™˜λ˜λŠ” λ§€ν•‘ 원리. ### 심측 후속 질문 (Deeper Research Questions) - μ™œ ComfyUIλŠ” μ‹œκ°μ  정보와 μ‹€ν–‰ 정보λ₯Ό ν•˜λ‚˜μ˜ JSON에 ν†΅ν•©ν•˜μ§€ μ•Šκ³  두 κ°€μ§€ 포맷으둜 λΆ„λ¦¬ν•˜μ—¬ κ΄€λ¦¬ν•˜λŠ”κ°€? [1] - API ν¬λ§·μ—μ„œ λ…Έλ“œ IDκ°€ λ¬Έμžμ—΄ ν˜•νƒœμ˜ 숫자둜 고정될 λ•Œ, μ›Œν¬ν”Œλ‘œμš° νŽΈμ§‘ μ‹œ ID μΆ©λŒμ΄λ‚˜ λˆ„λ½μ„ λ°©μ§€ν•˜λŠ” λ©”μ»€λ‹ˆμ¦˜μ€ 무엇인가? [3, 28] - `comfyui-workflow-to-api-converter-endpoint`λŠ” ν΄λΌμ΄μ–ΈνŠΈ 츑의 μžλ°”μŠ€ν¬λ¦½νŠΈ λ³€ν™˜ λ‘œμ§μ„ μ–΄λ–»κ²Œ 파이썬 μ„œλ²„ μΈ‘ 둜직으둜 μ™„λ²½ν•˜κ²Œ μ΄μ‹ν–ˆλŠ”κ°€? [15] - λŒ€κ·œλͺ¨ μ›Œν¬ν”Œλ‘œμš°(예: 200KB 이상)λ₯Ό API 포맷으둜 ν˜ΈμΆœν•  λ•Œ μ„±λŠ₯ μ €ν•˜λ‚˜ 데이터 λˆ„λ½μ΄ λ°œμƒν•  κ°€λŠ₯성은 μ—†λŠ”κ°€? [16] - `object_info.json`에 μ •μ˜λœ λ…Έλ“œ μŠ€ν‚€λ§ˆμ™€ API 포맷의 `inputs` 데이터 ꡬ쑰 μ‚¬μ΄μ˜ μœ νš¨μ„± 검사 과정은 μ–΄λ–»κ²Œ μ΄λ£¨μ–΄μ§€λŠ”κ°€? [13] ### 싀무 적용 λ§₯락 (Practical Application Contexts) - **Implementation:** 파이썬의 `json` 라이브러리λ₯Ό μ‚¬μš©ν•˜μ—¬ API JSON을 λ‘œλ“œν•˜κ³ , νŠΉμ • λ…Έλ“œ ID의 `inputs` 값을 λ³€κ²½ν•˜μ—¬ 동적 ν”„λ‘¬ν”„νŠΈλ₯Ό 생성할 수 있음 [10, 29]. - **System Design:** ν”„λ‘ νŠΈμ—”λ“œ μˆ˜μ •μ„ μ΅œμ†Œν™”ν•˜λ©΄μ„œ λ°±μ—”λ“œ μžλ™ν™”λ₯Ό κ΅¬μΆ•ν•˜κΈ° μœ„ν•΄ μ„œλ²„ μΈ‘μ—μ„œ λ³€ν™˜ μ—”λ“œν¬μΈνŠΈλ₯Ό ν™œμš©ν•˜λŠ” 캐싱 μ „λž΅μ„ μˆ˜λ¦½ν•  수 있음 [17]. - **Operation / Maintenance:** μ»€μŠ€ν…€ λ…Έλ“œ μ—…λ°μ΄νŠΈ μ‹œ API 포맷 λ‚΄μ˜ `class_type` λͺ…칭이 λ³€κ²½λ˜μ§€ μ•Šμ•˜λŠ”μ§€ ν™•μΈν•˜μ—¬ μ„œλΉ„μŠ€ 쀑단을 λ°©μ§€ν•΄μ•Ό 함 [19]. - **Learning Path:** λ…Έλ“œ 기반 UI에 μ΅μˆ™ν•΄μ§„ ν›„, 개발자 λͺ¨λ“œλ₯Ό 톡해 μΆ”μΆœλœ API JSON의 ꡬ쑰λ₯Ό λΆ„μ„ν•˜μ—¬ ν”„λ‘œκ·Έλž˜λ° λ°©μ‹μ˜ μžλ™ν™” λ‹¨κ³„λ‘œ μ§„μž…ν•¨ [6]. ### 인접 μ£Όλ³€ 주제 (Adjacent Topics) - [[Model Hashing (SHA-256)]] - ν™•μž₯ λ°©ν–₯: API JSON λ‚΄μ˜ λͺ¨λΈ 파일 이름 뢈일치 문제λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•œ 고유 식별 기술 쑰사 [30]. - [[Serverless Deployment]] - ν™•μž₯ λ°©ν–₯: API 포맷을 ν΄λΌμš°λ“œ ν™˜κ²½(Replicate, Mystic)에 λ°°ν¬ν•˜μ—¬ ν™•μž₯μ„± μžˆλŠ” AI μ„œλΉ„μŠ€λ₯Ό κ΅¬μΆ•ν•˜λŠ” 방법 [14, 31]. ## πŸ“ λ³€κ²½ 이λ ₯ (Change history) - 2026-05-19: Initial draft generated via Datacollector_MAC P-Reinforce engine.