Comfy Router는 아직 일반에 공개되지 않았습니다. 아래의 라우트, 즉
POST /v1/models/{provider}/{model} 및 해당 카탈로그와 스키마 관련 라우트는 아직 요청을 처리하지 않습니다. 현재 인증된 호출은 404를 반환합니다. 이 페이지는 이 라우트가 제공할 계약을 문서화하며, 해당 출시에 앞서 게시되어 통합 코드를 미리 작성할 수 있도록 합니다. 지금 바로 사용할 수 있는 동작에 대한 설명은 아닙니다.https://api.comfy.org입니다. 라우트는 POST /v1/models/{provider}/{model}이며, 요청 본문은 모델 자체의 네이티브 JSON 입력이고, 200은 모델 자체의 네이티브 JSON 출력을 전달합니다. Router는 입력도 출력도 래핑하지 않으므로, 이미 파트너 API에 대해 작성한 호출은 호스트만 변경하면 Router 호출이 됩니다.
이 페이지에서 bfl/flux-2-pro를 사용하는 이유
bfl/flux-2-pro는 p50 기준 약 3.1초 만에 결과를 반환하며, 이는 Router에서 측정된 경로 중 가장 빠른 것입니다. 바로 이 점 덕분에 5분 안에 첫 결과를 얻는 것이 현실적입니다. 더 느린 모델을 사용한다면 그 시간을 문서를 읽는 대신 기다리는 데 쓰게 될 것입니다.
이는 편의를 위한 것이지 필수 사항은 아닙니다. Router의 다른 모든 모델도 정확히 동일한 방식으로 호출됩니다. 동일한 라우트, 동일한 자격 증명 헤더, 동일한 오류 범주, 동일한 X-Comfy-Request-Id를 사용합니다. 변경되는 것은 모델 ID, 요청 본문 내부의 필드, 그리고 반환되는 결과의 형태뿐입니다. 예를 들어 Gemini는 p95 기준 72.8초로 여유 있게 완료됩니다. Router는 폴링할 작업 핸들을 반환하는 대신 전체 생성 과정 동안 연결을 유지합니다. 긴 호출을 중도에 끊는 엣지 상한선은 없지만, Router는 호출 자체에 한계를 둡니다. 자체 서버 데드라인(기본 10분)이 연결을 유지하는 최대 시간이며, 이를 초과하면 504 / deadline_exceeded로 응답하고 청구하지 않습니다. 모델 ID를 교체하고 해당 모델의 필드를 자체 스키마(아래)에서 읽으면 됩니다.
키 발급받기
Router는 Comfy API 키로 인증합니다. platform.comfy.org/profile/api-keys에서 키를 생성한 다음 환경 변수에 넣으세요. 아래 두 샘플 모두COMFY_API_KEY를 읽으며 키를 리터럴로 받지 않으므로, 복사해서 붙여넣은 스니펫에는 자격 증명이 포함되지 않아 커밋에 올라갈 일이 없습니다.
X-Comfy-Error-Type: unauthorized와 함께 401을 반환하고, 워크스페이스가 모델을 실행할 수 없는 요청은 403 / forbidden을 반환합니다.
cURL
가장 짧은 호출로, 스크립트, 스모크 테스트, 터미널에 복사하여 붙여넣기용입니다:X-Comfy-Error-Type 헤더가 오류 범주를 명명합니다. 나중에 문의해야 하는 응답의 X-Comfy-Request-Id 헤더를 보관하세요. macOS와 Linux에는 uuidgen이 기본 제공됩니다. Windows에서는 New-Guid 또는 다른 UUID 소스로 Idempotency-Key를 생성하세요.
Python
Requires Python 3.9+ andhttpx:
quickstart.py and run it with python quickstart.py:
TypeScript
Requires Node 18+ (for built-infetch, AbortSignal.timeout and crypto.randomUUID) and tsx to run TypeScript directly:
quickstart.mts — the .mts extension is load-bearing, because the file uses top-level await and that needs an ES module — and run it with npx tsx quickstart.mts:
422 읽기
422는 첫 실제 호출 이전에 이해할 가치가 있는 유일한 오류입니다. 바로 사용자가 발생시키는 오류이기 때문입니다. Router가 요청 본문을 모델 자체의 입력 스키마와 대조한 후 거부했음을 의미합니다. 필수 필드 누락, 범위를 벗어난 값, 너무 작은 이미지 등이 그 예입니다.
이 검사는 모든 공급자 호출 이전에 실행되므로 422는 비용이 들지 않습니다. 파트너 지출도 없고, 이후에 답변해야 할 청구 문제도 없습니다. 이는 필드별 실패가 아닌 요청 수준 실패(잘못된 커서, 읽을 수 없는 봉투)인 400과는 다릅니다.
그 본문은 fal/FastAPI의 detail[] 형태입니다. 문제가 있는 각 필드마다 항목이 하나씩 있는 배열이며, 각 항목은 자체 loc(필드 경로), msg, type(공급자 수준의 구체적인 이유: missing, value_error, image_too_small) 및 이유에 경계값이 포함된 경우 ctx를 유지합니다. 이러한 필드별 세분성 때문에 위 샘플들은 배열을 예외 메시지로 평탄화하지 않고 데이터로 유지하는 것입니다.
입력 스키마가 아직 작성되지 않은 모델은 모든 JSON 객체를 허용하는 문서화된 관대한 폴백으로 처리되므로
422로 응답하는 대신 본문을 전달합니다. 위 샘플은 스키마가 존재할 때 처리하는 형태를 보여줍니다. 422 블록을 특정 본문에 대한 보장된 응답이 아닌 오류 경로로 취급하세요.error_type 필드가 없으므로 422에서는 X-Comfy-Error-Type 헤더가 머신이 읽을 수 있는 유일한 버킷입니다. 두 샘플 모두 바로 그 이유로 먼저 헤더에서 버킷을 읽습니다. 이는 또한 하나의 오류 클래스만으로 Router가 반환할 수 있는 모든 실패를 처리하기에 충분한 이유이기도 합니다.
X-Comfy-Request-Id는 성공, 4xx, 5xx 할 것 없이 모든 응답에 포함되며 지원팀 요청에서 인용할 ID입니다. 두 샘플 모두 헤더 로깅을 켜고 다시 실행하여 찾도록 하는 대신 이 ID를 예외에 첨부합니다.
모델 필드의 출처
prompt는 bfl/flux-2-pro가 요구하는 유일한 필드이며, 다음으로 자주 사용하게 될 필드는 width, height, seed, output_format입니다. 시간이 지나며 달라질 수 있는 필드 목록을 그대로 옮겨 적는 대신, 모델의 스키마를 실시간으로 확인하세요:
/openapi.json을 붙이면, 반환된 결과를 기준으로 생성을 진행할 수 있습니다.
다음
- Comfy Router API 참조: 모든 엔드포인트와 모든 매개변수, 그리고 15가지 오류 범주를 다룹니다.
- Comfy Router 제한 사항: 현재 Router가 지원하지 않는 기능과 대신 사용할 수 있는 방법을 설명합니다.