Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .env.example
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@

# Keys
GOOGLE_API_KEY=
FAL_API_KEY=

1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
__pycache__/
*.py[cod]
.env
/output/
/input/
!/input/example.png
Expand Down
7 changes: 0 additions & 7 deletions comfy/cli_args.py
Original file line number Diff line number Diff line change
Expand Up @@ -221,13 +221,6 @@ def is_valid_directory(path: str) -> str:

parser.add_argument("--enable-compress-response-body", action="store_true", help="Enable compressing response body.")

parser.add_argument(
"--comfy-api-base",
type=str,
default="https://api.comfy.org",
help="Set the base URL for the ComfyUI API. (default: https://api.comfy.org)",
)

database_default_path = os.path.abspath(
os.path.join(os.path.dirname(__file__), "..", "user", "comfyui.db")
)
Expand Down
11 changes: 3 additions & 8 deletions comfy_api/latest/_io.py
Original file line number Diff line number Diff line change
Expand Up @@ -1332,9 +1332,9 @@ class Hidden(str, Enum):
dynprompt = "DYNPROMPT"
"""DYNPROMPT is an instance of comfy_execution.graph.DynamicPrompt. It differs from PROMPT in that it may mutate during the course of execution in response to Node Expansion."""
auth_token_comfy_org = "AUTH_TOKEN_COMFY_ORG"
"""AUTH_TOKEN_COMFY_ORG is a token acquired from signing into a ComfyOrg account on frontend."""
"""Deprecated: BYOK mode uses env vars instead. Kept for framework compatibility."""
api_key_comfy_org = "API_KEY_COMFY_ORG"
"""API_KEY_COMFY_ORG is an API Key generated by ComfyOrg that allows skipping signing into a ComfyOrg account on frontend."""
"""Deprecated: BYOK mode uses env vars instead. Kept for framework compatibility."""


@dataclass
Expand Down Expand Up @@ -1521,12 +1521,7 @@ def finalize(self):
self.outputs = []
if self.hidden is None:
self.hidden = []
# if is an api_node, will need key-related hidden
if self.is_api_node:
if Hidden.auth_token_comfy_org not in self.hidden:
self.hidden.append(Hidden.auth_token_comfy_org)
if Hidden.api_key_comfy_org not in self.hidden:
self.hidden.append(Hidden.api_key_comfy_org)
# BYOK: ComfyOrg auth auto-injection removed -- API keys come from env vars
# if is an output_node, will need prompt and extra_pnginfo
if self.is_output_node:
if Hidden.prompt not in self.hidden:
Expand Down
38 changes: 38 additions & 0 deletions comfy_api_nodes/apis/fal.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
"""Pydantic models for fal.ai queue API envelope.

These are shared by all fal.ai-routed nodes. Individual model results
are returned as plain dicts (model-specific output shapes).
"""

from pydantic import BaseModel, Field


class FalQueueSubmitResponse(BaseModel):
"""Response from POST queue.fal.run/{model_id}."""

request_id: str = Field(...)
response_url: str = Field(...)
status_url: str = Field(...)
cancel_url: str = Field(default="")


class FalQueueStatusResponse(BaseModel):
"""Response from GET queue.fal.run/{model_id}/requests/{id}/status."""

status: str = Field(...) # IN_QUEUE, IN_PROGRESS, COMPLETED
queue_position: int | None = Field(default=None)
response_url: str = Field(default="")


class FalErrorDetail(BaseModel):
"""Single error detail from fal.ai."""

loc: list[str] = Field(default_factory=list)
msg: str = Field(default="")
type: str = Field(default="")


class FalErrorResponse(BaseModel):
"""Error response from fal.ai endpoints."""

detail: list[FalErrorDetail] = Field(default_factory=list)
1 change: 0 additions & 1 deletion comfy_api_nodes/apis/gemini.py
Original file line number Diff line number Diff line change
Expand Up @@ -145,7 +145,6 @@ class GeminiImageGenerateContentRequest(BaseModel):
systemInstruction: GeminiSystemInstructionContent | None = Field(None)
tools: list[GeminiTool] | None = Field(None)
videoMetadata: GeminiVideoMetadata | None = Field(None)
uploadImagesToStorage: bool = Field(True)


class GeminiGenerateContentRequest(BaseModel):
Expand Down
75 changes: 0 additions & 75 deletions comfy_api_nodes/apis/grok.py

This file was deleted.

51 changes: 0 additions & 51 deletions comfy_api_nodes/apis/hitpaw.py

This file was deleted.

122 changes: 0 additions & 122 deletions comfy_api_nodes/apis/magnific.py

This file was deleted.

Loading
Loading