Skip to content

docs(partner-nodes): generated Code pages for every Router-addressable partner model - #1533

Open
mattmillerai wants to merge 22 commits into
mainfrom
docs/router-model-page-pilot
Open

docs(partner-nodes): generated Code pages for every Router-addressable partner model#1533
mattmillerai wants to merge 22 commits into
mainfrom
docs/router-model-page-pilot

Conversation

@mattmillerai

@mattmillerai mattmillerai commented Aug 27, 2026

Copy link
Copy Markdown
Contributor

Summary

Adds a third sub-page, Code, next to Overview and Workflow for every partner model that Comfy Router can address today, with fal-style SDK snippets: Python via comfy-sdk (client.models.run), TypeScript via @comfyorg/sdk (comfy.models.run), and cURL as the raw POST /v2/models/{provider}/{model} reference. The pages are generated from a per-model code.yaml by one template, so a change to the page shape is a change in one file.

Stacked on #1508 (docs/comfy-router-docs) so the Router quickstart and reference links resolve in the preview; the diff shows that branch's files too until it merges. #1536 moves those pages to /v2/models; the snippets here already use /v2.

Preview (Kontext, others at the same path pattern): https://dripart-docs-router-model-page-pilot.mintlify.site/tutorials/partner-nodes/black-forest-labs/flux-1-kontext/code

Pages

Page Router model IDs Result
Black Forest Labs / Flux 1.1 Pro Ultra Image bfl/flux-pro-1.1-ultra, bfl/flux-pro-1.1 (different bodies) result.sample image URL
Black Forest Labs / Flux.1 Kontext bfl/flux-kontext-pro, bfl/flux-kontext-max result.sample image URL
Black Forest Labs / FLUX 3 Video bfl/flux-3-video result.sample signed MP4 URL
Black Forest Labs / FLUX Video Upscale bfl/video-upscale-v1 result.sample signed MP4 URL
Google / Nano Banana Pro vertexai/gemini-3-pro-image candidates[0].content.parts[0].inlineData.data base64
Google / Nano Banana 2 vertexai/gemini-3.1-flash-image same
Google / Nano Banana 2 Lite vertexai/gemini-3.1-flash-lite-image same
Ideogram / Ideogram 4.0 ideogram/ideogram-v4 data[0].url
LLMs / Google Gemini vertexai/gemini-3.1-pro-preview, gemini-3.5-flash, gemini-2.5-pro, gemini-2.5-flash candidates[0].content.parts[0].text

Model IDs come from the Router catalog as derived by services/comfy-api/server/middleware/router_model_catalog.go at cloud main (dumped, not guessed). Request bodies follow each provider's native API.

Not addressable by Router today, so no Code page yet (each becomes a spec plus one command once it is):

  • Ideogram P-Image: the proxy takes multipart/form-data, not JSON.
  • Kling 3.0: two proxy routes claim kling/kling-3.0-turbo, so the catalog records it as ambiguous and the route answers model_not_found.
  • Krea 2: vendor IDs contain a slash (krea-2/large), outside the {provider}/{model} alphabet.
  • Everything that declares its model in the request body (OpenAI, ByteDance, Luma, Runway, Recraft, Bria, Grok, Topaz, Wan, MiniMax, Moonvalley, HappyHorse, Lightricks, Reve, Beeble, Qwen, the 3D and audio providers, Anthropic, OpenRouter): the catalog derives no enumerable ID for them.
  • Router models with no partner-node page (Veo, Imagen, Wavespeed, HeyGen Starfish, the Flux Pro 1.0 tools): out of scope here.

Page shape

