Update README

This commit is contained in:
Andy Ratsirarson
2026-07-15 21:24:52 -07:00
parent 05c29133de
commit 5d9e0531dc
+90 -1
View File
@@ -1,2 +1,91 @@
# ComfyUI_ExternalAPI
ComfyUI node package for BYOK (bring-your-own-key) access to external generative APIs: Gemini, Veo, and more via LiteLLM.
BYOK (bring-your-own-key) ComfyUI nodes for generating video through external providers — Gemini/Veo, OpenAI Sora, Azure, and RunwayML — via [LiteLLM](https://github.com/BerriAI/litellm). No local GPU-hungry model required; you supply your own provider API key and pay that provider directly.
> **Status:** text-to-video is implemented today. Text-to-image is planned as a separate node — see [Roadmap](#roadmap).
## Features
- **One node, every provider.** Pick a provider from a dropdown; the node's fields update to show only that provider's real parameters.
- **BYOK.** Your API key never touches this repo or any third party beyond the provider itself. Prefer setting it as a server-side environment variable; an optional in-node override exists for convenience (see [Security note](#security-note)).
- **Provider-accurate parameters.** Each provider exposes its own supported aspect ratios, resolution tiers, and duration range — no guessing which combination is valid.
## Supported providers & models
| Provider | `provider` value | Models | Aspect ratios | Resolutions | Duration |
|---|---|---|---|---|---|
| Google Gemini (Veo) | `gemini` | Fetched live from your account via `google-genai`; falls back to a built-in list (`veo-3.1-fast-generate-preview`, `veo-3.1-fast-generate-001`, `veo-3.1-generate-preview`, `veo-3.1-generate-001`, `veo-3.1-lite-generate-preview`, `veo-2.0-generate-001`) if that fails | 16:9, 9:16 | 1K, 2K | 4–8s |
| OpenAI (Sora) | `openai` | `sora-2`, `sora-2-pro`, `sora-2-pro-high-res` | 16:9, 9:16 | 1K, 2K | 4–12s* |
| Azure OpenAI (Sora) | `azure` | `sora-2`, `sora-2-pro`, `sora-2-pro-high-res` | 16:9, 9:16 | 1K, 2K | 4–12s* |
| RunwayML | `runwayml` | `gen3a_turbo`, `gen4_turbo`, `gen4_aleph`, `gen4_image`, `gen4_image_turbo` | 16:9, 9:16 | 1K, 2K | 5s or 10s |
\* OpenAI/Azure's upper duration bound isn't published by the provider; 12s is a conservative default rather than a confirmed hard limit.
Gemini's model list is fetched live from `google.genai.Client().models.list()` at node-registration time when a Gemini API key is available on the ComfyUI server, so new Veo releases show up automatically without an update to this package.
## Requirements
- ComfyUI with the V3 node API (`comfy_api.latest`).
- Python dependencies (installed automatically, see `requirements.txt`):
- `litellm==1.92.0`
- `google-genai==1.47.0`
- An API key from at least one of the providers above.
## Installation
**Via ComfyUI Manager:** search for `ComfyUI_ExternalAPI` and install.
**Manually:**
```bash
cd ComfyUI/custom_nodes
git clone https://github.com/andy-ratsirarson/ComfyUI_ExternalAPI.git
cd ComfyUI_ExternalAPI
pip install -r requirements.txt
```
Restart ComfyUI afterward.
## Setup: API keys
Set the environment variable(s) for whichever provider(s) you plan to use **on the machine running the ComfyUI server**, then restart ComfyUI.
| Provider | Environment variable(s) |
|---|---|
| Gemini | `GEMINI_API_KEY` (or `GOOGLE_API_KEY`) |
| OpenAI | `OPENAI_API_KEY` |
| Azure OpenAI | `AZURE_API_KEY`, `AZURE_API_BASE` (your endpoint), `AZURE_API_VERSION` (optional) |
| RunwayML | `RUNWAYML_API_SECRET` (or `RUNWAYML_API_KEY`) |
### Security note
The node also has an optional `api_key` input that overrides the environment variable for that run. **Prefer the environment variable.** Anything typed into `api_key` gets saved into the workflow JSON and into output file metadata — so it can leak if you share a workflow or an output file. Only use it for quick one-off testing.
## Usage
1. Add the node: right-click canvas → Add Node → `external_api/video` → **API Video Generate (BYOK)**.
2. Enter a text `prompt`.
3. Under `source`, leave it on `text` (the only source supported today).
4. Pick a `provider` — the node reveals that provider's `model` dropdown.
5. Pick a `model` — the node reveals that model's settings: `size` (aspect ratio), `resolution`, `seconds` (duration), and any provider-specific extras (e.g. Gemini's `person_generation`/`negative_prompt`, RunwayML's `seed`).
6. Run the graph. The node polls the provider until the video finishes, then outputs a `VIDEO`.
Optional inputs: `api_key` (see [Security note](#security-note)), `poll_interval` (seconds between status checks, default 10), `timeout` (max seconds to wait, default 600).
## Roadmap
- **Image generation** — a separate `APIImageGenerate` node, tracked in [issue #2](https://github.com/andy-ratsirarson/ComfyUI_ExternalAPI/issues/2).
- **Image-to-video** — the `source` selector already has a slot reserved for this; only `text` is implemented today.
## Development
```bash
pip install -e ".[dev]"
pytest
```
Tests fake just enough of `comfy_api.latest` (see `tests/conftest.py`) to exercise the nodes outside a real ComfyUI install — no GPU or ComfyUI checkout required.
## License
MIT — see [LICENSE](LICENSE).