Civitai Get Current Challenge
Auto-build a workflow around Civitai's daily challenge
- challenge_id
- collection_id
- title
- description
- model_version_id
- model_id
- lora_id
- lora_version_id
Civitai runs a daily "challenge" - a themed contest where everyone generates toward the same brief and posts entries to a collection. This node fetches the currently active one, no inputs needed, and hands you everything you'd need to build a workflow that generates for it and submits automatically.
It's a pure-output node. Drop it in, run the graph, and eight typed outputs appear. The useful ones:
titleanddescription(STRING) - the challenge name and the theme/rules. The description comes back as HTML, which the node strips to plain text and prefixes with the theme, so you can read it directly or feed it to an LLM for prompt planning.collection_id(INT) - where entries go. This plugs straight into thecollection_idinput on Civitai Create Post, which is the entire trick of auto-submitting.model_version_idandmodel_id(INT) - the recommended checkpoint's version and model IDs. The clever part: if the challenge is built around a LoRA, the node looks up the LoRA's base model, then resolves the default checkpoint for that base model from a built-in table (SD 1.5, SDXL, Pony, Illustrious, NoobAI, Flux.1 Dev, Chroma) and outputs that instead - so you can load a sensible starting checkpoint even when the challenge only names a LoRA.lora_idandlora_version_id(INT) - the challenge LoRA itself, or0when the challenge is checkpoint-based. That's how you distinguish the two cases.
How it works
Under the hood it hits Civitai's internal tRPC endpoints: first challenge.getInfinite filtered to active challenges, then challenge.getById for the winner's full record. Unlike the pack's REST-based read nodes, this one requires your API key - tRPC calls are authenticated, so the key file or CIVITAI_API_KEY env var has to be set or it raises.
A workflow that actually uses it
Chain it like this: CivitaiGetCurrentChallenge → wire model_version_id/lora_version_id into your checkpoint/LoRA loader inputs (via primitive nodes or whatever your loader accepts), prompt from the challenge description, sample, then feed the result into Civitai Create Post with collection_id wired from this node. Set publish to false the first time, because the moment you flip it, you're submitting to a real, public, judged collection.
Installing it
ComfyUI Manager - search ComfyUI Civitai MCP - or clone:
cd ComfyUI/custom_nodes
git clone https://github.com/daceheg/ComfyUI-civitai-mcp.git
Restart ComfyUI. The pack's only dependency is requests; no model files to download. Set your key in civitai_key.txt in the pack folder or via the CIVITAI_API_KEY environment variable before expecting this node to return anything.
The catch
The "recommended checkpoint" is a hardcoded lookup table in the pack, not a live query, so brand-new base models won't be in it and will fall back to SDXL. And the challenge data comes from Civitai's internal API, which has been famously unstable through 2025–2026 - if you get no active challenge or a slow response, it's usually the platform, not your setup. It's a young pack, so treat those edge cases as "check Civitai's site directly" moments rather than bugs in your graph.
Inputs (0)
No inputs
Outputs (8)
| Name | Type | Description |
|---|---|---|
| challenge_id | INT | — |
| collection_id | INT | — |
| title | STRING | — |
| description | STRING | — |
| model_version_id | INT | — |
| model_id | INT | — |
| lora_id | INT | — |
| lora_version_id | INT | — |