Each Code page: intro and the shared not-GA notice; Quick start with the Model ID, the endpoint, a variant switcher where the page covers more than one Router model, and a CodeGroup of labelled Python / TypeScript / cURL tabs; then Input schema, Input example, Output schema, Output example (fal's four sections); then the shared "Before you ship" footer (idempotency key, deadline, request id, 422, links to the Router quickstart, reference and limitations).

The schema sections render from router-schemas/<provider>/<model>.json, the exact body of Router's GET /v2/models/{id}/openapi.json, so the table is the schema the server enforces. No model has an authored schema on Router yet (openapi.yml at cloud main carries zero x-comfy-router-model-id components), so every page currently shows the fallback: the spec's hand-written fields and examples with a note that Router has not published the schema. The authored path is exercised against a fixture; Router-side work to fill it is tracked separately (authoring the input schemas, and a spike for output schemas plus the bot sync of per-model documents into router-schemas/).

Headers page

api-reference/comfy-router/headers.mdx (new, in the Router nav next to quickstart / reference / limitations): the request headers a caller sends (X-API-Key or Authorization: Bearer, Idempotency-Key, If-None-Match) and the response headers Router returns (X-Comfy-Request-Id, X-Comfy-Error-Type, Idempotent-Replayed, Retry-After, X-Committed-Spend-*, ETag, Cache-Control), the three statuses that carry two buckets, and what Router deliberately does not offer as headers. The per-model footer shrinks to one paragraph that links here. Authored docs-side for now; it should move to cloud's services/comfy-api/docs/ and ride the bot sync like the other three Router pages so it cannot drift from the spec.

Generator

  • .github/scripts/snippets/gen-code-pages.ts (bun, no dependencies): renders every tutorials/partner-nodes/**/code.yaml into its code.mdx. Python (comfy-sdk), TypeScript (@comfyorg/sdk) and cURL (raw HTTP) are emitted from the same example object (per-variant example when the variants take different bodies); nested bodies become real Python and TypeScript literals; "@file:<path>" becomes a base64 file read; result paths support array indices; result.label drives what the snippet prints (image, video, text, image (base64)). --check fails on a stale page, --validate compiles each emitted snippet (py_compile, bun build, bash -n) without executing anything.
  • .github/workflows/code-pages-check.yml: runs --check --validate on PRs touching a spec, a generated page, router-schemas/, the shared snippets or the generator.
  • package.json: pnpm code-pages:gen, pnpm code-pages:check. README in .github/scripts/snippets/.
  • Shared prose: snippets/comfy-router/preview-notice.mdx (not-GA note) and snippets/comfy-router/model-code-footer.mdx (which production concerns the SDKs already cover, and what a raw HTTP caller must do).

Also touched: docs.json (one …/code entry per page, English nav), and each overview's "Use it in ComfyUI" block becomes a two-card "Use it" (workflows + code) with a pricing/concurrency pointer.

Not in this PR: ja/zh/ko (the locale navs in #1532 were not split either), and live (billed) verification of the snippets, which needs Router to be GA and belongs with the existing nightly Router jobs in cloud; the code.yaml files are the case table for that job.

ELI5

Each partner model page now has three parts: what it is, how to run it in ComfyUI, and how to call it from your own code. The third part is new. Rather than hand-write it for each model, you fill in a short spec (which model IDs, what an example request looks like, where the result is) and a script writes the page in three programming languages from one template, using our own SDKs. CI refuses a page that was edited by hand or drifted from its spec, so every Code page has the same shape and the three snippets always send the same request. Nine models get the page now; the rest are waiting on Router being able to address them by name. Each page also has the input and output schema sections fal shows; those fill in automatically once Router publishes the schemas.

Testing

  • pnpm code-pages:check: 9 pages fresh, 27 emitted snippets compile.
  • Authored-schema rendering verified against a fixture router-schemas/bfl/flux-kontext-pro.json in the served document shape (table, example, per-variant tabs), then removed so no hand-written schema is committed.
  • npx mint broken-links: no broken links.
  • docs.json parses; each Code entry sits next to its Workflow entry.
  • Mintlify preview renders the Kontext page (labelled Python / TypeScript / cURL tabs, variant tabs, /v2/models routes).

comfyui-wiki and others added 8 commits August 26, 2026 15:06
Adds the Comfy Router documentation set and the Comfy API v2 spec update
that the comfy-pr-bot sync PRs have been carrying, consolidated into one
branch:

- comfy-router-quickstart.mdx: shortest path to a Router call (new)
- comfy-router-reference.mdx: generated Router API reference (new)
- comfy-router-limitations.mdx: Router limits and alternatives (new)
- openapi-v2.yaml: job logs event + JobLogs schema (updated)
- docs.json: register a Comfy Router group under API Development (en nav;
  zh/ja/ko left unregistered until translations exist)

Source PRs (left open): #1483 #1487 #1488 #1489 #1490 #1492 #1497 #1500 #1505
Content taken from the latest state in #1505.
Keep API documentation out of the repo root: move the three Router pages
to api-reference/comfy-router/, update cross-page links and the docs.json
nav paths accordingly.
…nslations

- quickstart: full cURL call example (aligns quickstart with the Python/TS/cURL
  split in BE-8327); the existing curl snippet only fetched a model schema
- api-reference/v2/overview: short 'Comfy Router' pointer section so API v2
  readers can discover the Router docs, translated to zh/ja/ko
- translate comfy-router quickstart/reference/limitations to zh/ja/ko via
  translate-i18n.ts
- docs.json: register Comfy Router group under API Development for all four
  locales (en/zh/ja/ko)
…ontract sync

- Remove all em dashes from hand-written Router pages (EN)
- quickstart: TypeScript COMFY_API_KEY fail-fast to match Python; fix
  response-handling comment (body parsed before response.ok check)
- overview(v2): note Comfy Router is not yet generally available
- ja/zh/ko: translate pending setup lines, limitations sections,
  reference auth sentence and new response rows
- fixes broken heading/anchor merges in ja/zh/ko reference.mdx
- ja/zh/ko limitations: fix anchor slugs + translate English sections
- zh limitations: full-width quotation marks
- reference.mdx: regenerate from cloud contract - X-API-Key auth +
  POST 401/429/500 responses (mirrors router-openapi.yaml)
…the Router docs

Bring the Comfy Router pages up to the latest comfy-pr-bot sync state so
the superseded per-commit sync PRs (#1509 #1513 #1514 #1516 #1517 #1518
#1519 #1522 #1524) are all carried by this one branch.

- reference.mdx: replaced verbatim with the generated file from
  cloud@2a369ae (GET /v1/models 403/503 rows, POST 429 committed-spend
  headers + 504 Retry-After, If-None-Match on the schema route, Retry-After
  and X-Committed-Spend-* header rows, deadline_exceeded retry guidance,
  no fal attributions, no planned queued endpoint). This drops the
  hand-edited "X-API-Key or Bearer" auth line: the file is generated
  upstream and must not carry local edits.
- quickstart.mdx / limitations.mdx: 3-way merged the upstream changes onto
  this branch's edits (relocated links, cURL section, no em dashes): auth
  Note (comfyui- keys accepted in X-API-Key or Authorization: Bearer), new
  "Find a model" catalog section, new "Requests are rate limited per
  caller" section + at-a-glance row, queued-endpoint sentence removed,
  fal/FastAPI -> FastAPI.
- ja/zh/ko: hand-translated the same deltas, un-glued the endpoint ###
  headings from the preceding table rows in reference.mdx (CodeRabbit
  finding), and re-stamped translationSourceHash/translationBlockHashes
  with the repo's chunked-translate helpers (getSectionSyncStatus reports
  up-to-date for all nine files).
- openapi-v2.yaml already matched cloud@2a369ae; no change.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…text

Splits the Kontext page into three tabs so a reader can pick the path that
fits them: read about the model, load a ComfyUI workflow, or call it over
HTTP through Comfy Router. The Code tab gives Python, TypeScript and cURL
snippets per variant (Pro, Max) plus the native result shape, and shares
the pre-GA notice and production checklist through two new snippets so the
same layout can roll out to the other partner model pages without
re-authoring the boilerplate.
@coderabbitai

coderabbitai Bot commented Aug 27, 2026

Copy link
Copy Markdown

Warning

Review limit reached

Next included review available in 28 minutes.

View limit details

Limit details: You’ve used the included review currently available. Your 130 included PR review attempts over the past 7 days set your current allowance at 1 review per hour.

Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available.
You're only billed for reviews past your plan's rate limits ($0.25/file).

Learn how review limits work.

Review configuration:

⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: c19af452-174a-44b0-a9e5-a39e1163c386

📥 Commits

Reviewing files that changed from the base of the PR and between 8b835d6 and 9e5eeca.

📒 Files selected for processing (53)
  • .github/scripts/snippets/README.md
  • .github/scripts/snippets/check-provider-schemas.ts
  • .github/scripts/snippets/gen-code-pages.ts
  • .github/workflows/code-pages-check.yml
  • api-reference/comfy-router/headers.mdx
  • api-reference/comfy-router/limitations.mdx
  • api-reference/comfy-router/quickstart.mdx
  • api-reference/comfy-router/reference.mdx
  • api-reference/v2/overview.mdx
  • docs.json
  • ja/api-reference/comfy-router/limitations.mdx
  • ja/api-reference/comfy-router/quickstart.mdx
  • ja/api-reference/comfy-router/reference.mdx
  • ja/api-reference/v2/overview.mdx
  • ko/api-reference/comfy-router/limitations.mdx
  • ko/api-reference/comfy-router/quickstart.mdx
  • ko/api-reference/comfy-router/reference.mdx
  • ko/api-reference/v2/overview.mdx
  • openapi-v2.yaml
  • package.json
  • snippets/comfy-router/model-code-footer.mdx
  • snippets/comfy-router/preview-notice.mdx
  • tutorials/partner-nodes/black-forest-labs/flux-1-1-pro-ultra-image.mdx
  • tutorials/partner-nodes/black-forest-labs/flux-1-1-pro-ultra-image/code.mdx
  • tutorials/partner-nodes/black-forest-labs/flux-1-1-pro-ultra-image/code.yaml
  • tutorials/partner-nodes/black-forest-labs/flux-1-kontext.mdx
  • tutorials/partner-nodes/black-forest-labs/flux-1-kontext/code.mdx
  • tutorials/partner-nodes/black-forest-labs/flux-1-kontext/code.yaml
  • tutorials/partner-nodes/black-forest-labs/flux-3-video.mdx
  • tutorials/partner-nodes/black-forest-labs/flux-3-video/code.mdx
  • tutorials/partner-nodes/black-forest-labs/flux-3-video/code.yaml
  • tutorials/partner-nodes/black-forest-labs/flux-video-upscale.mdx
  • tutorials/partner-nodes/black-forest-labs/flux-video-upscale/code.mdx
  • tutorials/partner-nodes/black-forest-labs/flux-video-upscale/code.yaml
  • tutorials/partner-nodes/google/gemini.mdx
  • tutorials/partner-nodes/google/gemini/code.mdx
  • tutorials/partner-nodes/google/gemini/code.yaml
  • tutorials/partner-nodes/google/nano-banana-2-lite.mdx
  • tutorials/partner-nodes/google/nano-banana-2-lite/code.mdx
  • tutorials/partner-nodes/google/nano-banana-2-lite/code.yaml
  • tutorials/partner-nodes/google/nano-banana-2.mdx
  • tutorials/partner-nodes/google/nano-banana-2/code.mdx
  • tutorials/partner-nodes/google/nano-banana-2/code.yaml
  • tutorials/partner-nodes/google/nano-banana-pro.mdx
  • tutorials/partner-nodes/google/nano-banana-pro/code.mdx
  • tutorials/partner-nodes/google/nano-banana-pro/code.yaml
  • tutorials/partner-nodes/ideogram/ideogram-v4.mdx
  • tutorials/partner-nodes/ideogram/ideogram-v4/code.mdx
  • tutorials/partner-nodes/ideogram/ideogram-v4/code.yaml
  • zh/api-reference/comfy-router/limitations.mdx
  • zh/api-reference/comfy-router/quickstart.mdx
  • zh/api-reference/comfy-router/reference.mdx
  • zh/api-reference/v2/overview.mdx

Comment @coderabbitai help to get the list of available commands.

@mattmillerai
mattmillerai changed the base branch from docs/comfy-router-docs to main August 27, 2026 21:18
#1532

Main now splits every partner-model page into Overview and Workflow
sub-pages (#1532), so the pilot follows that shape instead of tabs: the
Router snippets move to flux-1-kontext/code, the overview links to it
next to the workflows card, and docs.json adds it to the Kontext group.
@mattmillerai mattmillerai changed the title docs(partner-nodes): pilot Overview/Workflows/Code tabs on Flux.1 Kontext docs(partner-nodes): pilot a Code sub-page with Comfy Router snippets on Flux.1 Kontext Aug 27, 2026
@mintlify

mintlify Bot commented Aug 27, 2026

Copy link
Copy Markdown
Contributor

Preview deployment for your docs. Learn more about Mintlify Previews.

Project Status Preview Updated (UTC)
comfy 🟢 Ready View Preview Aug 27, 2026, 9:25 PM

💡 Tip: Enable Workflows to automatically generate PRs for you.

@mattmillerai mattmillerai added the cursor-review Trigger Cursor automated review label Aug 27, 2026
@github-actions

github-actions Bot commented Aug 27, 2026

Copy link
Copy Markdown

🌐 i18n translation sync reminder

@comfyui-wiki English documentation was updated in this PR. Please complete or schedule translation updates for the following files:

Japanese (ja)

  • ja/api-reference/comfy-router/headers.mdx
  • snippets/ja/comfy-router/model-code-footer.mdx
  • snippets/ja/comfy-router/preview-notice.mdx
  • ja/tutorials/partner-nodes/black-forest-labs/flux-1-1-pro-ultra-image.mdx
  • ja/tutorials/partner-nodes/black-forest-labs/flux-1-1-pro-ultra-image/code.mdx
  • ja/tutorials/partner-nodes/black-forest-labs/flux-1-kontext.mdx
  • ja/tutorials/partner-nodes/black-forest-labs/flux-1-kontext/code.mdx
  • ja/tutorials/partner-nodes/black-forest-labs/flux-3-video.mdx
  • ja/tutorials/partner-nodes/black-forest-labs/flux-3-video/code.mdx
  • ja/tutorials/partner-nodes/black-forest-labs/flux-video-upscale.mdx
  • ja/tutorials/partner-nodes/black-forest-labs/flux-video-upscale/code.mdx
  • ja/tutorials/partner-nodes/google/gemini.mdx
  • ja/tutorials/partner-nodes/google/gemini/code.mdx
  • ja/tutorials/partner-nodes/google/nano-banana-2-lite.mdx
  • ja/tutorials/partner-nodes/google/nano-banana-2-lite/code.mdx
  • ja/tutorials/partner-nodes/google/nano-banana-2.mdx
  • ja/tutorials/partner-nodes/google/nano-banana-2/code.mdx
  • ja/tutorials/partner-nodes/google/nano-banana-pro.mdx
  • ja/tutorials/partner-nodes/google/nano-banana-pro/code.mdx
  • ja/tutorials/partner-nodes/ideogram/ideogram-v4.mdx
  • ja/tutorials/partner-nodes/ideogram/ideogram-v4/code.mdx
  • ja/api-reference/comfy-router/headers.mdx
  • snippets/ja/comfy-router/model-code-footer.mdx
  • snippets/ja/comfy-router/preview-notice.mdx
  • ja/tutorials/partner-nodes/black-forest-labs/flux-1-1-pro-ultra-image/code.mdx
  • ja/tutorials/partner-nodes/black-forest-labs/flux-1-kontext/code.mdx
  • ja/tutorials/partner-nodes/black-forest-labs/flux-3-video/code.mdx
  • ja/tutorials/partner-nodes/black-forest-labs/flux-video-upscale/code.mdx
  • ja/tutorials/partner-nodes/google/gemini/code.mdx
  • ja/tutorials/partner-nodes/google/nano-banana-2-lite/code.mdx
  • ja/tutorials/partner-nodes/google/nano-banana-2/code.mdx
  • ja/tutorials/partner-nodes/google/nano-banana-pro/code.mdx
  • ja/tutorials/partner-nodes/ideogram/ideogram-v4/code.mdx

Simplified Chinese (zh)

  • zh/api-reference/comfy-router/headers.mdx
  • snippets/zh/comfy-router/model-code-footer.mdx
  • snippets/zh/comfy-router/preview-notice.mdx
  • zh/tutorials/partner-nodes/black-forest-labs/flux-1-1-pro-ultra-image.mdx
  • zh/tutorials/partner-nodes/black-forest-labs/flux-1-1-pro-ultra-image/code.mdx
  • zh/tutorials/partner-nodes/black-forest-labs/flux-1-kontext.mdx
  • zh/tutorials/partner-nodes/black-forest-labs/flux-1-kontext/code.mdx
  • zh/tutorials/partner-nodes/black-forest-labs/flux-3-video.mdx
  • zh/tutorials/partner-nodes/black-forest-labs/flux-3-video/code.mdx
  • zh/tutorials/partner-nodes/black-forest-labs/flux-video-upscale.mdx
  • zh/tutorials/partner-nodes/black-forest-labs/flux-video-upscale/code.mdx
  • zh/tutorials/partner-nodes/google/gemini.mdx
  • zh/tutorials/partner-nodes/google/gemini/code.mdx
  • zh/tutorials/partner-nodes/google/nano-banana-2-lite.mdx
  • zh/tutorials/partner-nodes/google/nano-banana-2-lite/code.mdx
  • zh/tutorials/partner-nodes/google/nano-banana-2.mdx
  • zh/tutorials/partner-nodes/google/nano-banana-2/code.mdx
  • zh/tutorials/partner-nodes/google/nano-banana-pro.mdx
  • zh/tutorials/partner-nodes/google/nano-banana-pro/code.mdx
  • zh/tutorials/partner-nodes/ideogram/ideogram-v4.mdx
  • zh/tutorials/partner-nodes/ideogram/ideogram-v4/code.mdx
  • zh/api-reference/comfy-router/headers.mdx
  • snippets/zh/comfy-router/model-code-footer.mdx
  • snippets/zh/comfy-router/preview-notice.mdx
  • zh/tutorials/partner-nodes/black-forest-labs/flux-1-1-pro-ultra-image/code.mdx
  • zh/tutorials/partner-nodes/black-forest-labs/flux-1-kontext/code.mdx
  • zh/tutorials/partner-nodes/black-forest-labs/flux-3-video/code.mdx
  • zh/tutorials/partner-nodes/black-forest-labs/flux-video-upscale/code.mdx
  • zh/tutorials/partner-nodes/google/gemini/code.mdx
  • zh/tutorials/partner-nodes/google/nano-banana-2-lite/code.mdx
  • zh/tutorials/partner-nodes/google/nano-banana-2/code.mdx
  • zh/tutorials/partner-nodes/google/nano-banana-pro/code.mdx
  • zh/tutorials/partner-nodes/ideogram/ideogram-v4/code.mdx

Korean (ko)

  • ko/api-reference/comfy-router/headers.mdx
  • snippets/ko/comfy-router/model-code-footer.mdx
  • snippets/ko/comfy-router/preview-notice.mdx
  • ko/tutorials/partner-nodes/black-forest-labs/flux-1-1-pro-ultra-image.mdx
  • ko/tutorials/partner-nodes/black-forest-labs/flux-1-1-pro-ultra-image/code.mdx
  • ko/tutorials/partner-nodes/black-forest-labs/flux-1-kontext.mdx
  • ko/tutorials/partner-nodes/black-forest-labs/flux-1-kontext/code.mdx
  • ko/tutorials/partner-nodes/black-forest-labs/flux-3-video.mdx
  • ko/tutorials/partner-nodes/black-forest-labs/flux-3-video/code.mdx
  • ko/tutorials/partner-nodes/black-forest-labs/flux-video-upscale.mdx
  • ko/tutorials/partner-nodes/black-forest-labs/flux-video-upscale/code.mdx
  • ko/tutorials/partner-nodes/google/gemini.mdx
  • ko/tutorials/partner-nodes/google/gemini/code.mdx
  • ko/tutorials/partner-nodes/google/nano-banana-2-lite.mdx
  • ko/tutorials/partner-nodes/google/nano-banana-2-lite/code.mdx
  • ko/tutorials/partner-nodes/google/nano-banana-2.mdx
  • ko/tutorials/partner-nodes/google/nano-banana-2/code.mdx
  • ko/tutorials/partner-nodes/google/nano-banana-pro.mdx
  • ko/tutorials/partner-nodes/google/nano-banana-pro/code.mdx
  • ko/tutorials/partner-nodes/ideogram/ideogram-v4.mdx
  • ko/tutorials/partner-nodes/ideogram/ideogram-v4/code.mdx
  • ko/api-reference/comfy-router/headers.mdx
  • snippets/ko/comfy-router/model-code-footer.mdx
  • snippets/ko/comfy-router/preview-notice.mdx
  • ko/tutorials/partner-nodes/black-forest-labs/flux-1-1-pro-ultra-image/code.mdx
  • ko/tutorials/partner-nodes/black-forest-labs/flux-1-kontext/code.mdx
  • ko/tutorials/partner-nodes/black-forest-labs/flux-3-video/code.mdx
  • ko/tutorials/partner-nodes/black-forest-labs/flux-video-upscale/code.mdx
  • ko/tutorials/partner-nodes/google/gemini/code.mdx
  • ko/tutorials/partner-nodes/google/nano-banana-2-lite/code.mdx
  • ko/tutorials/partner-nodes/google/nano-banana-2/code.mdx
  • ko/tutorials/partner-nodes/google/nano-banana-pro/code.mdx
  • ko/tutorials/partner-nodes/ideogram/ideogram-v4/code.mdx

Local sync: npm run translate (see README — Automated translation)

Comfy Router's model routes moved from /v1/models to /v2/models upstream
(cloud #7646), so the pilot snippets follow the live contract.
The Code sub-page is meant to be identical in shape across every partner
model, so the shape should live in one place. code.mdx is now rendered by
.github/scripts/snippets/gen-code-pages.ts from a small code.yaml next to it
(name, Router model IDs, example body, result path); Python, TypeScript and
cURL are emitted from the same example so they cannot disagree. A new
workflow fails a PR when a generated page is stale or an emitted snippet
does not parse. Adding a model becomes a 15-line spec plus one command.
…model

Extends the Kontext pilot to every partner-model page whose model Comfy
Router can address today. The catalog only admits proxy routes that name
their model in the path, so that is nine pages: Flux 1.1 Pro Ultra (with
FLUX 1.1 [pro]), Flux.1 Kontext, FLUX 3 Video, FLUX Video Upscale, Nano
Banana Pro, Nano Banana 2, Nano Banana 2 Lite, Ideogram 4.0 and Google
Gemini. Each gets a code.yaml, a generated code.mdx, a docs.json entry and
a second card on its overview.

The generator grows what those specs needed: a per-variant request body
(Ultra and the standard model take different inputs), nested bodies
rendered as real Python and TypeScript literals (the Gemini generateContent
shape), result paths with array indices, and a result label so video, text
and base64 image results print correctly.

Not addressable yet, so no Code page: Ideogram P-Image (multipart body),
Kling 3.0 (two proxy routes claim kling/kling-3.0-turbo, so the catalog
marks it ambiguous), Krea (slash in the vendor id) and every model that
declares itself in the request body (OpenAI, ByteDance, Luma, Runway,
Recraft, Bria, Grok, Topaz, Wan, MiniMax, Moonvalley, the 3D, audio and LLM
providers other than Gemini).
@mattmillerai mattmillerai changed the title docs(partner-nodes): pilot a Code sub-page with Comfy Router snippets on Flux.1 Kontext docs(partner-nodes): generated Code pages for every Router-addressable partner model Aug 27, 2026
…e pages

Mintlify uses the code fence title as the CodeGroup tab label, so bare
fences rendered three unlabeled tabs and only the first (Python) snippet
was discoverable. The template now titles each fence, which relabels all
nine generated pages at once.
Two spaces between the two inline-code spans is not a markdown line break,
so long model IDs wrapped mid-URL and ran the two labels together.
…snippets

The Python and TypeScript tabs now call comfy-sdk's client.models.run and
@comfyorg/sdk's comfy.models.run instead of hand-rolling the HTTP call, so
the snippets show the supported path and inherit the SDKs' idempotency
key, 10 minute deadline and request-id handling. cURL stays as the raw
HTTP reference. The shared footer now says which of the production
concerns the SDKs already cover.
… pages

Each generated Code page now ends with Input schema, Input example, Output
schema and Output example, the four sections fal's per-model pages carry.
They render from router-schemas/<provider>/<model>.json, the exact body of
Router's GET /v2/models/{id}/openapi.json, so the table is the schema the
server enforces. No model has an authored schema on Router yet, so every
page currently renders the fallback: the spec's hand-written fields and
examples plus a note that Router has not published the schema. Variants
that share a schema share a block; variants that differ get tabs.
…ctions

Matches fal's layout: one Schema section with Input and Output, one
Examples section with Input and Output, instead of four top-level sections.
…page

Mintlify syncs tabs with matching titles, which is the right behaviour for
a model-variant picker but reads as a glitch when nothing says so.
…d tables

Input and Output now render as Mintlify ParamField / ResponseField lists
(name, type, required, default, description, possible values, range),
the same shape fal's per-model pages use. Each code.yaml carries the
provider's documented input and output as JSON Schema; that is the
fallback source until Router publishes the model's own schema, at which
point router-schemas/<id>.json takes over with no template change. The
orphaned openapi.json curl block is gone; the note names the endpoint.
…e page

Pages with more than one Router model now have a single tab bar at the
top, as fal's per-endpoint pages do; Quick start, Schema and Examples all
live inside the selected tab, so no section carries its own tab bar and
nothing has to be synced. Single-model pages render the same body with no
tabs at all.
… TOC

check-provider-schemas.ts fetches each provider's own published API
specification (BFL and Ideogram OpenAPI, Google's discovery document) and
fails CI when a documented field, type, default, enum, bound or required
flag disagrees with it. Its first run found real drift, now fixed: Kontext
defaults to png and allows webp, input_image is optional and up to four
reference images are accepted, safety_tolerance goes to 6; FLUX 3 Video
defaults to fhd; Video Upscale's creativity is 0 or 1 and upscale_factor is
1.5 to 3; Ideogram's response has no style_type; Gemini declares no
sampling defaults. The in-page note shrinks to one line now that the fields
are tested rather than trusted.

Headings inside variant tabs duplicated in the table of contents and sent
clicks to hidden anchors. Pages whose variants share a schema now render
Schema and Examples once, outside the tabs; pages whose variants differ use
HTML headings inside the tabs so the TOC does not index them.
One place for what is the same across every Router model: the request
headers a caller sends (API key in either header, Idempotency-Key,
If-None-Match) and the response headers Router returns (request id, error
bucket, replay marker, Retry-After, committed-spend, schema caching), plus
the three statuses that carry two buckets and what Router deliberately does
not offer as headers. The per-model footer shrinks to one paragraph that
links here instead of restating it on every page.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

cursor-review Trigger Cursor automated review

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants