Skip to main content
Comfy Router는 아직 일반에 공개되지 않았습니다. 아래의 라우트, 즉 POST /v1/models/{provider}/{model} 및 해당 카탈로그와 스키마 관련 라우트는 아직 요청을 처리하지 않습니다. 현재 인증된 호출은 404를 반환합니다. 이 페이지는 이 라우트가 제공할 계약을 문서화하며, 해당 출시에 앞서 게시되어 통합 코드를 미리 작성할 수 있도록 합니다. 지금 바로 사용할 수 있는 동작에 대한 설명은 아닙니다.
Comfy Router는 파트너 모델을 하나의 호스트, 하나의 자격 증명, 하나의 라우트 형태 뒤에서 실행합니다. 이 페이지는 생성된 이미지에 도달하는 가장 짧은 완전한 경로입니다. 클라이언트를 설치하고, 키를 설정하고, 요청을 하나 보내고, 결과를 읽고, 실제로 마주하기 이전에 첫 번째 실패가 어떤 모습인지 확인하는 것입니다. Base URL은 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를 읽으며 키를 리터럴로 받지 않으므로, 복사해서 붙여넣은 스니펫에는 자격 증명이 포함되지 않아 커밋에 올라갈 일이 없습니다.
comfyui- 키는 Authorization: Bearer가 아닌 X-API-Key 헤더로 보내세요. 두 헤더는 서로 다른 검증기를 선택합니다. X-API-Keycomfyui- 키를 읽는 유일한 인바운드 검증기이며, Authorization에 담긴 값은 JWT 분기로 라우팅되어 JWT가 아닌 토큰은 401 Invalid token으로 종료되고 키는 결코 조회되지 않습니다. (Authorization: Bearer는 Cloud/Firebase JWT에 올바른 방식입니다. 생성된 API reference에서 “bearer token”이 의미하는 바가 바로 이것입니다.)
키는 워크스페이스별로 존재하며 해당 워크스페이스의 모델 사용 권한과 크레딧 잔액을 수반합니다. 사용 가능한 자격 증명이 없는 요청은 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+ and httpx:
Save as quickstart.py and run it with python quickstart.py:

TypeScript

Requires Node 18+ (for built-in fetch, AbortSignal.timeout and crypto.randomUUID) and tsx to run TypeScript directly:
Save as 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를 예외에 첨부합니다.

모델 필드의 출처

promptbfl/flux-2-pro가 요구하는 유일한 필드이며, 다음으로 자주 사용하게 될 필드는 width, height, seed, output_format입니다. 시간이 지나며 달라질 수 있는 필드 목록을 그대로 옮겨 적는 대신, 모델의 스키마를 실시간으로 확인하세요:
이 문서는 서버가 호출을 검증할 때 사용하는 바로 그 문서로, 독립형 OpenAPI 문서로 제공됩니다. 따라서 게시된 내용과 실제로 적용되는 내용이 서로 어긋날 수 없습니다. 아무 모델 ID나 선택한 뒤 해당 호출 경로에 /openapi.json을 붙이면, 반환된 결과를 기준으로 생성을 진행할 수 있습니다.

다음

  • Comfy Router API 참조: 모든 엔드포인트와 모든 매개변수, 그리고 15가지 오류 범주를 다룹니다.
  • Comfy Router 제한 사항: 현재 Router가 지원하지 않는 기능과 대신 사용할 수 있는 방법을 설명합니다.